📄 asm3-3.asm
字号:
;==============================================================
; 文件名称: Asm3-3.asm
; 功能描述: 双字节除法. 使用'移位相减'的算法.
; R7R6÷R5R4-->R7R6(商)......R3R2(余数)
;==============================================================
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV A, R4 ;执行程序前为R7R6(被除数), R5R4(除数)赋值
JNZ DDIV0 ;除数不为0, 转DDIV0
MOV A, R5
JZ ERROR ;除数为0, 转ERROR
DDIV0: MOV R2, #00H ;余数寄存器清零
MOV R3, #00H
MOV R1, #16 ;循环次数为16
DDIV1: CLR C ;R3R2R7R6左移1位
MOV A, R6
RLC A
MOV R6, A
MOV A, R7
RLC A
MOV R7, A
MOV A, R2
RLC A
MOV R2, A
MOV A, R3
RLC A
MOV R3, A
MOV A, R2 ;部分余数减除数
SUBB A, R4 ;低8位相减
JC DDIV2 ;不够减, 转DDIV2
MOV R0, A ;暂存相减结果
MOV A, R3
SUBB A, R5 ;高8位相减
JC DDIV2 ;不够减, 转DDIV2
INC R6 ;够减, 则商为1
MOV R3, A ;相减结果送R3R2中
MOV A, R0
MOV R2, A
DDIV2: DJNZ R1, DDIV1 ;16位未除完则继续
CLR F0 ;除数合法标志
LJMP MAIN ;设置断点观察结果, 可继续下一轮运算
ERROR: SETB F0 ;除数非法标志
LJMP MAIN ;设置断点观察结果, 可继续下一轮运算
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -