📄 32位除以16位.txt
字号:
//三十二位除十六位数据的除法
//R1存三十二位的低位 R2存放三十二位的高位
//C语言调用,unsigned int DIV_32_16(unsigned long int Data1,unsigned int Data2)
// unsigned long int DIV_32_16(unsigned long int Data1,unsigned int Data2)
//
.RAM
.VAR IB_Div32_Counter
.CODE
.PUBLIC _DIV_32_16
_DIV_32_16:.PROC
PUSH R3,R5 TO [SP]
BP = SP
BP += 0x08
R3 = [BP]
R4 = 16
[IB_Div32_Counter] = R4
DIV_32_1:
R4 = 0x0000
R1 = R1 LSL 1 //R1寄存器循环左移一位
R4 = R4 LSL 3
R2 = R2 ROL 1
R4 = R4 ROL 4
test R4,0x0001
JNZ DIV_32_3
R2 = R2-R3
JAE DIV_32_2 //JAE:无符数,大于或等于
R2 = R2+R3
R4 = [IB_Div32_Counter]
R4-=1
[IB_Div32_Counter] = R4
JNZ DIV_32_1
POP R3,R5 FROM [SP]
RETF
DIV_32_3:
R2 = R2-R3
DIV_32_2:
R1+=1
R4 = [IB_Div32_Counter]
R4-=1
[IB_Div32_Counter] = R4
JNZ DIV_32_1
POP R3,R5 FROM [SP]
RETF
.END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -