- 1、本文档共126页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
12.试说明下段程序中每条指令的作用,当指令执行完后,R0中的内容是什么? MOV R0,#0AFH;R0=AFH XCH A,R0 ;A=AFH SWAP A ;A=FAH XCH A,R0 ;R0=FAH 所以R0中的内容为FAH 13.试编程将片内RAM中30H和31H单元中内容相乘,结果存放在32H和33H单元中,高位存放在32H单元中。 解:MOV A,30H MOV B,31H MUL A,B MOV 32H,B MOV 33H,A 14.试编程将20H单元中的两个BCD数拆开,并变成相应的ASCII码存入21H和22H单元。 解:由于20H单元中存放的是压缩BCD码,转换过程是先将其拆开后分别加上30H即可 MOV A,20H ANL A,#0FH ADD A,#30H MOV 21H,A MOV A,20H ANL A,#0F0H SWAP A ADD A,#30H MOV 22H,A 15.设在寄存器R3的低4位中存有数码0~F中的一个数,试将其转换成ASCII码,并存入片外RAM的2000H单元。 解:将该1位16进制数转换成ASCII码要分两步 0~9时+30H A~F时+37H MOV A,R3 ANL A,#0FH MOV B,A CLR C SUBB A,#0AH MOV A,B JC L1 ADD A,#07H L1:ADD A,#A30H MOV DPTR,#2000H MOVX @DPTR,A 16.试编程将片内RAM 30H单元中8位无符号二进制数转换成3位BCD码,并存入片内RAM 40H(百位)和41H(十位、个位)两个单元中。 解:解题关键是将非压缩BCD码拼凑成压缩BCD码 MOV B,#64H MOV A,30H DIV AB MOV 40H,A MOV A,B MOV B,#0AH DIV AB SWAP A ADD A, B MOV 41H,A 17.下述指令执行后,SP=?A=?B=?试解释每一条指令的作用。 ORG 0100H MOV SP,#40H;SP=40H MOV A,#30H;A=30H LCALL 0500H(41H)=09H(42H)=00H ADD A,#10H;A=40H MOV B,A;B=40H L1:SJMP L1;等待 ORG 0500H MOV DPTR,#0009H PUSH DPL PUSH DPH RET * ACALL addr11绝对调用指令,该指令提供11位目标地址,限制在2K范围内调用。 由于是双字节指令,所以,在执行该指令时(PC+2)→(PC),以获得下一条指令的地址,然后把该地址压入堆栈作为返回地址。 其操作码的形式与AJMP指令相同。 例如:将45H单元的内容转换成十进制,百位→22H单元、十位→23H单元、个位→24H单元我们先看一段程序 M1: MOV R0,#22H MOV B,#64H MOV A,45H DIV AB MOV @R0,A INC R0 MOV A,B MOV B,#0AH DIV AB MOV @R0,A INC R0 MOV @R0,B SJMP $ M1:MOV R0,#22H MOV B,#64H MOV A,45H ACALL N1 MOV A,B MOV B,#0AH ACALL N1 MOV R0,B SJMP $ N1: DIV AB MOV @R0,A INC R0 RET 主程序 子程序 子程序 ORG 1000H M1:MOV R0,#22H 机器码7822 MOV B,#64H 机器码75F064 MOV A,45H 机器码E545 ACALL N1 机器码1100 MOV A,B 机器码E5F0 MOV B,#0AH 机器码75F00A ACALL N1 机器码1100 MOV @R0,B 机器码A6F0 SJMP $ 机器码80FE ORG 10E0H N1: DIV AB 机器码84
文档评论(0)