计硬基础实验报告2.docP2SEL二0;
P2SEL2=0;
P2OUT=0xff;
P2DIR=0xff; for (;;){ P20UT="P20UT;
delay ();
//延时
实验名称:寻址方式和指令系统(实验4) 姓名: 学号:
实验目的
了解MSP430G2XXX汇编格式指令和常用寻址方式;
了解C语言函数调用过程;
通过反汇编程序代码,掌握研究计算机底层问题的基本方法;
掌握计算机中数的表示和编码。
实验基本任务
汇编格式指令和寻址方式的学习(可在simulator下完成)
L4_l. c源程序见下,建立C项目,进入DEBUG状态,点击v iew/disassembly,在反汇编 窗口得到L4_l. c汇编格式指令的程序代码,如图4-1和图4-2,阅读该程序的汇编格式代码, 思考:
L4」.c程序清单(提供电子版):
ttinclude "io430. h〃
void delay ();
//unsigned int i; //定义全局变量
int main ( void )
{
WDTCTL 二 WDTPW + WDTHOLD; //关闭看门狗
//设置端口 2为功能选择寄存器和2,使P2为基本输入输出功能,
//设置端口 2输出的初值为Oxff
//设置端口 2为输出方向
//主循环
//将端口 2的值取反后输出
void delay()
//定义局部变量//延时
{ unsigned int i;
for (i=0;i<0xffff;i++);
1)程序用到了哪些指令?
答:mov. w/call/clr. b/mov. b/inv. b/jmp/push. w/decd. w/add. w/clr. w/jne/ret/br
2) 程序用到了哪几种寻址方式?
答:立即数寻址、寄存器寻址、绝对地址寻址、寄存器相对寻址
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的存储地址由R15变为RAM里面的0x0200
5) 修改L4_l. C,将变量i的类型从unsigned int类型,改为unsigned long类型,反汇 编看看函数delay的代码发生了什么变化?程序执行的结果有什么不同?为什么?(需在实 验板上运行)。
答:delay函数的地址变到main函数上部,i由两个字节变为四个字节,delay函数的执 行时间变长,LED灯的变化速率变慢。因为变量i从int变为long,因此i的增加速率变慢, delay函数的执行时间也就变长。
设计连线:将P
计硬基础实验报告2 来自淘豆网m.daumloan.com转载请标明出处.