资源描述:
《单片机(曹丹华)微机实验一》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《微机实验》报告实验名称KeiIC的使用与汇编语言上机操作专业班级姓名学号U200914186序号联系方式13697327395一、任务要求1•掌握KeilC环境的使用1)字节拆分'合并:调试e421.asm程序,观察相关寄存器和单元的内容。2)数据块填充:调试fill.asm程序,观察相关寄存器和单元的内容。2.编写两个十六位数的加法程序。有两个十六位无符号数,分别存放在从20H和30H开始的数据区中,低八位先存,高八位在后,和存于R3(高八位)和R4(低八位),进位位存于R2o二'设计思路对于任务要求(1),由于实验代码已知,操作人员只需在KeiI软件上
2、进行运行调试,在此不一一赘述,下面仅针对实验要求(2)叙述我的设计思路。关于编写两个十六位数的加法程序,在低位相加时,直接采用指令ADD然后存数即可,在处理高位时,由于可能存在进位,因此在相加时应采用指令ADDC将被加数、加数、以及低位到高位的进位相加然后存数,而且在处理该问题时应考虑到两个十六位相加可能会出现第十七位,故应另辟一个地址单元存放最高位的数。三、资源分配根据此程序的要求。两个十六位无符号数,分别存放在从20H和30H开始的数据区中;和存于R3(高4八位)和R4(低八位),进位位存于R20四、流程图开始存数地位相加,和存入R4高位相加,和存入R3
3、进位Cy存入R2.7▼结束五、源代码(含文件头说明、资源使用说明、语句行注释)Filename:test.asmDescription:两个十六位数的加法程序Date:2011/9/27Designedby:ChenXinSourceused:20H:加数A的低位21H:加数A的高位30H:加数B的低位31H:加数B的高位R4:和的低位R3:和的高位R2:和的进位ORG0000HLJMPMAINORG0000HMAIN:CLRCMOV20H,#10HMOV21H,#2AHMOV30H,#21HMOV31H,#00HMOVRO,20HMOVA,30HADDCA
4、,ROMOVR4,ACLRAMOVRO,21HMOVA,31HADDCA,ROMOVR3,ACLRAADDCA,#0MOVR2,ASJMP$END;将进位位清零;将A中的地位存入R0中;将8中的地位存入A累加器中;将低位相加;其和存入R4中;対累加器A清零;将人中的高位存入R0中;将8中的高位存入A累加器中;癇高位攻应进位位相加;其和存入R4中;対累加器A清零;将进位存入A.7;将进位存入R2.7六、程序测试方法与结果、软件性能分析手动输入改变两个加数的值,均可得到正确的和。对于不同的加数,分别在调试过程中跟踪人R4,R3,R2的值,均可得到对应的预期的数值
5、。因此,可以说,该程序的源代码是放心、可靠、经过检验的,该程序是合格的。七、心得与体会本次实验,在经历安装Keil、调试已知源代码、编写源代码后,对Keil的运行环境有了一定认知,能够建立一个工程编写一些简单的小程序,并进行相应的调试。同时在学习过程中也加深了我对BCD码、ASCII码、堆栈、寄存器、数据指针、汇编语言指令、机器码等基本概念的理解,为后续程序编制和调试打下基础。附思考题1•怎样查看工作寄存器、SFR、片内RAM、片外RAM及程序代码空间内容?Disassembly窗口有何作用?答:电击调试后,在工作窗左侧的Register中可以清晰的观察到工
6、作寄存器R0-R7、特殊寄存器和PSW各位的空间内容;在右下角Memory^中输入D+片内地址,即可查看片内RAM的空间内容;输入X+片外地址即可查看片外RAM的空间内容;。。。Disassembly窗口的作用是灵示程修计数器PC指向的地址。0RG0100HMOVSP,#40HMOV30H,#49MOVRO,#32HMOV@R0,30HMOVA,FOHANLA,30HSWAPAORG0000HLJMPMAINMAIN:2•字节拆分、合并还有哪些方法,举一例说明。;赋堆栈指针;30H单元赋值;R0指针赋值;将30H中的内容copy到32H中;累加器A赋值;得到
7、原数码的高四位3.若按递减1规律填充数据块,应如何修改程序?ORG0000HLJMPMAINORG01OOHMAIN:MOVSP,#40HFILL:MOVA,#OFFH;给累加器A赋初值MOVRO,#00H;设循环计数器MOVDPTR,#7020H;设数据指针FILL1:MOVX@DPTR,A;传送到片外RAMDECA;A内容减1INCDPTR;修改数据指针INCRO:修改循环计数器CJNERO,FILL1;判断是否结束HERE:SJMPHERE;原地踏步END4.若从7020H单元开始,连续填充10个字节,应该如何修改程序?不妨将10-19送入7020H-
8、7029单元中,改变后的程序代码如下:ORG0000