微机原理与接口技术: 4 - 汇编语言程序设计

汇编语言程序设计

Goal:

  1. 了解汇编语言源程序的结构.
  2. 深入理解伪指令系统.
  3. 深入理解DOS功能调用
  4. 掌握汇编语言源程序的设计方法.

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) :

  1. 标号 - Label : 标号表示指令的符号地址, 要有:
  2. 名字 - Name :通常表示 变量名, 段名, 和 过程 名, 不要有:
  3. 助记符 - Mnemonic Instruction :
  4. 操作数 - Operand :
    • 指令性语句 的操作数 : 0, 1, 2
    • 指示性语句 的操作数 : 不限
      操作数以 “,” 隔开.
  5. 注释 - Comment : 从;开始, 注释不参加程序汇编, 不生成目标程序, 只是为程序员阅读程序提供方便.

4.1.3 数据项及表达式

1 - 常量 - Constant

包括 数字常量 和 字符串常量

2 - 标号 - label

标号具有3种属性 : 段值, 偏移量 和 类型.

  1. 段值 : 标号所在段的短地址, 当程序种引用的一个标号时, 该标号应在代码段CS.

  2. 偏移量 : 标号所在段的段首 to 定义该表好的地址之间的字节数(EA) -> 16bits unsigned.

  3. 类型 : 两种, NEAR 和 FAR, NEAR 为 近标号, 只能在段内被引用, 地址指针为2个字节; FAR 为远标号, 可在其他段被引用, 地址指针为 4 个字节.

3 - 变量 Variable

与标号同样具有3种属性 : 段值, 偏移量 和 类型

变量的类型 : BYTE(字节), WORD(字), DWORD(双字), QWORD(4字), TBYTE(十字节).

变量是存储器种某个数据区的名字.

使用时 :

  1. 变量类型 与 指令的要求必须相符.
  2. 在定义变量时, 变量名对应的时数据区的首地址, 例如:

请添加图片描述

4 - 表达式 - Expression

Expression 本身不是指令, 本身不能执行. 在我们的程序进行汇编时, 汇编程序对表达式进行相应的运算, 得出一个确定的值.

算术运算符 +,-,*,/和MOD

表达式汇编结果就是一个数值, 具体比如说 :

请添加图片描述

E.g.

请添加图片描述

逻辑运算符 AND, OR, NOT, XOR

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值