计硬基础实验报告2.docx实验名称:寻址方式和指令系统(实验4)姓名:学号:实验目的了解MSP430G2xxx汇编格式指令和常用寻址方式;了解C语言函数调用过程;通过反汇编程序代码,掌握研究计算机底层问题的基本方法;掌握计算机中数的表示和编码。实验基本任务汇编格式指令和寻址方式的学习(可在simulator下完成),建立C项目,进入DEBUG状态,点击view/disassembly,,如图4-1和图4-2,阅读该程序的汇编格式代码,思考:(提供电子版):^include〃i()"voiddelay();//unsignedinti; //定义全局变量intmain(void){WDTCTL=WDTPW+WDTHOLD; //关闭看门狗//设置端口2为功能选择寄存器和2,使P2为基本输入输出功能,;P2SEL2=0;P20UT二Oxff;P2DIR二Oxff;for(;;){P2OUT「P2OUT;delay();};}voiddelay(){unsignedinti;for(i二0;i<0xffff;i++);//设置端口2输出的初值为Oxff//设置端口2为输出方向//主循环//将端口2的值取反后输出//延时//定义局部变量//延时1)程序用到了哪些指令?答:・b//jmp///jne/ret/br2) 程序用到了哪几种寻址方式?答:立即数寻址、寄存器寻址、绝对地址寻址、寄存器相对寻址3) 用单步执行命令F11,跟踪函数delay的调用和返回,用view/register和view/memory查看堆栈指针SP和存储系统堆栈区域的内容,记录堆栈指针SP和堆栈内容的变化;答:程序刚开始时SP指向0x400,进入main函数之后SP自动-2变为0x03FE,执行delay函数时,SP变为0x03FC,在delay中SP的值一直为0x03FC,delay循坏结束SP又变为0x03FE,之后一直循环变化。堆栈中只有R15的值发生变化,因为R15存放了变量i的值,因此不断变化。4) ,将变量i定义为全局变量,通过反汇编的代码,比较与定义为局部变量的不同;答:汇编代码长度增加,变量i的存储地址rhR15变为RAM里面的0x02005) ,将变量i的类型从unsignedint类型,改为unsignedlong类型,反汇编看看函数delay的代码发生了什么变化?程序执行的结果有什么不同?为什么?(需在实验板上运行)。答:delay函数的地址变到main函数上部,i由两个字节变为四个字节,delay函数的执行时间变长,LED灯的变化速率变慢。因为变量i从int变为long,因此i的增加速率变慢,delay函数的执行时间也就变长。设计连线:,连线图如下:修改后的程序如下:#include""voiddelay();//unsignedinti; //定义函数变量intmain(void){WDTCTL二WDTPW+WDTHOLD; //关闭看门狗//设置端口2为功能选择寄存器和2,使P
计硬基础实验报告2 来自淘豆网m.daumloan.com转载请标明出处.