第4个问题涉及到汇编语言中数据定义的问题。最初我们在数据段中这样定义数据:
db
1
;db是define byte的缩写,即定义字节,这句向系统申请了一个字节的内存单元空间,并向里面存储了数字1,也可以说是定义一个数据,类型为字节,值为1。
dw
?
;dw是define word的缩写,即定义字,这句向系统申请2个字节的内存单元空间,但未向里面存储内容(用高级语言的术语说就是未赋初值),也可以说是定义了一个数据,类型为字,但未赋值。
然后我们也可以这样定义数据:
VAR1
db
1
;用汇编语言的术语讲,VAR1就是一个标号,标号其实就是一个地址,但在这里,VAR1这个标号不但表示地址,还表示了后面所申请内存单元的长度,所以VAR1实际上就表示DS:[VAR1],即通过VAR1就可以访问到它所指代的内存单元中的内容,也即VAR1=1。在高级语言里,VAR1就是程序定义的变量,初值为1,我们可以像下面这样来使用VAR1:
mov
al,VAR1
;将VAR1所指代的内存单元中的内容传送至al寄存器中,用高级语言的术语说就是将变量VAR1的值赋给al。
mov
VAR1,al
;将寄存器al中的值传送至VAR1所指代的内存单元中,用高级语言的术语说就是将al的值赋给变量VAR1。
根据以上的分析,我们就可以这样来理解下面的一些语句:
VAR2
dw
3
;定义了一个字型变量VAR2,值为3。
VAR3
db
1,2,3
;定义了一个字节型的数组,有3个元素,每个元素的值分别为1,2,3。
VAR4
dw
?
;定义了一个字型变量VAR4,未赋初值。
以上包括了变量的定义和使用,如果要查看变量中的值,可用DEBUG加载程序,用D命令查看。
不知道以上分析能否帮到楼主。
[
本帖最后由 取名字 于 2015-5-5 12:52 编辑 ]