或多或少需要一些帮助来理解这一点。我们刚刚进入循环和 OFFSET 操作数,希望能得到一些帮助。所以这是我的指示:
使用间接寻址模式的 LOOP 指令编写一个汇编语言程序,计算斐波那契数列中的前 12 个值 {1, 1, 2, 3, 5, 8, 13, ...}。将每个值放在 EAX 寄存器中,并在循环内使用 call DumpRegs 语句显示它。
请使用以下变量定义:Fibonacci BYTE 1, 1, 10 DUP (?)
在循环之后立即插入以下语句。它们将显示目标字符串的十六进制内容: mov esi, OFFSET Fibonacci ;偏移变量 mov ebx,1 ;字节格式 mov ecx, SIZEOF Fibonacci ; 计数器调用 dumpMem ;显示内存中的数据
如果你的程序运行正常,程序运行时你会在屏幕上看到如下的十六进制字节序列:01 01 02 03 05 08 0D 15 22 37 59 90
.data
Fibonacci BYTE 1, 1, 10 DUP (?)
.code
main PROC
L1:
mov esi, OFFSET Fibonacci ; offset the variables
mov ebx,1 ; byte format
mov ecx, SIZEOF Fibonacci ; counter
call dumpMem ; display the data in the memory
exit ;exits to Operating System
main ENDP
END main
所以我知道我需要做一个循环语句,但我完全坚持如何开始它。任何建议将不胜感激!