|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
' }7 [+ P9 a r9 t. U摘要:论述一种在8051系列单片机上实现的高可靠多字节除法运算的改进型算法,该算法通过改进传统的“移位* d- e; ]' o: p; B
-相减"算法,克服了常用的多字节无符号除法的局限性,可以针对任意长度的除数且不会发生商溢出.经实验得+ q5 ]$ _# w7 v3 J
到计算结果准确无误,该算法具有算法简单、适应性强、高度可靠等优点,具有很强的实用性.- J( s4 ]* A5 U. b' c, G
关键词:单片机;汇编指令;多字节除法
, z' l5 ~+ a# P
4 N9 @; f3 k3 d( z, H. ?& A单片微型计算机的应用越来越广泛,它不仅应- A! G& i& [ d
用在各种控制.上,有时也用来做数据处理运算[1].现8 I, `) p9 w u- V/ P) i' O% `
在应用广泛的51系列单片机具有强大的运算能力,. Y$ K! y7 U% V% ^( t6 o, F
可以直接选用算术运算指令完成单字节(8位)数据3 q7 }; G, y" h" @! \+ s! y* U) a' S
运算.同时,它的进位(借位)标志为无符号整数算) V1 l" E, e) p8 i5 x
术运算提供了方便.目前有关数据处理运算的资料& r) ?% ]7 w9 S, r2 K; e
比较多,然而笔者在参考关于多字节无符号数据整% o$ d+ _7 U7 J' U+ l9 m) E
数除法的资料时发现,目前资料所介绍的有关程序: I) s: X) \1 B* N0 m; C. y/ e0 N, ~
应用范围非常小,应用时受除数长度限制比较大.而7 T2 J' b8 {0 T) p4 [/ i
在实际应用中,除法运算非常重要,甚至有时候要求
: e2 R) c/ j3 Y7 T. s/ w必须快速地进行除法运算,这就要求编写的除法程) e4 \: i$ b; E$ W) C ?
序力求高效、快速[2].本文巧妙地利用“移位-相1 x0 d9 O" V# h0 N9 {* t4 I% x
减”法[35],以51系列单片机为例,设计了除数不受
# M7 g6 T& s% }: T" d字节长度限制的单片机除法运算算法.该算法还可
- ]4 w# x9 W0 p' ]9 L& J以根据实际需要扩充为位数更高的多字节除数算5 D4 m9 d9 o" ~, l
法,也可以移植到其它的单片机平台上,
1 U0 [( a( m8 N9 C) N, [/ K4 g& @ D# @2 i
1 目前常用的单片机多字节除法运算( K7 a% X1 s9 H
方法及其局限性$ W: c( Q) {+ J: H5 b
目前,单片机多字节除法运算要求被除数为除
9 {9 W# x+ Z; h* W6 Q1 i2 J数的双倍字长,否则除法运算就不能执行.当被除数- k u- n1 X7 b! h* Y4 [" d+ E
是除数的双倍字长时,首先比较被除数的高位字与
C! q1 [ B8 L1 j: p+ e8 b7 N除数的大小,如果出现被除数的高位字大于、等于除6 C$ ?% A5 L% c9 d+ C% [
数,则认为是商溢出,置位溢出标志不执行除法操" K& d$ s) R5 p X' }3 y
作.如果这些条件都成立,再采用一系列相减和移位; p* s9 z; M5 M
. @) m6 [: ?! t" c! A h% k4 N% z# \" I' z$ l6 e
$ F% Q: G% S- g& j" |, q# |
1 n X& D9 s0 D$ Z: d4 h |
|