1、Keil的使用与汇编语言上机操作Keil-的使用与汇编语言上机操作五、源代码 (含文件头说明、语句行注释) ORG 0000H LJMP START;长跳转至START执行程序 ORG 0100HSTART: MOV SP, #40H;给堆栈指针赋初值 MOV 20H, #0FFH;第一个数低八位 MOV 21H, #0FFH;第一个数高八位 MOV 22H, #11H;第二个数低八位 MOV 23H, #11H;第二个数高八位 MOV 24H, #11H;第三个数低八位 MOV 25H, #11H;第三个数高八位 MOV 26H, #11H;第四个数低八位 MOV 27H, #11H;第四个
2、数高八位 MOV R0, #22H MOV R1, #23H MOV R2, 20H ;存低八位 MOV R3, 21H ;存高八位 MOV R4, #00H;存进位位 MOV R5, #3;循环次数 LOOP: CLR C MOV A, R0 ADD A, R2;低八位相加 MOV R2, A;低八位存于R2中 MOV A, R1 ADDC A, R3;高八位相加 MOV R3, A ;高八位存于R3中 JC AA ;若有进位位,则转AA,对R4进行自加1操作BB: MOV A,R0 ADD A,#2 MOV R0,A MOV A,R1 ADD A,#2 MOV R1,A DJNZ R5,
3、LOOP;判断循环是否结束HERE: SJMP HEREAA: INC R4 SJMP BB六、程序测试方法与结果 考虑无进位情况: 考虑有进位情况:七、思考题1.怎样查看工作寄存器、SFR、片内RAM、片外RAM及程序代码空间内容?Disassembly 窗口有何作用?i.工作寄存器、SFR的内容可在Registers窗口中查看;ii.片内RAM、片外RAM、程序代码空间的内容可在Memorry窗口中,在Address栏中键入空间类型和地址来查看;iii.Disassembly窗口的作用是显示编译之后转化成的汇编代码。2.字节拆分、合并还有哪些方法,举一例说明。字节拆分可以通过ANL指令来达
4、到,比如说要拆分#49H,可以用:MOV A,#49HANL A,#OFHMOV 30H,AMOV A,#49HSWAP AANL A,#0FHMOV 31H,A字节合并可以用ORL指令来实现SWAP 31HORL 31H,30H3.若按递减1规律填充数据块,应如何修改程序?只需将INC A 改为DEC A 即可。4.若从7010H单元开始,连续填充20个字节,应该如何修改程序?i.将MOV DPTR, #7000H改为 MOV DPTR, #7010H ii.将CJNE R0, #00H, FILL1改为CJNE R0, #20, FILL1 5.若完成双字节BCD码加法,应如何修改程序?在ADD A 后面加DA A 即可本人承诺:本报告内容真实,无伪造数据,无抄袭他人成果。本人完全了解学校相关规定,如若违反,愿意承担其后果。签字: 白如海 2017 年 10 月 07 日 其它说明:1.标题:黑体,小四号2. 正文:宋体,五号,1.5倍行距3.流程图使用 SmartDraw7 或Visio软件绘制4.不要加封面