【发布时间】:2011-09-18 04:12:57
【问题描述】:
我试图在 EBX 寄存器的从最低字节到最高字节的连续字节中存储斐波那契序列的数组。到目前为止,我的代码按预期工作:
fib0=0
fib1=1
fib2= fib0 + fib1
fib3= fib1 + fib2
fib4= fib2 + fib3
fib5= fib3 + fib4
fib6= fib4 + fib5
.data
array BYTE fib2, fib3, fib4, fib5, fib6 ;Adding elements to the array
.code
main PROC
xor ebx,ebx
xor esi,esi
mov esi,OFFSET array ; Moves array in to ESI for offset
inc esi ; incrementing to fib3 value
mov bl,[esi] ; fib3 going to bl registry
inc esi ; inc. to fib4 value
mov bh,[esi] ; fib4 going to bh registry
当我执行 EBX=00000302 的 DumpRegs 时。然后当我尝试将 fib5 移动到 bx 注册表时,它似乎覆盖了其他两个 bl 和 bh 注册表值。因此,当我使用以下代码将另外两个 fib 值写入 ebx 注册表时:
inc esi ; inc. to fib5 value
mov bx,[esi] ; fib5 going to bx registry
inc esi ; inc. to fib6 value
mov ebx,[esi] ; fib6 going to ebx registry
EBX=00000008 的最终值意味着最终的 mov 语句完全覆盖了整个寄存器。我希望它在连续字节中看起来像这样 EBX=08050302。这可能吗?
【问题讨论】: