8086指令的基本格式和寻址方式(3-1)
第3章 8086的指令系统—3.1寻址方式
例:(BX)=2000H,(SI)=1000H,偏移量=0250H,
则EA= 2000H+1000H+0250H=3250H
寻址目的
确定本条指令的操作数据 在指令中 PA:存储器内的绝对地址(20位) 在存储器中 EA:某个段内的相对地址(16位) 在寄存器中 确定下一条指令的地址 根据指令长度计算 根据转移指令的目标地址
寄存器名表示其内容(操作数)
MOV AX, BX
MOV AL, BH
;AX←BX
;AL←BH
演示
第3章: 3.1.3 存储器寻址方式
操作数在主存储器中,用主存地址表示 程序设计时,8088采用逻辑地址表示主存地址
段地址在默认的或用段超越前缀指定的段寄存器中 指令中只需给出操作数的偏移地址(有效地址EA)
演示
;AX←DS:[SI+06H]
第3章:4. 基址加变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上 变址寄存器(SI或DI)的内容构成: 有效地址=BX/BP+SI/DI 段地址对应BX基址寄存器默认是DS,对应BP基 址寄存器默认是SS;可用段超越前缀改变
MOV AX, [BX+SI] MOV AX, [BX][SI]
*微型计算机汇编语言特点 *微型计算机指令系统概述 *寻址方式
指令及其格式
指令及指令集 计算机能够识别和执行的基本操作命令
指令的作用
告诉CPU干什么?What? 告诉CPU从哪儿取数据?Where? 告诉CPU下一条指令在哪儿?Where? 操作码 操作数或操作数地址 指令的格式
第3章 8086指令系统及汇编语言程序设计
图3-7 立即数寻址
第3章 8086指令系统及汇编语言程序设计
注意: (2)寄存器寻址方式 ● 寄存器寻址方式的指令操作在CPU 定义:操作数放在寄存器内,由指令直接给出某个 内部执行,不需要执行总线周期,执行速 寄存器的名字,以寄存器的内容作为操作数。寄存器可以 度快。 是16位的 AX、BX、CX、DX、SI、DI、SP、BP寄存器, ● 寄存器寻址方式既适用于指令的源 也可以是8位的 AH、AL、BH、BL、CH、CL、DH、DL 寄存器。 操作数,也适用于目的操作数,并且可同 时用于源操作数和目的操作数。 【例3-2】 MOV AX,CX ;(AX)←(CX) INC AL ;(AL)←(AL)+1 指令执行结果如图3-8 所示
图3-8 寄存器寻址
第3章 8086指令系统及汇编语言程序设计
(3)直接寻址方式 定义:操作数在存储器中,指令中直接给出操作数所在存 注意: 储单元的有效地址。有效地址( EA)也称为偏移地址,它代表 ●直接寻址方式的操作数所在存储单元的段地址一 操作数所在存储单元距离段首址的字节数。有效地址是一个无 般在数据段寄存器DS中。 符号的16位二进制数。 ●如果操作数在其他段,则需要在指令中用段超越 【例3-3】 前缀指出相应的段寄存器名。 ● VALUE是一种符号表示法,此内容将在伪指令中 MOV AH, [1234H ] ;将DS段中1234H单元的内容送给AH 给予讲解。 MOV AH ,VALUE ;将DS段中VALUE单元的内容送给AH ●在实地址方式下,物理地址=16*段地址(DS) MOV AX, [2100H] ;将DS段中2100H单元的内容送给AL, +偏移地址(EA) 2101H单元的内容送给AH MOV BX,ES:【2000H】 ;段超越,操作数在附加段。即 物理地址=(ES)*16+2000H
第二章 80868088寻址方式和指令系统
(5)奇偶标志PF
用于反映运算结果中“1”的个数。如果“1”的个数为偶数,则OF被置1,否则OF被清0。
(6)辅助进位标志AF
在字节操作时,如发生低半字节向高半字节进位或借位;在字操作时,如发生低字节向高字 节进位或借位,则辅助进位标志AF被置1,否则AF被清0。
②状态控制标志
(1)方向标志DF
方向标志决定着串操作指令执行时,有关指针寄存器调整方向。 当DF为1时,串操作指令按减方式改变有关的存储器指针值, 当DF为0时,串操作指令按加方式 改变有关的存储器指针值。
其中:存储单元的物理地址是12345H, 标出的:两个重叠段的段值分别是:1002H和1233H, 在对应段内的偏移分别是2325H和0015H。
采用段值和偏移构成逻辑地址后,段值由段寄存器给出,偏移可由指令指针IP、堆栈指针SP 和其他可作为存储器指针使用的寄存器(SI、DI、BX和BP)给出,偏移还可直接用16位数给 出。
图中指令存放在代码段中,OP表示该指令的操作码部分 再例如: MOV AL,5 则指令执行后,(AL)=05H
MOV BX,3064H 则指令执行后, (BX)=3064H
2、寄存器寻址方式
操作数在CPU内部的寄存器中,指令指定寄存器号。
对于16位操作数数,寄存器可以是:
AX、BX、CX、DX、SI、DI、SP和BP等;
指令中不使用物理地址,而是使用逻辑地址,由总线接口单元BIU按需要根据段值和偏移自动 形成20位物理址。
3、段寄存器的引用
由于8086/8088CPU有四个段寄存器,可保存四个段值。所以可同时使用四个段值,但这四个 段有所分工。
在取指令的时候,自动引用代码段寄存器CS,再加上由IP所给出的16位偏移,得到要取指令 的物理地址。
8086指令编码格式 -回复
8086指令编码格式-回复[8086指令编码格式]8086指令编码格式是指8086处理器指令所使用的编码格式。
8086是Intel公司于1978年推出的一款16位微处理器,它是x86微处理器系列的第一代产品。
8086指令编码格式是为了使处理器能够正确解码指令并执行对应的操作而设计的。
8086指令编码格式包含了多个部分,包括指令前缀、操作码、操作数等。
下面我将一步一步回答各部分的具体内容,以帮助理解8086指令编码格式的内部结构以及其用途。
1. 指令前缀:指令前缀是位于指令编码的开头的一组额外的位。
这些位用于改变指令的默认行为或者提供额外的信息。
例如,寄存器前缀指示指令使用的寄存器是通用寄存器还是特殊寄存器。
重复前缀用于指示某些指令需要被重复执行。
段前缀用于指定操作数的地址所在的段。
2. 操作码:操作码是指令的主要部分,它提供了对应的操作或动作。
8086处理器支持多种不同类型的操作码。
其中一些操作码用于执行算术和逻辑操作,如加法、减法、与、或等。
其他操作码用于控制处理器的行为,如跳转、调用子程序、中断等。
3. 操作数:操作数是指令操作的对象。
8086处理器支持多种类型的操作数,包括寄存器、内存地址等。
寄存器操作数直接指定了一个寄存器。
内存操作数指定了一个内存地址,通过该地址可以读取或写入数据。
立即操作数直接包含了一个数值,它可以是一个字节或者一个字。
8086指令编码格式具有一定的灵活性,这使得它可以适应不同的指令和操作。
下面以几个具体的例子来分析一下8086指令编码格式的使用。
例1:MOV指令MOV指令用于将数据从一个位置复制到另一个位置。
它的编码格式如下:MOV <目标操作数>, <源操作数>其中,目标操作数和源操作数可以是寄存器、内存地址或者立即操作数。
例如,要将寄存器AX的值复制到寄存器BX,可以使用以下编码:MOV BX, AX例2:ADD指令ADD指令用于对两个操作数进行相加。
第3章 8086 8088指令系统和寻址方式
第3章 指令系统和寻址方式
3.1 概述 3.2 数据寻址方式 3.3指令格式及指令执行时间 3.4 8088/8086 CPU的指令系统
3.1 指令系统概述
指令是计算机能够识别和执行的指挥计算机进行操作的命
令。指令系统是指微处理器能执行的各种指令的集合。
程序是指令的有序集合,指令是程序的组成元素,通常一
演示
3.2 数据寻址方式
2. 寄存器间接寻址方式
在计算机中通常将BX、BP称为基址寄存器,SI、DI称为
变址寄存器,寻址时操作数的地址被放在这些寄存器中。
寄存器间接寻址方式在汇编格式中表示为
[基址寄存器名或变址寄存器名]
【例】
MOV AX, [BX]
;AX←DS:[BX]
演示
3.2 数据寻址方式
直接寻址方式是指寻找的操作数的地址在指令中直接给出。 这种寻址方式在汇编格式中表示为 ● 操作码 地址表达式 (或[地址表达式]) ● 操作码 [数字表达式]
3.2 数据寻址方式
【例】
MOV AX, [2000H];AX←DS:[2000H] MOV AX, ES: [2000H] ;AX←ES:[2000H]
MOV AX, 0102H
;AX←0102H
演示
3.2 数据寻址方式
3.2.2 寄存器寻址方式
寄存器寻址是指寻找的操作数在某个寄存器中。 格式: 操作码 寄存器名
比如AL,BX,CX,DS、IP等等。 【例】
MOV AX, BX
;AX←BX
演示
3.2 数据寻址方式
3.2.3 存储器寻址方式
1. 直接寻址方式
若(CS)=5200H 时,物理转移地址为 B230H,则当CS 的内容被设定为7800H, 物理转移地址应为多少? =9230H 78000H +9230H=81230H。
微型计算机原理第3章_1_寻址方式
8086/8088的寻址方式 第三章 8086/8088的寻址方式 和指令系统主 讲 : 乔 瑞 萍学习要点数据寻址的8种寻址方式,I/O端口寻址的 2种寻址方式 程序转移地址的4种寻址方式 掌握8086指令(操作码助记符,可以使用 的寻址方式) 了解80386新增寻址方式和指令3.1 计算机指令格式1、汇编指令格式: OP.C OP.D (Operating Code、Operating Data) 注:OP.C指操作码助记符 OP.D指操作数部分,又称地址码。
(实际上的OP.C、OP.D都应该是二进制数,即 机器码。
)2、根据OP.D中地址的个数,指令可分为: 1)零地址指令:只有OP.C,没有OP.D。
2)一地址指令:单OP.D。
3)二地址指令:双OP.D。
4)三地址指令:三OP.D。
3. 指令长度与字长的关系指令长度主要取决于OP.C的长度 OP.D地址的长度 OP.D地址的个数几个概念: 1)指令的长度指其机器码的长度,是字节的简 单倍数; 2)现代计算机广泛采用变字长指令格式:并非 所有指令的长度一致。
3)指令长度与其执行时间没有必然的联系,短 指令也可能执行时间长。
4)指令字长与内存的编址单位及CPU的机器字 长有关。
3.3 指令格式1、80x86指令编码格式(P81~83) 指令码是指每条指令所对应的二进制 编码,即机器码,这里只是要求大家了 解一下汇编指令如何翻译成机器码的, 即了解编译程序的工作,自学,不做要 求。
3.2 80X86的寻址方式 (addressing modes)P70,指令语句由操作码和操作数两部 分构成,操作码表示计算机执行什么操 作;操作数可能指明了参与操作的数本 身,或规定了操作数的地址。
8086/8088的寻址方式分为两类:数据寻址方式 转移地址寻址方式1)数据寻址方式(8种)(以通用传送指令MOV AX,SRC为例)定义:指令中用以说明或形成操作数有效地址 (Effective Adress)的方法,称为操作数的寻址 方式。
汇编语言 第3章1 80x86的指令系统和寻址方式
CS、DS、SS、ES
寄存器寻址指令
MOV AX,1234H MOV BX,AX ;AX←1234H ;BX←AX
寄存器寻址
3.1.4 存储器寻址方式
指令中给出操作数的主存地址信息(偏移
地址,称之为有效地址EA),而段地址在 默认的或用段超越前缀指定的段寄存器中
8086设计了多种存储器寻址方式
量之和,寄存器可以是BX、BP或SI、DI 有效地址=BX/BP/SI/DI+8/16位位移量
段地址对应BX/SI/DI寄存器默认是DS,对应BP
寄存器默认是SS;可用段超越前缀改变 MOV AX,[DI+06H]; mov ax,table[di] ;AX←DS:[DI+06H] MOV AX,[BP+06H] ;AX←SS:[BP+06H] 相对寻址
;AX←DS:[BX+SI+06H]
相对基址变址
位移量可用符号表示 同一寻址方式有多种表达形式
指令操作数的表达-寄存器
r8——任意一个8位通用寄存器
AH AL BH BL CH CL DH DL
r16——任意一个16位通用寄存器
AX BX CX DX SI DI BP SP
reg——代表r8或r16
(4)基址变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上
变址寄存器(SI或DI)的内容构成:
有效地址=BX/BP+SI/DI
段地址对应BX基址寄存器默认是DS,对应BP
基址寄存器默认是SS;可用段超越前缀改变 MOV AX,[BX+SI] ;AX←DS:[BX+SI] MOV AX,[BP+DI] ;AX←SS:[BP+DI] MOV AX,DS:[BP+DI] ;AX←DS:[BP+DI]
8086指令系统总结
8086指令系统总结学习微处理器及其程序设计,必须掌握微处理器的指令系统。
本章以 8086 微处理器为例介绍微型计算机的指令系统,包括指令格式、寻址方式和各类指令功能。
要明确各种寻址方式的区别和特点,掌握有效地址和物理地址的计算方法,要正确使用指令,掌握各类指令的功能、对标志位的影响和使用上的一些特殊限制。
能够编写小汇编程序,初步掌握汇编程序的编写和调试方法。
本章的重点难点内容是: 8086 的指令格式及寻址方式, 8086 的常用指令和8086 指令前缀的使用。
下面我们分别进行总结:一.8086寻址方式(1)操作数是数字,指令中立即写出数字------------立即数寻址MOV AX,1234H 解释此句意义(2)操作数是寄存器内容,指令中写出寄存器的符号---------寄存器寻址MOV AX,BX(3)操作数是存储单元内容,用括号括出存储单元有效地址-----直接寻址MOV AX,[1234H]MOV AX,ES:[1234H](4)操作数是存储单元内容,用括号括出寄存器或其表达式,寄存器或其表达式的值为存储单元有效地址-------------间接寻址MOV AH,[BX]MOV AX,ES:[SI]MOV AL,[BX+SI+5]===5[BX+SI]===5[BX][SI]二.8086指令系统1.数据传送指令(一)通用传送指令(1)MOV指令指令格式:MOV 目,源功能:将源操作数传送给目标操作数。
(2)堆栈操作指令进栈指令:PUSH格式:PUSH 源功能:将源操作数压入堆栈。
例:用堆栈指令完成上例的功能。
MOV AX,3000HMOV DS,AX ;段寄存器填充MOV SI,0100H ;基本指令执MOV DI,2000H ;行前的初值MOV CX,50NT:PUSH [SI] ;程序从这POP [DI] ;开始设计INC SIINC SIINC DIINC DILOOP NTMOV AH,4CHINT 21H(3)交换指令 XCHG格式:XCHG 目,源功能:源和目标中的内容交换。
第三章 8086的寻址方式
8086/8088指令概述
操作数的一般形式: 3、存储器操作数:这类操作数是指定存储单元 的内容或该单元的地址.
例1:MOV DS:[1000H], AL 其意义是将AL的内容送存储器数据段中偏移地址为 1000H的单元中去。
例2: 若指令改写为MOV AL,DS: [1000H]
指令意义为将数据段中偏移地址为 1000H 单元中的 内容送AL寄存器。前者指的是存储单元的地址,后者指 的是存储单元的内容
22
3.1 寻址方式
直接寻址: 符号地址:
8086/8088指令寻址方式
例3 :AREA1 EQU 0867H ; 等值伪指令EQU给常数0867H定义 一个符号AREA1 MOV AX,AREA1 ;AX=0867H 例4:AREA1 DW 0867H ;DW伪指令用来定义变量,
变量用来表示存储器中的数据。变量名AREA1表示内存中 一个数据区的名字,也就是符号地址,该地址单元存放一个字 数据0867H。 MOV AX,AREA1 ;
4、隐含操作数:这类操作数被操作助记符隐含着。 如,对压缩BCD加法结果进行调整的DAA,其操 作数就是隐含操作数AL。
5 、I/O端口操作数:可以作源操作数或目的操作数。 (I/O端口地址,可以直接或寄存器间接给出)
如: IN AL, 44H
OUT 量和常量三个概念:
例如:MOV AX,BX
3
8086/8088指令概述
例如:MOV AX,BX
用 MOV表示进行数据传送的操作码,用 AX、 BX表示操作数, 显然这样的表示方式更清晰,更便于记忆和使用。 用符号、助记符书写的指令称为符号指令。用符号指令书写程 序的规范称为汇编语言,对应的程序称为汇编语言源程序。
第3章 8086指令系统(最后有练习题)
开 始
8086CPU的指令系统的基本指令
包括数据传送类指令、算术运算类指令、 位操作类指令、串操作类指令、控制转移 类指令、处理机控制类指令。后几节将分 别介绍这些指令的语句格式和功能。
3.1 8086的寻址方式
3.1.1 数据的寻址方式 3.1.2 程序转移地址的寻址方式 3.1.3 对端口的寻址方式
3.1.2 程序转移地址的寻址方式
用来确定转移指令及CALL指令的转向地址。
段内寻址
段内直接寻址 段内间接寻址 段间直接寻址 段间间接寻址
段间寻址
段内:转移指令与转向的目标指令在同一代码段 中,(CS)不变。
段间:转移指令与转向的目标指令在两个代码段中, (CS) 变化。
表示转移距离(称为位移量)的操作符:
返回本节
2 . 寄存器寻址
寄存器寻址方式的操作数在指令指明的寄 存器中。 汇编格式:R ,其中R表示寄存器名。 功能:操作数直接存放在寄存器R中。 例如:MOV AL,BL
【例3-2】下列程序执行后,(AX)=?,
(BX)=?
MOV AX,1234H
MOV BX,5678H
ADD AX,BX 执行:1234H→AX 5678H→BX (AX)+(BX)→AX 执行后:(AX)=68ACH,(BX)=5678H
3 . 直接寻址
特点:操作数在内存中。 汇编格式:①含有变量的地址表达式。 ②段寄存器名:[EA] 。 功能:指令下一字单元的内容是操作数的偏 移地址EA。 图形表示:
【例3-3】
寄存器和存储器内容为:(AX)=1212H, (DS)=3000H,(32000H)=45H, (32001H)=46H。 执行指令:MOV AX ,[2000H] 问执行后:(AX)=? Step1:计算地址DS*16+2000H=32000H Step2:找内容(32000H),(32001H) 所以执行后:(AX)=4645H
第3章8086指令系统(上)
或
(SS)×16+(BP)
【例3-4】 已知:(DS)=3000H,(BX)=1100H,(31100H)= 12H,(31101H)=34H,执行指令:MOV AX, [BX]。 操作数的物理地址为:(DS)×16+(BX)=3000H×16+ 1100H=31100H,指令执行后(AX)=3412H。
本章内容提要
3.1 8086指令系统入门 3.2 数据据传送类指令 3.3 算术运算与逻辑运算类指令
3.1 8086指令系统入门
3.1.1 指令分类
数据传送类指令 算术运算类指令
字符串操作指令 处理器控制类指令
逻辑运算类指令
程序控制类指令
3.1.2 指令格式
操作码 [目的操作数][,源操作数]
3.1.3 操作数寻址
ADD SI, 2 LOOP LOP MOV BX, SI MOV DI, BX MOV 1000[DI], AX
;将累加和存入1000+(DI)指 ;向的内存单元
3.2 数据传送类指令
3.2.1 传送指令
格式:MOV DST, SRC 功能:将源操作数传送给目的操作数。 ① ② ③ ④ 在CPU内部寄存器之间进行数据传送 MOV AX,BX 在CPU内部寄存器与存储器之间进行数据传送 MOV AX,[1000H] 将立即数传送给寄存器 MOV AX,1234H 将立即数传送给存储单元 MOV [1000H],1000H
【例3-15】 已知:(DS)=3000H,(32000H)=12H,(32001H)= 34H,(32002H)=56H,(32003H)=78H。 执行指令:LDS SI, [2000H]。
8086指令操作数的寻址方式实验总结
8086指令操作数的寻址方式实验总结在计算机体系结构的学习中,8086指令操作数的寻址方式是一个非常重要的概念。
通过对这一概念的深入了解和实验操作,我们可以更好地理解计算机程序的执行过程,深化对计算机底层原理的理解。
在本文中,我将结合理论知识和实验结果,对8086指令操作数的寻址方式进行全面评估和总结。
1. 立即寻址立即寻址是一种直接将操作数的值嵌入指令中的寻址方式。
在8086指令集中,我们可以使用MOV指令将一个立即数传送到目的操作数中。
MOV AX, 1234h指令将立即数1234h传送到寄存器AX中。
通过实验操作,我发现立即寻址方式适用于需要直接传送常数值的情况,能够提高程序执行的效率。
2. 寄存器寻址寄存器寻址是一种通过寄存器来寻址操作数的方式。
8086微处理器具有通用寄存器AX、BX、CX、DX等,可以直接操作这些寄存器中的数据。
MOV AX, BX指令将寄存器BX中的数据传送到寄存器AX中。
在实验过程中,我发现寄存器寻址方式是一种高效的操作数寻址方式,能够提高程序的执行速度。
3. 直接寻址直接寻址是一种通过内存位置区域来寻址操作数的方式。
在8086指令集中,我们可以使用MOV指令将内存中的数据传送到寄存器中,或将寄存器中的数据传送到内存中。
MOV AX, [1234h]指令将存储在内存位置区域1234h处的数据传送到寄存器AX中。
实验结果表明,直接寻址方式可以灵活地对内存中的数据进行操作,适用于大规模数据的传送和处理。
4. 寄存器间接寻址寄存器间接寻址是一种通过寄存器中存储的位置区域来寻址操作数的方式。
在8086指令集中,我们可以使用指令将寄存器中存储的内存位置区域作为操作数进行操作。
MOV BX, [SI]指令将寄存器SI中存储的内存位置区域处的数据传送到寄存器BX中。
在实验中,我发现寄存器间接寻址方式适用于需要对内存中多个数据进行操作的情况,能够提高程序的效率和灵活性。
5. 立即偏移寻址立即偏移寻址是一种通过基址寄存器和偏移量来寻址操作数的方式。
第3章80888086指令系统(老师用的课件哦)
第3章 8088/8086指令系统
图3.5 变址寻址示意图
第3章 8088/8086指令系统
例:MOV AX,200AH[SI];或(AX)←
[(DS)*16+(SI)+200AH
EA=(SI)
+200AH,SI为变址寄存器,200AH为16位的位移量。
图3.6为用BP寄存器进行变址寻址时的示意图。
第3章 8088/8086指令系统
3.存储器操作数 存储器操作数是把操作数放在存储器单元中。对这 类操作数,在指令中必须给出存储器的地址。存储器 的实际地址(也称物理地址)是由指定的段基址和段内地 址偏移量(也称为有效地址EA)所决定的。由于段基址 相对很少改变,故一般预先予以指定,以后通过隐含 方法使用,即只要段基址未改变,其在汇编指令中便 不再出现。此时,只给出有效地址EA(以各种寻址方式 给出)。
第3章 8088/8086指令系统
3.2 8088/8086指令系统
3.2.1 数据传送指令 1 .数据传送指令MOV 指令格式:MOV OPRD1,OPRD2 MOV 为操作码。 OPRD1为目的操作数,可以是寄存器、存储器、
累加器。
第3章 8088/8086指令系统
OPRD2为源操作数,可以是寄存器、存储器、累 加器和立即数。
第3章 8088/8086指令系统
4.寄存器间接寻址
寄存器间接寻址的操作数类型为存储器操作数,与 直接寻址方式的区别是:该存储单元的16位段内偏移 地址,不是从指令代码中直接得到,而是从指令所指 定的寄存器中得到。能用于间接寻址的寄存器为SI、 DI、BX、BP。若以SI、DI、BX进行间接寻址,应由 数据段DS的内容作为段基址,间接寻址寄存器的内容 为段内偏移量,并指定形成操作数的物理地址。若以 寄存器BP间接寻址,则BP中的内容为段内偏移量,段寄 存器SS与之一起形成物理地址。寄存器间接寻址示意 图如图3.4所示。
8086七种寻址方式
8086/8088七种寻址方式(一)8086/8088寄存器组(二)8086/8088寻址方式(1)立即寻址方式操作数就包含在指令中,它作为指令的一部分,跟在操作码后存放在代码段。
这种操作数称为立即数,立即数可以是8位的也可以是16位的,如果立即数是16位的按“高高低低”的原则。
例如指令:MOV AX,1234H的存储和执行情况如下图:图中指令存放在代码段中,OP表示该指令的操作码部分再例如:MOV AL,5 则指令执行行,(AL)=05HMOV BX,3064H 则指令执行后,(BX)=3064H(2)寄存器寻址方式操作数在CPU内部的寄存器中,指令指定寄存器号。
对于16位操作数,寄存器可以是:AX,BX,CX,DX,SI,DI,SP,和BP等:对于8位数,寄存器可以是:AL,AH,BL,BH,CL,CH,DL,DH。
这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数,因而可以取得较高的运算速度。
例如:MOV AX,BX如指令执行前(AX)=3064H,(BX)=1234H;则指令执行后,(AX)=1234H,(BX)保持不变例如:MOV SI,AXMOV AL,DH(3)直接寻址方式操作数在寄存器中,指令直接包含有操作数的有效地址(偏移地址)。
操作数一般存放在数据段所以操作数的地址由DS加上指令中直接给出的16位偏移得到。
如果采用段超越前缀,则操作数也可含在数据段外的其他段中。
如下图所示:在汇编语言指令中,可以用符叼地址代替数值地址。
如:MOV AX,VALUE此时VALUE为存放操作数单元的符号地址。
如写成:MOV AX,[VALUE]也是可以的,两者是相等的。
如VALUE在附加段中,则应指定段超越前缀如下:MOV AX,ES:VALUE或MOV AX,ES:[VALUE]直接寻址方式常用于处理单个存储器变量的情况。
它可实现在64K字节的段内寻找操作数。
直接寻址的操作数通常是程序使用的变量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
其排列次序如下: 其排列次序如下:
操作码( ) 操作码(OP) 操作数( ) 操作数(OD)1 操作数( ) 操作数(OD)2 ……
第一个字节为操作码,后面的部分为操作数。 第一个字节为操作码 后面的部分为操作数。 后面的部分为操作数 1. 操作码(Operation Code,简称OP)字段 操作码( ,简称 ) 该字段指明计算机所要执行的操作类型。 该字段指明计算机所要执行的操作类型。在机器语 言中由一组二进制代码表示, 言中由一组二进制代码表示 , 在汇编语言中用助记 符代表。 符代表。 例如,加法操作用 例如 加法操作用“ADD”, 乘法操作用 加法操作用 , 乘法操作用“MUL”。
MOV AX,Im ,
AX AH AL 操作码 ImL ImH 代 码 段
它表示将立即数Im送到 寄存器中 其中将Im的 它表示将立即数 送到AX寄存器中,其中将 的 送到 寄存器中, 表示) 送到AL中 的高8位 低 8位 ( 用 ImL 表示 ) 送到 中 , 将 Im的高 位 ( 用 位 的高 表示)送到AH中 ImH表示)送到 中。 立即数Im可以是 位的 也可以是16位的 位的。 立即数 可以是8位的,也可以是 位的。 可以是 位的,
第二节 8086/8088 的寻址方式 /
指令中的操作数字段给出操作数的逻辑地址; 指令中的操作数字段给出操作数的逻辑地址; 高级语言及其多种数据结构需要处理器提 供有效而灵活的数据访问方法; 供有效而灵活的数据访问方法; 寻址方式的实质是由指令中的逻辑地址生 成物理地址的方法(即PA与EA的关系)。 成物理地址的方法( 与 的关系) 的关系 8086/8088的操作数可位于寄存器、 存储器或 / 的操作数可位于寄存器、 的操作数可位于寄存器 存储器或I/O 端口中。 端口中 。 对位于存储器的操作数可采用多种不同 方式进行寻址。 方式进行寻址。 一条指令一般都有源操作数( 一条指令一般都有源操作数 (src) 和目的操作数 ) (dst),要说明一条指令为何种寻址方式,应就源操 ),要说明一条指令为何种寻址方式, ),要说明一条指令为何种寻址方式 作数( 作数(src)和目的操作数(dst)分别加以说明。 )和目的操作数( )分别加以说明。
第一节 指令的基本格式
指令的符号用规定的英文字母组成,称为助记符 助记符。 指令的符号用规定的英文字母组成 , 称为 助记符 。 每条指令都是由二进制代码(即指令码)组成的, 每条指令都是由二进制代码 ( 即指令码 ) 组成的 , 计 算机通过解释每一条指令的含义, 算机通过解释每一条指令的含义 , 来执行指令所规 定的各种操作。 为此, 定的各种操作 。 为此 , 每条指令应包括下列基本信 息: 指明计算机的有关部件执行什么操作。 ① 指明计算机的有关部件执行什么操作。 指明参加操作的是一些什么样的数。 ② 指明参加操作的是一些什么样的数。 ③ 指明这些操作数存放在什么地方,以及通过什么 指明这些操作数存放在什么地方, 方式才能够找到它们。 方式才能够找到它们。 指明后继指令从哪里取出。 ④ 指明后继指令从哪里取出。
例如: 例如: MOV AX,1234H ;执行后 =1234H, 执行后AX= , 执行后 ;其中 =12H,AL=34H。 其中AH= 其中 = MOV AX,1000 , MOV AL,80H , ;执行后 =03E8H, 执行后AX= 执行后 ;其中 =03H,AL=0E8H。 其中AH= 其中 = ;执行后 =80H。 执行后AL= 执行后
2. 操作数(Operated Data,简称 操作数( ,简称OD)字段 ) 指令执行的操作过程中所需的操作数, 指令执行的操作过程中所需的操作数 , 操作数字 段可以是操作数本身、 段可以是操作数本身、 操作数地址或操作数地址 的运算方法, 的运算方法 , 还可以是指向操作数地址的指针或 其它的有关操作数的信息。 其它的有关操作数的信息。 8086指令可分为无操作数指令、单操作数指令、 指令可分为无操作数指令 指令可分为无操作数指令、单操作数指令、 双操作数指令 。 一个操作数称为单操作数, 一个操作数称为单操作数,两个操作数称为双操作 数 。 源 操 作 数 src(Source) 和 目 的 操 作 数 ( ) dst(Destnation) 。 在指令执行前 ,src和 dst均可 ( ) 在指令执行前, 和 均可 以是参加运算处理的操作数,指令执行后 执行后, 以是参加运算处理的操作数,指令执行后,dst中则 中则 存放运算处理的结果。 存放运算处理的结果。
二、寄存器寻址方式(Register Addressing) 寄存器寻址方式( )
操作数存放在寄存器中,由指令指定寄存器的名称。 操作数存放在寄存器中 由指令指定寄存器的名称。 由指令指定寄存器的名称 16位寄存器 位寄存器:AX、 BX、 CX、 DX、 SI、 DI、 SP和 位寄存器 、 、 、 、 、 、 和 BP等——存放 位操作数。 存放16位操作数 等 存放 位操作数。 8位寄存器: AH、AL、BH、BL、CH、CL、DH和 位寄存器: 、 、 、 、 、 、 和 位寄存器 DL——存放 位操作数。 存放8位操作数 存放 位操作数。 MOV CX,AX ;16位寄存器传送 位寄存器传送,AX→CX , 位寄存器传送 假设该指令执行前AX= 假设该指令执行前 = 1234H,CX= 5678H,则指令 = 则指令 执行后,CX=1234H,而AX的内容保持不变。 的内容保持不变。 执行后 = 而 的内容保持不变 MOV DL,CL ;8位寄存器传送 位寄存器传送,CL→DL , 位寄存器传送
第三章 8086/8088的寻址方式和指令系统 / 的寻址方式和指令系统
本章学习目的
1. 掌握 掌握8086的指令格式和寻址方式; 的指令格式和寻址方式; 2. 掌握数据传送、算术运算、逻辑运算与移位、串操 掌握数据传送 算术运算、逻辑运算与移位、 数据传送、 控制转移、处理器控制等指令的功能、格式及 等指令的功能 作、控制转移、处理器控制等指令的功能、格式及 的影响; 各条指令执行后对标志F的影响 各条指令执行后对标志 的影响; 3.掌握基本 掌握基本DOS功能 调用 ( 键盘输入 、 显示输出 、 屏 功能调用 掌握基本 功能 调用( 键盘输入、 显示输出、 幕设置等 返回指令的使用方法 指令的使用方法; 幕设置等)及返回指令的使用方法; 4.能用学过的指令语句写出能完成一定功能的程序片 能用学过的指令语句写出能完成一定功能的程序片 能用学过的指令语句写出能完成一定功能的 段。
概
述
指令:是计算机用以控制各部件协调动作的命令; 指令 是计算机用以控制各部件协调动作的命令; 是计算机用以控制各部件协调动作的命令 指令系统:CPU可执行的指令的集合; 可执行的指令的集合; 指令系统 可执行的指令的集合 机器指令:是 仅能识别的指令的二进制代码,也 机器指令 是CPU仅能识别的指令的二进制代码 也 仅能识别的指令的二进制代码 称机器码; 称机器码; 指令格式:由操作码和操作数两部分组成 有些指令 指令格式 由操作码和操作数两部分组成,有些指令 由操作码和操作数两部分组成 无操作数。操作码规定了指令的操作性质,用助记 无操作数 。 操作码规定了指令的操作性质 用助记 符表示;操作数规定了指令的操作对象。 符表示;操作数规定了指令的操作对象。
一、立即数寻址方式(Immediate Addressing) 立即数寻址方式( )
在这种寻址方式下,操作数直接包含在指令中, 在这种寻址方式下,操作数直接包含在指令中,它是 方式下 一个8位 或 16位 的常数, 也叫立即数 。 这类指令翻 一个 位 位 的常数 , 也叫 立即数。 立即数 译成机器码时,立即数作为指令的一部分, 译成机器码时,立即数作为指令的一部分,紧跟在操 作码之后,存放在代码段内。如果立即数是16位数 位数, 作码之后 ,存放在代码段内 。如果立即数是 位数 , 则高字节存放在代码段的高地址单元中, 则高字节存放在代码段的高地址单元中 , 低字节放 在低地址单元中。 在低地址单元中。
二、8086/8088符号指令的书写格式 / 符号指令的书写格式
8086符号指令语句格式如下: 符号指令语句格式如下: 符号指令语句格式如下 [标号 指令助记符 操作数 [;注释 标号:] 标号 ;注释] 其中带[ 号的标号和注释可以缺省 号的标号和注释可以缺省。 其中带 ]号的标号和注释可以缺省。 后面必须跟冒号,它可缺省, 后面必须跟冒号,它可缺省,是可供选择的 自定义标志符。标识符遵循“ 以字母打 自定义标志符 。 标识符遵循 “ :”以字母打 不超过31个字符长度 个字符长度。 头,不超过 个字符长度。 是指令功能的代表符号, 指令助记符 是指令功能的代表符号 , 它是指令 语句的关键字,不可缺省。 语句的关键字,不可缺省。 是参加本操作的数据。 操作数 是参加本操作的数据。 注释 是以“ 开头的说明部分, 是以 “ ; ” 开头的说明部分 , 可以用英 文或中文书写,注释允许缺省。 文或中文书写,注释允许缺省。 标号
一、机器码格式
指令机器码
操作码
+
操作数
指明操作类型(助记符) 指明操作类型(助记符)
指明指令操作对象或操作对象存放地址: 指明指令操作对象或操作对象存放地址: 源操作数src和目的操作数 和目的操作数dst 源操作数 和目的操作数 8086指令的机器码是可变长的,有1~6个字节。 指令的机器码是可变长的, 个字节。 指令的机度快 : 因操作数就在 执行速度快: 因操作数就在CPU内部 , 不执行 内部, 内部 总线周期; 总线周期; 2. 源操作数和目的操作数都可使用寄存器寻址。 源操作数和目的操作数都可使用寄存器寻址。 注意:源操作数的长度必须与目的操作数一致, 注意 : 源操作数的长度必须与目的操作数一致 , 否 则会出错。 则会出错。 例如,MOV CX,AH 例如 , × 尽管CX寄存器放得下 的内容, 寄存器放得下AH的内容 尽管 寄存器放得下 的内容 , 但汇编程序不知 道将它放到CH还是 还是CL。 道将它放到 还是 。