MOV 18H,#30H ;立即数寻址 30H→18H
MOV A,@R0 ;寄存器间接寻址 ((R0)) →A
MOV P2,P1 ;直接寻址 (P1)→P2
最后结果:(R0)=38H,(A)=40H,(P0)=38H,(P1)=(P2)=0F0H,(DPTR)=3848H,(18H)=30H,(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H
注意:→左边是内容,右边是单元
7、? 用直接寻址,位寻址,寄存器寻址
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、用直接寻址,位寻址,寄存器寻址
11、只能采用寄存器间接寻址(用MOVX指令)
12、低128字节:直接寻址,位寻址,寄存器间接寻址,寄存器寻址(R0~R7)
高128字节:直接寻址,位寻址,寄存器寻址
13、采用变址寻址(用MOVC指令)
14、压缩BCD码在进行加法运算时应逢十进一,而计算机只将其当作十六进制数处理,此时得到的结果不正确。用DA A指令调整(加06H,60H,66H)
15、用来进行位操作
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
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 或者:
CLR C
SUBB A,#0AH
JNC LABEL
(2)A>10
CJNE A,#0AH,L1 RET L1:JNC LABEL RET 或者:
CLR C
;(A)大于10,转LABEL
;(A)与10比较,不等转L1
;(A)大于10,转LABEL
;(A)小于10,结束
;相等结束