单片机第五章作业答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机第五章作业答案
5.试编制一个子程序将字符串‘MCS-51 Microcomputer’装入外部RAM8000H开始的显示缓冲区。
ORG 0000H
AJMP 0030H
MIAN: MOV DPTR, #8000H
MOV R1, #0
MOV R0, #20
LOOP: MOV A, R1
ADD A, #5
MOVC A, @A+PC
MOVX @DPTR, A ;1B
INC DPTR ;1B
INC R1 ;1B
DJNZ R0, LOOP ;3B
TAB: DB ‘M’,’C’,’S’,’-‘,’5’,’1’,’
‘,’M’,’i’,’c’,’r’,’o’
DB ‘c’,’o’,’m’,’p’,’u’,’t’,’e’,’r’
END
6.试设计一个n字节的无符号十进制数加法子程序,其功能为将(R0)和(R1)指出的内部RAM中两个n字节压缩BCD码无符号十
进制数相加,结果存放于被加数单元中。子程序入口时,R0,R1分别指向被加数和加数的低位字节,字节数n存于R2,出口时R0指向和的最高位字节,CY为进位位。
LEN EQU 30
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV SP. #60H
MOV R2, #LEN
ACALL ADD_NBYTE
SJMP $
ADD_NBYTE: CLR C
LOOP: MOV A, @R0
ADDC A, @R1
DA A
MOV @R0, A
INC R0
INC R1
DJNZ R2, LOOP
RET
END
8.试设计一个程序,其功能为判断(R2R3R4R5)中压缩BCD码十进制最高位是否为零,若最高位为0,且该十进制数不为0,则通过左移使最高位不为0。
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV A, R2
ANL A, #80H
JNZ NEXT
CLR C
LOOP: MOV A, R5
RLC A
MOV R5, A
MOV A, R4
RLC A
MOV R4, A
MOV A, R3
RLC A
MOV R3, A
MOV A, R2
RLC A
MOV R2, A
ANL A, #80H
JZ LOOP
NEXT: SJMP $
END
9. 试设计一个双字节无符号整数乘法子程序,其功能为将(R3R2)和(R5R4)相乘,积存放于30H~33H 。 R3R2R5R4R2R4R2R4R2R5R2R5R3R4R3R4R3R5R3R5L L L
×积:
L +结束开始R2×R4累加到结果单元R2×R5累加到结果单元R3×R4累加到结果单元R3×R5累加到结果单元
MULTB: MOV R7, #04 ;结果单元清0
MOV R0, #33H
LOOP : MOV @R0,#00H DJNZ R7,LOOP
MOV A,R2 ;取被乘数低位字节
MOV B,R4 ;取乘数低位字节R4
MUL AB ;R4×R2
ACALL RADD ;调用乘积相加子程序
MOV A,R2 ;取被乘数低位字节R2
MOV B,R5 ;取乘数高位字节R5
MUL AB ;R5×R2
DEC R0 ;积字节指针减1
ACALL RADD ;调用乘积相加子程序
MOV A,R4
MOV B,R3
MUL AB ;R4×R3
DEC R0
DEC R0
ACALL RADD
MOV A,R5
MOV B,R3
MUL A B ;R5×R3
DEC R0
ACALL RADD
DEC R0
RET
RADD:ADD A,@R0 ;累加子程序
MOV @R0,A
MOV A,B
INC R0
ADDC A,@R0
MOV @R0,A
INC R0
MOV A,@R0
ADDC A,#00H ;加进位
MOV @R0,A
RET
11.试设计一个子程序,其功能为将(R0)指出的内部RAM中6个单字节正整数按从小到大的次序重新排列。
S_2_L: MOV R4, #5
CLR F0
PUSH 00H ;R0入栈
POP 01H ;出栈赋给R1
INC R1
LOOP0: MOV A, R4
MOV R5, A
LOOP1: MOV A, @R0
MOV B, A
MOV A, @R1
CJNE A, B, NEXT
SJMP NOCH
NEXT: JNC NOCH
SETB F0
MOV @R0, A
XCH A, B
MOV @R1, A
NOCH: INC R0
INC R1
DJNZ R5, LOOP1
JNB F0, HALT
DJNZ R4, LOOP0
HALT: RET
12.试设计一个子程序,其功能为查表指令:MOVC A,@A+PC,求累加器(A)的平方值,结果送A,入口时(A)<15。
SQRT: ADD A,#1
MOVC A, @A+PC
RET
TAB: DB 0,1,4,9,…,225