打印

请ASM高手给个32位除以16位数据的思路啊

[复制链接]
3363|14
手机看帖
扫描二维码
随时随地手机跟帖
沙发
最最| | 2008-12-5 15:59 | 只看该作者

这个,思路是直接套用的吧。移位减,注意进位

匠人手记里有篇移位除法的贴。。应该有用吧。

使用特权

评论回复
板凳
hyhjjg|  楼主 | 2008-12-5 20:12 | 只看该作者

比如 19640H/4B0H=56H啊,51指令集无法实现的

比如 19640H/4B0H=56H啊,51指令集无法实现的,总不可能用连续减4B0并比较的方法吧????
如果是19640H/CH,那么就要连续8666次的减法运算吗??25NS时钟计算,一个除法就要计算0.217秒,这如何是好呢

使用特权

评论回复
地板
xwj| | 2008-12-5 20:20 | 只看该作者

LZ,会不会笔算十进制的除法?

会的话,把十进制改成二进制,算法不变,用笔写出来你就会明白了!

只要位数差(32-16)此除法就可以了哦

使用特权

评论回复
5
xwj| | 2008-12-5 20:21 | 只看该作者

对于二进制,只要位数差(32-16)次减法就可以了

使用特权

评论回复
6
dengm| | 2008-12-5 20:41 | 只看该作者

可参考 www.8052.com, 我写的比上面的快(并等周期)

2009年1月10日前, 我会贴出

使用特权

评论回复
7
dspjs| | 2008-12-5 21:32 | 只看该作者

re

高教出版社一本绿皮的书上,《微机原理及应用》 徐晨 高等教育出版社。上面应该有。现在都忘了,不要见怪啊。

使用特权

评论回复
8
耕在此行| | 2008-12-5 21:39 | 只看该作者

呵呵 这个好像我原来发过贴

忘了是乘法还是除法.
用汇编再做代码还是不多的,速度也快.

使用特权

评论回复
9
ayb_ice| | 2008-12-5 22:22 | 只看该作者

网上搜索一下应该大把的

使用特权

评论回复
10
5880527| | 2008-12-6 21:55 | 只看该作者

从来没去研究过这东西,也不会做,都是用现成的

使用特权

评论回复
11
ljm810010| | 2008-12-7 09:55 | 只看该作者

用C写,编译后看反汇编,照抄。

使用特权

评论回复
12
ayb_ice| | 2008-12-7 10:42 | 只看该作者

还可以直接调KEIL库函数

使用特权

评论回复
13
ljm810010| | 2008-12-7 11:23 | 只看该作者

请教ayb_ice,怎样获知Keil的库函数名称

如本贴的32位除法,在库中的函数名是什么?怎样调用?输入输出参数如何确定?

使用特权

评论回复
14
mcu5i51| | 2008-12-8 13:26 | 只看该作者

有个51子程序库,自己找一下

使用特权

评论回复
15
dengm| | 2009-1-8 20:17 | 只看该作者

32位除以16位 ASM 51 (div16)

SUB_DIV16:
     ;--------------------------------------
     ; ************************ DengMiao  Guangzhou 2009-1
     ; 32 bits / 16 bits 无符号
     ; Input:  DPTR   ---  16 BITS
     ;         [R0]:[R0-1]:[R0-2]:[R0-3] ---32 BITS
     ; OUTPUT: [R1]:[R1-1]:[R1-2]:[R1-3] ---32 BITS
     ;          R7:R6 -- MOD 16 bits       
     ; use:  R4, ACC, PSW
     ;-------------------------------------------
     MOV R4, #4 
     MOV R6, #0
     MOV R7, #0

DIV16LP32:
       MOV A, @R0
       DEC R0
       ACALL DIV16A
       MOV @R1, A
       DEC R1
     DJNZ R4, DIV16LP32
     RET
;------------------------            
DIV16A:
     MOV R5, #8
DIV16A1:     
     RLC A      ;R7:R6:A ;16
     XCH A, R6           ;17

     RLC A              ;1
     XCH A, R7 ; A:R7:R6;2
     RLC A              ;3
     JNC DIV16A3        ;5
         XCH A, R7     ;6
         CLR C         ;7
         SUBB A, DPL   ;8
         XCH A, R7     ;9
         SUBB A, DPH ;  10  A:R7:R6
         XCH A, R7     ;11
         XCH A, R6     ;12
         CLR C         ;13
       DJNZ R5, DIV16A1;15
       SJMP DIV16A9    ;17

DIV16A2:
       RLC A      ;1 R7:R6:A
       XCH A, R6  ;2
       RLC A      ;3
       XCH A, R7  ;4 A:R7:R6
       RLC A      ;5

DIV16A3:
     CJNE A, DPH, DIV16A7  ; 7
       XCH A, R7           ;8
       SUBB A, DPL         ;9
       JNC DIV16A5         ;11
         ADD A, DPL        ;12
DIV16A4:
         XCH A, R6         ;13
         DJNZ R5, DIV16A1  ;15
         SJMP DIV16A9      ;17

DIV16A5:
        MOV R7, #0   ;12
        SJMP DIV16A8 ;14
         
DIV16A6:
         SJMP DIV16A4   ;12
DIV16A7:
       XCH A, R7     ;8
       JC DIV16A6    ;10
         SUBB A, DPL ;11
         XCH A, R7   ;12
         SUBB A, DPH ;13
         XCH A, R7   ;14
DIV16A8:
         XCH A, R6   ;15
         DJNZ R5, DIV16A2 ;17
DIV16A9:
         RLC A       ;18
         CPL A       ;19
         RET         ;21
;===========================

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

118

主题

438

帖子

0

粉丝