【发布时间】:2013-11-01 23:47:18
【问题描述】:
我需要使用加法和移位将两个 32 位 SIGNED 数字相乘,并获得存储在内存位置 $0408-$040F 中的 64 位数字。这两个数字存储在 8 位存储器中。
movb #$1F, $0400 ; the first number is $1F230001
movb #$23, $0401
movb #$00, $0402
movb #$01, $0403
movb #$F8, $0404 ; the second number is $F8012346
movb #$01, $0405
movb #$23, $0406
movb #$46, $0407
我知道如何将两个 8 位数字与加法和移位相乘,但我不知道如何处理其他数字。我使用了 16 位累加器 D(累加器 A 8 位 MSB,累加器 B 8 位 LSB)。
我正在使用 CPU12:Reference Manual
请你帮我,指导我或告诉我怎么做吗?谢谢,我花了很多时间,但我不知道如何处理 32 位数字。
【问题讨论】:
-
算法相同,只是位数更多。
-
是的,但是当我有 4 个 8 位内存位置时该怎么做,我可以通过 8 位(移位、添加)但是如何移动以继续下一个 8 位?
-
哦,这个 CPU 有一个 16 位累加器,所以你不需要学习如何只使用 8 位运算来进行 16 位运算。 (因此您没有经验可以概括。)使用 ADC 指令。 This question 展示了如何。
标签: assembly bit-shift multiplication addition