?? 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 + -