📄 21imcu.html
字号:
55 55 55 55 55 <br>; 12 34 56 78 12 34 56 79 FF FF FF FF <br>;__________________________________________________________________________<br><br>;_____________________________________________________________________________<br>;Name: <a name="_SUBM4">SUBM4</a><br>;Func: 四字节乘四字节乘法子程序<br>;Input:被乘数和乘数分别放在内部RAM20H--27H单元中,乘数位数放在2AH单元中<br>;OutPut: 乘积放在内部RAM61H-68H单元中.<br>;_____________________________________________________________________________<br> ORG 20H<br>DATA1 DEFB 0FFH 被乘数低字节<br>DATA2 DEFB 0FFH<br>DATA3 DEFB 0FFH<br>DATA4 DEFB 7FH 被乘数高字节<br>DATB1 DEFB 0FFH 乘数低字节<br>DATB2 DEFB 0FFH<br>DATB3 DEFB 0FFH<br>DATB4 DEFB 7FH 乘数高字节<br>COVNT EQU 20H<br> ORG 2000H<br> AJMP MAIN<br>MAIN: MOV R0, DATA1<br> MOV R1, DATA2<br> MOV R2, DATA3<br> MOV R3, DATA4<br> MOV R4, DATB1<br> MOV R5, DATB2<br> MOV R6, DATB3<br> MOV R7, DATB4<br> MOV 2AH, #COVNT<br> CLR A<br> MOV 61H, A<br> MOV 62H, A<br> MOV 63H, A<br> MOV 64H, A<br> MOV 65H, A<br> MOV 66H, A<br> MOV 67H, A<br> MOV 68H, A<br> ACALL CHENG6<br>LOOP0: SJMP LOOP0<br> ORG 2200H<br>CHENG6: MOV A, 61H<br> ADD A, 61H<br> MOV 61H, A<br> MOV A, 62H<br> ADDC A, 62H<br> MOV 62H, A<br> MOV A, 63H<br> ADDC A, 63H<br> MOV 63H, A<br> MOV A, 64H<br> ADDC A, 64H<br> MOV 64H, A<br> MOV A, 65H<br> ADDC A, 65H<br> MOV 65H, A<br> MOV A, 66H<br> ADDC A, 66H<br> MOV 66H, A<br> MOV A, 67H<br> ADDC A, 67H<br> MOV 67H, A<br> MOV A, 68H<br> ADDC A, 68H<br> MOV 68H, A<br> MOV A, R4<br> ADD A, R4<br> MOV R4, A<br> MOV A, R5<br> ADD A, R5<br> MOV R5, A<br> MOV A, R6<br> ADD A, R6<br> MOV R6, A<br> MOV A, R7<br> ADD A, R7<br> MOV R7, A<br> JNC LOOP1<br> MOV A, 61H<br> ADD A, R0<br> MOV 61H, A<br> MOV A, 62H<br> ADDC A, R1<br> MOV A, 63H<br> ADDC A, R2<br> MOV 63H, A<br> MOV A, 64H<br> ADDC A, R3<br> MOV 64H, A<br> MOV A, 65H<br> ADDC A, #00H<br> MOV 65H, A<br> MOV A, 66H<br> ADDC A, #00H<br> MOV 66H, A<br> MOV A, 67H<br> ADDC A, #00H<br> MOV 67H, A<br> MOV A, 68H<br> ADDC A, #00H<br> MOV 68H, A<br>LOOP1: DJNZ 2AH, LOOP2<br> RET<br>LOOP2: AJMP CHENG6<br>END<br>;__________________________________________________________________________<br>; 被乘数 乘数 积数<br>; 23H22H21H20H 27H26H25H24H 68H--61H<br>; 7F FF FF FF 7F FF FF FF 3F FF FF FF 00 00 01 00<br>; 00 FF FF FF 00 00 FF FF 00 00 00 FF FE FF 00 01<br>;__________________________________________________________________________<br>;_____________________________________________________________________________<br>;Name: <a name="_CHU3">CHU3</a><br>;Func: 五字节除五字节除法子程序<br>;Input: 被除数放在内部RAM20H-24H单元中,除数放在10H-14H单元中.<br>;OutPut:商数放在25-29单元中,25H单元放最低字节,余数放在20H-24H单元中,20H单元放最低字节<br>;Use: 用A,C,R0,R1,R2,R3,R6,R7寄存器,其中R0作移位减计数器,使用位地址60H单元作进位位,C作暂存器<br>;_____________________________________________________________________________<br> ORG 20H<br>DATA1: DEFB 21H 被除数最低字节<br>DATA2: DEFB 43H <br>DATA3: DEFB 65H <br>DATA4: DEFB 87H <br>DATA5: DEFB A9H 被除数最高字节<br> ORG 10H<br>DATB1: DEFB 9AH 除数最低字节<br>DATB2: DEFB 78H<br>DATB3: DEFB 56H<br>DATB4: DEFB 34H<br>DATB5: DEFB 12H 除数最高字节<br>ORG 2000H<br>AJMP MAIN<br>MAIN: ACALL CHU3<br>LOOP: SJMP LOOP<br>CHU3: MOV R0, #DATB1<br>MOV R7, #04H ;检查除数为零停止运算<br>LOOP1: MOV A, @R0<br>JNC R0<br>ORL A, @R0<br>JNZ A, LOOP0<br>DJNZ R7, LOOP1<br>AJMP LOOP2<br>LOOP0: CLR A<br>MOV R0, #25H<br>MOV R7, #05H<br>LOOP3: MOV @R0, A<br>INC R0<br>DJNZ R7, LOOP6<br>MOV R6, #28H ;移位计数器<br>LOOP8: MOV R0, #DATA1 ;与商连在一起左移<br>MOV R7, #0AH<br>LOOP4: MOV A, @R0<br>RLC A<br>MOV @R0, A<br>INC R0<br>DJNZ R7, LOOP<br>CLR C<br>MOV R0, #25H; 被除数减除数(此被除数是扩充位)<br>MOV R1, #DATB1<br>MOV R7, #05H<br>LOOP5: MOV A, @R0<br>SUBB A, @R1<br>MOV @R0, A<br>INC R0<br>INC R1<br>DJNZ R7, LOOP5<br>JNC C, LOOP6 <br>MOV 66H, C ;暂存进位位<br>MOV R0, #25H ;不够减恢复余数<br>MOV R1, #DATB1<br>MOV R7, #05H<br>CLR C<br>LOOP7: MOV A, @R0<br>ADDC A, @R1<br>MOV @R0, A<br>INC R0<br>INC R1<br>DJNZ R7, LOOP7<br>MOV C, 60H<br>LOOP6: CPL C<br>DJNZ R6, LOOP8<br>MOV R1, #20H<br>MOV R1, #25H<br>MOV 7, #05H<br>LOOP9: MOV A, @R0<br>RLC A<br>MOV R3, A<br>MOV A, @R1<br>MOV @R0, A<br>MOV A, R3<br>MOV @R1, A<br>INC R0<br>INC R1<br>DJNZ R7, LOOP9<br>LOOP2: RET<br>;_____________________________________________________________________________<br>;Name: <a name="_CHU4">CHU4</a><br>;Func: 双字节除单字节除法子程序<br>;Input: 被除数放在R0,R1 R0放被除数低字节,除数放在R4,R7为字节长度<br>;OutPut: 商数庆在R0中,余数放在R1中<br>;Use: <br>;_____________________________________________________________________________<br><br>DATA1 EQU 6DH 被除数低字节<br>DATA2 EQU 32H 被除数高字节<br>DATB EQU 47H 除数<br> ORG 2000H<br> AJMP MAIN<br>MAIN: MOV R0, #DATA1<br> MOV R1, #DATA2<br> MOV R4, #DATB<br> MOV R7, #08H<br> ACALL CHU4<br>LOOP: SJMP LOOP<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -