|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
. p. x) d, {" d5 Y( W0 {
摘要:论述一种在8051系列单片机上实现的高可靠多字节除法运算的改进型算法,该算法通过改进传统的“移位( J8 ~) a" w) Y& L
-相减"算法,克服了常用的多字节无符号除法的局限性,可以针对任意长度的除数且不会发生商溢出.经实验得& y! ? I: R! e
到计算结果准确无误,该算法具有算法简单、适应性强、高度可靠等优点,具有很强的实用性.) Y7 ?9 X! b" J% J# s
关键词:单片机;汇编指令;多字节除法
, b% x8 f# k0 F& v6 m- i' U: {' K7 G6 x* |* J C
单片微型计算机的应用越来越广泛,它不仅应" E, L$ |: P$ z7 M4 l4 l
用在各种控制.上,有时也用来做数据处理运算[1].现0 c& M9 o7 c/ s, y
在应用广泛的51系列单片机具有强大的运算能力,
9 q0 }" f$ D4 M" ~& S可以直接选用算术运算指令完成单字节(8位)数据
3 ^1 K- y# U' |0 _运算.同时,它的进位(借位)标志为无符号整数算! K2 X. [4 ~* B% G2 g( G
术运算提供了方便.目前有关数据处理运算的资料
$ H5 A0 o4 q! A8 u4 A( r0 r比较多,然而笔者在参考关于多字节无符号数据整6 D7 i- Q9 I4 v9 L. \0 P$ L
数除法的资料时发现,目前资料所介绍的有关程序' C) n! @" w. b. Z
应用范围非常小,应用时受除数长度限制比较大.而1 C) b/ J2 B; i, f
在实际应用中,除法运算非常重要,甚至有时候要求4 @6 p+ g2 b6 \1 s4 A
必须快速地进行除法运算,这就要求编写的除法程
; T! J) u- Q ?序力求高效、快速[2].本文巧妙地利用“移位-相
& B, H3 |' L8 R, }减”法[35],以51系列单片机为例,设计了除数不受( {4 {& V+ H+ T! j& n' M
字节长度限制的单片机除法运算算法.该算法还可
: C3 H. m/ Y% w( t' G \& r以根据实际需要扩充为位数更高的多字节除数算, }( M6 ?& }3 a0 H+ _
法,也可以移植到其它的单片机平台上,' `* @8 @4 [; o6 |4 |2 l- [
) ? Y. O( w/ n4 b5 }
1 目前常用的单片机多字节除法运算/ D& ]$ M$ y G3 g, p
方法及其局限性+ s* p; C' l& v) q! I/ j u
目前,单片机多字节除法运算要求被除数为除2 g- W1 v: g' W j8 {% z
数的双倍字长,否则除法运算就不能执行.当被除数
1 Q, }0 r" t* z是除数的双倍字长时,首先比较被除数的高位字与, T: F0 n4 }. h9 i% x
除数的大小,如果出现被除数的高位字大于、等于除8 g: ^+ {) D1 j7 W8 c( E" }: p
数,则认为是商溢出,置位溢出标志不执行除法操; J/ p% ~+ Z/ C; A6 X6 _9 f
作.如果这些条件都成立,再采用一系列相减和移位
& k+ S8 ~8 M# x, m: W5 w8 j9 m, b( q& z" E
# n1 d6 W2 X8 ]0 v7 ?
4 h7 g: ]. `, X2 i$ O! z
1 Y6 h& T+ [ q, w |
|