完整的汇编编程程序的框架
(汇编语言使用英语大写、小写、混合均可以,但是因为考试的题目中汇编全部是大写,所以以下所有内容均用英语大写形式)
(完整的汇编程序还会有堆栈段,但是在考试中基本没有出现过,因此这里不再写)
DATA SEGMENT
<这里定义数据段>
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN:
MOV AX,DATA
MOV DS,AX
<从这里开始写你的程序>
CODE ENDS
END MAIN
这里SEGMENT的作用就和DB这样的定义语句是一样的,用于定义段类型。因此,和STR DB 5这样的语句一样,SEGMENT前的DATA是段的名称,是自己规定的,但是一样要注意前后一致。考试中常见的名称是DATA,DSEG。
观察上面的程序框架,可以看出来:首先声明的是数据段,而后用DATA ENDS结束数据段的内容。
接着定义代码段,需要注意在定义代码段后要添加一句声明语句,来声明CODE,DATA究竟是什么:
ASSUME CS:CODE, DS:DATA(注意,这里面的CODE,DATA即为你所规定的代码段和数据段
语句的作用
MOV AX,DATA
MOV DS,AX
每个完整的汇编程序都要在程序的入口(入口就是指的真指令的开始处)有这样两条指令。这个指令所要做的就是将DATA的偏移地址MOV到DS寄存器中,但是因为寄存器不能直接完成这个操作(见寄存器*)所以需要通过AX寄存器作为中转。一般来说,四个数据寄存器都可以作为中转的寄存器,不过一般都用AX。值得注意的是,如果接下来如果会用到AX寄存器,最好做XOR AX,AX操作使得AX寄存器清零,避免污染数据。