80X86学习笔记--常用伪指令语句
2012-04-08 11:48
417 查看
(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.BUFF_LEN EQU 4*COUNT ; COUNT是已定义的符号常数
HELLO EQU “HELLO WORLD!”
MOVE EQU MOV
COUNT EQU CX
注意:第一,等价语句不另外给符号分配存储单元;第二,等价语句定义的符号不能与其他符号相同,也不能被重新定义,否则汇编程序会认为出现符号重复定义错误。
2.等号语句(=)
等号语句用来定义符号常数、格式:
符号名= 数值表达式
用符号语句定义的符号可被重新定义。3.定义符号名语句
格式: 符号名 LABEL 类型
类型可以是BYTE WORD DWORD NEAR FAR等该语句的功能是定义有符号名指定的符号,使该符号的段属性和偏移属性与下一个紧接着的存储单元的段属性和偏移属性相同,使该符号的类型为参数所规定的类型。
例:
BUFFER LABEL WORD
BUFF DB 100 DUP (0)
BUFFER的类型是WORD,段属性和偏移属性与BUFF相同。
例:BUFF DB 100 DUP (0)
BUFFER的类型是WORD,段属性和偏移属性与BUFF相同。
QUIT LABEL FAR
EXIT: MOV AH, 4CH
MOV AH, 4CH有两个标号QUIT和EXIT,但它们类型不同。
EXIT: MOV AH, 4CH
MOV AH, 4CH有两个标号QUIT和EXIT,但它们类型不同。
(2)段定义语句
为了与存储器的分段结构相对应,汇编语言的源程序也是由若干个段组成。1.段开始和结束语句
格式: 段名 SEGMENT [定位类型][组合类型][‘类型’]
………
段名 ENDS
段名的命名方法与一般符号命名方法相同。………
段名 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:NOTHINGMOV DS, AX
MOV AX, DSEG2
MOV ES, AX
MOV AX, VARW
MOV XXX, AX
MOV AX, DSEG2
MOV DS, AX
MOV AX, XXX
MOV YYY, AX
CSEG ENDSMOV DS, AX
MOV AX, XXX
MOV YYY, AX
3.ORG语句
汇编程序在对源程序汇编的过程中,使用地址计数器来保存当前正在汇编指令或变量的地址偏移。格式:
ORG 数值表达式
例: TESTSEG SEGMENT
ORG 100H
BEGIN: MOV AX, 1234H
ORG 500H
VAR DW 1234H
…….
TESTSEG ENDS
汇编语言中用“$”表示地址计数器的值。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学习笔记--常用伪指令语句
- java web jsp学习笔记--概述-常用语法,指令,动作元素,隐式对象,域对象
- swift学习笔记之运算符及常用语句
- Vue.js第一天学习笔记(数据的双向绑定、常用指令)
- Docker学习笔记(二)--docker部署配置及常用指令介绍
- 80X86学习笔记--数据传送指令
- php学习笔记(10):MYSQL数据库中的常用SQL语句
- 80X86学习笔记--算术运算指令
- 80X86学习笔记--转移指令
- 80X86学习笔记--循环指令
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制
- 80X86学习笔记--汇编语言的语句
- Sql语句学习笔记(7)-常用日期函数
- 80X86学习笔记--逻辑运算与移位指令
- SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制
- sql语句学习笔记(6)-常用字符串操作函数
- Terminal(终端) 学习笔记(1)—开发常用指令
- Linux最常用指令及快捷键 Linux学习笔记
- SQL学习笔记:常用SQL语句操作
- MYSQL学习笔记------MYSQL的常用语句