第四章汇编语言语法.

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

IFE
IFNDEF IFNB
操作数
标号或变量 <变量>
IF1
IF2
4.4
汇编语言中的表达式
表达式------运算对象和运算符组成。 汇编语言中有6类运算符,即: ① ② ③ ④ 算术运算符; 逻辑运算符; 关系运算符; 分析运算符;


修改属性运算符;
变量的3个属性: ① 段地址:变量所在段的段地址; ② 偏移地址:变量所在段内的偏移地址; ③ 类型:所定义的每个变量所占据的字节数。
4、标号 可执行指令语句地址的符号表示,即用标识符来表示地址。
标号的3个属性:
① 段地址:与标号对应的指令首字节所在的段地址。
② 偏移地址:与标号对应的指令首字节所在的偏移地址。 ③ 类型:标号的类型属性有两种:NEAR和FAR类型。
3、段定义伪指令语句
(1)段结构定义伪指令语句 SEGMENT…ENDS
指令格式: 段名 逻辑段内容 段名 ENDS SEGMENT 定位类型 组合类型
‘分类名’
功能:将一个逻辑段的内容定义成一个整体。
4种定位类型:PARA、BYTE、WORD和PAGE
6种组合类型:NONE、PUBLIC、COMMON、AT、STACK和MEMORY (2)段分配伪指令语句 指令格式:ASSUME CS:段名,DS:段名,SS:段名,ES:段名 功能:定义当前有效的4个逻辑段,指明段和段寄存器的关系。
结构使用伪指令。
(1)结构定义伪指令语句 格式:结构名 STRUC 数据变量序列 结构名 ENDS
例4-9
定义一个数据表格TAB的结构
TSTRU
STRUC DA1 DB ‘SXYZ’ DA2 DW ? DA3 DW SEG LP1 DA4 DW 2 DUP(3) DA5 DW 5678H,1234H TSTRU ENDS
(3) 结构使用伪指令语句 格式:结构变量名· 字段变量 设当前数据段基址为 1000H ,结构变量 DATA1 的偏移地址为 100H,则例4.10中的 4个结构变量在存储器中的地址分配如图
4-3所示。
10100H
‘S’ ‘F’ 10110H ‘X’ ‘R’ ‘Y’ ‘O’ ‘Z’ ‘M’ ? ? ? ? SEG LP1低 SEG LP1低 SEG LP1高 SEG LP1高 03H 03H 00H 00H 03H 03H 00H 00H 78H 78H 56H 56H 34H 34H 12H 12H
第4章 汇编语言语法和DOS功能调用
4.1 汇编语言程序的格式
例4-1 试求小于100的所有非零偶数,并把结果存入以BUFF开始 的内存区。 1 2 3 4 5 MY_DATA SEGMENT BUFF DB 50 DUP(?) MY_DATA ENDS MY_CODE SEGMENT ASSUME CS:MY_CODE, DS: MY_DATA 6 START: MOV AX, MY_DATA 7 MOV DS, AX ; 定义数据段 ; 设置缓冲区 ; 定义数据段结束 ; 定义代码段 ; 规定CS和DS的内容 ; DS初始化为MY_DATA
DATA4 DB ‘HELLO’
例4-3
果。
操作数用“?”定义不确定值的变量,用DUP来定义重复
变量,不确定值的变量一般用作保留存储空间,以便存放运算结 DATA1 DATA2 DB ? DW 0D55H, ?
DATA3
DATA4 DATA5
DB 5 DUP(0)
DW 10 DUP(?) DB 4 DUP(1,2DUP(20)
( d)
重 复 5 次
图4-3
例4.10中的4个结构变量的存储分配和预置
(c)DATA3 TSTRU <,7FH,SEG LLL> (d)DATA4 TSTRU 5 DUP(<‘7890’,11H>)
(a)DATA1 TSTRU < > (b) DATA2 TSTRU <’FROM’>
8、 分组伪指令语句
③ 不能使用属于系统专用保留字(保留的字)。 2、常数 语句中出现的那些固定值,除了自身的值以外,没有其它任 何属性。
常数分为两类
(1)数值常数
(2)字符串常数 3、变量 存放在存储器单元中的操作数,它的值是可以改变 的,在程序中出现的是存储器单元地址的符号,即与某一数据项
第一字节相对应的标识符。
汇编语言程序的格式可以归结为以下几点:
(1) 段的结构
段名1 SEGMENT 语句1 …… 语句i
段名1
段名2
ENDS
SEGMENT 语句1 …… 语句j
段名2
ENDS

段名n SEGMENT 语句1 …… 语句k
段名n百度文库
ENDS
END 标号
(2)语句的结构
3种基本语句类型:
指令语句 伪指令语句 宏指令语句 语句一般有4个部分组成,即:
标号或名字
操作码
操作数
;注释
标号或名字:这是一个任选部分,在语句之首
4. 2
汇编语言中的基本数据
1、标识符
标识符--由程序员自由建立起来的,有特定意义的字符序列。 标识符的组成规则如下: ① 必须由字母、数字( 0 , … , 9 )及特殊符号(?, · ,@, -,$)组成,且必须以字母打头。
② 字符总数限制在31个以内。
格式:组名 GROUP 段1,段2,……
例4-11 ┋
GROUP1 GROUP SEG1,SEG2,SEG3
ASSUME DS:GROUP1 MOV MOV MOV AX,GROUP1 DS,AX BX,GRPUP1:VAR1

9、 其它伪指令语句
(l)外部伪指令语句
格式:PUBLIC EXTRN 例4-12 模块1 名称1,名称2,… 名称1:类型,名称2:类型,…
ORG 100H
A1
DB
0DH
EVEN A2 DATA DW 100 DUP(?) ENDS
(3)条件汇编伪指令语句
一般格式是:
IF [ELSE] END IF ;如果条件成立 ;[否则] ;结束条件汇编语句
IF有多种形式,它们是:
IF
IFDEF IFB IFIDN IFDIF
操作数
标号或变量 <变量> <操作数l>,<操作数2> <操作数1>,<操作数2>
(2)定位伪指令语句
格式:ORG
表达式
例4-7 用ORG指定数据段和代码段地址。 DATA SEGMENT X1 DW 20H,60H, ORG 100H X2 DB 10H,20H,30H ORG 200H X3 DW 1234H, 4321H DATA ENDS CODE SEGMENT ORG 100H ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ┋ CODE ENDS
DATA1 DATA2
DATA3
DATA4
15H 25H 88H 99H 56H 00H 80H 00H 00H 00H BBH AAH 00H 00H 48H 45H 4CH 4CH 4FH
DATA1 DATA2
DATA3
DATA4
DATA5
? 55H 0DH ? ? 00H 00H 00H 00H 00H ? ? ┇ ┇ ? ? 01H 14H 14H
指令格式:
PURGE
标识符1,标识符2,…标识符n
(4)别名定义伪指令语句 格式:别名 LABEL 类型属性
LABEL:伪指令助记符,不可缺省。
例4-6
定义变量的别名
DATAB LABEL BYTE DATAW DW DISF DISN 1234H,5678H
LABEL FAR MOV AX,[SI]
字、8字节和10字节。 指令格式:
变量名 变量名 助记符 助记符 操作数1,操作数2,……操作数n n DUP(操作数1,操作数2,……操作数n) ;注释 ;注释
例4-2
操作数是常数、表达式、字符串数据的定义
DATA1 DB 15H,25H DATA2 DW 9988H,56H
DATA3 DD 2*40H,0AABBH
(3)程序结束伪指令语句
格式: END 标号名
例4-8
程序结束伪指令语句的应用 CODE SEGMENT
START:MOV
MOV ┋ CODE ENDS
AX,BX
CX,12H
END START
6、 方式定义伪指令语句
格式: .8086
.386
7、 结构定义伪指令语句 有三条语句:结构定义伪指令,结构存储分配和预置伪指令及
DATA1 EQU DATA+2
CI
EQU ADD
(2)等号伪指令语句“=”
指令格式: 标识符=操作数
例4-5 DATA =100
DATA1 = DATA +10
SOURCE=BX+SI MOV AX,[SOURCE]
SOURCE=BX MOV CX,[SOURCE]
(3)解除伪指令语句PURGE
(2) 结构存储分配和预置伪指令语句
格式:结构变量名 结构名 <元素值,元素值…> N DUP(<元素值,元素值…>)
结构变量名 结构名
例 4-10 对 例 4-9 中 的 TAB 结 构 进 行 存 储 空 间 分 配 和 预 置 , 形
成4个结构变量。 DATA1 DATA2 DATA3 DATA4 TSTRU <> TSTRU <’FROM’> TSTRU <,7FH,SEG LLL> TSTRU 5 DUP(<‘7890’,11H>)
( a) ( b)
10120H
‘S’ ‘X’ ‘Y’ ‘Z’ 7FH 00H SEG LLL低 SEG LLL高 03H 00H 03H 00H 78H 56H 34H 12H
( c)
10130H
‘7’ ‘8’ ‘9’ ‘0’ 11H 00H SEG LP1低 SEG LP1高 03H 00H 03H 00H 78H 56H 34H 12H
共20个字节
重复4次, 共12个字节
图4-1
例4-2的汇编结果
图4-2
例4-3的汇编结果
2、标识符赋值与解除伪指令语句
共有4条:等值伪指令语句EQU
等号伪指令语句“=” 解除伪指令语句PURGE 别名定义伪指令语句LABEL (1)等值伪指令EQU语句
指令格式:
标识符 例4-4 DATA EQU 100 EQU 操作数
用EXTRN和PUBLIC语句实现模块间标识符的交叉访问
EXTRN DATA2:BYTE, SUBTR1:NEAR
PUBLIC TABLE, DATA1 DSEG SEGMENT
TABLE DB 100 DUP(?) DATA1 DW ?
CODE
SEGMENT
DSEG ENDS CODE SEGMENT ASSUME CS:CODE, DS:DSEG ┇ MOV AX, DSEG MOV DS, AX ┇ MOV AL, DATA1 CALL SUBTR1 ┇ MOV AX, SEG DATA2 MOV ES, AX MOV BX, ES:DATA2 ┇ CODE ENDS END
4、过程定义伪指令语句
指令格式:过程名
PROC
过程内容 RET
属性
过程名
ENDP
功能:定义一个由主程序可以用CALL指令调用的过程。
5、 程序开始与结束伪指令语句
共有4条伪指令语句:NAME、TITLE、ORG和END。 (1)目标模块命名伪指令语句 格式:NAME TITLE 程序名 文本名
功能:为源程序目标模块赋一个程序名。
模块2
EXTRN TABLE:BYTE
PUBLIC SUBTR1, DATA2 DSEG DATA2 ┇ DSEG CODE ┇ ENDS SEGMENT SEGMENT DB ?
SUBTR1: ┇
┇ CODE ENDS END
(2)对准伪指令语句
格式:EVEN
例4-13 EVEN直接放在某一语句前,汇编程序汇编时就会完成 将地址调整在偶地址上。 DATA SEGMENT
4. 3
伪指令语句
伪指令语句可分为以下几种类型:
① 数据定义伪指令语句 ② 标识符赋值与解除伪指令语句 ③ 段定义伪指令语句 ④ 过程定义伪指令语句
⑤ 程序开始与结束伪指令语句
⑥ 方式定义伪指令语句 ⑦ 结构定义伪指令语句 ⑧ 分组伪指令语句 ⑨ 其它伪指令语句
1、数据定义伪指令语句
共有五条: DB 、 DW 、 DD 、 DQ 和 DT ,分别用来定义字节、字、双
8 MOV AL, 2 9 LEA BX, BUFF 10 LLP: MOV [BX], AL 11 INC AL 12 INC AL 13 CMP AL, 100 14 JNZ LLP 15 INT 20H 16 MY_CODE ENDS 17 END START
; 置循环初始值 ;循环体
;循环控制 ;返回DOS ; 代码段结束 ; 整个程序结束
相关文档
最新文档