清华大学计算机硬件技术基础实验报告 3500字.docx
- 文档编号:29298458
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:8
- 大小:28.82KB
清华大学计算机硬件技术基础实验报告 3500字.docx
《清华大学计算机硬件技术基础实验报告 3500字.docx》由会员分享,可在线阅读,更多相关《清华大学计算机硬件技术基础实验报告 3500字.docx(8页珍藏版)》请在冰豆网上搜索。
清华大学计算机硬件技术基础实验报告3500字
XXXX
〔清华大学计算机硬件技术基础实验报告3500字〕
实验名称:
实验4:
寻址方式和指令系统
姓名:
袁鹏学号:
2013011780
实验班号:
33机器号:
42
一.实验目的
1.了解MSP430G2xxx汇编格式指令和常用寻址方式
2.了解C语言函数调用过程
3.通过反汇编了解C编译器实现初始化变量的方法
4.掌握计算机中数的表示和编码
二.实验任务
1)程序用到了哪些指令?
mov.
call
clr.b
mov.b
iv.b
jmp
pus.
dcd.
add.
clr.
j
r
br
2)程序用到了哪几种寻址方式?
立即数寻址
寄存器寻址
绝对地址寻址
寄存器相对寻址
3)用单步执行命令11,跟踪函数dlay的调用和返回,用vi/rgisr和vi/mmory查看堆栈指针SP和堆栈内的内容,记录堆栈指针SP和堆栈内容的变化;
SP:
0x03(执行mai函数时)0x03c(执行dlay函数时)0x030x03c...堆栈中只有R15的值发生变化,因为R15存放了变量i的值,因此不断变化。
4)修改l4_1.C,将变量i定义为全局变量,通过反汇编的代码,比较与定义为局部变量的不同;
汇编代码长度增加变量i的存储地址由R15变为RAM里面的0x0200
5)修改L4_1.C,将变量i的类型从usigdi类型,改为usigdlog类型,反汇编看看函数dlay的代码发生了什么变化?
程序执行的结果有什么不同?
为什么?
(需在实验板上运行)。
dlay函数的地址变到mai函数上部,i变量由两个字节变为四个字节
dlay函数的执行时间变长,LD灯的变化速率变慢。
因为变量i从i转换为log,因此i的增加速率变慢,daly函数的执行时间也就变长。
2.了解C语言程序的执行过程
实验中查看到该地址的值是多少?
程序执行的第一条指令是什么指令?
mai函数的入口是单片机上电就被执行的第一条语句吗?
未去除ruo:
PC=0xc00c
0X~0X:
0X00C0
第一条指令是关闭看门狗,00c00c40b25a800120mov.#0x5a80,dcl
mai函数的入口就是单片机上电执行的第一条语句。
去除ruo:
PC=0xc000
0X~0X:
0X00C0
第一条指令是初始化sp,00c00040310400mov.#0x400,sp
mai函数的入口不是单片机上电执行的第一条语句。
3.C语言中带初始化变量的定义及其实现
在dbug下反汇编程序,比较一个数组分别定义成cos型常量、全局变量、局部变量三种不同形式,系统在初始值的实现上有何不同?
定义成cos型常量:
从上电复位后执行的第一条指令,到mai()函数中关闭看门狗的语句:
由于数组已经被定义为cos型,因此数组一开始就被分配在0xC000中并完成初始化,上面的代码完成了初始化SP和开始执行mai函数的作用。
定义成全局变量:
数组被定义为全局变量时开始没有被初始化,但是数组被分配在0x200地址里,数组里面数据存储在0xC000中,因此上电后开始执行初始化SP,以及将0xC000的赋给R13,将0x200赋给R12,接着跳转执行__daa16_mmcpy,并在mmcpy函数里完成对数组初始化,然后返回执行mai函数。
定义为局部变量:
数组被定义为局部变量时开始没有被初始化,也没有分配存储地址,但是数据里的数据还是存储在0xC000中,上电后执行到mai函数里初始化数组的语句时程序将0xC000赋给R15,接着用SP和R15完成初始化数组,并将数组分配在0x3A地址中。
(选做)定义为saic型局部变量时:
数组被定义为saic型局部变量时,和定义为全局变量时类似,数组被一开始没有被初始化,但是数组被分配在0x200地址里,数组里面数据存储在0xC000中,因此上电后开始执行初始化SP,以及将0xC000的赋给R13,将0x200赋给R12,接着跳转执行__daa16_mmcpy,并在mmcpy函数里完成对数组初始化,然后返回执行mai函数。
4.(选做)掌握计算机中数的表示和编码
假设某内存单元的字内容为0x06,试问该内容看作无符号数是多少?
看作带符号数是多少?
看作一条指令的机器码,如何利用DBUG下的命令知道表示一条什么指令?
如果内存单元的内容为0x5439,看作无符号数、看作带符号数、看作一条指令的机器码,分别表示什么?
看作ASCII码,表示的是哪两个字符?
如何理解存放在内存中的内容?
0X06看作无符号数是65286,看作有符号数是-250。
建立一个C项目,在DBUG下,利用mmory命令,将RAM区的内容改为0x06,0x,
再用disassmbly命令反汇编该RAM区内容,可查看0x06所代表的指令为ad.R15,R6。
0x5439看作无符号数是21561,看作带符号数也是21561,看作指令的机器码则所代表的指令是add.@R4+,R9,看作ASCII码的话表示5I。
内存中存放的内容是二进制数编码表示的指令是机器码,是CPU能够直接识别的语言,能够被机器识别并转化为相应的操作指令。
思考:
为什么查看0x06是一条什么指令的机器码时,按顺序修改存储单元的内容时输入的是0x06,0x,而不是0x,0x06?
因为MSP430存储器的读写模式采用的是小端模式,即低字节到低地址单元,高字节到高地址单元,所以当写入0x06,0x时,表示的正是0x06。
实验名称:
实验5.单片机应用系统硬件组成
姓名:
袁鹏学号:
2013011780
实验班号:
33机器号:
42
一.实验目的
1.了解MSP4301xx单片机结构及其编程仿真接口
2.了解MSP430G2xxx两线制JAG编程仿真接口
3.了解单片机应用系统的基本硬件组成
4.学习相对复杂项目的程序结构和良好编程风格
二、实验任务
1.了解MSP4301xx单片机结构及其编程仿真接口
MSP430149单片机的引脚基本输入/输出控制与MSP430G2553的基本相同,不同的是:
1)MSP430149有P1~P6六个I/O端口;2)各I/引脚在MSP430149内没有上拉电阻,所以没有PxR寄存器;3)MSP430149的引脚有64根,每个引脚的复用功能没有MSP430G2553多,所以没有PxSL2寄存器。
因此,在将实验2中用MSP430G2553上完成的任务2、任务3的C语言程序移植到MSP430149上时,要根据MSP430149的结构对程序进行相应的调整。
具体代
2.了解MSP430G2xxx两线制JAG编程仿真接口
根据MSP430的结构特点,MSP430G2xxx实验板上有板载仿真器,因此既可以直接连接USB线进行仿真调试,又可以利用板载仿真器进行仿真调试。
后者具体可以通过两种方式进行:
一是用Z板载仿真器对MSP430G2553单片机进行仿真调试:
将一块实验班做仿真器用,一块做目标实验板使用。
二是用USB型430JAG仿真器对MSP430G2553单片机进行仿真调试,将USB
型430JAG与实验班采用两线制线的方式连接起来。
L5_LD.c代码如下:
4.学习相对复杂项目的程序结构和良好编程风格
基于MSP4306638实验箱做演示实验,MSP4306638单片机结构及其实验箱原理图可参看附录D(提供电子版)。
简单阅读提供的程序源代码,总结几点良好编程风格。
1)图片显示演示实验
2)(选做)音频播录演示实验
3)(选做)直流电机调速控制
演示程序都在mai.c内大量引用了自己编写的头文件和函数,而mai函数则是由几个函数完成,因此代码显得十分简洁明了,代码里包含大量注释来解释代码的具体含义,容易理解,清晰简明。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 清华大学计算机硬件技术基础实验报告 3500字 清华大学 计算机硬件 技术 基础 实验 报告 3500