寻址方式与结构化数据访问笔记(+div用法)

寻址的名称就不说了,书面化的东西不说,这里简单记下几个注意点:

1.si,di不可拆分

2.可以在[]中的寄存器:bx,bp,si,di

3.一个特例:mov ax,[0]           masm编译时,等效于mov ax,ds:[0]

4.bx,bp,si,di的全部组合方式:

(1)单个出现

(2)bx 和 si

bx 和 di

bp 和 si

bp 和 di

*5.push [idata]  为合法,也就是可以push一个内存中的字数据

6.和栈有关的操作均以字为单位,栈以子单元存储

*7.访问结构化数据通用方法:

用bx定位整个结构体,用idata定位结构体中的某个成员,用si定位数组成员(如字符串)的每个元素。

常用写法:[bx].idata               [bx].idata[si]

这点在逆向时有一定参考价值

8.div指令:

被除数不超过65536(即为可用字表示):

ax装被除数,结果的商在al中,余数在ah中。

被除数超过65536:

dx装被除数高16位,ax装被除数低16位,结果的商在ax中,余数在dx中

*可以直接除以内存中数据。

9.dup

dup伪指令易误解点:

db    3    dup(0,1,2)            其意思是:申请了9个字节。0,1,2,0,1,2,0,1,2

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>