模数68K组装

Dar*_*uso 4 assembly 68000 modulo

我想知道是否有一个命令/方法在Motorola 68000程序集中执行模数?

我想执行d4 mod 1000和d3 mod 100.

目前我正在使用以下公式,但这需要几行,

如果一个mod n则a - (n*int(a/n))

我已经看到了d0 mod d1的这个公式

CLR.L D2
MOVE.W D0,D2
DIVU D1,D2
SWAP D2
Run Code Online (Sandbox Code Playgroud)

谢谢你的回答.

Dav*_*zer 7

DIVU指令正是您正在寻找的.执行时DIVU,目标的长字除以源的字.在你的情况下,你写道:

DIVU D1, D2
Run Code Online (Sandbox Code Playgroud)

所以,D2被D1除.在商中,有两个部分返回.D2的高位字将包含余数(模数),而低位字包含商.这就是你通常看到的原因SWAP d2.这会将余数移到低位字.

  • 您可以执行以下操作:“CLR.W D2”,然后是“SWAP D2”,这会清除低位字(商),然后执行交换。 (2认同)