|
Jan
17
|
|
先提一下几个概念
- 汇编程序语句的类别:指令语句和伪指令语句
指令语句有着与其对应的机器指令,而伪指令没有,只是指示汇编程序如何汇编源程序,包括符号的定义,变量的定义,段的定义,等
- 语句的形式(指令语句与伪指令语句格式相似):
指令语句: [标号:] 指令助记符 [操作数(,操作数)] [;注释]
伪指令语句:[名字] 伪指令定义符(参数…, 参数)[;注释]
- 标号和名字一般最多由31个字母,数字及规定的特殊字符(? @_ $)等组成,且不能用数字开头
- 表达式在汇编语言中有两种:数值表达式及地址表达式
一、数值表达式
1. 常数
(1)十进制数
以D结尾,如1234D
在表示十进制数时一般不加后缀D, 但汇编语言提供改变基数的伪指令RADIX
如 RADIX 16,那么这时候不加后缀,默认为16进制数。
(2)十六进制数
以H结尾,如1234H
凡是以字母A-F开头的十六进制数,必须在前面加一个0,如0FFFFH
(3)二进制数
由0,1组成,B结尾, 如0010100B
(4)八进制数
0-7组成,Q结尾,如123Q
(5)字符串常数
用引号括起来的一个或多个字符,串常数的值是包括在绰号中的字符的ASCII代码值,串常数与整常数有时候可以交替使用。
2. 算术运算符
包括:+,-,*, / 和MOD(取余)
3. 关系运算符
包括: 等(EQ),不等(NE),小于(LT),大小(GT),小于等于(LE),大于等于(GE)
运算结果是一个数字值,若关系不成立,则结果为0,否则结果为0FFFFH
4. 逻辑运算符
包括与(AND),或(OR),异或(XOR),非(NOT),还包括逻辑左移(SHL)和逻辑右移(SHR)
逻辑运算的结果是数值
5. 在数值表达式中使用的操作符
包括:HIGH,LOW,LENGTH,SIZE,OFFSET,SEG,TYPE,WIDTH,MASK
HIGH/LOW 数值表达式
结果是数值表达式的高/低8位
6. 运算符和操作符的优先级
(1)圆括号,尖括号,方括号,圆点符,LENGTH,SIZE,WIDTH,MASK,其中尖括号使用于记录中,圆点使用于结构中
(2)PTR,OFFSET,SEG,TYPE,THIS,冒号,冒号用于段跨越前缀
(3)*,/,MOD,SHL,SHR
(4)HIGH,LOW
(5)+,-
(6)EQ,NE,LT,LE,GT,GE
(7)NOT
(8)AND
(9)OR,XOR
(10)SHORT
二、地址表达式
包括单个的标号,变量(对应直接寻址方式)和有方括号挺直的基址或变址寄存器
在一个存储器地址上加或减一个数字量,结果仍为存储器地址 如MOV AX,VARW+4,是指变量VARW的偏移+4为偏移的存储单元,而不是VARW的内容+4!

