📄 div31.asm
字号:
;利用的是在被除数和除数之间的移位相减的原理
;其减后的数据将是:余数放在DV31BUFF,商在原来被除数里
;用这个算法能方便的在商加一的算法上,后面方便的移位
;(由于是高字节减,所以没次商都必须移位乘2)
;
DV31DATH DATA 40H
DV31DATM DATA 41H
DV31DATL DATA 42H
DVCHUSHU DATA 43H
DV31BUFF DATA 44H
ORG 000H
AJMP DV31
DV31: CLR C ;判断益出和全为零
MOV A,DVCHUSHU ;如除数为0则直接退出
JZ DV31OV
MOV A,DV31DATH
JNZ DV30
MOV A,DV31DATM
JNZ DV30
MOV A,DV31DATL
JZ EXIT
SUBB A,DVCHUSHU
JNC DV30
DV31OV: SETB OV
SJMP $ ;商溢出
;RET
DV30: MOV DV31BUFF,#0 ;对缓存的初始较为重要
MOV R6,#18H ;求三字节除以但字节
DIVR: CLR C
MOV A,DV31DATL
RLC A
MOV DV31DATL,A
MOV A,DV31DATM
RLC A
MOV DV31DATM,A
MOV A,DV31DATH
RLC A
MOV DV31DATH,A
MOV A,DV31BUFF
RLC A
MOV DV31BUFF,A
CPL C
MOV F0,C
CLR C
SUBB A,DVCHUSHU
ANL C,F0
JC DIVR2
MOV DV31BUFF,A
INC DV31DATL
DIVR2: DJNZ R6,DIVR
/* ************************************************ */
MOV A,DV31BUFF ;四舍五入
ADD A,DV31BUFF
JC DM25
SUBB A,DVCHUSHU
JC EXIT
DM25: INC DV31DATL
MOV A,DV31DATL
JNZ EXIT
INC DV31DATM
MOV A,DV31DATM
JNZ EXIT
INC DV31DATH
/* ********************************************* */
EXIT: CLR OV
SJMP $
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -