文档介绍:第4章汇编语言程序设计
伪指令
汇编语言的上机过程
系统功能调用
汇编语言程序设计
汇编语言和C/C++混合编程
伪指令
汇编源程序:
按严格的语法规则用汇编语言编写的程序,称为汇编语言源程序,简称为汇编源程序或源程序。
汇编程序:
为计算机配置的负责把汇编源程序翻译成目标
程序的一种系统软件。
汇编(过程):
将汇编源程序翻译成一一对应的机器码目标程序的过程称为汇编过程或简称汇编。
表达式
表达式:
是由常量、变量及运算符组成的有意义的式子。
常数:
没有任何属性的纯数值。在程序运行中不发生变化。
如:10010011B、0A5H、”ZHIFUCHUAN”、-4
变量:表示存储单元,单元中的数在程序运行期间随时
可以修改。
变量名:存放数据单元的符号地址
标号:表示存储单元,单元中存放的是机器指令代码
①段属性(SEG):
变量或标号对应存储单元所在段的段值
②偏移量属性(OFFSET):
变量或标号对应存储单元的起始地址的段内偏移
③类型属性(TYPE):
变量类型主要是字节(BYTE)、字(WORD)、双字(DWORD)
标号类型主要是近(NEAR)和远(FAR)
变量、标号
存储单元
⑴算术运算符
+、-、*、/、MOD(除法取余)、SHL(左移)、 SHR(右移)
例: MOV AX,100*4+5 ;AX=405
⑵逻辑运算符:AND、OR、NOT、XOR
例: 24H OR 0FH=2FH
按位运算
⑶关系运算: EQ、NE、LT、LE、GT、GE
例:MOV AX,1234H GT 1024H
关系运算结果总是
一个数值。若关系不
成立,则结果为0,若
关系成立,则结果
为0FFFFH
MOV AX,0FFFFH
、逻辑运算符和关系运算符
(1) SEG(计算段基址)
例2:把VARW的偏移地址送BX
MOV BX,OFFSET VARW
例3:假设VARW变量是字变量,把VARW的类型值送AL
MOV AL, TYPE VARW ;AL =2
例1:把VARW所在段的段值送AX
MOV AX,SEG VARW
变量名
、OFFSET、TYPE、
SIZE和LENGTH
(3)TYPE(计算符号类型值)
(2)OFFSET(计算偏移地址)
3. 组合运算符(属性操作符)
(1)定义符号名为新类型PTR
格式:<类型> PTR <符号名>
功能:用于指定或临时改变变量或标号的类型
例:MOV WORD PTR [SI],1 ;指明字类型
(2)指定新类型THIS
格式:THIS <类型>
功能:为某个符号名建立新类型
例:LABC EQU THIS BYTE
MOV LABC,AL
伪指令
⑴字节定义语句DB
格式:[变量名] DB <初值表>
功能:初值表中的每一项占一个字节,
它们从变量名(符号地址)开始按字节连续存放。
例:COUNT DB 100
DB 0DH,0AH,’$’
VARW DB ?,6,?,?
低
0A
24
×
06
×
×
0D
64
COUNT→
VARW→
高
可以使用重复操作符DUP如:
BUFFER DB 8 DUP(0)
符号地址
DUP可以嵌套如:
ARRAY DB 100 DUP(0,2 DUP(1,2),3)
(变量定义)
⑵字定义语句DW
格式:[变量名] DW <初值表>
功能:初值表中的每一项占一个字单元,
它们从变量名(符号地址)开始按字连续存放。
例:FLAG DW 2FCDH,24H
DW ?
24
00
×
×
2F
CD
FLAG→
低
高
汇编后对应的存储区域分配情况
⑶四字节定义语句DD
格式:[名字] DD <初值表>
功能:初值表中的每一项占四个字节数,它们
从符号地址开始按四字节从小地址连续存放。
格式:[名字] DQ <表达式或数据项表>
功能:初值表中的每一项占八个字节数,它们
从符号地址开始按八字节从小地址连续存放。
⑷八字节定义语句DQ
⑸ 10字节定义指令DT