第3章8086指令系统_第1页
第3章8086指令系统_第2页
第3章8086指令系统_第3页
第3章8086指令系统_第4页
第3章8086指令系统_第5页
已阅读5页,还剩160页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第3章章 8086指令系统指令系统4.1 MASM汇编语言格式汇编语言格式3.1 8086的寻址方式的寻址方式3.2 8086 的指令系统的指令系统3.2.1 数据传送类指令数据传送类指令3.2.2 算术运算指令算术运算指令3.2.3 位操作类指令位操作类指令3.2.6 处理机控制类指令处理机控制类指令课本上本章内容中有课本上本章内容中有较多的简单例子,在较多的简单例子,在课后复习时,请对照课后复习时,请对照着这些例子和课件一着这些例子和课件一起学习!起学习!2022年3月1日星期二24.1 MASM汇编语言格式汇编语言格式1、标识符、标识符2、指令的书写格式、指令的书写格式3、示例指令、示

2、例指令2022年3月1日星期二32022年3月1日星期二31、标识符、标识符 标识符标识符程序中定义的符号程序中定义的符号,可作为地址或数值使用;,可作为地址或数值使用; 标识符的类型标识符的类型常量常量:表示某个常数值;:表示某个常数值;变量变量:表示某个存储单元的地址,其中存放所需的操作数;:表示某个存储单元的地址,其中存放所需的操作数;标号标号:表示某个存储单元的地址,其中存放所需的指令;:表示某个存储单元的地址,其中存放所需的指令;子程序名子程序名:表示某个存储单元的地址,对应存储单元为子:表示某个存储单元的地址,对应存储单元为子程序的起始位置;程序的起始位置;2022年3月1日星期二

3、42022年3月1日星期二4标识符的构成标识符的构成 符号集合符号集合英文字母英文字母(az)、数字、数字(09)、特殊符号、特殊符号(?、?、_、$) 构成规则构成规则不可以以数字开头;不可以以数字开头;不能使用单独的不能使用单独的“?”作为标识符;作为标识符;取名尽量有含义,但不能采用汇编语言的取名尽量有含义,但不能采用汇编语言的保留字保留字;n助记符、定义符、寄存器名称等助记符、定义符、寄存器名称等最大长度为最大长度为31个字符。个字符。 例如:例如:ABCDH标识符标识符0ABCDH立即数立即数2022年3月1日星期二52、指令的书写格式、指令的书写格式指令格式指令格式标号标号: 指令

4、助记符指令助记符 操作数操作数1 ,操作数操作数2 ,操作数操作数3 ;注释注释 标号与指令用冒号分隔,表示指令的存放位置;标号与指令用冒号分隔,表示指令的存放位置; 标号不是每条指令中都需要的,必要时定义;标号不是每条指令中都需要的,必要时定义; 16位系统中,汇编指令的操作数一般为位系统中,汇编指令的操作数一般为02个;个;伪指令格式伪指令格式符号名符号名 伪指令助记符伪指令助记符 操作数操作数1 ,操作数操作数2 ,操作数操作数3 ;注释注释 符号名与伪指令之间不需要冒号分隔;符号名与伪指令之间不需要冒号分隔; 伪指令的操作数至少伪指令的操作数至少1个,多个时用逗号分隔;个,多个时用逗号

5、分隔;2022年3月1日星期二63、示例指令、示例指令 数据传送指令数据传送指令MOV , 指令功能指令功能使用源操作数的值为目的操作数赋值;使用源操作数的值为目的操作数赋值;指令执行完,目的操作数的值与源操作数一样;指令执行完,目的操作数的值与源操作数一样;n源操作数不变,目的操作数改变;源操作数不变,目的操作数改变; 单独写的指令一般都不包括标号部分;单独写的指令一般都不包括标号部分;标号在写指令序列时才会使用到;标号在写指令序列时才会使用到;例如:例如:MOV AX , 2 MOV AX , BXMOV AX , BX2022年3月1日星期二7符号约定说明符号约定说明符号符号含义含义符号

6、符号含义含义DST目的操作数目的操作数MEM8/168/16位存储单元位存储单元SRC源操作数源操作数IMM8/168/16位立即数位立即数REG通用寄存器通用寄存器REG8/168/16位通用寄存位通用寄存器器SEG段寄存器段寄存器/或者或者MEM存储单元存储单元=赋值赋值IMM立即数立即数2022年3月1日星期二83.2.1 数据传送类指令数据传送类指令1、 传送指令传送指令MOV 格式:格式: MOV DST , SRCDST:8位位/16位,位,REG / MEM / SEGSRC:8位位/16位,位,REG / MEM / SEG / Imm 功能功能使用源操作数的值为目的操作数指定

7、的内容赋值;使用源操作数的值为目的操作数指定的内容赋值; 两个操作数可以使用任何一种寻址方式;两个操作数可以使用任何一种寻址方式;DST的寻址方式不包含立即数寻址;的寻址方式不包含立即数寻址;这类指令不影响这类指令不影响标志位的状态。标志位的状态。2022年3月1日星期二9段寄存器段寄存器通用寄存器通用寄存器存储器存储器立即数立即数除除CS不能作目的操作数不能作目的操作数MOV指令数据传送示意图指令数据传送示意图2022年3月1日星期二10MOV指令举例指令举例 MOV BL , 44 ; 44BL MOV BYTE PTR DI , 78H ; 78H(DI) MOV AX , BX ; (

8、BX)AX MOV SI , DI ; DISI MOV 2000H , CX ; CX(2000H) MOV DS , BX ; BXDS MOV DS , 2000H ; (2000H)DS MOV BX , ES ; ESBX2022年3月1日星期二11指令中有关操作数的规定指令中有关操作数的规定 两个操作数不能同时为两个操作数不能同时为段寄存器段寄存器; 两个操作数不能同时为两个操作数不能同时为存储器寻址方式存储器寻址方式; 两个操作数必须两个操作数必须类型匹配类型匹配; 立即数不能作为目的操作数;立即数不能作为目的操作数; 立即数不能立即数不能直接为段寄存器赋值直接为段寄存器赋值;

9、CS 不能作为目的操作数,不能作为目的操作数,IP不能作为操作数;不能作为操作数;此规定对所有此规定对所有指令都有效!指令都有效!例外的指令特殊说明。例外的指令特殊说明。2022年3月1日星期二12操作数匹配问题操作数匹配问题当两个操作数当两个操作数类型均确定类型均确定时,二者类型必须相同;时,二者类型必须相同;同为字节型、字型、双字型同为字节型、字型、双字型当两个操作数中当两个操作数中一个类型确定,另一个不确定一个类型确定,另一个不确定时,由确定类型的操时,由确定类型的操作数决定指令的操作类型;作数决定指令的操作类型;确定的类型:寄存器、变量;确定的类型:寄存器、变量;不确定的类型:立即数、

10、非符号地址都成的存储器寻址方式;不确定的类型:立即数、非符号地址都成的存储器寻址方式;当两个操作数当两个操作数类型均不确定类型均不确定时,必须进行时,必须进行强制类型强制类型,以指明指令的,以指明指令的操作类型;操作类型;两操作数状态:两操作数状态:n目的目的非符号地址构成的存储单元,源非符号地址构成的存储单元,源立即数;立即数;对存储单元进行对存储单元进行PTR的类型强制(第的类型强制(第4章中介绍)章中介绍)MOV word ptr 2000H , 1MOV BX , AXMOV BX , 12022年3月1日星期二13MOV指令的变通方法指令的变通方法 错误的指令错误的指令可选的解决方法

11、可选的解决方法MOV ES , DSMOV DS , 100H MOV VARA , VARB MOV AX , DSMOV ES , AXMOV AX , 100HMOV DS , AXMOV AX , VARBMOV VARA , AX2022年3月1日星期二14指出下列指令的错误指出下列指令的错误 MOV AX , BL MOV AL , 3824H MOV X , Y MOV DS , 5000H MOV AX , BX MOV AX , SIDI MOV 35H , AL MOV CS , AX MOV SI , DI MOV BX , 1两个操作数类型不匹配两个操作数类型不匹配不能

12、用不能用16位数据对位数据对8位寄存器赋值位寄存器赋值两个操作数不能同时为存储器单元两个操作数不能同时为存储器单元立即数不能直接为段寄存器赋值立即数不能直接为段寄存器赋值AX不能作为间址寄存器不能作为间址寄存器源操作数寻址方式不正确源操作数寻址方式不正确立即数立即数不能作为不能作为目的操作数目的操作数CS不能作为目的操作数不能作为目的操作数两个操作数不能同时为存储器单元两个操作数不能同时为存储器单元两操作数类型不确定,需要强制类型两操作数类型不确定,需要强制类型2022年3月1日星期二15例例 设设b是已定义的字节变量,判断以下指令的正误。是已定义的字节变量,判断以下指令的正误。MOV AX

13、, bMOV b , 0MOV BX , 0MOV word ptr BX , 0错误,两个操作数类型不匹配错误,两个操作数类型不匹配正确,正确,b确定为字节类型确定为字节类型错误,错误,BX类型不确定类型不确定正确,指令为字操作正确,指令为字操作2022年3月1日星期二163.1 8086的寻址方式的寻址方式 3.1.1 数据的寻址方式数据的寻址方式 3.1.2 指令的寻址方式指令的寻址方式讲讲3.2.5转移指令时介绍转移指令时介绍 3.1.3 端口的寻址方式端口的寻址方式讲讲7.2.1端口寻址方式时介绍端口寻址方式时介绍2022年3月1日星期二172022年3月1日星期二183.1.1 数

14、据的寻址方式数据的寻址方式 数据寻址方式数据寻址方式指令中,指定指令中,指定操作数操作数或或操作数存放位置操作数存放位置的方法。的方法。数据寻址方式是针对操作数的数据寻址方式是针对操作数的,确定寻址方式时,一定,确定寻址方式时,一定要指明是对源操作数、还是对目的操作数而言的。要指明是对源操作数、还是对目的操作数而言的。 16位系统下,操作数的寻址方式可分为以下位系统下,操作数的寻址方式可分为以下3类:类:操作数在指令中;操作数在指令中;操作数在寄存器中;操作数在寄存器中;操作数在存储单元中;操作数在存储单元中;立即数寻址方式立即数寻址方式寄存器寻址方式寄存器寻址方式存储器寻址方式存储器寻址方式

15、指令执行时,指令执行时,操作数都在操作数都在CPU内部!内部!2022年3月1日星期二19存储器寻址方式存储器寻址方式 直接寻址方式直接寻址方式 寄存器间接寻址方式寄存器间接寻址方式 寄存器相对寻址方式寄存器相对寻址方式 基址变址寻址方式基址变址寻址方式 相对基址变址寻址方式相对基址变址寻址方式2022年3月1日星期二201.立即数寻址方式立即数寻址方式立即数立即数寻址方式寻址方式操作数的数值紧跟在操作码之后,直接操作数的数值紧跟在操作码之后,直接在指令中在指令中出现。出现。特点特点优点:不需访存,执行速度快;优点:不需访存,执行速度快;缺点:立即数不能修改,通用性差(适用于常数)。缺点:立即

16、数不能修改,通用性差(适用于常数)。注意:注意:立即数不能作为立即数不能作为目的操作数目的操作数;立即数可以为立即数可以为8位或位或16位,常用于给寄存器赋值。位,常用于给寄存器赋值。MOV AL , 300 正确吗?正确吗?位数不匹配,不正确!位数不匹配,不正确!2022年3月1日星期二212.寄存器寻址方式寄存器寻址方式 寄存器寻址方式寄存器寻址方式操作数在操作数在寄存器寄存器中,指令的操作码之后给出该寄存器的中,指令的操作码之后给出该寄存器的编号或名称。编号或名称。 通用寄存器通用寄存器和和段寄存器段寄存器都可以用作寄存器寻址方式。都可以用作寄存器寻址方式。专用寄存器专用寄存器IP、FL

17、AG不可用;不可用; 由于操作数存在于由于操作数存在于CPU中,指令执行时不需访存,因此具中,指令执行时不需访存,因此具有有较快的执行速度较快的执行速度。内部暂存器内部暂存器 IP ES SS DS CS输入输入/输出输出控制电路控制电路外部总线外部总线执行部执行部分控制分控制电路电路1 2 3 4 5 6ALU标志寄存器标志寄存器 AH AL BH BLCH CL DH DL SP BP SI DI通用寄存器通用寄存器地址加法器地址加法器指令队列缓冲器指令队列缓冲器执行部件执行部件 (EU)总线接口部件总线接口部件 (BIU)16位位20位位16位位8位位MOV AX , BX主存储器主存储

18、器寄存器寻址方式执行示意寄存器寻址方式执行示意 1234H2022年3月1日星期二233.直接寻址方式直接寻址方式 直接寻址方式直接寻址方式操作数在操作数在存储单元存储单元中,指令的操作码之后给出该存储单元的中,指令的操作码之后给出该存储单元的有效地址有效地址EA。 指令中,指令中,EA可以是可以是数值形式数值形式,也可以是,也可以是符号地址形式符号地址形式;例如:例如:MOV AX , 100H ;数值地址必须加方括号;数值地址必须加方括号 MOV AX , X ;符号地址;符号地址X必须事先定义必须事先定义 在在默认默认情况下,数据在情况下,数据在DS段中段中物理地址物理地址PA =(DS

19、)16 + EA 可使用段超越前缀的方式改变默认段;可使用段超越前缀的方式改变默认段;MOV AX , ES:100H2022年3月1日星期二24直接寻址方式直接寻址方式举例举例 执行指令执行指令MOV BX , 1234H时,时,(DS)=2000H,存储单元,存储单元21234H的值为的值为5213H,问执行该指令后,问执行该指令后BX的值是什么?的值是什么? 该指令源操作数的寻址方式为该指令源操作数的寻址方式为直接寻址方式直接寻址方式; 有效地址有效地址EA = 1234H,默认为,默认为DS段;段; 物理地址物理地址PA = 2000H 16 + 1234H = 21234H 所以,该

20、指令执行后所以,该指令执行后 (BX)=5213H13H52H21234H21235H内部暂存器内部暂存器 IP ES SS DS CS输入输入/输出输出控制电路控制电路外部总线外部总线执行部执行部分控制分控制电路电路1 2 3 4 5 6ALU标志寄存器标志寄存器 AH AL BH BLCH CL DH DL SP BP SI DI通用寄存器通用寄存器地址加法器地址加法器指令队列缓冲器指令队列缓冲器执行部件执行部件 (EU)总线接口部件总线接口部件 (BIU)16位位20位位16位位8位位MOV AX , 1200H主存储器主存储器直接寻址方式执行示意直接寻址方式执行示意 1200H DS

21、PA1234H2022年3月1日星期二26思考问题思考问题 问问1:右边所示的三条指令有何不同?:右边所示的三条指令有何不同?源操作数的寻址方式源操作数的寻址方式不同:第一条指令为直接寻址方式;不同:第一条指令为直接寻址方式;后两条指令为立即数寻址方式;后两条指令为立即数寻址方式;数据数制不同:前两条为十六进制;第三条为十进制。数据数制不同:前两条为十六进制;第三条为十进制。 问问2:MOV AX,X 和和 MOV AX,X 效果一样吗?效果一样吗?一样。一样。符号地址加不加括号指的都是之前定义的单元。符号地址加不加括号指的都是之前定义的单元。 问问3:高级语言的:高级语言的 y=x; 用汇编

22、指令如何实现?用汇编指令如何实现?需要使用两条指令完成赋值。需要使用两条指令完成赋值。MOV AX,2000HMOV AX,2000HMOV AX,2000MOV AX,XMOV Y ,AX2022年3月1日星期二274.寄存器间接寻址方式寄存器间接寻址方式 寄存器间接寻址方式寄存器间接寻址方式操作数在操作数在存储单元存储单元中,指令的操作码之后给出存放该单中,指令的操作码之后给出存放该单元有效地址的元有效地址的寄存器寄存器编码或名称。编码或名称。 可以用于这种寻址方式的寄存器称为可以用于这种寻址方式的寄存器称为间址寄存器间址寄存器。间址寄存器有:间址寄存器有:BX、BP、SI、DI例如:例如

23、:MOV AX , BX 默认默认情况下,数据在情况下,数据在DS段段或或SS段段中,由中,由间址寄存器间址寄存器决定;决定;物理地址物理地址PA = (DS) 16 + (BX/SI/DI);DS段段物理地址物理地址PA = (SS) 16 + (BP);SS段段内部暂存器内部暂存器 IP ES SS DS CS输入输入/输出输出控制电路控制电路外部总线外部总线执行部执行部分控制分控制电路电路1 2 3 4 5 6ALU标志寄存器标志寄存器 AH AL BH BLCH CL DH DL SP BP SI DI通用寄存器通用寄存器地址加法器地址加法器指令队列缓冲器指令队列缓冲器执行部件执行部件

24、 (EU)总线接口部件总线接口部件 (BIU)16位位20位位16位位8位位MOV AX , BX主存储器主存储器寄存器间接寻址方式执行示意寄存器间接寻址方式执行示意 1200H DS PA1234H2022年3月1日星期二29寄存器间接寻址方式举例寄存器间接寻址方式举例 执行指令执行指令MOV BX , DI 时,时,(DS)=1000H,(DI)=2345H,存,存储单元储单元12345H的值为的值为4354H,则指令执行后,则指令执行后BX的值为多少?的值为多少?该指令源操作数的寻址方式为该指令源操作数的寻址方式为寄存器间接寻址方式寄存器间接寻址方式;有效地址有效地址EA=(DI)=23

25、45H,默认为,默认为DS段;段;物理地址物理地址PA = (DS) 16 + EA = 1000H 16 + 2345H = 12345H所以,该指令执行后所以,该指令执行后 (BX) = (12345H) =4354H54H43H12345H12346H2022年3月1日星期二305.寄存器相对寻址方式寄存器相对寻址方式 寄存器相对寻址方式寄存器相对寻址方式操作数在操作数在存储单元存储单元中,操作数的有效地址为指令中指定中,操作数的有效地址为指令中指定间址寄存器间址寄存器的值与指令中给出的的值与指令中给出的偏移量偏移量(DISP)之和。之和。 指令格式指令格式间址寄存器间址寄存器: BX、

26、BP、SI、DI;偏移量偏移量:数值形式、或符号地址形式;:数值形式、或符号地址形式;例如:例如: 物理地址的形成与寄存器间接寻址相似;物理地址的形成与寄存器间接寻址相似; MOV AX , BX100H MOV AX , 100HBXMOV AX , BX+100H课本上分为课本上分为“变址寻址变址寻址”和和“基址寻址基址寻址”,这里,这里可以先不做区分!可以先不做区分!内部暂存器内部暂存器 IP ES SS DS CS输入输入/输出输出控制电路控制电路外部总线外部总线执行部执行部分控制分控制电路电路1 2 3 4 5 6ALU标志寄存器标志寄存器 AH AL BH BLCH CL DH D

27、L SP BP SI DI通用寄存器通用寄存器地址加法器地址加法器指令队列缓冲器指令队列缓冲器执行部件执行部件 (EU)总线接口部件总线接口部件 (BIU)16位位20位位16位位8位位MOV AX , 100HBX主存储器主存储器寄存器相对寻址方式执行示意寄存器相对寻址方式执行示意 1200H DS PA1234H 100H 1300H2022年3月1日星期二32 执行指令执行指令MOV BX,SI+100H 时,时,(DS)=1000H,(SI)=2345H,存储单元存储单元12445H的值为的值为2715H,则指令执行后,则指令执行后BX的值为多少?的值为多少?该指令源操作数的寻址方式为

28、该指令源操作数的寻址方式为寄存器相对寻址方式寄存器相对寻址方式;有效地址有效地址EA=(SI) + 100H =2445H,默认为,默认为DS段;段;物理地址物理地址PA = (DS) 16 + EA = 1000H 16 + 2445H = 12445H所以,该指令执行后所以,该指令执行后 (BX) = (12445H) =2715H寄存器相对寻址方式举例寄存器相对寻址方式举例15H27H12445H12446H2022年3月1日星期二336.基址变址寻址方式基址变址寻址方式 基址变址寻址方式基址变址寻址方式操作数在操作数在存储单元存储单元中,操作数的有效地址为指令中指定的中,操作数的有效地

29、址为指令中指定的基址寄存器的值与变址寄存器的值之和。基址寄存器的值与变址寄存器的值之和。 指令格式指令格式基址寄存器基址寄存器:BX、BP;变址寄存器变址寄存器:SI、DI;例如:例如: 默认默认情况下,数据在情况下,数据在DS段段或或SS段段中,由中,由基址寄存器基址寄存器决定;决定;物理地址物理地址PA = (DS) 16 + (BX) + (SI/DI) 物理地址物理地址PA = (SS) 16 + (BP) + (SI/DI)MOV AX , BX+SIMOV AX , BPSIMOV AX , BX+SI2022年3月1日星期二342022年3月1日星期二35 执行指令执行指令MOV

30、 BX , BX+SI 时,时,(DS)=1000H, (BX)=2100H,(SI)=0011H,存储单元,存储单元12111H的值为的值为1234H,则指令执行后,则指令执行后BX的值为多少?的值为多少?该指令源操作数的寻址方式为该指令源操作数的寻址方式为基址变址寻址方式基址变址寻址方式;有效地址有效地址EA= (BX) + (SI) =2100H + 0011H =2111H物理地址物理地址PA = (DS) 16 + EA = 1000H 16 + 2111H = 12111H所以,该指令执行后所以,该指令执行后 (BX) = (12111H) =1234H基址变址寻址方式举例基址变址

31、寻址方式举例34H12H12111H12112H2022年3月1日星期二367.相对基址变址寻址方式相对基址变址寻址方式相对基址变址寻址方式相对基址变址寻址方式操作数在操作数在存储单元存储单元中,操作数的有效地址为指令中指定的中,操作数的有效地址为指令中指定的基基址寄存器的值址寄存器的值、变址寄存器的值变址寄存器的值和和位移量位移量DISP三者之和。三者之和。指令格式指令格式基址寄存器基址寄存器:BX、BP;变址寄存器变址寄存器:SI、DI;偏移量偏移量:数值形式、或符号地址形式;:数值形式、或符号地址形式;例如:例如:在在默认默认情况下,数据在情况下,数据在DS段段或或SS段段中,由中,由基

32、址寄存器基址寄存器决定;决定;物理地址物理地址PA = (DS) 16 + (BX) + (SI/DI) + DISP 物理地址物理地址PA = (SS) 16 + (BP) + (SI/DI) + DISPMOV AX , 100HBX+SIMOV AX , 100HBXSIMOV AX , BX+SI+100H2022年3月1日星期二372022年3月1日星期二38 执行指令执行指令MOV AX , BX+SI+200H 时,时,(DS)=1000H, (BX)=2100H,(SI)=0010H,存储单元,存储单元12310H的值为的值为1234H,则指令执行后则指令执行后AX的值为多少?

33、的值为多少?该指令源操作数的寻址方式为该指令源操作数的寻址方式为相对基址变址寻址方式相对基址变址寻址方式;有效地址有效地址EA= (BX) + (SI) + 200H =2100H + 0010H + 200H =2310H物理地址物理地址PA = (DS) 16 + EA = 1000H 16 + 2310H = 12310H所以,该指令执行后所以,该指令执行后 (AX) = (12310H) =1234H相对基址变址寻址方式举例相对基址变址寻址方式举例34H12H12310H12311H2022年3月1日星期二39总总 结(结(1/4) 三大类三大类寻址方式寻址方式按按操作数的存放位置操作

34、数的存放位置分类分类立即数寻址方式、寄存器寻址方式、存储器寻址方式立即数寻址方式、寄存器寻址方式、存储器寻址方式 指令中凡是加有方括号指令中凡是加有方括号”的内容的内容立即数立即数或或寄存器寄存器,其值,其值均表示为均表示为地址信息地址信息;例如:例如:MOV AX , 1000H MOV AX , BX对于符号地址,则方括号可省略;对于符号地址,则方括号可省略; 间址寄存器间址寄存器BX、BP、SI、DI间址寄存器又可分为间址寄存器又可分为基址寄存器基址寄存器(BX、BP)和)和变址寄存器变址寄存器(SI、DI)两类;)两类;n指令中,只有间址寄存器才可以出现在方括号里。指令中,只有间址寄存

35、器才可以出现在方括号里。方括号方括号”中的寄存器只能是一个或两个间址寄存器,且中的寄存器只能是一个或两个间址寄存器,且不能同时不能同时为基址寄存器或变址寄存器;为基址寄存器或变址寄存器;2022年3月1日星期二40总总 结(结(2/4) 存储器寻址方式中,在取操作数之前需要存储器寻址方式中,在取操作数之前需要计算有效地址计算有效地址;有效地址有效地址EA是将指令中是将指令中所有地址信息所有地址信息相加之和;相加之和;寻址方式中的偏移量有正有负(寻址方式中的偏移量有正有负(16位);位);n可偏移范围为向上可偏移范围为向上32768个单元,向下个单元,向下32767个单元;个单元;有效地址应为有

36、效地址应为16位,多于位,多于16位应位应按按64K取模取模;n例如,例如,MOV AX , BX+0FFFFH,若,若(BX)=100H,则,则EA = 0FFFFH + 100H = 100FFH (mod 64K) = 0FFH2022年3月1日星期二41总总 结(结(3/4)存储器寻址方式中,存储器寻址方式中, 默认情况下均在默认情况下均在DS段段/SS段中;段中;若需要寻址其他段,则可使用显式指明段寄存器的若需要寻址其他段,则可使用显式指明段寄存器的段超越前段超越前缀缀的方式来改变默认段寄存器;的方式来改变默认段寄存器;指令形式:指令形式:MOV ES:100H , AL物理地址物理

37、地址PA =(ES)16 + 100H例如:例如:指令指令MOV AX , 100H与与MOV AX , SS:100H执行结果是否执行结果是否相同?相同?不相同!不相同!所访问存储单元属于不同的逻辑段。所访问存储单元属于不同的逻辑段。MOV AX , SS:BX+100HMOV AX , ES:BP+100H2022年3月1日星期二42总总 结(结(4/4) 存储器寻址方式的通用形式存储器寻址方式的通用形式DISP + 基址寄存器基址寄存器 + 变址寄存器变址寄存器组合形式组合形式寻址格式寻址格式源操作数寻址方式源操作数寻址方式一个偏移量一个偏移量DISP一个间址寄存器一个间址寄存器基址寄存

38、器基址寄存器 变址寄存器变址寄存器一个间址寄存器一个间址寄存器和一个偏移量和一个偏移量DISP + 基址寄存器基址寄存器 DISP + 变址寄存器变址寄存器 两个间址寄存器两个间址寄存器基址寄存器基址寄存器 + 变址寄存器变址寄存器所有都包含所有都包含DISP + 基址寄存器基址寄存器 + 变址寄存器变址寄存器直接寻址方式直接寻址方式寄存器间接寻址方式寄存器间接寻址方式寄存器相对寻址方式寄存器相对寻址方式基址变址寻址方式基址变址寻址方式相对基址变址寻址方式相对基址变址寻址方式2022年3月1日星期二43源操作数寻址方式判断正误源操作数寻址方式判断正误MOV AX , SP错误!错误!间址寄存器

39、错误。间址寄存器错误。MOV AX , SP正确!正确!寄存器寻址。寄存器寻址。MOV AX , SI正确!正确!寄存器间接寻址。寄存器间接寻址。MOV AX , SI正确!正确!寄存器寻址。寄存器寻址。MOV AX , DS错误!错误!间址寄存器错误。间址寄存器错误。MOV AX , DS正确!正确!寄存器寻址。寄存器寻址。2022年3月1日星期二44练练 习习 试说明下列指令中源操作数的寻址方式,并指出指令执行后试说明下列指令中源操作数的寻址方式,并指出指令执行后寄存器寄存器AX中的值或所要寻找操作数的中的值或所要寻找操作数的EA值。值。设设(BX)=2000H,(SI)=40HMOV A

40、X , 1234HMOV AX , 1234HMOV AX , BXMOV AX , BXMOV AX , BX+1234HMOV AX , BX+SIMOV AX , BX+SI+1234H直接寻址方式,直接寻址方式,EA=1234H立即数寻址方式,立即数寻址方式,(AX)=1234H寄存器寻址方式,寄存器寻址方式, (AX)= 2000H寄存器间接寻址方式,寄存器间接寻址方式, EA=2000H寄存器相对寻址方式,寄存器相对寻址方式, EA=3234H基址加变址寻址方式,基址加变址寻址方式, EA=2040H相对基址加变址寻址方式,相对基址加变址寻址方式, EA=3274H2022年3月1

41、日星期二45例例 已知已知(DS)=2000H,(SS)=2001H,(BX)=100H,(BP)=0F3H,(SI)=2,内存单元中的值如图所示,试指,内存单元中的值如图所示,试指出源操作数的寻址方式,并给出指令执行后出源操作数的寻址方式,并给出指令执行后AX的值。的值。 MOV AX , 1200H MOV AX , BX MOV AX , BX MOV AX , 1BX MOV AX , BXSI MOV AX , BPSI MOV AX , DS:11HBPSI MOV AX , 0FFFFHBXSI123405067C10B70120100H20101H20102H20103H201

42、04H20105H20106H20107H2022年3月1日星期二46例例 已知已知(DS)=2000H,(SS)=2001H,(BX)=100H,(BP)=0F3H,(SI)=2,内存单元中的值如图所示,试,内存单元中的值如图所示,试指出源操作数的寻址方式,并给出指令执行后指出源操作数的寻址方式,并给出指令执行后AX的值。的值。 MOV AX , 1200H 立即数寻址方式,立即数寻址方式,(AX)=1200H MOV AX , BX 寄存器寻址方式,寄存器寻址方式,(AX)=(BX)=100H MOV AX , BX 寄存器间接寻址方式,寄存器间接寻址方式,EA=100H PA=(DS)1

43、6+EA=20000H+100H=20100H (AX)=3412H123405067C10B70120100H20101H20102H20103H20104H20105H20106H20107H2022年3月1日星期二47例例 已知已知(DS)=2000H,(SS)=2001H,(BX)=100H,(BP)=0F3H,(SI)=2,内存单元中的值如图所示,试指,内存单元中的值如图所示,试指出源操作数的寻址方式,并给出指令执行后出源操作数的寻址方式,并给出指令执行后AX的值。的值。 MOV AX , 1BX 寄存器相对寻址方式,寄存器相对寻址方式,EA=(BX)+1=101H PA=(DS)1

44、6+EA=20000H+101H=20101H (AX)=0534H MOV AX , BXSI 基址变址寻址方式,基址变址寻址方式,EA=(BX)+(SI)=102H PA=(DS)16+EA=20000H+102H=20102H (AX)=0605H MOV AX , BPSI 基址变址寻址方式,基址变址寻址方式,EA=(BP)+(SI)=0F5H PA=(SS)16+EA=20010H+0F5H=20105H (AX)=0B710H123405067C10B70120100H20101H20102H20103H20104H20105H20106H20107H2022年3月1日星期二48例

45、例 已知已知(DS)=2000H,(SS)=2001H,(BX)=100H,(BP)=0F3H,(SI)=2,内存单元中的值如图所示,试指,内存单元中的值如图所示,试指出源操作数的寻址方式,并给出指令执行后出源操作数的寻址方式,并给出指令执行后AX的值。的值。 MOV AX , DS:11HBPSI相对基址变址寻址方式相对基址变址寻址方式EA=(BP)+(SI)+11H=106HPA=(DS)16+EA=20000H+106H=20106H (AX)=01B7H MOV AX , 0FFFFHBXSI相对基址变址寻址方式相对基址变址寻址方式EA=(BX)+(SI)+0FFFFH=0101HPA

46、=(DS)16+EA=20101H (AX)=0534H123405067C10B70120100H20101H20102H20103H20104H20105H20106H20107H2022年3月1日星期二49习题习题1:指出下列各种操作数的寻址方式。:指出下列各种操作数的寻址方式。 BX SI 435H BP+DI+123 23 data DI+32 BX+SI BP+4寄存器间接寻址方式寄存器间接寻址方式寄存器寻址方式寄存器寻址方式立即数寻址方式立即数寻址方式相对基址加变址寻址方式相对基址加变址寻址方式直接寻址方式直接寻址方式寄存器相对寻址方式寄存器相对寻址方式基址加变址寻址方式基址加变

47、址寻址方式寄存器相对寻址方式寄存器相对寻址方式直接寻址方式直接寻址方式2022年3月1日星期二50习题习题2: 判断下列操作数的寻址方式的正确性判断下列操作数的寻址方式的正确性 AX BP SI+DI DS BH BX+BP+32 BL+44错误错误,16位间址寄存器只有位间址寄存器只有BX,BP,SI,DI正确正确,寄存器寻址方式,寄存器寻址方式错误错误,间址寄存器不能同时为变址寄存器,间址寄存器不能同时为变址寄存器正确正确,寄存器寻址;如:,寄存器寻址;如:MOV DS,AX正确正确,寄存器寻址,寄存器寻址错误错误,间址寄存器不能同时为基址寄存器,间址寄存器不能同时为基址寄存器 错误错误,

48、16位间址寄存器只有位间址寄存器只有BX,BP,SI,DI2022年3月1日星期二51习题习题2: 判断下列操作数的寻址方式的正确性判断下列操作数的寻址方式的正确性 (续续) CX+90H BX+90H DX SI100H BX*4 DX+90H错误错误,CX不可作为间址寄存器不可作为间址寄存器错误错误,应为,应为BX+90H错误错误,DX不能作间址寄存器不能作间址寄存器错误错误,书写格式应为,书写格式应为100HSI 或或 SI+100H错误错误,16位系统中没有比例因子寻址方式位系统中没有比例因子寻址方式错误错误, DX不能作间址寄存器不能作间址寄存器2022年3月1日星期二52习题习题3

49、:已知寄存器:已知寄存器BX、DI和和BP的值分别为的值分别为2345H、0FFF0H和和42H,试分别计算各操作数的有,试分别计算各操作数的有效地址。效地址。 BXEA=2345H DI+123HEA=(DI) + 123H=10113H (mod 64K)= 0113H BP+DIEA=(BP) + (DI) =10032H (mod 64K)= 0032H BX+DI+200HEA=(BX) + (DI) +200H=12535H (mod 64K)= 2535H 1234HEA=1234H16位系统的位系统的EA为为16位位2022年3月1日星期二53习题习题4: 指出下列各寻址方式所

50、使用的段指出下列各寻址方式所使用的段寄存器寄存器SI+34H456HES:BP+DIBX+DI+200HBP+1234HDSDSESDSSS2022年3月1日星期二543.2 8086 指令系统指令系统3.2.1 数据传送类指令数据传送类指令3.2.2 算术运算指令算术运算指令3.2.3 位操作类指令位操作类指令3.2.6 处理机控制类指令处理机控制类指令2022年3月1日星期二55学习指令的关注点学习指令的关注点 指令的格式指令的格式操作数的个数,每个操作数可使用的寻址方式;操作数的个数,每个操作数可使用的寻址方式; 指令的功能指令的功能指令执行的目的和结果;指令执行的目的和结果; 指令执行

51、前后标志位的改变指令执行前后标志位的改变指令执行时,是否需要标志位参与;指令执行时,是否需要标志位参与;指令执行后,指令执行后,对标志位的影响对标志位的影响(改变)。(改变)。 指令执行时的约定设置、必须预置的参数、隐含使用的指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等。寄存器等。2022年3月1日星期二562022年3月1日星期二56指令执行对标志位的影响指令执行对标志位的影响 对标志位有对标志位有影响影响按指令执行结果设置相应的标志位按指令执行结果设置相应的标志位 对标志位对标志位不影响不影响指令执行不改变标志状态指令执行不改变标志状态 对标志位对标志位无定义无定义指令执行后这

52、些标志是任意的、不可预测;指令执行后这些标志是任意的、不可预测;2022年3月1日星期二572、交换指令、交换指令XCHG 格式:格式:XCHG OPRD1 , OPRD2 OPRD1 和和 OPRD2: 8位位/16位,位,REG / MEMn注意:操作数不能使用段寄存器;注意:操作数不能使用段寄存器; 功能功能 将指定的两个操作数的值相交换;将指定的两个操作数的值相交换; 例如:例如:(AX)=6634H, (BX)=0F24H, (SI)=0012H, (DS)=1200H, (12F36H)=2510H,则以下指令执行后的结果如何?,则以下指令执行后的结果如何?XCHG AH , AL

53、 XCHG AX , BX+SI(AX)=3466H(AX)=2510H(12F36H)=3466H2022年3月1日星期二582022年3月1日星期二583、堆栈操作指令、堆栈操作指令(1)进栈指令)进栈指令PUSH 指令格式:指令格式:PUSH SRC SRC:16位,位,REG / SEG / MEMn80286以后,新增了以后,新增了PUSH Imm的指令;的指令; DST:隐含,由:隐含,由SS:SP指定,类型与指定,类型与SRC匹配匹配 指令执行过程指令执行过程: 先修改栈顶指针:先修改栈顶指针:(SP)- -2SP再将数据保存于栈顶位置:源操作数再将数据保存于栈顶位置:源操作数S

54、P2022年3月1日星期二592022年3月1日星期二59进栈指令举例进栈指令举例 例如:设例如:设(AX)=7823H, (SP)=0FFFEH则指令则指令PUSH AX的执行过程如右图所示:的执行过程如右图所示: 修改指针:(修改指针:(SP)-2SP (SP)=0FFFCH 保存数据:保存数据:7823HSP0FFFCH=7823H2233SSSSSPSP78232022年3月1日星期二60(2)出栈指令)出栈指令POP 指令格式:指令格式:POP DST DST: 16位,位,REG / SEG / MEM nCS段寄存器除外段寄存器除外 SRC:隐含,由:隐含,由SS:SP指定指定

55、指令执行过程指令执行过程: 将栈顶位置的字数据保存于目的操作数指定的位置中:将栈顶位置的字数据保存于目的操作数指定的位置中: SP目的操作数目的操作数 再再修改栈顶指针修改栈顶指针: (SP)+2 SP 例如:例如:POP AXPOP word ptr 2000H2022年3月1日星期二612022年3月1日星期二612022年3月1日星期二62课本课本P54 例例3-17 设一堆栈,设一堆栈,(SP)=2000H,问执行下列每一,问执行下列每一条指令后条指令后AX、BX、SP的值为多少?的值为多少?指令指令AXBXSPMOV AX , 2340HMOV BX , 7800HPUSH AXPU

56、SH BXPOP AXPOP BX7800H2340H7800H2340H1FFEH1FFCH7800H7800H7800H2340H2000H1FFEH2340H2000H2000H7800H2340H2022年3月1日星期二63堆栈指令注意事项堆栈指令注意事项 PUSH指令中的显式操作数是指令中的显式操作数是源操作数源操作数;POP指令中的显式操作数是指令中的显式操作数是目的操作数目的操作数; 16位系统位系统中,中,PUSH指令的操作数不可为立即数;指令的操作数不可为立即数;32位系统新增;位系统新增; 若堆栈指令的显式操作数是存储单元,则应注意若堆栈指令的显式操作数是存储单元,则应注意

57、是否需要强是否需要强制类型制类型;非符号地址的形式,需要强制类型;非符号地址的形式,需要强制类型;2022年3月1日星期二64500H501HBUF4、地址传送指令、地址传送指令LEA 格式:格式:LEA DST , SRC DST:16位,位,REG SRC:任何一种存储器寻址方式:任何一种存储器寻址方式 功能功能 把源操作数的有效地址送给指定的目的寄存器;把源操作数的有效地址送给指定的目的寄存器; 例如例如 BUF定义如右,指令定义如右,指令LEA SI , BUF的结果?的结果?n(SI)=0500H 若若(BX)=100H,指令,指令LEA SI , 2BX的结果?的结果?(SI)=0

58、102H0000试区分以下两条指令:试区分以下两条指令:MOV BX , DATALEA BX , DATA2022年3月1日星期二652022年3月1日星期二652022年3月1日星期二66指令区分指令区分 假设某数据段定义如下:假设某数据段定义如下: DATASEGMENT TABLE DW 0040H DW 3000H DATAENDS 请指出下列指令的执行结果。请指出下列指令的执行结果。 MOV BX, TABLE LEA BX, TABLE MOV BX, OFFSET TABLE (BX)=0040H(BX)=0000H(BX)=0000H2022年3月1日星期二67思考问题思考问

59、题 右边两条指令的效果一样吗?右边两条指令的效果一样吗?答:答:效果一样,都是取效果一样,都是取BUFFER的有效地址送给的有效地址送给BX寄存器。寄存器。 但两条指令的源操作数寻址方式不同。但两条指令的源操作数寻址方式不同。 右边两条指令都正确吗?右边两条指令都正确吗?答:答:第一条正确,第二条不正确;第一条正确,第二条不正确;因为,因为,OFFSET是对变量和标号求偏移属性的,而不能对是对变量和标号求偏移属性的,而不能对其他的存储单元寻址方式来用。其他的存储单元寻址方式来用。LEA BX , BUFFERMOV BX , OFFSET BUFFERLEA BX , BX+200MOV BX

60、 , OFFSET BX+2002022年3月1日星期二682022年3月1日星期二68其他地址传送指令其他地址传送指令 格式:格式:LDS/LES DST,SRCDST:16位,位,REGSRC:32位,任何一种存储单元寻址方式位,任何一种存储单元寻址方式 功能:功能:将源操作数指定的单元中将源操作数指定的单元中低字数据低字数据送入指定的目的寄存送入指定的目的寄存器中,器中,高字数据高字数据传送给传送给DS/ES寄存器寄存器 例如:设例如:设DATA为双字数据,其值为为双字数据,其值为12345678H 则指令则指令LDS AX , DATA的结果?的结果?(AX)=5678H(DS)=12

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论