单片机原理及接口技术-习题答案第四版李朝青(修订后) 下载本文

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

注意:→左边是内容,右边是单元

7、对89C51/S51片内RAM的高128字节的地址空间寻址要注意什么? 答 用直接寻址,位寻址,寄存器寻址 8、指出下列指令的本质区别?

MOV A,DATA ;直接寻址 2字节1周期 MOV A,#DATA ;立即数寻址 2字节1周期 MOV DATA1,DATA2 ;直接寻址 3字节2周期 MOV 74H,#78H ;立即数寻址 3字节2周期

如果想查某一指令的机器码,字节数或周期数可查阅书本后面的附录A 9、

MOV A,@R0 ;((R0))=80H→A MOV @R0,40H ;(40H)=08H→(R0) MOV 40H,A ;(A)=80→40H MOV R0,#35H ;35H→R0

最后结果:(R0)=35H (A)=80H,(32H)=08H,(40H)=80H 10、如何访问SFR?

用直接寻址,位寻址,寄存器寻址 11、如何访问片外RAM?

只能采用寄存器间接寻址(用MOVX指令) 12、如何访问片内RAM?

低128字节:直接寻址,位寻址,寄存器间接寻址,寄存器寻址(R0~R7) 高128字节:直接寻址,位寻址,寄存器寻址 13、如何访问片内外ROM?

采用变址寻址(用MOVC指令) 14、说明十进制调整的原因和方法

答:压缩BCD码在进行加法运算时应逢十进一,而计算机只将其当作十六进制数处理,此时得到的结果不正确。用DA A指令调整(加06H,60H,66H) 15、说明89C51/S51的布尔处理机功能

9文档来源为:从网络收集整理.word版本可编辑.

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

答:用来进行位操作

16、ANL A,#17H ;83H∧17H=03H→A

ORL 17H,A ;34H∨03H=37H→17H XRL A,@R0 ;03H⊕37H=34H CPL A ;34H求反等于CBH 所以(A)=CBH

17、(1)SETB ACC.0或SETB E0H ;E0H是累加器的地址

(2)CLR ACC.7 CLR ACC.6 CLR ACC.5 CLR ACC.4 (3)CLR ACC.6 CLR ACC.5 CLR ACC.4 CLR ACC.3 18、MOV 27H,R7 MOV 26H,R6 MOV 25H,R5 MOV 24H,R4 MOV 23H,R3 MOV 22H,R2 MOV 21H,R1 MOV 20H,R0 19、MOV 2FH,20 MOV 2EH,21 MOV 2DH,22 20、CLR C

MOV A,#5DH ;被减数的低8位→A MOV R2,#B4H ;减数低8位→R2

SUBB A,R2 ;被减数减去减数,差→A MOV 30H,A ;低8位结果→30H

10文档来源为:从网络收集整理.word版本可编辑.

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

MOV A,#6FH ;被减数的高8位→A MOV R2,#13H ;减数高8位→R2

SUBB A,R2 ;被减数减去减数,差→A MOV 31H,A ;高8位结果→30H

注意:如果在你的程序中用到了进位位,在程序开始的时候要记得清0进位位 21、(1)A≥10

CJNE A,#0AH,L1 ;(A)与10比较,不等转L1 LJMP LABEL ;相等转LABEL

L1:JNC LABEL ;(A)大于10,转LABEL 或者: CLR C

SUBB A,#0AH JNC LABEL (2)A>10

CJNE A,#0AH,L1 ;(A)与10比较,不等转L1 RET ;相等结束

L1:JNC LABEL ;(A)大于10,转LABEL RET ;(A)小于10,结束 或者: 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

11文档来源为:从网络收集整理.word版本可编辑.

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

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

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 ;传送的是“$”字符吗?不是,传送下一

12文档来源为:从网络收集整理.word版本可编辑.