名字、变量、标号

名字、变量、标号

  1. 名字
    名字有 文件名、标题名、段名、过程名、符号常量 等,它们都是程序员编程时按标识符规定来命名的,其中有些名字可在编程时引用,以方便编程
    (1)段名 :是在源程序的定义语句中命名取定的
    源程序在进行汇编连接时,系统分配给该段一个段基值,设为 2000H 。这时,段名就可以作为段基值 2000H 被引用
    定义语句:
    DATA SEGMENT
    (2)过程名 :是在源程序的过程定义语句中命名的。
    汇编连接时源程序时,系统分配给过程一个地址,即该过程第一条指令所在内存单元的地址,亦即该过程的入口地址,这也就是调用该过程的 CALL 指令中的目的地址
    定义语句:
    SORT PROC NEAR
    过程名在汇编语言程序中可作为调用指令的目的地址使用,
    (3)符号常量:符号常量是在源程序的符号常量定义语句中命名的,定义语句:
    COUNT EQU 20
  2. 变量
    变量是数据定义语句中的一项,它是由程序员在编程是按照标识符规定取定的
    当在数据定义语句的第一项对变量命名后,该变量就是已定义了的,已定义的变量具有下列五种属性
    (1)段属性
    表示格式:SEG 变量
    它表示变量所在的段基值
    (2)偏移地址属性
    表示格式: OFFSET 变量
    它表示变量所在处的偏移地址
    (3)类型属性
    表示格式:TYPE 变量
    它表示变量所在内存数据的类型(用 DB、DW、DD、DQ、DT 予以定义)
    (4)长度属性
    表示格式:LENGTH 变量
    它表示变量所在数组的数据元素个数(用复制符 DUP 定义的数组)
    (5)规模属性
    表示格式:SIZE 变量
    它表示变量所在数组的字节总数(DUP 定义的数组)
    SIZE = LENGTH * TYPE
  3. 指令性语句
    指令性语句:由指令组成,是构成代码段的基础,只在代码段中才有,在数据段、附加段、堆栈段中是没有指令性语句的。
    程序运行时,CPU 执行指令性语句中的指令,而指示性语句在程序运行时,是不由 CPU 执行的,指示性语句是用来指示汇编程序进行汇编操作的
    指令性语句的格式为:
    【 标号: 】 操作码 【 操作数 】 【 ; 注释】
    其中操作码和操作数就是指令
  4. 标号
    标号是程序员编程时按标识符规定取定的,并常常具有它在程序中的作用的含义,如 NEXT 、AGAIN 等,并且标号一定要用冒号(:)结尾
    标号的三种属性:
    (1)段属性
    表示格式: SEG 标号
    它表示标号所在段的段基值
    (2)偏移地址属性
    表示格式: OFFSET 标号
    它表示标号所在位置的偏移地址,即该语句的指令的第一字节所在内存单元的偏移地址
    (3)类型属性
    表示格式:TYPE 标号
    标号通常用作转移指令对的目的操作数(即转移去的目的)地址
    类型有两种:
    NEAR 时,TYPE = -1
    FAR 时, TYPE = -2
  5. 变量和标号的类型的重新定义
    (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
今日推荐