汇编语言程序设计
Goal:
- 了解汇编语言源程序的结构.
- 深入理解伪指令系统.
- 深入理解DOS功能调用
- 掌握汇编语言源程序的设计方法.
4.1 汇编语言源程序
4.1.1 汇编语言源程序的结构
一个完整的汇编语言源程序由若干个逻辑段(Logic Segment)组成, 包括DS, CS, SS, ES.
- 每个逻辑段以 SEGMENT语句开始
- 以ENDS语句结束
- 整个源程序用END语句结尾
下面给出一个完整的ASM程序的结构框架:

下面以一个具体的例子来说明一个完整ASM语言的结构.
E.g. 编写一个两个字相加的程序:

4.1.2 ASM语句类型及格式
可分为两大类: 指令性语句 和 指示性语句.
指令性语句 - Instruction Statement : 由指令助记符(Ch.3学到的哪些)等组成的 可被CPU执行的语句.
一般格式:
[标号:] [前缀] 助记符 [操作数[,操作数]][;注释]
[label:] [prefix] mnemonic [operands],[operands] [;comment]
指示性语句 - Directive Statement : 用于告诉asm程序如何对程序进行汇编, 是CPU不执行的指令. 又称 伪操作语句 或 伪指令.
一般格式:
[名字] 伪操作 操作数 [,操作数,...] [;注释]
[name] mnemonic(directive) operands [,operands,…] [;comment]
其中+[]的是可选项.
对于一个语句Statement的构成要素(constituent elements) :
- 标号 - Label : 标号表示指令的符号地址, 要有:
- 名字 - Name :通常表示 变量名, 段名, 和 过程 名, 不要有:
- 助记符 - Mnemonic Instruction :
- 操作数 - Operand :
- 指令性语句 的操作数 : 0, 1, 2
- 指示性语句 的操作数 : 不限
操作数以 “,” 隔开.
- 注释 - Comment : 从;开始, 注释不参加程序汇编, 不生成目标程序, 只是为程序员阅读程序提供方便.
4.1.3 数据项及表达式
1 - 常量 - Constant
包括 数字常量 和 字符串常量
2 - 标号 - label
标号具有3种属性 : 段值, 偏移量 和 类型.
-
段值 : 标号所在段的短地址, 当程序种引用的一个标号时, 该标号应在代码段CS.
-
偏移量 : 标号所在段的段首 to 定义该表好的地址之间的字节数(EA) -> 16bits unsigned.
-
类型 : 两种, NEAR 和 FAR, NEAR 为 近标号, 只能在段内被引用, 地址指针为2个字节; FAR 为远标号, 可在其他段被引用, 地址指针为 4 个字节.
3 - 变量 Variable
与标号同样具有3种属性 : 段值, 偏移量 和 类型
变量的类型 : BYTE(字节), WORD(字), DWORD(双字), QWORD(4字), TBYTE(十字节).
变量是存储器种某个数据区的名字.
使用时 :
- 变量类型 与 指令的要求必须相符.
- 在定义变量时, 变量名对应的时数据区的首地址, 例如:

4 - 表达式 - Expression
Expression 本身不是指令, 本身不能执行. 在我们的程序进行汇编时, 汇编程序对表达式进行相应的运算, 得出一个确定的值.
算术运算符 +,-,*,/和MOD
表达式汇编结果就是一个数值, 具体比如说 :

E.g.

逻辑运算符 AND, OR, NOT, XOR
逻辑运算符只用于数值表达式, 用来对数值进行按位逻辑运算, 并得到一个数值结果.

最低0.47元/天 解锁文章
4476

被折叠的 条评论
为什么被折叠?



