单片机原理及接口技术-习题答案第四版李朝青(修订后) 联系客服

发布时间 : 星期日 文章单片机原理及接口技术-习题答案第四版李朝青(修订后)更新完毕开始阅读516cdfc4cdbff121dd36a32d7375a417876fc1fb

CLR C SUBB A,#0AH JNC L1 RET

L1:JNZ LABEL RET (3)A≤10

CJNE A,#0AH,L1 ;(A)与10比较,不等转L1 L2:LJMP LABEL ;相等转LABEL L1:JC L2 ;(A)小于10,转L2 RET 或者: CLR C SUBB A,#0AH JC LABEL JZ LABEL RET

22、(SP)=23H,(PC)=3412H 参看书上80页

23、(SP)=27H,(26H)=48H,(27H)=23H,(PC)=3456H 参看书上79页

24、不能。ACALL是短转指令,可调用的地址范围是2KB。

在看这个题的时候同时看一下AJMP指令。同时考虑调用指令ACALL和LCALL指令和RET指令的关系。

25、 MOV R2,#31H ;数据块长度→R2 MOV R0,#20H ;数据块首地址→R0 LOOP:MOV A,@R0 ;待查找的数据→A CLR C ;清进位位

SUBB A,#0AAH ;待查找的数据是0AAH吗 JZ L1 ;是,转L1

INC R0 ;不是,地址增1,指向下一个待查数据 DJNZ R2,LOOP ;数据块长度减1,不等于0,继续查找 MOV 51H,#00H ;等于0,未找到,00H→51H RET

13

L1:MOV 51H,#01H ;找到,01H→51H RET

26、 MOV R2,#31H ;数据块长度→R2 MOV R0,#20H ;数据块首地址→R0 LOOP:MOV A,@R0 ;待查找的数据→A JNZ L1 ;不为0,转L1 INC 51H ;为0,00H个数增1

L1:INC R0 ;地址增1,指向下一个待查数据 DJNZ R2,LOOP ;数据块长度减1,不等于0,继续查找 RET

27、 MOV DPTR,#SOURCE ;源首地址→DPTR MOV R0,#DIST ;目的首地址→R0 LOOP:MOVX A,@DPTR ;传送一个字符 MOV @R0,A

INC DPTR ;指向下一个字符 INC R0

CJNE A,#24H,LOOP ;传送的是“$”字符吗?不是,传送下一个字符 RET

28、 MOV A,R3 ;取该数高8位→A ANL A,#80H ;取出该数符号判断 JZ L1 ;是正数,转L1

MOV A,R4 ;是负数,将该数低8位→A CPL A ;低8位取反 ADD A,#01H ;加1

MOV R4,A ;低8位取反加1后→R4 MOV A,R3 ;将该数高8位→A CPL A ;高8位取反

ADDC A,#00H ;加上低8位加1时可能产生的进位 MOV R3,A ;高8位取反加1后→R3 L1:RET

29、 CLR C ;清进位位C MOV A,31H ;取该数低8位→A RLC A ;带进位位左移1位 MOV 31H,A ;结果存回31H

14

MOV A,30H ;取该数高8位→A RLC A ;带进位位左移1位 MOV 30H,A ;结果存回30H 30、 MOV R2,#04H ;字节长度→R2 MOV R0,#30H ;一个加数首地址→R0 MOV R1,#40H ;另一个加数首地址→R1 CLR C ;清进位位 LOOP:MOV A,@R0 ;取一个加数

ADDC A,@R1 ;两个加数带进位位相加 DA A ;十进制调整 MOV @R0,A ;存放结果 INC R0 ;指向下一个字节 INC R1 ;

DJNZ R2,LOOP ;数据块长度减1,不等于0,继续查找 RET

31、 MOV R2,#08H ;数据块长度→R2 MOV R0,#30H ;数据块目的地址→R0 MOV DPTR,#2000H ;数据块源地址→DPTR LOOP:MOVX A,@ DPTR ;传送一个数据 MOV @R0,A

INC DPTR ;指向下一个数据 INC R0 ;

DJNZ R2,LOOP ;数据块长度减1,没传送完,继续传送 RET

32、(1)MOV R0,0FH ;2字节,2周期 4字节4周期(差) MOV B,R0 ;2字节,2周期

(2)MOV R0,#0FH ;2字节,1周期 4字节3周期(中) MOV B,@R0 ;2字节,2周期

(3)MOV B,#0FH ;3字节,2周期 3字节2周期(好) 33、(1)功能是将片内RAM中50H~51H单元清0。

(2)7A0A(大家可以看一下书上,对于立即数寻址的话,后面一个字节存放的是立即数) 7850(第一个字节的后三位是寄存器,前一个条指令是010也就是指的R2,在这里是R0,所以应该是78,后一个字节存放的是立即数) DAFC (这里涉及到偏移量的计算,可以参考书上56页) 34、 INC @R0 ;(7EH)=00H

15

INC R0 ;(R0)=7FH INC @R0 ;(7FH)=39H INC DPTR ;(DPTR)=10FFH INC DPTR ;(DPTR)=1100H INC DPTR ;(DPTR)=1101H

35、解:(1000H)=53H (1001H)=54H (1002H)=41H (1003H)=52H (1004H)=54H (1005H)=12H (1006H)=34H (1007H)=30H (1008H)=00H (1009H)=70H

36、MOV R0,#40H ;40H→R0 MOV A,@R0 ;98H→A INC R0 ;41H→R0

ADD A,@R0 ;98H+(41H)=47H→A INC R0

MOV @R0,A ;结果存入42H单元 CLR A ;清A

ADDC A,#0 ;进位位存入A INC R0

MOV @R0,A ;进位位存入43H

功能:将40H,41H单元中的内容相加结果放在42H单元,进位放在43H单元,(R0)=43H,(A)=1,(40H)=98H,(41H)=AFH,(42H)=47H,(43H)=01H

37、 MOV A,61H ;F2H→A MOV B,#02H ;02H→B

MUL AB ;F2H×O2H=E4H→A ADD A,62H ;积的低8位加上CCH→A MOV 63H,A ;结果送62H CLR A ;清A

ADDC A,B ;积的高8位加进位位→A MOV 64H,A ;结果送64H

功能:将61H单元的内容乘2,低8位再加上62H单元的内容放入63H,将结果的高8位放在64H单元。(A)=02H,(B)=01H,(61H)=F2H,(62H)=CCH,(63H)=B0H,(64H)=02H 39、MOV A,XXH ORL A,#80H

16