单片机原理、接口及应用 习题程序集.doc
文本预览下载声明
11
ANL A,#0FH
SWAP A
ANL P1,#0FH
ORL P1,A
SJMP $
12
MOV A,R0
XCH A,R1
MOV R0,A
SJMP $
13.(1)利用乘法指令
MOV B,#04H
MUL AB
SJMP $
(2)利用位移指令
RL A
RL A
MOV 20H,A
ANL A,#03H
MOV B,A
MOV A,20H
ANL A,#0FCH
SJMP $
(3)利用加法指令
ADD A,ACC
MOV R0,A
MOV A,#0
ADDC A,#0
MOV B,A
MOV A,R0
ADD A,ACC
MOV R1,A
MOV A,B
ADDC A,B
MOV B,A
MOV A,R1
SJMP $
14
XRL 40H,#3CH
SJMP $
15
MOV A,20H
ADD A,21H
DA A
MOV 22H,A
MOV A,#0
ADDC A,#0
MOV 23H,A
SJMP $
16
MOV A,R0
JZ ZE
MOV R1,#0FFH
SJMP $
ZE:MOV R1,#0
SJMP $
17
MOV A,50H
MOV B,51H
MUL AB
MOV 53H,B
MOV 52H,A
SJMP $
18
MOV R7,#0AH
WOP:XRL P1,#03H
DJNZ R7,WOP
SJMP $
19.单片机的移位指令只对A,且只有循环移位指令,为了使本单元的最高位移进下一单元的最低位,必须用大循环移位指令移位4次。
ORG 0
CLR C
MOV A,20H
RLC A
MOV 20H,A
MOV A,21H
RLC A
MOV 21H,A
MOV A,22H
RLC A
MOV 22H,A
MOV A,#0
RLC A
MOV 23H,A
SJMP $
因为是多个单元操作,为方便修改地址使用间址操作。片外地址用DPTR指示,只能用MOVX指令取数到A,片内地址用R0或R1指示,只能用MOV指令操作,因此循环操作外部数据存储器→A→内部数据存储器。
ORG 0000H
MOV DPTR,#1000H
MOV R0,#20H
LOOP:MOVX A,@DPTR
MOV @R0,A
INC DPTR
INC R0
CJNE R0,#71H,LOOP
SJMP $
要注意两高字节相加应加低字节相加时产生的进位,同时要考虑最高位的进位。
ORG 0
MOV A,R0
ADD A,R6
MOV 50H,A
MOV A,R7
ADDC A,R1
MOV 51H,A
MOV A,#0
ADDC A,ACC
MOV 52H,A
SJMP $
A中放小于14H(20)的数,平方表的一个数据占两个字节,可用BCD码或二进制数存放。(如A中放的是BCD码,则要先转换成二进制数再查表。)
ORG 0
MOV DPTR,#TAB
ADD A,ACC
PUSH ACC
MOVC A,@A+DPTR
MOV R7,A
POP ACC
INC A
MOV R6,A
SJMP $
TAB:DB 00,00,00,01,00,04,00,09,00,16H,…
DB …04H,00
先用异或指令判两数是否同号,在同号中判大小,异号中正数为大。
ORG 0
MOV A,20H
XRL A,21H
ANL A,#80H
JZ CMP
JB 20H.7,BG
AG: MOV 22H,20H
SJMP $
BG: MOV 22H,21H
SJMP $
CMP: MOV A,20H
CJNE A,21H,GR
GR: JNC AG
MOV 22H,21H
SJMP $
6.将待转换的数分离出高半字节并移到低4位加30H;再将待转换的数分离出低半字节加30H,安排好源地址和转换后数的地址指针,置好循环次数。
ORG 0000H
MOV R7,#05H
MOV R0,#20H
MOV R1,#25H
NET: MOV A,@R0
ANL A,#0F0H
SWAP A
ADD A,#30H
MOV @R1,A
INC R0
INC R1
DJNZ R7,NE
SJMP $
END
7.片内RAM间址寄存
显示全部