MOV DPTR,#3848H ;立即数寻址 MOV 40H,38H MOV R0,30H MOV P0,R0
3848H→DPTR
;直接寻址( 38H)→40H ;直接寻址( 30H)→R0 ;寄存器寻址
(R0)→P0 30H→18H
MOV 18H,#30H ;立即数寻址 MOV A,@R0 MOV P2,P1
;寄存器间接寻址 ((R0))→A ;直接寻址( P1)→P2
最后结果:(R0)=38H,(A)=40H,(P0)=38H,(P1)=(P2)=0F0H,(DPTR) =3848H,(18H)=30H,(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H 注意: →左边是内容,右边是单元
7、对89C51/S51片内 RAM 的高128字节的地址空间寻址要注意什么? 答 用直接寻址,位寻址,寄存器寻址 8、指出下列指令的本质区别?
MOV
A,DATA A,#DATA
;直接寻址 2字节1周期 ;立即数寻址
2字节1周期
MOV MOV MOV
DATA1,DATA2 ; 直接寻址 3字节2周期 74H,#78H
;立即数寻址
3字节2周期
A
如果想查某一指令的机器码,字节数或周期数可查阅书本后面的附录 9、
MOV MOV MOV MOV
A,@R0 ;((R0))=80H →A @R0,40H
;(40H)=08H →(R0)
40H,A ;(A)=80→40H R0,#35H
;35H→R0
(A)=80H,(32H)=08H,(40H)=80H
最后结果:( R0)=35H 10、如何访问 SFR?
用直接寻址,位寻址,寄存器寻址 11、如何访问片外 RAM?
只能采用寄存器间接寻址(用 MOVX 指令)
9
12、如何访问片内RAM?
低128字节:直接寻址,位寻址,寄存器间接寻址,寄存器寻址( R0~R7)
高128字节:直接寻址,位寻址,寄存器寻址 13、如何访问片内外ROM?
采用变址寻址(用 MOVC 指令) 14、说明十进制调整的原因和 法方
答:压缩BCD 码在进行加法运算时应逢十进一,而计算机只将其当作十六 进制数处理,此时得到的结果不正确。用
DA A 指令调整(加 06H,60H,15、说明 89C51/S51的布尔处理机功能
答:用来进行位操作 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
10
66H)
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 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
11
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 指令和 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
12
和 LCALL
相关推荐: