首先来看这个代码
assume cs:code
code segment
char='a'
table label byte 这里定义了字节型数组table,它的段地址和偏移就是下一个紧接着的存储单元。由这里看出,其实
这就和指令 table db 0的含义是一样,但在重复伪指令中是不可能重复执行这样26个这指令,是会出错的。
因为定义了26个table
rept 26
db char
char=char+1
endm
start: mov al,table+25
ok: mov ax,4c00h
int 21h
code ends
end start
关于this,这被定义为一个操作符。
比如 mov ax,this byte 这样的指令是可以被编译的
因为this byte将返回一个字节型存储器地址,在某种意义上和lable一样,可以随意指定一个存储器地址
但我们 可以访问label指定的变量地址,要想访问this byte指定的地址,还得加上equ指令,如 table equ this byte
把this指定的地址给予table.
由这里看出,label定义了可以访问的变量,而this只是临时指定。也就是和ptr操作符有相似之处。