单片机第五章作业答
案
精品资料
5. 试编制一个子程序将字符串‘MCS-51 Microcomputer’装入外部RAM8000H开始的显示缓冲区。
ORG AJMP MIAN: LOOP: TAB: DB
0000H
0030H
MOV DPTR, #8000H MOV R1, #0 MOV R0, #20 MOV A, R1 ADD A, #5 MOVC A, @A+PC MOVX @DPTR, A INC DPTR ;1B INC R1 DJNZ R0, LOOP ;3B ‘M’,’C’,’S’,’-‘,’5’,’1’,’ ‘,’M’,’i’,’c’,’r’,’o’ DB ‘c’,’o’,’m’,’p’,’u’,’t’,’e’,’r’ END
;1B ;1B
6. 试设计一个n字节的无符号十进制数加法子程序,其功能为将(R0)和(R1)指出的内部RAM中两个n字节压缩BCD码无符号十进制数相加,结果存放于被加数单元中。子程序入口时,R0,R1分别指向被加数和加数的低位字节,字节数n存于R2,出口时R0指向和的最高位字节,CY为进位位。
EQU 30 ORG 0000H AJMP MAIN ORG 0030H
MAIN: MOV SP. #60H MOV R2, ACALL SJMP $ ADD_NBYTE: CLR LOOP: MOV A, @R0 ADDC A, DA MOV @R0, INC INC
LEN
#LEN
ADD_NBYTE C @R1 A A R0 R1
仅供学习与交流,如有侵权请联系网站删除 谢谢2
精品资料
DJNZ R2, RET END
LOOP
8. 试设计一个程序,其功能为判断(R2R3R4R5)中压缩BCD码十进制最高位是否为零,若最高位为0,且该十进制数不为0,则通过左移使最高位不为0。
ORG AJMP ORG MAIN: LOOP: NEXT:
0000H
MAIN 0030H MOV A, ANL JNZ CLR MOV A, RLC MOV MOV RLC MOV MOV RLC MOV MOV RLC MOV ANL JZ SJMP $ END
R2 A, R5 R5, A, R4, A, R3, A, R2, A,
#80H NEXT C A A R4 A A R3 A A R2 A A #80H LOOP
9. 试设计一个双字节无符号整数乘法子程序,其功能为将(R3R2)和(R5R4)相乘,积存放于30H~33H。
仅供学习与交流,如有侵权请联系网站删除 谢谢3
精品资料
R3×R5R2R4R2R5R3R4+积:R0R3R5R2R4开始R2×R4累加到结果单元R2R4LR2×R5累加到结果单元R2R5LR3R4LR3R5LR3×R4累加到结果单元R3×R5累加到结果单元结束
MULTB: MOV R7, #04
R0,
;结果单元清0 #33H
MOV
LOOP : MOV @R0,#00H
DJNZ R7,LOOP MOV A, R2 MOV B, R4 MUL AB ACALL
;取被乘数低位字节 ;取乘数低位字节R4 ;R4×R2
;调用乘积相加子程序 ;取被乘数低位字节 R2 ;取乘数高位字节R5 ;R5×R2
RADD
MOV A, R2 MOV B, R5 MUL AB
DEC R0 ACALL
;积字节指针减1
;调用乘积相加子程序
RADD
MOV A,R4
MOV B,R3 MUL AB
;R4×R3
DEC R0 DEC R0 ACALL
RADD
MOV A,R5
B,R3 AB
;R5×R3
MOV MUL
仅供学习与交流,如有侵权请联系网站删除 谢谢4
精品资料
DEC ACALL DEC RET
R0 RADD R0
RADD:ADD A,@R0 ;累加子程序
MOV @R0,A
MOV A,B INC
R0
ADDC A,@R0 MOV @R0,A INC
R0
MOV A,@R0
A,#00H
;加进位
ADDC
MOV @R0,A
RET
11. 试设计一个子程序,其功能为将(R0)指出的内部RAM中6个单字节正整数按从小到大的次序重新排列。
S_2_L:
MOV R4, CLR PUSH 00H POP INC MOV MOV MOV MOV MOV CJNE SJMP JNC SETB MOV XCH MOV INC
#5 F0 01H
;R0入栈
;出栈赋给R1
LOOP0: LOOP1: NEXT: NOCH: R1 A, R4 R5, A A, @R0 B, A A, @R1 A, B, NEXT NOCH NOCH F0
@R0, A A, B @R1, A R0
仅供学习与交流,如有侵权请联系网站删除 谢谢5
相关推荐: