注册 登录
编程论坛 汇编论坛

小白求助 关于汇编指令 stos的问题

d7se123 发布于 2020-05-18 16:08, 5048 次点击
问题描述:
mov al,0xff
mov edi,0x12ffdc
stos byte ptr es:[edi]  //将al 寄存器中的数据拷贝到edi(12ffdc)后   edi的值 会增加或者减少

然后再次执行
mov ax,0xAAAA
stos word ptr es:
只有本站会员才能查看附件,请 登录
[edi] //为啥还是往12ffdc中拷贝数据 前面的edi的值不是变化了吗?
1 回复
#2
Valenciax2020-05-18 19:29


12ffdc从何而来,和图中所见数值不同,没法回答你的问题.

倒是图中箭咀所指的EDI,和右边画线的EDI,其间变化是相符的.
看不出EDI的增加,是因为反汇编不到位,下面是正确的反汇编

B0FF              MOV     AL,FF
BFC8FD0703        MOV     EDI,0307FDC8
AA                STOSB   ;EDI +1   
66B8BBBB          MOV     AX,BBBB  ;在32模式下操作16bit暂存器要加66h作前置指令
66AB              STOSW   ;理由同上,66h为前置指令,;EDI + 2   
B878563412        MOV     EAX,12345678
AB                STOSD   ;EDI+4  
B878563412        MOV     EAX,12345678
AB                STOSD      ;EDI+4

EDI一共加了11(0BH)
307FDC8H + 0BH = 307FDD3
1