|
|
#2
Valenciax2021-02-28 06:27
db,dw,dd,dq,dt等都是编译器(如masm)的定义内存长度的伪指令,dw是定义字word,
dw xx,yy,zz..... ;xx,yy,zz等代表一个word,其含义可以是指令,立即值,地址等等任何cpu解释的意义
通常dw指向一个值,再由指令去读取,如
table dw 1000h,2000h,3000h
..
..
mov bx,offset table ;取址
mov ax,[bx] ;取址中值,ax=1000h
mov ax,[bx+2] ;取址中值,ax=2000h
但,dw也可以直接在程式段使用,如
mov bx,1000h
dw 0d889h
dw 9090h
编译器会将后2条的dw值放置在该地址,cpu会直接执行(当然必须有意义的指令)
mov bx,1000h
mov ax,bx ;89h,0d8h 是 mov ax,bx的机器码
nop ;90h 是 nop的机器码
nop
所以dw本身尽管不是指令,但可以定义出机器码,
但若是cpu无法解释的东西,后果无法预期.
|