好文档 - 专业文书写作范文服务资料分享网站

《单片机原理与应用》第三版赵德安课后习题答案.docx

天下 分享 时间: 加入收藏 我要投稿 点赞

DJNZ R0,LOOP SJMP $

TAB:DB‘MCS-51 Microcomputer’

END

6. 试设计一个n字节的无符号十进制数加法子程序,其功能为将(R0)和(R1)指出的内部RAM中两个n字节压缩BCD码无符号十进制数相加,结果存放于被加数单元中。子程序入口时,R0,R1分别指向被加数和加数的低位字节,字节数n存于R2,出口时R0指向和的最高位字节,CY为进位位。

答: LEN EQU n 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

7.试设计一个n字节的无符号十进制数减法子程序,其功能是将R0指出的内部RAM中n字节无符号压缩BCD码减去(R1)指出的内部RAM中n字节无符号压缩BCD码,结果存放在被减数单元中。子程序入口时,R0,R1分别指向被减数和减数的低位字节,字节数n存于R2,出口R0指向差的高位字节,CY=1为正,CY=0为负,结果为补码。

答:以n=2为例。

1. 将2字节无符号压缩BCD码被减数转换4位BCD码,存入60H~63H,再转换为二进制数,

存R3R4。 MOV A,@R0 ANL A,#0FH MOV 63H,A MOV A,@R0 SWAP A ANL A,#0FH MOV 62H,A INC R0 MOV A,@R0

ANL A,#0FH MOV 63H,A MOV A,@R0 SWAP A ANL A,#0FH MOV 62H,A DTB:MOV R0,#60H

MOV R3,#3 MOV R3,#0 MOV A,@R0 MOV R4,A LOOP:MOV A,R4

MOV B,#10 MUL AB MOV R4,A MOV A,B XCH A,R3 MOV B,#10 MUL AB ADD A,R3 MOV R3,A INC R0 MOV A,R4 ADD A,@R0 MOV R4,A MOV A,R3 ADDC A,#0 MOV R3,A DJNZ R2,LOOP

2. 用相同程序可将2字节无符号压缩BCD码减数转换4位BCD码,存入60H~63H,再转换

为二进制数,存R5R6。

3. 双字节无符号数减法程序,差存入R7R1 NSUB1:MOV A,R4 CLR C SUBB A,R6

MOV R1,A MOV A,R3 SUBB A,R5 MOV R7,A JBC POUT

CMPT:MOV A,R1;负数求补 CPL A ADD A,#1 MOV R1,A

MOV A,R7 CPL A ADDC A,#0 MOV @R0,A DEC R0 MOV @R0,R1 INC R0 RET

8.试设计一个子程序,其功能为判断R2R3R4R5中的压缩BCD码十进制数最高位是否为0,若最高位为0,且该十进制数不为0,则通过左移使最高位不为0。

9.试设计一个双字节无符号整数乘法子程序,其功能将R3R2和R5R4相乘,积存于30H-33H单元。

答:MULTB: CLR A MOV 30H, A

MOV 31H, A MOV 32H, A MOV 33H, A MOV R0,#30H MOV A,R2 MOV B,R4 MUL AB ACALL RADD MOV A,R2 MOV B,R5 MUL AB DEC R0 ACALL RADD MOV A,R4 MOV B,R3 MUL AB DEC R0 DEC R0 ACALL RADD MOV A,R5 MOV B,R3 MUL AB DEC R0 ACALL RADD SJMP $

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

10.试设计一个子程序,其功能将无符号二进制整数R2R3R4R5除以R6R7,其商存放于30H,31H单元,余数存于R2R3。

11.试设计一个子程序,其功能为将R0指出的内部RAM中6个单字节正整数按从小到大的次序重新排列。

答:

ORG 0200H MOV 30H,#6

SUM1 EQU 30H SUM2 EQU 31H LOOP1: MOV A,R0 INC A MOV R1,A

MOV SUM2,SUM1 DJNZ SUM1,LOOP2 SJMP DONE

LOOP2: DJNZ SUM2,LOOP3

SJMP LOOP1

LOOP3: MOV A,@R0 CLR C

SUBB A,@R1 JC NEXT XCH A,@R1 MOV @R0,A NEXT: INC R0 INC R1 SJMP LOOP2 DONE: END

12.试设计一个子程序,其功能为应用查表指令:MOVC A,@A+PC,求累加器A的平方值,结果送入A,入口时A<15。

答:MEMO:INC A

MOVC A,@A+PC

RET

TAB: DB 0,1,4,9,16,25,36,49

DB 64,81,100,121,144,169,196,225

13.试设计一个子程序,其功能将R0指出的内部RAM中双字节压缩BCD码转化为二进制数存放于R1指出的内部RAM中,并将结果再转化为BCD码存放于30H开始的单元中。

答:先将压缩BCD码转化为BCD码存放于30H开始的单元中 MOV R2,R0 MOV A,@R0 PUSH ACC ANL A,#0FH MOV 30H,A POP ACC

SWAP A ANL A,#0FH MOV 31H,A INC R0 MOV A,@R0 PUSH ACC ANL A,#0FH MOV 32H,A POP ACC SWAP A ANL A,#0FH MOV 33H,A

MOV A,31H; (( R1))=(31H)*10+(30H) MOV B,#10 MUL AB ADD A,30H MOV @R1,A

MOV A,32H; ((R1)+1)(( R1))=(32H)*100+(( R1)) MOV B,#100 MUL AB ADD A,@R1 MOV @R1,A INC R1 MOV A,B ADDC A,@R1 MOV @R1,A

MOV A,33H; ((R1)+1)(( R1))= (33H)*1000+((R1)+1)(( R1)) MOV B,#232 MUL AB DEC R1

《单片机原理与应用》第三版赵德安课后习题答案.docx

DJNZR0,LOOPSJMP$TAB:DB‘MCS-51Microcomputer’END6.试设计一个n字节的无符号十进制数加法子程序,其功能为将(R0)和(R1)指出的内部RAM中两个n字节压缩BCD码无符号十进制数相加,结果存放于被加数单元中。子程序入口时,R0,R1分别指向被加数和加数的低位字节,字节数n存于R2,出口时R0
推荐度:
点击下载文档文档为doc格式
1v08k15uzm7d82u9zjlx7yogl1itk200ipm
领取福利

微信扫码领取福利

微信扫码分享