名字、变量、标号
其他
2018-10-10 16:29:47
阅读次数: 0
名字、变量、标号
- 名字
名字有 文件名、标题名、段名、过程名、符号常量 等,它们都是程序员编程时按标识符规定来命名的,其中有些名字可在编程时引用,以方便编程
(1)段名 :是在源程序的定义语句中命名取定的
源程序在进行汇编连接时,系统分配给该段一个段基值,设为 2000H 。这时,段名就可以作为段基值 2000H 被引用
定义语句:
DATA SEGMENT
(2)过程名 :是在源程序的过程定义语句中命名的。
汇编连接时源程序时,系统分配给过程一个地址,即该过程第一条指令所在内存单元的地址,亦即该过程的入口地址,这也就是调用该过程的 CALL 指令中的目的地址
定义语句:
SORT PROC NEAR
过程名在汇编语言程序中可作为调用指令的目的地址使用,
(3)符号常量:符号常量是在源程序的符号常量定义语句中命名的,定义语句:
COUNT EQU 20
- 变量
变量是数据定义语句中的一项,它是由程序员在编程是按照标识符规定取定的
当在数据定义语句的第一项对变量命名后,该变量就是已定义了的,已定义的变量具有下列五种属性
(1)段属性
表示格式:SEG 变量
它表示变量所在的段基值
(2)偏移地址属性
表示格式: OFFSET 变量
它表示变量所在处的偏移地址
(3)类型属性
表示格式:TYPE 变量
它表示变量所在内存数据的类型(用 DB、DW、DD、DQ、DT 予以定义)
(4)长度属性
表示格式:LENGTH 变量
它表示变量所在数组的数据元素个数(用复制符 DUP 定义的数组)
(5)规模属性
表示格式:SIZE 变量
它表示变量所在数组的字节总数(DUP 定义的数组)
SIZE = LENGTH * TYPE
- 指令性语句
指令性语句:由指令组成,是构成代码段的基础,只在代码段中才有,在数据段、附加段、堆栈段中是没有指令性语句的。
程序运行时,CPU 执行指令性语句中的指令,而指示性语句在程序运行时,是不由 CPU 执行的,指示性语句是用来指示汇编程序进行汇编操作的
指令性语句的格式为:
【 标号: 】 操作码 【 操作数 】 【 ; 注释】
其中操作码和操作数就是指令
- 标号
标号是程序员编程时按标识符规定取定的,并常常具有它在程序中的作用的含义,如 NEXT 、AGAIN 等,并且标号一定要用冒号(:)结尾
标号的三种属性:
(1)段属性
表示格式: SEG 标号
它表示标号所在段的段基值
(2)偏移地址属性
表示格式: OFFSET 标号
它表示标号所在位置的偏移地址,即该语句的指令的第一字节所在内存单元的偏移地址
(3)类型属性
表示格式:TYPE 标号
标号通常用作转移指令对的目的操作数(即转移去的目的)地址
类型有两种:
NEAR 时,TYPE = -1
FAR 时, TYPE = -2
- 变量和标号的类型的重新定义
(1)用 PTR 重新定义
格式:类型 PTR exp
如:
重新指定变量类型
BUFW DW 1234H ,5678H
下列指令均为合法的
MOV AX , BUFW ; AX <-- 1234H
MOV AL , BYTE PTR BUFW ; AL <-- 34H
(2)属性指定运算符 THIS
格式: THIS 类型
THIS 和 EQU 一起用来定义一个新变量,它与原变量具有相同的段属性和偏移地址属性,但类型属性不同
如:
BUFB EQU THIS BYTE
BUFW DW 1234H , 5678H
这样,BUFB 和 BUFW 具有相同的段属性和偏移地址属性,但 BUFB 的类型属性是字节,
注意:BUFB 语句和 BUFW 语句必须是紧邻的且 BUFB 语句在 BUFW 语句的前面
(3)命令 LABLE
格式: 变量/ 标号 LABLE 类型
转载自blog.csdn.net/ww7510/article/details/82914766