题
我试图写这需要使用的for循环,除其他事项外的程序。 我有一个可怕的时间试图找到的基本代码象这样的例子在其他网站上。
如果有人可以请为我提供回路简单,甚至指示我应该看我将不胜感激。并请,如果你知道一个很好的资源为68K的初级教程,下面的评论!
谢谢!
解决方案
请参阅这里回答您的查询(第3导致谷歌搜索 '68000汇编')
[编辑],点击
这链路添加答案结果强>
在68000具有单独的地址和数据寄存器的稀有(唯一?)特性。有八个数据寄存器,D0-D7,和8个地址寄存器,A0-A7。 A7也堆栈指针,SP。这意味着,68000汇编语言往往更容易跟踪,因为你可以很容易地分辨出哪寄存器保存数据,并持有地址。例如,这是68000汇编来计算字的一个阵列的总和:
moveq #0, d0
moveq #0, d1
moveq #5, d2
loop:
move.w (a0)+, d0
add.l d0, d1
dbra d2, loop
[/编辑]
其他提示
如图EASy68K帮助引,语法用于在68K循环如下:
FOR[.size] op1 = op2 TO op3 [BY op4] DO[.extent]
code
ENDF
或
FOR[.size] op1 = op2 DOWNTO op3 [BY op4] DO[.extent]
code
ENDF
换言之:
for.size counter_location = starting_condition to ending_condition step_size
operations to be executed each loop
end of for loop
在STEP_SIZE和.size都是可选的。
在实践中的一个例子。结果 以下代码假定以下变量 大写指令dc.b 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',0
lea uppercase, a1 ; points a1 at the start of the uppercase variable
lea $002000, a2 ; points a2 at the start of the destination address
for d1 = #1 to #26 do.s
move.b (a1)+, (a2)+
endf
; Memory locations $002000 - $002019 now contain ABCDEFGHIJKLMNOPQRSTUVYWXYZ
此循环移离地址26个字节指向A1,到地址指向A2。计数器将被保存在D1。循环将开始于1(#1指示以十进制形式的“原始数”),每次增加,和最终在26。 在与前分支的尺寸的第一行交易结束时do.s使用。它是可选的,以及,但抛出EASy68K警告。因此,下面的for循环也将工作,如果你不需要设置分支条件。
for d1 = #1 to #26
move.b (a1)+, (a2)+
endf
关于一个教程,我建议 http://mrjester.hapisan.com/04_MC68/ 。它不处理一些更高级的命令和主题,但它提供了什么是对基本/中级发生有很好的理解。
不隶属于 StackOverflow