1 程序段的定义
程序段的一般格式如下:
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
...(其他指令部分)...
MOV AX, 4C00H
INT 21H
CODE ENDS
END START
语法解读:
程序开始的两条指令都是用于装载数据段寄存器DS的。进入程序后,代码段寄存器CS中的值已经由操作系统自动设置为代码段的段基址,数据段的段基址则需要程序员手动装入DS中;
ASSUME伪指令用于指定每一个数据段所对应的段基址寄存器。如上面的代码中CODE段的段基址寄存器为CS,DATA段的段基址寄存器为DS;
INT 21H表示调用由操作系统提供的21H号服务程序。服务的种类由AH中的功能号决定,本例中4CH表示返回操作系统的操作;AL中的代码称为返回代码,用返回代码00H表示正常返回;
END伪指令标志整个程序的结束。END语句下面书写的任何代码都不会被汇编。END后的标号表示程序的入口地址,也就是汇编程序开始执行的地方。
2 基本传送指令
基本传送指令是使用最频繁的指令,需要熟练掌握。格式如下:
语法解释:
源操作数和目的操作数的类型必须相同。如果不相同只有使用强制类型转换后才能进行传送。强制类型转换语法可以见下方;
源操作数和目的操作数不能同时是存储器操作数,也不能同时是段寄存器;
目的操作数不能是立即数;
代码段基址寄存器CS不能作目的操作数;
使用立即数作为源操作数时,立即数会按照目的操作数的类型进行扩展。
强制类型转换语法(要谨慎使用):
|