📄 21imcu.html
字号:
CHU4: MOV A, R0<br> ADD A, R0<br> MOV R0, A<br> ADDC A, R1<br> MOV R1, A<br> SUBB A, R4<br> JC C, LOOP1<br> MOV R1, A<br> INC R0<br>LOOP1: DJNZ R7, CHU4<br> RET<br> END<br>;__________________________________________________________________________<br>; 被除数 除数 商数 余数<br>; R1R0 R4 R0 R1<br>; 326D 47 B5 3A<br>; 00FF 10 0F 0F<br>; 7FFF FG 80 7F<br>; 0040 F8 00 40<br>; FFC0 08 FF D2<br>;__________________________________________________________________________<br>;_____________________________________________________________________________<br>;Name: <a name="CHU5">CHU5</a><br>;Func: 双字节除单字节商为双字节除法子程序<br>;Input: 被除数放在R0,R1中,除数放在R3中,R2为被除数扩充位<br>;OutPut: 商数放在R4,R5中,R4放低位,余数放在R2中<br>;_____________________________________________________________________________<br>DATA1 EQU 01H 被除数低字节<br>DATA2 EQU 10H 被除数高字节<br>DATB EQU 10H 除数<br> ORG 2000H<br> AJMP MAIN<br>MAIN: MOV R0, #DATA1<br> MOV R1, #DATA2<br> MOV R2, #00H<br> MOV R3, #DATB<br> MOV R4, #00H<br> MOV R5, #00H<br> MOV R7, 10H<br> ACALL CHU5<br>LOOP: SJMP LOOP<br>CHU5: MOV A, R0<br> ADD A, R0<br> MOV R0, A<br> MOV A, R1<br> ADDC A, R1<br> MOV R1, A<br> MOV A, R2<br> ADDC A, R2<br> MOV R2, A<br> MOV A, R4 ;商数左移<br> ADD A, R4<br> MOV R4, A<br> MOV A, R5<br> ADDC A, R5<br> MOV R5, A<br> CJNE R2, #DATB, LOOP0<br>LOOP0: JC C, LOOP1<br> MOV A, R2; 建立新的余数<br> SUBB A, R3<br> MOV R2, A<br> MOV A, R4<br> ADD A, #01H<br> MOV R4, A<br> MOV A, R5<br> ADDC A, #00H<br> MOV R5, ,A<br>LOOP1: DJNZ R7, CHU5<br> RET<br>;_____________________________________________________________________________<br>; 被乘数 乘数 商数 余数<br>; R1R0 R2 R5R4 R2<br>; 1001 10 0100 01<br>; 17FF 10 007F 0F <br>;_____________________________________________________________________________<br><br>;_____________________________________________________________________________<br>;Name: <a name="CHU6">CHU6</a><br>;Func: 三字节除单字节商为三字节除法了程序<br>;Input: 被除数放在R0R1R2中, 除数放在R4中,R3存放被除数扩充位,也是余数存放数<br>;OutPut:商数放在内部RAM20H-22H单元中,其中20H单元放最低位<br>;Use: <br>;_____________________________________________________________________________<br><br>DATA1 EQU 08H ; 被除数最低位<br>DATA2 EQU 00H ; 被除数最高位<br>DATA3 EQU D0H<br>DATB EQU 20H ; 除数<br> ORG 2000H<br> AJMP LOOP0<br>LOOP0 MOV R0, #DATA1<br> MOV R1, #DATA2<br> MOV R2, #DATA3<br> MOV R3, #DATAB<br> MOV R4, #DATA1<br> MOV R3, #00H<br> MOV 20H, #00H<br> MOV 21H, #00H<br> MOV 22H, #00H <br> MOV R7, #18H<br> ACALL CHU6<br>LOOP2: SJMP LOOP2<br>CHU6: MOV A, R0<br> ADD A, R0 ; 被除数左移,包括扩充位<br> MOV R0, A<br> MOV A, R1<br> ADDC A, R1<br> MOV R1, A<br> MOV A, R2<br> ADDC A, R2<br> MOV R2, A<br> MOV A, R3<br> ADDC A, R3<br> MOV R3, A<br> MOV A, 20H; 商数左移<br> RLC A<br> MOV 20H, A<br> MOV A, 21H<br> RLC A<br> MOV 21H, A<br> MOV A, 22H<br> RLC A<br> MOV 22H, A<br> MOV A, R3<br> SUBB A, R4<br> JC C, LOOP1<br> MOV R3, A<br> JNC 20H<br> AJMP LOOP2<br>LOOP1: ADD A, R4<br>LOOP2: DJNZ R7, CHU6<br> RET<br>;_____________________________________________________________________________<br>;Name: <a name="CHU7">CHU7</a><br>;FUNC: 三字节除双字节商为三字节除法子程序<br>:INPUT: 被除数放在内部RAM20H--22H单元中,除数放在R4,R5中<br>;OUTPUT:商数放在内部RAM26H--28H单元中,余数放在23H,24H单元中.<br>;_____________________________________________________________________________<br>20H EQU 00H ;被除数最低字节<br>21H EQU 00H ;被除数低字节<br>22H EQU F0H ;被除数最高字节<br>DATB1 EQU 1DH ;除数低字节<br>DATB2 EQU 23H ;除数高字节<br>ORG 2000H<br>AJMP LOOP0<br>LOOP0: MOV R4, #DATB1<br> MOV R5, #DATB1<br> MOV R7, #18H<br> MOV 20H, #00H<br> MOV 21H, #60H<br> MOV 22H, #0F0H<br> MOV 23H, #00H<br> MOV 24H, #00H<br> ACALL CHU7<br>LOOP: SJMP LOOP<br>CHU7: CLR C<br> MOV A, 20H ;被除和扩充位左移<br> RLC A<br> MOV 20H, A<br> MOV A, 21H<br> RLC A<br> MOV 21H, A<br> MOV A, 22H<br> RLC A<br> MOV 22H, A<br> MOV A, 23H<br> RLC A<br> MOV 23H, A<br> MOV A, 24H<br> RLC A<br> MOV 24H, A<br>MOV A, 26H ;商数左移<br> RLC A<br> MOV 26H, A<br> MOV A, 27H<br> RLC A<br> MOV 27H, A<br> MOV A, 28H<br> RLC A<br> MOV 28H, A<br> CLR C<br>MOV A, 23H ;判断<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -