📄 d457.asm
字号:
;D457功能:双字节二进字无符号数除以单字节二进字数
org 000h
jmp 40h
org 40h
;入口条件:被除数在r4,r5中,除数在r7中
;出口信息:ov=0时,单字节商在r3中,ov=1时,溢出
D457: CLR C
MOV A,R4
SUBB A,R7
JC DV50
SETB OV ;商不是一字节,溢出
RET
DV50: MOV R6,#8 ;求平均值(R4R5/R7-→R3)
DV51: MOV A,R5 ;被除数带进位左移一位
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A ;同上
MOV F0,C ;暂存进位位
CLR C
SUBB A,R7 ;移位相减
ANL C,/F0 ;
JC DV52 ;相减有借位,且原来无进位,C为1,则跳转,A4
;原来有进位,此时C为零
;原来无进位,相减无借位,C为零
MOV R4,A ;其他情况继续将减后的结果赋r4
DV52: CPL C ; A4 进位位取反
MOV A,R3
RLC A ;not very understand
MOV R3,A
DJNZ R6,DV51 ;若r6=0则除完
MOV A,R4
; ADD A,R4 若四舍五入则有此二句
; JC DV53
SUBB A,R7 ;余数减除数
JC DV54 ;若不能减则跳出
DV53: INC R3 ;能减则除数加一
DV54: CLR OV
jmp $
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -