Ori*_*ber 1 assembly stack x86-16
首先,我要道歉,英语不是我的母语,我无法想出一个更适合我的情况的头衔.
我得到了这个不完整的汇编代码:
.code
mov [mybyte],______
mov SP,0574h
xor ax,ax
here:
add AL,[mybyte]
push AX
dec BYTE PTR [mybyte]
jnz here
pop es
nop
Run Code Online (Sandbox Code Playgroud)
问题是:_____应该写什么,这样当我们达到"nop"命令时,SP的值将是570.
我理解这个问题,我认为我也理解代码,但问题是,我看到它的方式 - SP永远不会改变.代码中唯一引用SP的位置在该行mov sp,0574h.所以无论我们在____所在的位置写什么,SP都不会改变.
我对么?或者我误解了代码?
push变化SP,即减少2.pop它补充说,它也改变了它,它恰恰相反2.这是假设16位模式.
由于最终pop增加了一个2回来,你需要循环3次,以获得570h从574h.因此正确的价值是3.
push AX ; SP = 572h
...
push AX ; SP = 570h
...
push AX ; SP = 56Eh
...
pop es ; SP = 570h
Run Code Online (Sandbox Code Playgroud)