当前位置:首页 > 技术心得 > 正文内容

多字节除法--汇编实现原理

xjtudll13年前 (2013-11-19)技术心得20590
2.1 长除法

长除法适用于整式除法、小数除法、多项式除法(即因式分解)等较重视计算过程和商数的除法,过程中兼用了乘法和减法。

长除法与手工计算除法方法一致。

8592÷24为例:
    

从计算过程可以看出,长除法有以下特点:

1、必须先确定除数的位数

2、每一次试商的过程至少要进行一次减法,减法的次数取决于被除数和除数。 

2.2 二进制除法  

2.2.1 理论分析

这种算法将被除数和除数看成是二进制(虽然计算机里存的本来就是二进制),以二进制形式参与运算。这个算法的本质其实跟长除法相同,只不过长除法每次整体左移4位,二进制除法每次左移一位。另外,每次移位后只用做一次减法,而长除法可能需要多次减法。

9÷3来说明: 
    

算法思想及流程:

1、余数和商清零

2、将被除数高位移入余数中

3、将余数减去除数

4、如果小于0,则置商值低位为0

   如果大于等于0,则置商值低位为1,并将相减的结果放入余数中

5、将商值左移1位;余数左移1

6、判断是否循环完成(如果被除数是8bits,则循环8次)

7、没有则跳到步骤2继续执行

8、完成则存入商值和余数 

仍以9÷3为例来说明计算步骤: 

9 = 00001001 B3 = 00000011 B

 100000000-00000011小于0,商值为00000000
           200000000-00000011小于0,商值为00000000
    3
00000000-00000011小于0,商值为00000000
    400000000-00000011小于0,商值为00000000
    5
00000001-00000011小于0,商值为00000000

    600000010-00000011小于0,商值为00000000
    700000100-00000011大于0,商值为00000001,余数为00000001
    800000011-00000011等于0,商值为00000011,余数为00000000 

2.2.2 程序实现
tenx汇编(被除数和除数均为32位)

;////////////////////////////////////////////////////////////////

;Function: 32Bits/32Bits除法

;Description: 占用寄存器R0~R3

;Input: T21S_ADDR,TG2S_ADDR

;Output:

;余数存储在YuShu

;商存储在NW2_ADDR

;T21S_ADDR/TG2S_ADDR

;//////////////////////////////////

;//调用示例

; CALL A_DIV_B

;------------------------------

;////////////////////////////////////////////////////////

A_DIV_B:

LDS R0,$0

SHLX

SETDAT NW2_ADDR

A_DIV_B_ClrRAMLoop: ;//余数和商清零

MRW# @HL,G_RegLow

INC* R0

JNC A_DIV_B_ClrRAMLoop ;//16RAM(余数和商)

LDS R2,$0

A_DIV_BLoop: ;//除法循环32位循环32

SHLX ;//被除数移位

SETDAT T21S_ADDR

RF RF_CF

CALL RLC8RAM

A_DIV_B_YuShuRLC: ;//余数移位,低位来自被除数

SHLX

SETDAT YuShu

CALL RLC8RAM

SZRX

 

SETDAT YuShu

RZR HL_BACKUP_MODE_MUL2

A_DIV_B_ShangRLC:

 

SHLX

SETDAT NW2_ADDR

RF RF_CF

  CALL RLC8RAM

A_DIV_B_YuShuSUBChuShu:    ;//余数减除数

SHLX

SETDAT TG2S_ADDR ;//除数

RHL HL_BACKUP_MODE_MUL2

MZR HL_BACKUP_MODE_MUL2

LDS R0,$0

LDS R1,1000B

A_DIV_B_YuShuSUBChuShuCheckLoop: ;//判断@ZR@HL大小

MRA R1

LDA# @HL

SBC# @ZR

MAF R1

INC* R0

JB3 A_DIV_B_YuShuSUBChuShuCheckLoopOver ;//8=1000B

  JMP A_DIV_B_YuShuSUBChuShuCheckLoop 

 

A_DIV_B_YuShuSUBChuShuCheckLoopOver: 

MRA R1

JC A_DIV_B_YuShuSUBChuShuBig ;//@ZR>=@HL

LDS R0,1110B

AND* NW2_ADDR

JMP A_DIV_B_CheckLoop

  

A_DIV_B_YuShuSUBChuShuBig:

 LDS R0,0001B

OR* NW2_ADDR

MHL HL_BACKUP_MODE_MUL2

MZR HL_BACKUP_MODE_MUL2

LDS R0,$0

LDS R1,1000B

  

A_DIV_B_YuShuSUBChuShuLoop:

 MRA R1

LDA# @HL

SBC*# @ZR

MAF R1

INC* R0

JB3 A_DIV_B_CheckLoop

JMP A_DIV_B_YuShuSUBChuShuLoop

 A_DIV_B_CheckLoop:

 INC* R2

ADCI* R3,$0

JB1 A_DIV_B_Exit ;//32=10 0000B

JMP A_DIV_BLoop

  

A_DIV_B_Exit:

 RTS

 

////////////////////////////////////////////////////////////////

 ;Function: 一个32bits数据左移一位

;Description: 调用完后,HL+8

;Input:

;Output:

;//////////////////////////////////

;//调用示例

; SHLX

; SETDAT YuShu

; CALL RLC8RAM

;------------------------------

;////////////////////////////////////////////////////////

RLC8RAM:

RLC# @HL

RLC# @HL

RLC# @HL

RLC# @HL

RLC# @HL

RLC# @HL

RLC# @HL

RLC# @HL

RTS 

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://www.xjtudll.cn/Exp/290/

标签: 算法tenx
分享给朋友:

“多字节除法--汇编实现原理” 的相关文章

湿度对电子元器件的影响

潮湿气候对电子元器件有啥影响?网上有说: 1、使绝缘材料性能降低 2、使金属器件锈蚀 3、使润滑剂变质 这些听起来虚虚的,没有直观的概念与感受。我这里说一个最近碰到的问题。 背景:OTP IC(手表用),开窗(未完全封胶),便于用紫外线擦除程序,重复利用OTP IC。近期广东“回南天&r...

PhonestateListener如何取消监听

PhonestateListener怎么取消监听? TelephonyManager tm; tm.listen(MyPhoneListener myPlistener,PhoneStateListener.LISTEN_CALL_STATE); class MyPhoneStateL...

Altium Smart PDF中文不显示问题

Altium Smart PDF中文不显示问题

在用Altium SmartPDF的时候发现,没法打印出中文,凡是有中文的地方,直接就是空白了,英文能正常显示。如图所示: 实际内容 显示内容 两个图片对比后,可以清晰的看出:中文全部未显示出来,都是空白。 究其原因,很简单,就是汉字的字体没有选中文字体,选用的是英文字体。 该如何解决这个问题呢...

Keil新增STC 51型号

Keil新增STC 51型号

STC官网提供的方法: (详见:http://www.mcu-memory.com/) 备份KEIL安装目录下的UV2.CDB或者UV3.CDB文件(在文件夹UV2或者UV3里面),然后用STC提供的同名的CDB文件覆盖。 这种方法操作起来很简单,但缺点是在器件选型时,只能选择STC单片机,其他的都...

Altium过滤器(filter)使用

Altium过滤器(filter)使用

注:本文在写作过程中,参考了ourdev大牛“zcllom 星罗棋布”发布的帖子《将Altium Designer的PCB设计打造成利器》。 在设计或查看PCB的过程中,会陷入五彩斑斓的走线、元件、过孔、覆铜等迷宫中,经常找不到或看不清自己需要的东西,因此需要化繁为简,突出自己想要操作的部分。Al...

Proteus 7.7 SP2破解及下载

不得不说,Proteus升级的太快,7.6SP4国人还没破解完好,7.7 SP2和谐版就有了。我倒。 Proteus 7.7 SP2相比7.6 SP4只是多了几个PIC和MSP430的模型,貌似MSP430新增的还是2xx系列。 下载地址: 国外网站,请单击进入网页下载,只能用单线程,多线程下载器无...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。