伪指令助记符 | 解释 |
---|---|
DB | 定义的变量为字节型 |
DW | 定义的变量为字类型 |
DD | 定义的变量为双字型 |
DQ | 定义的变量为4字型 |
DT | 定义的变量为10字节型 |
注:定义字符串必须用DB伪指令
表示随机值,用来预留存储空间
DW 20 DUP(?) ; 预留40个字节单元,每单元为随机值
**格式:**符号名 EQU 表达式
功能类似于定义变量,EQU说明的表达式不占用内存空间
在源程序中定义逻辑段,说明逻辑段的起始和结束,说明不同程序模块中同类逻辑段之间的联系形态。
格式:
段名 SEGMENT [定位类型][组合类型]
.
.
.
段名 ENDS
DATA SEGMENT
MEM1 DB 11H,22H
MEM2 DB 'HELLO!'
MEM3 DW 2 DUP(?)
DATA ENDS
**格式:**ASSUME 段寄存器:段名[,段寄存器:段名,…]
格式: END[标号]
用于定义一个过程题
过程名 PROC [NEAR/FAR] ;近过程体可以缺省NEAR,而远过程体不可缺省FAR
.
.
.
RET; 过程体的最后一条指令必须是RET
过程名 ENDP
具有独立功能的程序段,当源程序中需要多次使用同一个程序段时,可以将该程序段定义为一个宏
宏命令名 MACRO <形式参数>
.
.
.
ENDM
例子:
DADD MACRO X,Y,Z
MOV AX,X
ADD AX,Y
MOV Z,AX
ENDM
;宏的调用
DADD DATA1,DATA2,SUM
默认情况下,程序或变量在逻辑段中的起始偏移地址为:0,可以使用ORG指令来规定起始地址。
ORG 表达式;计算值伪非负常数
数据段名 SEGMENT
...
数据段名 ENDS
附加段名 SEGMENT
...
附加段名 ENDS
堆栈段名 SEGMENT
...
堆栈段名 ENDS
代码段名 SEGMENT
...
代码段名 ENDS
END
注:DOS和BIOS中断均可能影响AX
DOS中断包括:设备管理,目录管理,文件管理,其他用中断类型码区分
类型码为:21H
DOS功能调用的基本步骤
MOV AH,功能号
<置相应参数>
INT 21H
1号功能,输入的字符在AL中,即AL为出口参数存放位置。
MOV AH,01
INT 21H
10号功能,接受键盘键入的字符串,缓存区须定义在数据段,字符串在内存的存放位置: DS:DX
DAT1 DB,20,?,20,DUP(?)
.
.
.
LEA DX,DAT1
MOV AH,0AH
INT 21H
2号功能,把待输出的字符传送给了DL
MOV AH,2
MOV DL,41H
INT 21H
9号功能,被现实的字符串必须以‘$'结束,且为了格式的需要,可以加上会查和换行符(0DH,0AH)
DATA SEGMENT
MESS1 DB 'InputString:',0DH,0AH,'$'
DATA ENDS
CODE SEGMENT
.
.
.
MOV AH,09
MOV DX,OFFSET MESS1
INT 21H
4CH功能号,常用于程序结尾处,执行完后能正常返回OS
MOV AH,4CH
INT 21H