⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 除法原程序.txt

📁 实现一个16位数与一个8位数相除的宏,还有一个修改后的除法程序
💻 TXT
字号:
实现一个16位数与一个8位数相除的宏
;---------------------------------------------------------
;这是实现一个16位数与一个8位数相除的过程
;输入:
;被除数:
; R1(字节1),R2(字节2),R3(字节3),R4(低位字节)
;除数:
; R6(字节1),R7(字节2),R8(字节3),R9(低位字节) 
;输入商值:
; R12(字节1),R13(字节2),R14(字节3),R15(低位字节)
;本例中被除数仅用到: R3,R4 
;本例中除数仅用到: R9 
;本例中商值仅用到: R14,R15 
;余数值退出时在原被除数中存放 
;;另外: R10被用作计算时被除数临时最高位字节;
; R0 被用作计算时计算时的循环计数器(8) 
; R5 被用作暂存数据时平衡栈操作
;如果除数为0,则返回R0=0FFH以指示除数0错误
;----------------------
UDIV1608_MACRO: MACRO
;------------------------
PUSH R10
PUSH R5
PUSH R0

;予清被除数临时字节为0 
CLR R10
;予清商数为0 
CLR R14
CLR R15
;检测除数是否为0
CP R9,#00H
JR NE,_ST 
;如果除数为零,则错误,返回R0=0FFH
LD R0,#0FFH
JR _BACK 
_ST: 
LD R0,#10H
_LOOP:
;予清商位为0
RCF 
RLC R15
RLC R14 
;将被除数最高位依次移入临时字节中并与除数进行比较 
RCF ;必须予清C=0 
RLC R4
RLC R3
RLC R10

;暂存R10值
PUSH R10
;比较高位字节大小 
SUB R10,R9
JR C,_POP
;如果被除数高位大于或等于除数,则置该位商为1
OR R15,#01H
;比较成功,则平衡栈操作
POP R5
JR _SHF
_POP:
;比较不成功,则复原R10值
POP R10

_SHF:
DEC R0
JR NZ,_LOOP

LD R4,R10
_BACK:
POP R0
POP R5
POP R10
;------------------
.ENDM
;------------------------------------------------------ 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -