您的位置 首页 元件

单片机 三字节除法子程序

ORG0000HAJMPMAINORG0030HMAIN:MOV77H,0FHMOV78H,42HMOV79H,40HMOV7AH,00HMOV7BH,03HMOV7CH,0E8HLCALLDIV_M

ORG 0000H
AJMP MAIN

ORG 0030H
MAIN:
MOV 77H,#0FH
MOV 78H,#42H
MOV 79H,#40H

MOV 7AH,#00H
MOV 7BH,#03H
MOV 7CH,#0E8H
LCALL DIV_MB

SJMP MAIN

;=================================================
; DIVISION FOR THREE-BYTE DATA
; DIVIDEND FROM 77H&78H&79H
; DIVISOR FROM 7AH&7BH&7CH
; QUOTIENT TO 77H&78H&79H
;ARITHMETICAL COMPLIMENT TO 7DH&7EH&7FH
; 2008_05_08 BY SZCKIC
;=================================================
DIV_MB: MOV 7DH,#00H
MOV 7EH,#00H
MOV 7FH,#00H
MOV R7,#18H
NEXTBIT:
CLR C
MOV A,79H
RLC A
MOV 79H,A

MOV A,78H
RLC A
MOV 78H,A

MOV A,77H
RLC A
MOV 77H,A
;Arithmetical compliment
MOV A,7FH
RLC A
MOV 7FH,A

MOV A,7EH
RLC A
MOV 7EH,A

MOV A,7DH
RLC A
MOV 7DH,A

MOV 5AH,7DH
MOV 5BH,7EH
MOV 5CH,7FH
MOV 5DH,7AH
MOV 5EH,7BH
MOV 5FH,7CH

LCALL TDEC
JNC UPDATE
DJNZ R7,NEXTBITTMP
RET
UPDATE: INC 79H
MOV 7FH,5CH
MOV 7EH,5BH
MOV 7DH,5AH

DJNZ R7,NEXTBITTMP

RET
NEXTBITTMP:LJMP NEXTBIT

;=================================================
; Subtracter for three-byte data
;=================================================
TDEC: CLR C
MOV A,5CH
SUBB A,5FH
MOV 5CH,A

MOV A,5BH
SUBB A,5EH
MOV 5BH,A

MOV A,5AH
SUBB A,5DH
MOV 5AH,A
RET

除法程序写成了子程序方式,很便利调用,除法中要频频用到三字节数据巨细的比较,所以也写成了一个小子程序。

思路很简略,抛开咱们习惯了的乘法口诀,以一个小学二年级学生的思路去做就简略了,一步一步的比较、移位,只不过这里是二进制而不是习惯了的十进制,当然二进制也有一个长处那就是:

假定A,B是两个相同位数的二进制数据(首位不为0),且A>B,则A必定小于2倍的B,所以关于每次移位只用比较一次。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/yuanjian/260890.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部