80X86学习笔记--常用伪指令语句
来源:互联网 发布:小米手环数据清除 编辑:程序博客网 时间:2024/06/02 02:59
(1)符号定义语句
1.等价语句EQU
符号名 EQU 表达式
COUNT EQU 100 ; 符号COUNT就代表常数100
BUFF_LEN EQU 4*COUNT ; COUNT是已定义的符号常数
HELLO EQU “HELLO WORLD!”
MOVE EQU MOV
COUNT EQU CX
用EQU可以用MOVE代替MOV,用COUNT代替寄存器CX.
注意:第一,等价语句不另外给符号分配存储单元;第二,等价语句定义的符号不能与其他符号相同,也不能被重新定义,否则汇编程序会认为出现符号重复定义错误。
2.等号语句(=)
等号语句用来定义符号常数、
符号名= 数值表达式
用符号语句定义的符号可被重新定义。
3.定义符号名语句
符号名 LABEL 类型
类型可以是BYTE WORD DWORD NEAR FAR等
该语句的功能是定义有符号名指定的符号,使该符号的段属性和偏移属性与下一个紧接着的存储单元的段属性和偏移属性相同,使该符号的类型为参数所规定的类型。
BUFFER LABEL WORD
BUFF DB 100 DUP (0)
BUFFER的类型是WORD,段属性和偏移属性与BUFF相同。
QUIT LABEL FAR
EXIT: MOV AH, 4CH
MOV AH, 4CH有两个标号QUIT和EXIT,但它们类型不同。
(2)段定义语句
为了与存储器的分段结构相对应,汇编语言的源程序也是由若干个段组成。
1.段开始和结束语句
段名 SEGMENT [定位类型][组合类型][‘类型’]
段名 ENDS
段名的命名方法与一般符号命名方法相同。
一个简单的数据段如下所示:
DSEG SEGMENT
MESS DB ‘HELLO’, 0DH, 0AH, ‘$’
DSEG ENDS
CSEG SEGMENT
MOV AX, DSEG
MOV DS, AX
MOV DX, OFFSET MESS
MOV AX, 9
INT 21H
MOV AH, 4CH
INT 21H
CSEG ENDS
2.段使用设定语句
汇编程序根据段开始语句和段结束语句判断出源程序的段划分,为了有效地产生目标代码,汇编程序还要了解各程序段与段寄存器的对应关系。段寄存器与程序段的对应关系由段设定语句说明。
ASSUME 段寄存器名:段名[,段寄存器:段名…]
段寄存器名可以是CS, DS ES,SS。
CS对应CSEG段,DS对应DSEG段。
ASSUME CS: CSEG, DS: DSEG
ASSUME伪指令中的段名域也可以是一个特别的关键字NOTHING,它表示某个段寄存器不再与任何段有对应关系。
DESEG1 SEGMENT
VARW DW 12H
DESEG1 ENDS
DSEG2 SEGMENT
XXX DW 0
YYY DW 0
DSEG2 ENDS
CSEG SEGMENT
ASSUME CS: CSEG, DS:DSEG1, ES:DSEG2
MOV AX, DSEG1
MOV DS, AX
MOV AX, DSEG2
MOV ES, AX
MOV AX, VARW
MOV XXX, AX
ASSUME DS: DSEG2, ES:NOTHING
MOV AX, DSEG2
MOV DS, AX
MOV AX, XXX
MOV YYY, AX
CSEG ENDS
3.ORG语句
汇编程序在对源程序汇编的过程中,使用地址计数器来保存当前正在汇编指令或变量的地址偏移。
ORG 数值表达式
TESTSEG SEGMENT
ORG 100H
BEGIN: MOV AX, 1234H
ORG 500H
VAR DW 1234H
TESTSEG ENDS
汇编语言中用“$”表示地址计数器的值。
例:表示跳过8个字节的存储区
ORG $+8
当$用在伪指令的参数中时,它表示地址计数器的当前值。
ARRAY DW 1, 2, $+4, 3, 4, $+4
- 80X86学习笔记--常用伪指令语句
- 80X86伪指令
- arm 汇编学习常用指令伪指令笔记汇总
- 80X86学习笔记--数据传送指令
- 80X86学习笔记--算术运算指令
- X86汇编指令学习笔记
- 80X86学习笔记--汇编语言的语句
- X86汇编 伪指令
- 80x86常用指令总结
- 80x86汇编常用指令
- 80X86学习笔记--逻辑运算与移位指令
- 8086汇编学习笔记5-伪指令
- arm学习笔记四(arm伪指令)
- ARM汇编伪指令学习笔记
- 汇编语言---常用伪指令
- 常用伪指令
- 汇编语言常用伪指令
- 常用汇编伪指令
- 从iphone 应用 和android 应用 看未来创业趋势
- oracle归档日志(archive log)
- android 中管理短信
- 杭电hdu 1527 取石子游戏 Wythoff Game 博弈
- geotools 使用 部分代码总结
- 80X86学习笔记--常用伪指令语句
- Eclipse与MyEclipse的联系和区别
- vc++中的cdc类
- 深入浅出分析C#接口的作用
- 递归下降分析法的简单例子的c语言实现
- 数组计算
- Transmitters
- 传说中的Java烟花程序
- hdu1242-搜索小练