当前位置:软件学习 > 其它软件 >>

汇编程序的组成

 

本章节介绍:

• 语句

• 标示符

• 保留字

• 注释的应用

• 操作数

• 表达式

  数值表达式

  地址表达式

  返回值操作符

  属性操作符

数据的定义

标号与变量的属性

伪指令

a.存储模型说明伪指令.MODEL

b.段伪指令SEGMENT和结束伪指令ENDS

c.过程开始伪指令PROC和结束伪指令ENDP

d.段使用设定语句伪指令Assume

e.整个程序结束伪指令END

f.简化段伪指令

g.等值伪指令EQU

h.ORG伪指令

一个完整的源程序的组织

 

语句

汇编程序由语句组成

•  汇编语言语句的通用格式:

 

    [标示符]  操作符[操作数][;注释]

 

       表示符, 操作符, 操作数被至少一个空格或者制表符分开。

• 语句的两种类型:

 

1) 指令,被汇编器转换成机器代码;

     [标号:] 操作符[操作数] [;注释]

 

2) 伪指令,只告诉汇编器要执行的具体行动,不产生机器代码

  [名称/变量] 指令[表达式/参数] [;注释]

[标示符] 操作符[操作数] [;注释]

 

语句的两个例子:

[标号:] 操作符[操作数] [;注释]

     L1:     MOV  AX, 0   ;把0 移到AX

 

[名称/变量] 指令[参数][;注释]

counter      DB   1           ;定义字节的值1

 

标示符

标示符的两种类型:

1. 标号  指令,过程,段的地址

      例如:  下面语句中的Main

       Main:    PROC FAR

 

2. 名称/变量    数据单元的地址

        例如:下面语句中的Counter     

          Counter   DB    0

 

•  标示符 可以使用一下字符:

字母:   A~Z, a~z ;   (不区分大小写)

数字:   0~9   (不能作为第一位) ;

特殊字符:   ?  _ $  .  @

•  标示符的第一个字母必须是字母或者专用字符,但专用字符的“.”除外。

 

• 不能用保留字作为标示符。

 

• 标示符最大长度为31个字符。

 

保留字

汇编语言里的某些名字是为它们固有的用途而保留的,只再特殊情况下使用。

 

种类:

• 指令,如MOV和ADD,是计算机可执行的操作;

• 伪指令, 像END或SEGMENT,是为汇编程序提供信息。

• 操作符, 如FAR和SIZE,可以在表达式中使用。

• 预定义符号, 如@DATA 和@Model, 它们在汇编期间向程序返回信息。

• 

       

程序注释

遍及整个程序的注释的使用可以改善程序的清晰度。

• 注释用一个分号(;)开始.

 

汇编程序假定在一行中所有在它右边的字符都是注释

注释可以包含任意可打印字符,包括空格在内。

 

例子:

         ADD AX, BX   ; 累计

注释不会产生机器码,因此它不会影响汇编程序的大小和运行。

 

操作数

• 操作数提供操作要用的信息。

 

• 有些指令无需操作数,有些却又一个或者两个操作数。

 

• 对于指令来说,操作数的地址包含在操作数项中。

 

• 操作数项由常量,寄存器,标号,名称/变量或者表达式(一个或多个)组成

 

表达式

表达式分为数值表达式和地址表达式。

数值表达式中的值是可以在汇编过程中被汇编器计算的。

数值表达式

1) 常量

2) 算术表达式

3) 关系表达式

4) 逻辑表达式

5) 值表达式中其他操作符

6) 操作的优先级(从高至低)

 

1)常量

    十进制常量: 12D,12

    十六进制常量: 0FAH

    二进制常量:  00000001B

    字符串常量:

      是用单引号或者双引号括起来的一个或者多个字符,

      它的值是字符的ASCII码值。

2) 算术表达式

   算术表达式包括+,-, *, /, MOD (除后的余数).

   例如:

   ADD  AX, 100H /3*2-1

地址表达式

地址表达式表示的内存中存放操作数的地址

 标号, 名字/变量(立即地址), [BX], [SI] ,[DI]都是特殊的地址表达式。

             地址 ±值=地址

例子:

 SUN+1 =SUN下一位的地址

 注意:并非SUN的内容加1;

 

3.值–返回操作符

    有    TYPE, LENGTH, SIZE, OFFSET, SEG.

1)TYPE—返回 变量或者标号的属性类型的值。

  格式:      TYPE  变量   或者标号

  字节变量                        属性类型的值1

  字变量                                  2

  双字变量                                4

  近标号                                 -1                

  远标号                                 -2

 

TYPE   变量 或者 标号

; 返回变量或者标号属性类型的值

 

SEG   变量 或者 标号

;返回变量或者标号所在的段的段地址

OFFSET   变量 或者 标号

;返回变量或者标号的偏移地址

 

4.   属性操作符

1) PTR—指定或者更改变量或者标号的类型。

 

 格式:    类型    PTR  地址表达式

 

 注意:  PTR不分配内存空间。

 

例子: 

 MOV  [SI], 1                            ;出错

 MOV  BYTE PTR [SI], 1       ;指定字节类型

 MOV  WORD PTR [SI], 1     ;指定字类型

 

 

数据定义

EXE程序中的数据段

是用来为定义常量,工作区,输入/输出区和未定义值的。

 

•         数据定义的格式:

[变量] Dn  表达式1[,表达式2,…] [; 注释]

 

   数据项的名字是唯一的,也是具有描述性的。

 

•Flag  DB   ?

;这个表达式定义一个没初始化的值,但它必须符合定义的大小

 

•一个表达式可以 包含多个被逗号&

补充:软件开发 , 其他 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,