汇编语言(2)伪指令

汇编语言(2)伪指令

一.数字定义伪指令

用于定义数据区中变量的类型及其所占内存空间大小。
汇编语言(2)伪指令_第1张图片

伪指令助记符 解释
DB 定义的变量为字节型
DW 定义的变量为字类型
DD 定义的变量为双字型
DQ 定义的变量为4字型
DT 定义的变量为10字节型

注:定义字符串必须用DB伪指令

重复操作符DUP

作用:多用于为一个数据区的数据设定相同的初值
在这里插入图片描述

表示随机值,用来预留存储空间

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

注:DOS和BIOS中断均可能影响AX

DOS软中断

DOS中断包括:设备管理,目录管理,文件管理,其他用中断类型码区分
类型码为:21H
DOS功能调用的基本步骤

  • 将调用参数装入指定的寄存器;
  • 将功能号装入AH;
  • 按中断类型号调用DOS中断﹔
  • 检查返回参数是否正确。
MOV AH,功能号
	<置相应参数>
	INT 21H

1.单字节输入

1号功能,输入的字符在AL中,即AL为出口参数存放位置。

MOV AH,01
INT 21H

2.字符串输入

10号功能,接受键盘键入的字符串,缓存区须定义在数据段,字符串在内存的存放位置: DS:DX

DAT1	DB,20,?,20,DUP(?)
	.
	.
	.
LEA	DX,DAT1
MOV	AH,0AH
INT	21H

3.单字符显示输出

2号功能,把待输出的字符传送给了DL

MOV AH,2
MOV DL,41H
INT 21H

4.字符串输出显示

9号功能,被现实的字符串必须以‘$'结束,且为了格式的需要,可以加上会查和换行符(0DH,0AH)

DATA SEGMENT
	MESS1	DB	'InputString:',0DH,0AH,'$'
DATA	ENDS
CODE SEGMENT
	.
	.
	.
MOV	AH,09
MOV	DX,OFFSET	MESS1
INT	21H

5.返回操作系统(DOS)功能

4CH功能号,常用于程序结尾处,执行完后能正常返回OS

MOV AH,4CH
INT 21H

你可能感兴趣的:(微机原理)