📄 21imcu.html
字号:
SUBB A, R4<br> MOV R1, A<br> MOV A, 24H<br> SUBB A, R5<br> MOV R2, A<br> JC C, LOOP1<br> INC 26H<br> MOV A, R1 ;建立余数<br> MOV 23H, A<br> MOV A, R2<br> MOV 24H, A<br>LOOP1: DJNZ R7, CHU7<br> RET<br>;_____________________________________________________________________________<br>;Name: <a name="CHU8">CHU8</a><br>;Func: 四字节除双字节商为二字节除法子程序<br>;Input: 被除数放在R3R2R1R0,除数放在R5R4,R7为被除数扩充位<br>;OutPut:商数放在R1R0中,余数放在R3R2<br>;_____________________________________________________________________________<br>DATA1 EQU 00H ;被除数最低字节<br>DATA2 EQU 00H ;被除数低字节<br>DATA3 EQU 00H ;被除数低字节<br>DATA4 EQU 0FFH ;被除数最高字节<br>DATB1 EQU 00H ;除数低字节<br>DATB2 EQU 0FFH ;除数高字节<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> ACALL CHV8<br>SJMP $<br>CHV8: MOV R7, #10H<br>LOOP3: CLR C<br>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> JC LOOP1<br>MOV A, R2 ;高位被除数减除数<br> SUBB A, R4<br> MOV R2, A <br> MOV A, R3<br> SUBB A, R5<br> MOV R3, A<br> JNC C, LOOP2<br> MOV A, R2 ;恢复被除数<br> ADD A, R4<br> MOV R2, A<br> MOV A, R3<br> ADDC A, R5<br> MOV R3, A<br> DJNZ R7, LOOP3<br> RET<br>LOOP1: CLR C<br> MOV A, R2<br> SUBB A, R4<br> MOV R2, A<br> MOV A, R3<br> SUBB A, R5<br> MOV R3, A<br>LOOP2: INC R0<br> DJNZ R7, LOOP3<br> RET<br>;_____________________________________________________________________________<br>;Name: <a name="CHU9">CHU9</a><br>;Func: 三字节或二字节的倒数结果为三字节除法子程序<br>;Input: 待求倒数的数,即除数放在内部RAM26H-28H单元,被除数均为1放在20H单元.<br>;OutPut:结果即商的小数清确小数点后三字节,放在23H--25H单元<br>;Use: 使用21H--24H,60H--62H单元为工作寄存器<br>;_____________________________________________________________________________<br> ORG 2000H<br> AJMP MAIN<br>MAIN: MOV 20H, #01H<br> MOV 21H, #00H<br> MOV 22H, #00H<br> MOV 23H, #00H<br> MOV 24H, #00H<br> MOV 25H, #00H<br> MOV 26H, #00H<br> MOV 27H, #00H<br> MOV 28H, #00H<br> MOV 60H, #00H<br> MOV 61H, #00H<br> MOV 62H, #00H<br> MOV R7, #18H<br> ACALL CHU9<br>LOOP: SJMP LOOP<br>CHU9: CLR C<br>LOOP4: 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, 25H<br> RLC A<br> MOV 25H, A<br>JNC LOOP1 ;判断扩充<br> MOV A, 23H <br> SUBB A, 26H ;位减<br> MOV 23H, A ;除数<br> MOV A, 24H<br> SUBB A, 27H<br> MOV 24H, A<br> MOV A, 25H<br> SUBB A, 28H<br> MOV 25H, A<br> MOV A, 23H ;商加1<br> ADD A, #01H <br> MOV 23H, A<br> MOV A, 24H<br> ADDC A, #00H<br> MOV 24H, A<br> MOV A, 25H<br>ADDC A, #00H<br> MOV 25H, A<br> SETB C<br> SJMP LOOP2<br>LOOP1: MOV A, 23H ;扩充位减除数<br> SUBB A, 26H<br> MOV 23H, A<br> MOV A, 24H<br> SUBB A, 27H<br> MOV 24H, A<br> MOV A, 25H<br> SUBB A, 28H<br> MOV 25H, A<br> JNC LOOP3<br>MOV A, 23H ;恢复除数<br> MOV 23H, A<br> MOV A, 24H<br> ADDC A, 27H<br> MOV 24H, A<br> MOV A, 25H<br> ADDC A, 28H<br> MOV 25H, A<br>LOOP3: CPL C<br>LOOP2: DJNZ R7, LOOP4; <br> MOV A, 20H<br> XCH A, 23H<br> MOV 20H, A<br> MOV A, 21H<br> SXCH A, 24H<br> MOV 21H, A<br> MOV A, 22H<br> XCH A, 25H<br> MOV 22H, A<br> MOV A, 23H<br> ADDC A, 23H<br> MOV 23H, A<br> MOV A, 24H<br> ADDC A, 24H<br> MOV 24H, A<br> MOV A, 25H<br> ADDC A, 25<br> MOV 25H, A<br> MOV 60H, 23H<br> MOV 61H, 24H<br> MOV 62H, 25H<br> MOV A, 20H<br> XCH A, 23H<br> MOV 20H, A<br> MOV A, 21H<br> XCH A, 24H<br> MOV 21H, A<br> MOV A, 22H<br> XCH A, 25H<br> MOV 22H, A<br> CLR A <br> CLR C<br> MOV 20H, #00H<br> MOV 21H, #00H<br> MOV 22H, #00H<br> MOV R7, #18H<br>LOOP8: 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  
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -