汇编语言(五)--基本伪指令

本文最后更新于:2019年6月26日 晚上

概览:常用的一些伪指令的用法和作用记录。

伪指令

所谓伪指令,就是不能够像汇编指令那样生成可执行的二进制机器代码,而是在汇编程序(MASM)对源程序(.ASM)进行汇编时由汇编程序执行的

段定义伪指令

1.段定义

1
2
3
段名 segment [参数类型]
……
段名 ends

segment与ends必须成对使用,表示段的开始与结尾。而8086中一共有四个段。

2.assume

assume用于将段寄存器与段关联起来,指明段寄存器与段的对应关系

1
assume 段名 : 段寄存器,段名 : 段寄存器

3.段寄存器的赋值方式

  • 代码段寄存器CS是不能够使用MOV指令来赋值的。其他都可以用MOV初始化
  • 段地址不能够直接传送给段寄存器。如mov ds,data data是定义的数据段,这样是错误的!
  • 段寄存器赋值方式:段地址 --> 一般寄存器 --> 段寄存器
1
2
mov ax,data
mov ds,ax

4.实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
DATA  SEGMENT    		;数据段定义伪指令
……
DATA ENDS ;数据段结束
EXTRA SEGMENT ;附加段定义伪指令
……
EXTRA ENDS ;附加段结束
STACK SEGMENT STACK ;定义堆栈段,第一个STACK为自定义堆栈段的名称,第二个为表示定义的段为堆栈段
……
STACK ENDS ;堆栈段结束
CODE SEGMENT ;代码段定义伪指令
ASSUME CS:CODE,DS:DATA,ES:EXTRA,SS:STACK ;指定段寄存器与对应段名
START:
MOV AX,DATA
MOV DS,AX ;将数据段段地址送入DS
MOV AX,EXTRA
MOV ES,AX ;将附加段段地址送入ES
MOV AX,STACK
MOV SS,AX ;将堆栈段段地址送入SS
……
MOV AH,4CH ;此两句为结束程序,返回DOS
INT 21H
CODE ENDS ;代码段结束
END START ;整个程序结束伪指令

数据定义伪指令

其他伪指令

赋值伪指令

地址计数器

设置偏移地址

操作符

未完待续……