计算机各硬件基础报告.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机各硬件基础报告   实验名称:实验4:寻址方式和指令系统   姓名:袁鹏学号:XX   实验班号:33机器号:42   一.实验目的   1.了解MSP430G2xxx汇编格式指令和常用寻址方式   2.了解C语言函数调用过程   3.通过反汇编了解C编译器实现初始化变量的方法   4.掌握计算机中数的表示和编码   二.实验任务   1)程序用到了哪些指令?   call      jmp         jne   ret   br   2)程序用到了哪几种寻址方式?   立即数寻址   寄存器寻址   绝对地址寻址   寄存器相对寻址   3)用单步执行命令F11,跟踪函数delay的调用和返回,用view/register和view/memory查看堆栈指针SP和堆栈内的内容,记录堆栈指针SP和堆栈内容的变化;   SP:0x03fe0x03fc(执行delay函数时)0x03fe0x03fc...堆栈中只有R15的值发生变化,因为R15存放了变量i的值,因此不断变化。   4)修改l4_,将变量i定义为全局变量,通过反汇编的代码,比较与定义为局部变量的不同;   汇编代码长度增加变量i的存储地址由R15变为RAM里面的0x0200   5)修改L4_,将变量i的类型从unsignedint类型,改为unsignedlong类型,反汇编看看函数delay的代码发生了什么变化?程序执行的结果有什么不同?为什么?。   delay函数的地址变到main函数上部,i变量由两个字节变为四个字节   delay函数的执行时间变长,LED灯的变化速率变慢。因为变量i从int转换为long,因此i的增加速率变慢,dealy函数的执行时间也就变长。   2.了解C语言程序的执行过程   实验中查看到该地址的值是多少?程序执行的第一条指令是什么指令?main函数的入口是单片机上电就被执行的第一条语句吗?   未去除runto:   PC=0xc00c   0XFFFE~0XFFFF:0X00C0   第一条指令是关闭看门狗,00c00c40b25a#0x5a80,wdtctl   main函数的入口就是单片机上电执行的第一条语句。   去除runto:   PC=0xc000   0XFFFE~0XFFFF:0X00C0   第一条指令是初始化sp,00c#0x400,sp   main函数的入口不是单片机上电执行的第一条语句。   3.C语言中带初始化变量的定义及其实现   在debug下反汇编程序,比较一个数组分别定义成const型常量、全局变量、局部变量三种不同形式,系统在初始值的实现上有何不同?   定义成const型常量:   从上电复位后执行的第一条指令,到main()函数中关闭看门狗的语句:   由于数组已经被定义为const型,因此数组一开始就被分配在0xC000中并完成初始化,上面的代码完成了初始化SP和开始执行main函数的作用。   定义成全局变量:   数组被定义为全局变量时开始没有被初始化,但是数组被分配在0x200地址里,数组里面数据存储在0xC000中,因此上电后开始执行初始化SP,以及将0xC000的赋给R13,将0x200赋给R12,接着跳转执行__data16_memcpy,并在memcpy函数里完成对数组初始化,然后返回执行main函数。   定义为局部变量:   数组被定义为局部变量时开始没有被初始化,也没有分配存储地址,但是数据里的数据还是存储在0xC000中,上电后执行到main函数里初始化数组的语句时程序将0xC000赋给R15,接着用SP和R15完成初始化数组,并将数组分配在0x3FA地址中。   定义为static型局部变量时:   数组被定义为static型局部变量时,和定义为全局变量时类似,数组被一开始没有被初始化,但是数组被分配在0x200地址里,数组里面数据存储在0xC000中,因此上电后开始执行初始化SP,以及将0xC000的赋给R13,将0x200赋给R12,接着跳转执行__data16_memcpy,并在memcpy函数里完成对数组初始化,然后返回执行main函数。   4.掌握计算机中数的表示和编码   假设某内存单元的字内容为0xFF06,试问该内容看作无符号数是多少?看作带符号数是多少?看作一条指令的机器码,如何利用DEBUG下的命令知道表示一条什么指令?如果内存单元的内容为0x5439,看作无符号数、看作带符号数、看作一条指令的机器码,分别表示什么?看作ASCII码,表示的是哪两个字符?如何理解存放在内存中的内容?0XFF06看作无符号数是65286,看作有符号数是-250。   建立一个C项目,在DEBUG下,利用memory命令,将RAM区的内容改为0

文档评论(0)

manyu + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档