我想做一个减法循环。我的任务是找出一笔100美元的钞票数量。例如,用户输入950美元。那里有9张一百美元的钞票。我首先做的是将用户输入存储在日期寄存器1中,并将其与100进行比较。
cmpi.w #100,D1
我想基本上做"如果D1小于100,则减去另外100"。我怎样才能实现这个循环?我想使用大于和小于指令的分支,但我不确定如何。
答案 0 :(得分:0)
正常算法将除以100.M68K DIVU
/ DIVS
指令同时提供结果和余数:
MOVE #950,D1
DIVU #100,D1
将0x00320009
留在D1寄存器中,即0x9(9)作为结果,0x32(50)作为余数。
如果你真的想要一个循环,请看一下下面的代码(在EASy68K(http://www.easy68k.com/上)汇编并运行)。这是非常标准的汇编代码,其他架构上的循环看起来非常相似。 (事实上,这是我第一次编写M68K汇编代码。)
START:
MOVE #950,D1
Loop:
CMP #100,D1
BPL OverEqual100
BRA Under100
OverEqual100:
SUB #100,D1
ADD #1,D0
BRA Loop
Under100:
SIMHALT
(另见本答复的评论。)