专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

用左移减法做单字节除法运算

作者:佚名   来源:本站原创   点击数:  更新时间:2013年03月22日   【字体:
;只能整数运算及非0运算
 ORG 0000H
 JMP A1
 ORG 002BH
A1: MOV R0,#00001001B;被除数
 MOV R1,#0;余数
 MOV R2,#0;商
 MOV R5,#00000011B;除数
 MOV 33H,#8;左移8次16位除法左移16次
A2: MOV A,R0
 RLC A
 MOV R0,A
 MOV A,R1
 RLC A
 MOV R1,A
CLR C;清C因为减法A=A-C-R5
 SUBB A,R5;用移位后的数减去商
 JC A3 ;比较大小
 MOV R1,A;大的则把余数保存起来下次再减
A3: CPL C;商值处理
 MOV A,R2;商值移位
 RLC A
 MOV R2,A
 DJNZ 33H,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
关闭窗口

相关文章