assembly - 如何在摩托罗拉 M6800 中对数字进行取模

标签 assembly motorola

如何在摩托罗拉 M6800 的汇编中取数字的 mod,例如 a%9。请告诉我应该使用哪些助记符。

最佳答案

最后,如果没记错的话,6800 没有除法指令(6809 中添加的 IIRC),因此您必须自己实现除法(或者,如果您不关心速度) ,只需重复减去除数,直到结果小于除数,即为余数)。

要计算余数(不进行除法)实际上在二进制中非常容易:

  1. 将除数左移,直到它大于被除数
  2. 右移一位
  3. 如果小于股息,则从股息中减去它
  4. 重复步骤 2 和 3,直到被除数的余数小于除数
  5. 这是你的剩余部分

例如,我们计算 127 除以 9 后的余数。我们首先将 9 左移:

127 = 0111 1111
9   = 0000 1001

向左移动直到得到:

  0111 1111
  1001 0000

反复移位和减法:

      0111 1111
-     0100 1000
=     0011 0111

      0011 0111
-     0010 0100
=     0001 0011

      0001 0011
-     0001 0010
=     0000 0001

由于 1 小于 9,我们得到余数:1。如果您想检查一下,9x14=126。

关于assembly - 如何在摩托罗拉 M6800 中对数字进行取模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5189631/

相关文章:

java - 为什么我的根文件夹没有创建?

c - 为摩托罗拉 68K 处理器编写操作系统。我可以效仿吗?我可以试驾操作系统开发吗?

optimization - 无分支避免被零除

c - 为什么 gcc 不为函数调用引用 PLT?

assembly - 使用 Masm 的 float 数据示例

assembly - 如何同时使用 SSE2 和 PREFETCHh 指令?

assembly - 编写汇编时使用哪个寄存器有关系吗?

assembly - 雇用,Amiga Devpac 上的隔行扫描屏幕,带有窗口、菜单和按钮

android - Droid x 无法同时调试和连接到 sdcard (os x)

android - 应用仅在Motorola Backflip上打开时崩溃