版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1第二章汇编语言与汇编程序22.1符号指令中的表达式;2.2符号指令的寻址方式;2.3常用指令;2.4伪指令;2.5常用系统功能调用与BIOS。32.1符号指令中的表达式1.常量和数值表达式;2.变量和地址表达式;3.标号;4.标量和标号类型的变更。41.常量和数值表达式常量是指在汇编时已经有确定数值的量:数值常量、符号常量
数值表达式是由常量和算术、逻辑、关系等运算符组成的有意义的式子。52.变量和地址表达式变量是存储器中的数据或数据区的符号表示。变量名即是数据的地址或数据区的首地址。地址表达式是由变量、常量、寄存器(SI、DI、BX、BP)的内容和运算符组成的有意义的式子。变量或地址表达式可给出指令中的存储器的地址。由于存储器是分段使用的,因此变量或地址表达式都具有3重属性:段地址、偏移地址和类型。6变量的段地址是指变量所在段的段首地址除以10H之商;变量的偏移地址是指变量所在段的段首址到该变量的字节距离;变量的段地址和偏移地址分别用SEG或OFFSET两个算符来指定。例如:变量W的段地址和偏移地址分别表示为SEGW和OFFSETW。
7变量的定义[变量名]
数据定义伪指令表达式[,……]
变量名:数据的地址或数据区的首地址数据定义伪指令:DB(定义字节)、DW(定义字)、DD(定义双字)、DQ(定义4字)、DT(定义10字节)表达式:数值表达式、ASCII码字符串、地址表达式、?及nDUP(表达式)8
例如,在数据段DATAl中定义的变量如下:
WlDWB3;
B1DB'AB$’;
W2DW-5,1994H;
B2DB4DUP(?);
DDDEB;
B3DB2DUP(-1)DB1DUP(10,’E’);
DB’13’,1,3在附加数据段DATA2中定义的变量如下:
EBDB8DUP(?)EWDW’AB’,’CD’
93.标号标号是指令地址的符号表示,也可以是过程名。标号的定义方式有两种:
(1)用“:”定义,直接写在指令助记符前。如CYCLE:MOVAL,[S1](2)用PROC和ENDP伪指令定义过程。标号代表指令的地址,因而它也有3个属性:段地址、偏移地址和类型。
标号的段地址:定义该标号所在段的段地址。标号的偏移地址:标号所在段的段首址到该标号定义指令的字节距离。
标号的类型有NEAR和FAR两种。104.标量和标号类型的变更格式:类型PTR地址表达式PTR算符用来明确指出某个变量、标号或地址表达式的类型属性,或者使它们临时兼有与原定义所不同的类型属性,但仍保持它们原来的段地址和偏移地址属性不变。如:BYTEPTRW1
11指令(Instruction):
让计算机完成某种操作的命令。指令系统(InstructionSystem):
指令的集合。2.2符号指令的寻址方式
一、概述指令——控制计算机完成指定操作的命令机器指令——指令的二进制代码形式。例如:CD21H汇编指令——助记符形式的指令。例如:INT21H指令系统——CPU所有指令及其使用规则的集合128086汇编语言指令的语句格式[标号:]指令助记符[操作数][;注释](1)标号:指令所在地址的符号,符合以下规则:
由字母(a-z,A-Z)、数字(0-9)或某些特殊字符(@,_,?)等组成;
首字符是字母或某些特殊字符,但“?”不能单独作标识符;
有效长度为1-31个字符。13(2)指令助记符:指出指令的操作类型。(3)操作数:参加本指令运算的数据。(4)注释:指令功能的说明。14有效地址EA(EffectiveAddress)内存单元的地址:段基址
16+段内偏移量EA15指令包含的信息(1)做什么操作(2)操作数的来源(3)操作结果的存数(4)下一条指令的位置16指令的基本构成操作码[操作数],[操作数]说明要执行的是什么操作操作对象,可以有0个、1个或2个目的源17指令举例:ADDAX,[SI+6]MOVAX,BX操作码操作数INC[BX]HLT18双操作数指令ADDAX,BX
大多数运算型指令都是双操作数指令,对这种指令,有的机器(大中型)使用“三地址”指令:除给出参加运算的两个操作数外,还要指出运算结果的存放地址。
现代微型计算机中多采用二地址指令,两个操作数分别称为“源操作数”和“目的操作数”,指令执行后,把运算结果放到目的操作数的地址之中。19指令系统设计一个指令系统能够提供哪些寻址方式,能否为编制程序提供方便,这是指令系统设计的关键。需要说明的是,在不同的计算机系统中,寻址方式的名称和分类并不统一,但基本可以归结为以下几种方式或它们的变型或组合:20二、8088/8086的操作数分为3类1、立即数(常数)取值范围如下表:立即数只能用作源操作数,如8位16位无符号数00H-FFH(0-255)0000H-FFFFH(0-65535)带符号数80H-7FH(-128~127)8000H-7FFFH(-32768~32767)MOV AX,0FA00H ;正确MOV 8000H,DX ;错误212、寄存器操作数放在8个通用寄存器或4个段寄存器中的操作数22只能存放字操作数段寄存器存放当前操作数的段基地址不允许将立即数传送到段寄存器SIDIBPSPCSDSESSS233、存储器操作数存储器操作数字节字双字124类型存储单元个数一般不允许两个操作数同时为存储器操作数24存储单元的物理地址=段基地址+偏移地址若指令中没有指明所涉及的段寄存器,CPU就采用默认的段寄存器来确定操作数所在的段。存储器操作数的偏移地址(也称有效地址)可以通过不同的寻址方式由指令给出。例如,若(BX)=2000H,(SI)=0A00H,(DI)=2A00H,则以下指令的结果是一样的:
MOVAL,[2A00H] MOVAL,[BX+0A00H] MOVAL,[BX][SI] MOVAL,[DI]25一条指令的执行时间=∑指令的执行时间取指令取操作数执行指令传送结果单位用时钟周期数表示结论:
1)尽量使用寄存器作为操作数
2)若有可能,用移位代替乘除法
3)尽量使用简单的寻址方式26寻址方式——寻找操作数的方法
寻找操作数的地址在8086指令系统中,说明操作数所在地址的寻址方式可分为8种:
①立即寻址⑤寄存器相对寻址
②直接寻址⑥基址-变址寻址
③寄存器寻址⑦相对的基址-变址寻址
④间接寻址⑧隐含寻址三、8086的寻址方式27
操作数(为一常数)直接由指令给出
(此操作数称为立即数)
立即寻址只能用于源操作数例:
MOVAX,1C8FHMOVBYTEPTR[2A00H],8FH
错误例:
×
MOV2A00H,AX;错误!
1.立即寻址28立即数操作码低8位高8位存储器MOV操作码02H31HAHAL代码段代码段立即寻址指令在存储器中的存放形式AX指令操作例:MOVAX,3102H;AX3102H
执行后,(AH)=31H,(AL)=02H292.直接寻址
指令中直接给出操作数的16位偏移地址
偏移地址也称为有效地址(EA,EffectiveAddress)
默认的段寄存器为DS,但也可以显式地指定其他段寄存器——称为段超越前缀偏移地址也可用符号地址来表示,如ADDR、VAR
例:
MOVAX,[2A00H]MOVDX,ES:[2A00H]MOVES:[2A00H],DXMOVSI,TABLE_PTR30指令操作例:MOVAX,[3102H]AL(3102H),AH(3103H)如果(DS)=2000H,(23102H)=CDH,(23103H)=ABH则操作数的物理地址为:
20000HH=23102H指令执行后:(AX)=ABCDHMOV操作码02H31HAHAL23102HCDHABH存储器代码段数据段..313.寄存器寻址
操作数放在某个寄存器中源操作数与目的操作数字长要相同寄存器寻址与段地址无关例:
MOVAX,BXMOV[3F00H],AXMOVCL,AL
错误例:
×
MOVAX,BL;字长不同
×MOVES:AX,DX;寄存器与段无关32AXSI2233H2233H指令操作例:MOVSI,AX;SI(AX)
指令执行前:(AX)=2233H
指令执行后:(AX)=2233H,(SI)=2233HAX是累加器,结果存放在AX的话,执行时间要短些。通用寄存器是处理器的一部分,采用寄存器寻址方式可以提高效率。334.寄存器间接寻址
操作数的偏移地址(有效地址EA)放在寄存器中
只有SI、DI、BX和BP可作间址寄存器
例:MOVAX,[BX]MOVCL,CS:[DI]
错误例:
×MOVAX,[DX]×
MOVCL,[AX]EA=(BX)(BP)(SI)(DI)34(1)EA=[BX][SI][DI]若没有前缀指明具体的段寄存器,则操作数在数据段中(2)EA=[BP]若没有前缀指明具体的段寄存器,则操作数在堆栈段。35指令操作例:MOVAX,[SI]若(DS)=6000H,
(SI)=1200H,(61200H)=44H,(61201H)=33H则指令执行后,(AX)=3344H。44H33H60001200DSSI6000061200
61200HAX存储器数据段
+)120044H33H365.寄存器相对寻址(包括基址寻址和变址寻址)EA=间址寄存器的内容加上一个8/16位的位移量寄存器相对寻址常用于存取表格或一维数组中的元素——把表格的起始地址作为位移量,元素的下标值放在间址寄存器中(或反之)EA=(BX)(BP)(SI)(DI)+8位16位位移量
37(1)若EA=[BX][SI][DI]+8位或16位偏移量则操作数地址DS:EA(2)若EA=[BP]+8位或16位偏移量则操作数地址:SS:EA38
例:MOVAX,[BX+8]MOVCX,TABLE[SI]MOVAX,[BP];默认段寄存器为SS
指令操作例:MOVAX,DATA[BX]
若(DS)=6000H,(BX)=1000H,DATA=2A00H,(63A00H)=66H,(63A01H)=55H
则物理地址=60000H+1000H+2A00H=63A00H
指令执行后:(AX)=5566H(见下页图示)39操作码00偏移量低2A偏移量高DS6000BX1000+DATA2A0063A0063A00HAHALAX代码段数据段.........66H55HMOVAX,DATA[BX]406.基址-变址寻址
若操作数的偏移地址:由基址寄存器(BX或BP)给出——
基址寻址方式由变址寄存器(SI或DI)给出——
变址寻址方式
由一个基址寄存器的内容和一个变址寄存器的内容相加而形成操作数的偏移地址,称为基址-变址寻址。EA=(BX)(BP)+(SI)(DI)
同一组内的寄存器不能同时出现。41例:
MOVAX,[BX][SI]MOVAX,[BX+SI]MOVAX,DS:[BP][DI]错误例:
×
MOVAX,[BX][BP]
×
MOVAX,[DI][SI]4283000操作码DS
8000BX
2000+SI
100083000HAHALAX代码段数据段.........YYXX指令操作例:MOVAX,[BX][SI]假定:(DS)=8000H,(BX)=2000H,SI=1000H则物理地址=80000H+2000H+1000H=83000H指令执行后:(AL)=[83000H](AH)=[83001H]437.相对的基址-变址寻址
在基址-变址寻址的基础上再加上一个相对位移量
注意事项同基址-变址寻址EA=(BX)(BP)+(SI)(DI)+8位16位位移量
例:MOVAX,BASE[SI][BX]MOVAX,[BX+BASE][SI]MOVAX,[BX+SI+BASE]MOVA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 班级评价体系的探索与实践计划
- 天津市高考语文模拟试卷分类汇编诗歌鉴赏专题
- 电网企业合作协议书
- 2024年度定制化展示柜安装与品牌形象塑造合同3篇
- 栀子花种植课程设计
- 高考作文备考名家美文赏读专题1我喜欢出发
- 护士中级职称述职个人报告范文(5篇)
- 微机原理课程设计lcd显示牌
- 物流次品检测plc课程设计
- 我读书我快乐广播稿
- 第三方代付工程款协议书范本
- 外研版英语九年级上册 Module1-12作文范文
- 公路工程勘察设计投标方案(技术方案)
- 小米科技公司的供应链管理策略分析(全面完整版)
- 南京市七年级上册地理期末试卷(含答案)
- 全国高中青年数学教师优质课大赛一等奖《排列与排列数公式》课件
- 足球课程教学计划工作总结
- 粉末涂料有限公司成品装车作业安全风险分级管控清单
- GB/T 17799.2-2023电磁兼容通用标准第2部分:工业环境中的抗扰度标准
- 管理文秘与公文写作知到章节答案智慧树2023年山东师范大学
- 教学设计《营养健康我守护-数据的价值》
评论
0/150
提交评论