当前位置:首页 > 第三章习题解答
1. MCS-51单片机有几种寻址方式?这几种寻址方式是如何寻址的?
答:七种寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址、位寻址。
2. 试编程将片外RAM中80H单元的内容送到片内RAM的2BH单元。 答:
MOV @R0, #80H MOVX A, @R0 MOV 2BH, A
3. 试编程将片外RAM中40H单元的内容与R0的内容交换。 答:
MOV @R1, #40H MOVX A, @R1 XCH A, R0 MOVX @R1, A
4. 已知(A)=C9H,(B)=8DH,CY=1,执行指令ADDC A,B后结果如何?执行指令SUBB A,B后结果如何? 答:
执行指令ADDC A,B后(A)=57H,(B)=8DH,CY=1 执行指令SUBB A,B后(A)=3BH,(B)=8DH,CY=0
5. 试编程将片外RAM中30H和31H单元的内容相乘,结果存放在32H和33H单元,高位存放在32H单元。 答:
MOV R1, #30H MOVX A, @R1 MOV B, A INC R1
MOVX A, @R1 MUL AB INC R1 INC R1
MOVX @R1, A MOV A, B DEC R1
MOVX @R1, A
6. 试编程将20H单元的2个BCD数拆开,并变成相应的ASCII码存入21H和22H单元。 答: MOV ANL ORL
A, 20H A, #0FH A, #30H
MOV 21H, A MOV A, 20H ANL A, #0F0H SWAP A ORL A, #30H MOV 22H, A
7. 设在寄存器R3的低4位存有数码0~F中的一个数,试将其转换成ASCII码,并存入片外RAM的2000H单元。 答:
MOV A, R3 ;取4位二进制数 ANL A, #0FH ;屏蔽高4位
PUSH A ;保存A内容到堆栈 CLR C ;清C SUBB A, #0AH ;(A)-10
POP A ;恢复A内容
JC LOOP ;若C =1,则数<10转到LOOP ADD A, #07H ;若C =0,则加37H
LOOP: ADD A, #30H ;转换成ASCII码
MOV DPTR,#2000H MOVX @DPTR, A
8. 试编程将片内RAM中30H单元中8位无符号二进制数转换成3位BCD码,并存入片内RAM的40H(百位)和41H(十位、个位)2个单元中。 答:
MOV A, 30H ;取二进制数到A MOV B, #100 ;除数送入B DIV AB ;相除
MOV 40H, A ;存入百位数 MOV A, B ;余数送入A
MOV B, #10 ;除数送入B DIV AB ;相除
SWAP A ;十位移到高4位
ORL A, B ;十位、个位合并到1个字节 MOV 41H, A ;存十位、个位数 SJMP $
9. 试用MCS-51指令实现以下传送: (1) R2的内容传送入R7;
MOV B, R2 MOV R7, B
(2) ROM中1000H单元的内容传送入R1; MOV
DPTR, #1000H
CLR A
MOVC A, @A+DPTR MOV R1, A
(3) ROM中1000H单元的内容传送入片内RAM 50H单元; MOV DPTR, #1000H CLR A
MOVC A, @A+DPTR MOV 50H, A
(4) ROM中1000H单元的内容传送入片外RAM 70H单元。 MOV CLR A MOVC MOV MOVX
DPTR, #1000H A, @A+DPTR R1, #70H @R1, A
10. 编程将片内35H~55H单元中的内容传送入以3000H为首地址的片外数据存储区中。 答:
MOV R0, #35H
MOV DPTR, #3000H LOOP: MOV A, @R0 MOVX @DPTR, A INC R0 INC DPTR CJNE R0, #56H, LOOP SJMP $
11. 编程计算片内RAM区50H~57H共8个单元中数的算术平均值,结果存放于5AH中。 答: MOV R2, #8 ;计数器 MOV R0, #50H ;取数首地址 CLR A ;清A KKK: ADD A, @R0 ;加数 INC R0 DJNZ R2,KKK MOV B, #8 DIV AB MOV 5AH, A SJMP $
12. 设有100个无符号数,连续存放在以2000H为首地址的存储区中,试编程统计奇数和偶数的个数。 答:
MOV MOV MOV MOV R2, #100
DPTR, #2000H R3, #0 R4, #0
;奇数个数存放
;偶数个数存放
KKK: MOVX A, @DPTR MOV B, #2 DIV AB MOV A, B INC DPTR CJNE A,#0,DDD INC R4 SJMP NNN DDD: INC R3
NNN: DJNZ R2,KKK SJMP $
13. 将片外数据存储器地址为1000H~1030H的数据块全部搬到片内RAM的30H~60H单元中,并将原数据块区域全部清0。 答:
MOV DPTR, #1000H
MOV R0, #30 LOOP: MOVX A, @DPTR MOV @R0, A CLR A MOVX @DPTR, A INC DPTR INC R0 CJNE R0, #61H, LOOP SJMP $
14. 从20H单元开始有一无符号数据块,其长度在20H单元中。试求出数据块中的最小值,并存入21H单元。 答:
MOV @R0,#21H ;数据块首地址 MOV R1, 20H ;取数据块长度 MOV A, @R0 ;取一个数 MOV 21H,A ;存数 DDD:DJNZ R1,KKK ;判断是否取完 SJMP $ ;取完结束
KKK:INC MOV MOV CLR C
R0 A, @R0 B,A ;指向下一个数 ;取数 ;暂存
SUBB A,21H JNC DDD MOV 21H,B ;比较
;C=0,21H中数小,转移 ;存小数
SJMP DDD
15. 在以2000H为首地址的存储区中,存放着20个用ASCII码表示的0~9之间的数,试编程将它们转换成BCD码,并以压缩BCD码(即一个单元存储两位BCD码)的形式存放在3000H~3009H单元中。 答:
ORG 2000H MOV R1,#10 MOV R0,#30H MOV DPTR,#2000H LOOP: MOVX A,@DPTR ANL A,#0FH MOV B,A INC DPTR MOVX A,@DPTR ANL A,#0FH SWAP A ORL A,B MOV @R0, A INC R0 INC DPTR DJNZ R1,#00H,LOOP END
共分享92篇相关文档