用左移减法做单字节除法运算
时间:04-03
来源:互联网
点击:
;只能整数运算及非0运算
ORG0000H
JMPA1
ORG002BH
A1:MOVR0,#00001001B;被除数
MOVR1,#0;余数
MOVR2,#0;商
MOVR5,#00000011B;除数
MOV33H,#8;左移8次16位除法左移16次
A2:MOVA,R0
RLCA
MOVR0,A
MOVA,R1
RLCA
MOVR1,A
CLRC;清C因为减法A=A-C-R5
SUBBA,R5;用移位后的数减去商
JCA3;比较大小
MOVR1,A;大的则把余数保存起来下次再减
A3:CPLC;商值处理
MOVA,R2;商值移位
RLCA
MOVR2,A
DJNZ33H,A2;是否完成
JMP$
;思路---只要R1-R5不小于0商就置1并将余数赋值给R1
; R1 R5 R2
;1、00000000-00000011小于0,商值为00000000
;2、00000000-00000011小于0,商值为00000000
;3、00000000-00000011小于0,商值为00000000
;4、00000000-00000011小于0,商值为00000000
;5、00000001-00000011小于0,商值为00000000
;6、00000010-00000011小于0,商值为00000000
;7、00000100-00000011大于0,商值为00000001,余数为00000001赋值给R1
;8、00000011-00000011等于0,商值为00000011,余数为00000000
;至此算法完成
;注:单字节是循环8次,如果是双字节就要循环16次,依次类推
end
- 用左移减法做4位16进制数除以2位16进制数运算(11-30)
- 高效的C编程之:除法运算(09-30)
- 芯海单片机除法运算(04-03)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)