《单片机第五章作业答案.docx》由会员分享,可在线阅读,更多相关《单片机第五章作业答案.docx(5页珍藏版)》请在三一办公上搜索。
1、单片机第五章作业答案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字节的无
2、符号十进制数加法子程序,其功能为将和指出的内部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, LO
3、OP RET END 8. 试设计一个程序,其功能为判断中压缩BCD码十进制最高位是否为零,若最高位为0,且该十进制数不为0,则通过左移使最高位不为0。 ORG 0000H AJMP MAIN ORG 0030H 9. 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
4、试设计一个双字节无符号整数乘法子程序,其功能为将和相乘,积存放于30H33H。 R3R5R2R4R2R5R3R4+积:R0R3R5R2R4开始R2R4累加到结果单元R2R4LR2R5累加到结果单元R2R5LR3R4LR3R5LR3R4累加到结果单元R3R5累加到结果单元结束MULTB: MOV R7, #04 MOV R0, #33H LOOP : MOV R0,#00H DJNZ R7,LOOP MOV A, R2 MOV B, R4 ;结果单元清0 ;取被乘数低位字节 ;取乘数低位字节R4 MUL AB ACALL RADD MOV A, R2 ;R4R2 ;调用乘积相加子程序 ;取被乘数
5、低位字节 R2 ;取乘数高位字节R5 MOV B, R5 MUL AB ;R5R2 ;积字节指针减1 ;调用乘积相加子程序 DEC R0 ACALL RADD MOV A,R4 MOV B,R3 MUL AB ;R4R3 DEC R0 DEC R0 ACALL RADD MOV A,R5 MOV B,R3 MUL AB ;R5R3 DEC R0 ACALL DEC R0 RET RADD:ADD A,R0 ;累加子程序 RADD MOV R0,A MOV A,B INC R0 ADDC A,R0 MOV R0,A INC R0 MOV A,R0 ;加进位 ADDC A,#00H MOV R0,
6、A RET 11. 试设计一个子程序,其功能为将指出的内部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,入口时15。 SQRT: ADD A,#1 MOVC A, A+PC RET TAB: DB 0,1,4,9,225