2 汇编语言程序设计:指令、伪指令;数据、保留字、标识符、伪指令


汇编语言程序设计

  • 不同的汇编程序有不同的汇编语言编程规定。
  • 目前支持Intel 8086/8088系列微机常用的汇编程序有ASM、 MASM
    • MASM —— Microsoft Macro Assembler
    • 是微软公司为x86微处理器家族开发的汇编开发环境,拥有可视化的开发界面,是Windows下开发汇编的利器。

汇编语言语句

分类

  • 指令语句
  • 伪指令语句

指令语句

功能

  • 每一条指令语句在汇编时都要产生一个可供CPU执行的机器目标代码,它又叫可执行语句。

格式例

LABEL1: ADD AX,BX;		//功能为AX<=(AX)+(BX);	后面的程序段将完成一次对存储器的访问

说明

一条指令语句最多可以包含4个字段

  • 指令助记符和操作数两个字段就是前面介绍的指令
  • 标号是可选字段,后面必须跟“:”
    • 主要用于控制程序执行顺序。
  • 注释字段为可选项,该字段以分号“;”开始
    • 不会产生机器目标代码,它不影响程序的功能
    • 注释可以加在指令的后面,也可以是整个语句行

伪指令语句

  • 伪指令 (directive) 是嵌入源代码中的命令,由汇编器识别和执行
  • 不区分大小写。

功能

  • 不在运行时执行,但是它们可以定义变量、宏和子程序
  • 为内存段分配名称,执行许多其他与汇编器相关的日常任务

功能:定义程序区段

  • 程序区段,也称为段 (segment)。
  • 程序中的段具有不同的作用。

.DATA 段定义变量

.data

.CODE 段包含了可执行的指令:

.code

.STACK 段定义了运行时堆栈,并设置了其大小:

.stack 100h

伪指令和指令的区别

myVar DWORD 26		;DWORD 伪指令告诉汇编器在程序中为一个双字变量保留空间
mov eax,myVar		;MOV 指令在运行时执行,将 myVar 的内容复制到 EAX 寄存器中:

概念

  1. 数据:指令和伪指令语句中操作数。
  2. —常用的数据形式有:常数、变量和标号。
  3. 一个数据由数值属性(比如是字节数据还是字数据)两部分构成。

保留字

  • 保留字:系统已经设定的、有特殊意义的。
  • 保留字没有大小写之分

保留字的类型:

  • 指令助记符(如MOV、ADD)。
  • 寄存器名称(如AX、CS等)
  • 伪指令,告诉汇编器如何汇编程序(如SEGMENT、DB)。
  • 属性操作符,提供变量和操作数的大小与使用信息。例如 BYTE 和 WORD。
  • 运算符,在常量表达式中使用(如GE、EQ)
  • 预定义符号,比如 @data,它在汇编时返回常量的整数值。
$ PARITY? DWORD STDCALL
? PASCAL FAR SWORD
@B QWORD FAR16 SYSCALL
@F REAL4 FORTRAN TBYTE
ADDR REAL8 FWORD VARARG
BASIC REAL10 NEAR WORD
BYTE SBYTE NEAR16 ZERO?
C SDORD OVERFLOW?
CARRY? SIGN?

标识符及命名规则

  • 标识符(identifier)是由程序员选择的名称,它用于标识变量、常数、子程序和代码标签。

标识符书写规则

  • 标识符不能与汇编器保留字相同
  • 不区分大小写
  • 第一个字符必须为字母 (A---Z, a---z) 、下划线 (_)、@、? 或 $。其后的字符也可以是数字。
  • 从第二个字符开始,可以是字母、数字、@、”或问号 ?

一些命名良好的名称 例:

lineCount  firstValue    index    line_count

下面的名称合法,但是不可取:

_lineCount    $first    @myFile  ;应避免用符号 @ 和下划线 _ 作为第一个字符.因为它们既用于汇编器,也用于高级语言编译器。