汇编语言源程序
- 汇编语言源程序:用助记符编写
-
程序执行过程
语句类型和格式
语句类型
指令性语句:CPU 执行的语句,能够生成目标代码
指示性语句:CPU 不执行,由汇编程序 (编译器) 执行的语句,不生成目标代码
语句格式
指令性语句:
[标号:]\quad[前缀]\quad 助记符 \ quad[操作数],[操作数]\quad[; 注释][标号:][前缀]助记符 quad[操作数],[操作数][;注释]串操作指令的助记符前面可以加前缀,前缀不是指令,它表示一种循环重复执行的概念,和助记符连在一起可构成循环体
- 无条件重复前缀
- 条件重复前缀
- 标号代表指令的符号地址
- 标号后要有冒号
指示性语句:
[名字]\quad 伪指令助记符 \ quad 操作数 [, 操作数,···]\quad[; 注释][名字]伪指令助记符 quad操作数[,操作数,⋅⋅⋅][;注释]
- 变量或标号
- 表达式
- 算术运算:加减乘除、取模
- 逻辑运算:与或非异或
- 关系运算
- 取值运算和属性运算
- 其他运算
- LENGTHOF 运算符:计算数组中元素的个数
TYPE 运算符返回变量单个元素的大小,这个大小是以字节为单位计算
伪指令
伪指令:由汇编程序 (编译器) 执行的“指令系统”
作用: 帮助计算机理解指令性语句
用于定义数据区中变量的类型及其所占内存空间的大小
- 格式:
- 数据定义伪指令助记符:
- DB(Define Byte):定义的变量为字节型
- 每一个操作数占一个字节单元
- DW(Define Word):定义的变量为字类型
- 每一个操作数占一个字单元
- DD(Define Double Word):定义的变量为双字型
- DQ(Define Quadword):定义的变量为四字型
- DT(Define Tenbytes):定义的变量为十字节型
- DB(Define Byte):定义的变量为字节型
定义字符串必须用 DB 伪指令助记符
【例】数据定义伪指令定义的变量在内存中的分布
- 重复操作伪指令助记符:用于分配存储区
- “?“的作用:
符号定义伪指令
设定段寄存器伪指令
用段寄存器标识逻辑段是什么段
-
源程序基本结构
【例】一个完整源程序结构 -
过程定义伪指令
用来定义一个子程序
- 过程名是子程序第一条指令性语句在内存的符号地址
- 若为近过程,NEAR可省略
- 过程体的最后一条指令必须是RET
【例】过程定义及调用
子程序用到的寄存器,为了不影响调用程序的寄存器原来的值,需要在执行子程序之前,将调用程序原来寄存器的值保存到堆栈,在执行子程序结束后,将调用程序原来寄存器的值从堆栈恢复(先进后出)
宏命令伪指令
与子程序的不同:不能通过编译链接,成为一个独立的程序,只能是源程序的一部分,不能被其他源程序调用
【例】宏定义与宏调用