您的位置:首页 > 其它

汇编寻址方式总结

2009-12-14 17:37 309 查看
命令:mov dowrd ptr ds:[esi],edi

解释:OD自动反编译了 ds ss自动加入了,不需要手动 [DS*0x10 + esi]

1====================立即数寻址

mov ax,1234

2 ===================寄存器寻址 (所需要的操作数 存放在一个寄存器里)

mov ax,bx

mov bx,dx

test ax,ax

mov ax,bl ;是错的

改正: mov ax, word ptr bl ;把bl强制转成字(word)类型

3.===================寄存器直接寻址

mov ax,[200h]

(DS*0x10 + 200h)

4====================寄存器间接寻址(所有操作数的偏移地址在bx,bp,si,di四个寄存器其中之一)

mov ax,[bx]

mov ax,[bp]

mov ax,[si]

mov ax,[di]

结果:DS*0x10 + [bx] (DS的值左移一位 + bx地址指向的 值)

5.===================寄存器变址寻址

mov ax,[bp-30]

写的形式等价于 mov ax,-30[bp]

结果: DS*0x10 + [bp-30] //bp-30的地址指向的值

6====================基址加变址寻址

如果BX是基址,就用DS*10

如果BP是基址,就用SS*10

mov ax,[bx+si] 就是-> DS*0x10 + [BX+SI]

mov ax,[bp+si] 就是-> SS*0x10 + [BX+SI]

结果是所有的值加起来的地址 指向的 值

7====================相对基址加变址寻址

如果BX是基址,就用DS*10

如果BP是基址,就用SS*10

mov ax,[bx+si+10] 就是-> DS*0x10 + [bx+si+10]

mov ax,[bp+si+10] 就是-> SS*0x10 + [bx+si+10]

写的形式 等价于 mov ax, [bp]+[si]+10

结果是所有的值ds+bx+si+10加起来的地址 指向的 值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: