汇编语言格式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
04:22
13
操作数为字符串
STRING1 DB ‘HELLO’
STRING2 DB ‘H’, ‘E’, ‘L’, ‘L’, ‘O’ 字符串用DB定义,被定义串以单引号括起来
串中可包含数字符、大小写英文字母、回车符、 换行符、 空格、?、$、下划线_ 等
字符串以ASCII码形式存储在存储单元中。
STRING1 ‘H’ +1 ‘E’ +2 ‘L’ +3 ‘L’ +4 ‘O’
04:22
5
3、目的操作数 1)参与指令操作 2)暂存操作结果
除立即寻址方式外,其他寻址方式均适用于目的操作数.
4、源操作数
提供原始数据或操作对象,面向所有寻址方式
5、注释
注释在系统汇编时并不产生机器码 注释可以放在指令语句尾,也可单独使用 注释前面的“;”不可缺少
04:22
6
常量
常量有两种:
1、数值常量 二进制数 以B结尾,如01011101B 八进制数 以Q结尾,如235Q 十进制数 以D结尾或没有结尾字母,如98D或98 十六进制数 以H结尾,如5BH
04:22
12
操作数是常数或表达式 X1 DB 40H ;为X1分配1个字节,初值40H
X2 DW 250*250 ;为X2分配2个字节,初值62500
X3 DD 10203040H ;为X3分配4个字节,初值为10203040H
X4 DQ (120+50)/10 ;为X4分配8个字节,初值17
X5 DB 10, 20, 30 ;多项定义,X5被分配3个字节,初值分别为10,20,30,地址 从低到高,各个值间用逗号分开
04:22
14
区分 S1 DB ‘AB’ 与 S2 DW ‘AB’
它们的存储情况为:
S1 ‘A’ ‘B’
S2 ‘B’ ‘A’
操作数项为?
?用于预留空间,不置初值
Y1 DB 20H, ? ;定义2个字节,其中预留1个字节
Y2 DW ?, ? ;预留2个字
Y3 DD ? ;预留4个字节
Y4 DQ ? ;预留8个字节
选择8086指令系统(一般不用写) 选择80286指令系统 选择保护方式下的80286指令系统 选择80386指令系统 选择保护方式下的80386指令系统 选择80486指令系统 选择保护方式下的80486指令系统 选择Pentium指令系统 选择保护方式下Pentium的指令系统
当源程序使用了286及以上的机型新增加的指令时,应该在程序开始使用相应的 处理器选择伪指令。
结果
执行
debug
DOS下执行
04:22
3
11.3.3 汇编语言语句格式
有三类语句: 指令语句——完成操作功能,能翻译成机器代码 伪指令语句——为汇编程序在翻译源程序时提供
有关信息 宏指令语句——由若干条指令语句组成的语句
通用语句格式: [名字] 操作项 [操作数] [;注释]
04:22
4
指令语句格式
[标号:]指令助记符[[目的操作数][,源操作数]][;注释] 其中,[ ]表示可选项;
1、标号
标号是后续指令的符号名称,可用符号是:
字母:A--Z, a--z
数字符: 0--9
专用字符:?, _, @, $
标号长度不超过31个字符
2、指令助记符 指令助记符是汇编指令的符号代码,不可缺省。
汇编源程序时,系统使用内部对照表将每条指令的 助记符译成相应的机器码。
11.3.1 源程序结构概览
数据段 说明:
堆栈段 1、各段顺序无关 2、除代码段外,可缺省 3、可有若干个数据段, 若干代码段
代码段 附加段
END [标号]
04:22
1
汇编语言程序例
04:22
DATA SEGMENT
BUF1 DB 34H
BUF2 DB 2AH
SUM DB ?
DATA ENDS
CODE SEGMENT
NEAR (近) 段内转移 FAR (远) 段间转移
04:22
9
11.3.4 伪指令
➢ 处理器选择伪指令 ➢ 数据定义和存储器分配伪指令 ➢ 段定义伪指令 ➢ 程序开始和结束伪指令 ➢ 表达式赋值伪指令 ➢ 地址计数器与对准伪指令 ➢ 基数控制伪指令
04:22
10
(一)处理器选择伪指令
.8086 .286 .286P .386 .386P .486 .486P .586 .586P
1、段属性——变量所在段的起始地址 2、偏移属性——从段起始地址到定义变量的位置之间的字节数 3、类型属性——该变量所保留的字节数
DB 1个字节 DW 2 个字节 DD 4个字节 DQ 8个字节 DT 10个字节
04:22
8
标号也有三种属性:
1、段属性——定义标号所在段的起始地址 2、偏移属性——从段起始地址到定义标号的位置之间的字节数 3、类型属性——表示它的转移特性
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV AL, BUF1
ADD AL, BUF2
MOV SUM, AL
MOV AH, 4CH
INT 21H
CODE ENDS
END START
2
11.3.2 汇编语言源程序上机过程
源程序 汇编 目标程序 连接 可执行程序 .asm masm .obj link .exe
04:22
11
(二)数据定义伪指令
格式:[变量名] 定义符 操作数项表 操作:为变量分配存储单元并将初值置入相应单元中
定义符可为:
DB—— 定义字节 DW ——定义字(2个字节) DD——定义双字(4个字节) DF——定义六字节 DQ——定义八字节 DT——定义十字节
操作数项表可为:
1、常数或表达式 2、字符串Baidu Nhomakorabea3、?表达式 4、带DUP 的表达式
Y5 DT ?
;预留10个字节
04:22
15
操作数项带重复定义符DUP
格式: N DUP(操作数项表) 操作:以N所示次数定义操作数项表内容 VAR1 DW 2 DUP(2, 4), 1476H
VAR2 DB 2 DUP(?, 2 DUP(‘A’, ‘B’) ) 存储情况为:
2、字符串常量 用单引号括起来的一个或多个字符,如‘A’、’AB’ 字符用ASCII码形式存储
常量的应用:
(1)在指令语句中作立即数 MOV CX, 100 (2)在指令语句中作位移量 MOV AX, 34[SI] (3)在数据定义语句中作初值 X DB 12H, 34H
04:22
7
变量和标号
变量有三种属性: