lec04讲义 8086寻址方式

合集下载

微机原理课件第三章8086寻址方式和指令系统

微机原理课件第三章8086寻址方式和指令系统
2取 单.如操元果作的指数 地令寄, 址中存钥 。用器匙对寄就于间存或相寄接器=当存D寻B于器SP址×进存间1方行储接6+式间D接I的寻E址A计,寄则算存默器 认操作
数寻在址堆方栈式段来中说,,操就作相数当的于段钥地匙址在段寄存器SS中,操 作放数在的寄物存理器地中址,=即SS寄×存1器6+给BP出。 了要访问的存储单元地址。
DS 3000H ×16

SI 2000H
操作码
+ COUNT 4000H
00
代码段
40
寄存器3相60对00H寻址方式也允许使┋用段超越前缀,
如MOV BX,ES:COUNT[DI]则段地址为ES,物
理地址=ES×16+DI+COUNT。
BH
BL

BX 56
78
36000H
78
56
数据段

指令MOV BX,COUNT[SI]的执行过程
{{ }} 组合起来([B只X能]+相[S加I)]+,D同8或时D还1可6 以加上一个8位或
((1SE86IE8和位A种A种=D的=)I)位也移不[[[[[[[BBB量能BSDBXPPPIIX]],]同]]]]+++但时++++[[[DDDDSDB出8888IIIX现或 或或 或]]]和+++在DDBDDD11P方1188866不66或 或 或括能DDD号111同寄中666时;存出器现相 变在相对 址方对基 寻括寻号址 址址中,
{ 设((D3E86A种S0==0M)300HO0)V[[[[0HBSBD=XIPIB,5]]]]X6或S7,+I8=18H[2S6位0I位0+位0C位H移O,移U量位N量T移] 量COU默 默N认 认T=DS4SS0段 段00H,

微机原理第三章8086的寻址方式和指令系统PPT课件

微机原理第三章8086的寻址方式和指令系统PPT课件

04 寻址方式和指令系统的关 系
寻址方式对指令执行的影响
01
寻址方式决定了指令操作数的来源和访问方式,从而
影响指令的执行效率和正确性。
02
不同的寻址方式可能导致指令执行时间不同,因为它
们可能需要不同的计算步骤和内存访问次数。
03
寻址方式的正确选择可以简化指令的执行过程,提高
指令的执行效率。
指令系统对寻址方式的支持
在个人电脑(PC)领域,IBM PC/AT是基于8086的扩展版 80286开发的,奠定了现代PC 的基础。
8086也被广泛应用于工业控制、 自动化设备、仪器仪表等领域。
现代计算机系统中8086的继承和发展
尽管随着技术的进步,更先进的微处理器已经取代了8086在主流应用中的地位, 但8086的设计理念和架构仍然在许多嵌入式系统、低功耗应用中得到继承和发展 。
CALL指令用于调用子程序, 并将返回地址压入堆栈。
处理器控制类指令
处理器控制类指令用于控制 处理器的状态和行为。
包括HLT、INT、IRET等指令。
02
01
03
HLT指令用于暂停处理器执 行,等待中断或系统调用。
INT指令用于触发软件中断, 执行中断处理程序。
04
05
IRET指令用于从中断返回, 恢复程序的执行。
算术运算类指令用于执行 加、减、乘、除等算术运 算。
ADD指令将两个操作数 相加并将结果存储在目标 操作数中。
ABCD
包括ADD、SUB、MUL、 DIV等指令。
SUB指令从第一个操作数中 减去第二个操作数,并将结 果存储在目标操作数中。
逻辑运算类指令
逻辑运算类指令用于执行逻 辑与、或、非等逻辑运算。

(3)8086寻址方式与指令系统

(3)8086寻址方式与指令系统
该指令的目标操作数采用直接寻址方式。操作数存放 在由ES指示的附加段中。 物理地址=ES×10H+1225H。
在汇编语言指令中,可以用符号地址代替数值地 址。 例如: MOV AX,NUMA
此时,NUMA是存放操作数的内存单元的符号地址。
上面这条指令还可以写成如下的形式: MOV AX,[NUMA] 如DATA1数据存放在附加段,则可以用如下的形 式指定段跨越前缀: MOV AX,ES: NUMA或 MOV AX,ES:[ NUMA]
4.2 8086寻址方式
寻址方式:
指令中给出的寻找操作数有效地址的方法。
寻址操作:
计算机按照指令给出的寻址方式求出操作数有效地址 的过程。
808的七种基本的数据寻址方式
(1)立即寻址; (2)寄存器寻址; (3)直接寻址; (4)寄存器间接寻址; (5)寄存器相对寻址; (6)基址变址寻址; (7)相对基址变址寻址。
MOV指令的使用说明
源操作数可以是立即数、寄存器或内存操作数。 目标操作数可以是寄存器或内存操作数。 立即数和CS寄存器只能作为源操作数,不允许作 为目标操作数。 IP和PSW都不可作为源操作数或是目标操作数。 立即数不允许直接传送至DS、ES或SS寄存器。 源操作数和目标操作数不允许同时是内存操作数 ,也不允许同时是段寄存器。 源操作数和目标操作数的类型必须相同,即同为 字节类型或字类型。
控制转移指令
4.3.1数据传送指令
数据传送指令是将数据或地址传送到寄存器、存 储单元或I/O端口中。 分为5类: 通用数据传送指令;


累加器专用传送指令;
地址传送指令;


标志传送指令;
数据类型转换指令。
数据传送指令的共同特点

第三章 8086的寻址方式和指令系统[3-1]

第三章 8086的寻址方式和指令系统[3-1]
10
存储单元个数 1 2 4
§3-1 8086的寻址方式 8086的寻址方式
一、概述
6、寻址方式 、
定义:指令中用于说明操作数所在地址的方法。 定义:指令中用于说明操作数所在地址的方法。
一个指令系统能够提供哪些寻址方式,能否为编制程序提供方便, 一个指令系统能够提供哪些寻址方式,能否为编制程序提供方便, 这是指令系统设计的关键。 这是指令系统设计的关键。 说明:在不同的计算机系统中,寻址方式的名称和分类并不统一。 说明:在不同的计算机系统中,寻址方式的名称和分类并不统一。
8 8
码 段
02H 31H
15
§3-1 8086的寻址方式 8086的寻址方式
一、立即寻址(Direct Addressing) 立即寻址( )
注意: 注意:
(1)在所有指令中,立即数只能用于源操作数,而不 )在所有指令中,立即数只能用于源操作数, 能作目的操作数。 打头的数字出现在指令中时, (2)以A~F打头的数字出现在指令中时,前面一定要 ) ~ 打头的数字出现在指令中时 加一个数字0,以免与其它符号混淆。 加一个数字 ,以免与其它符号混淆。 例: MOV MOV MOV × MOV AX, 2A00H AL, ‘A’ [BX+2100H], 0FA50H 2A00H, AX ; 错误! 错误!
(2)双操作数指令 如 ADD AX, BX 双操作数指令:如 双操作数指令 大多数运算型指令都是双操作数指令。 大多数运算型指令都是双操作数指令。 (3)无操作数指令:如 NOP(空操作指令) )无操作数指令: (空操作指令)
6
§3-1 8086的寻址方式 8086的寻址方式
5、现代微型计算机中多采用双操作数指令,两个操作数分别称为 现代微型计算机中多采用双操作数指令,

8086中的七种寻址方式

8086中的七种寻址方式

8086中的七种寻址⽅式寻址⽅式8086/8088有七种基本的寻址⽅式:⽴即寻址,寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对寻址,基址变址寻址,相对基址变址寻址。

其中,后五种寻址⽅式(即直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址和相对基址变址寻址)属于存储器寻址,⽤于说明操作数或操作数地址所在存储单元的地址。

这五种⽅式也就是确定存放操作数的存储单元有效地址EA的⽅法,这⾥所说的有效地址就是在前⾯⼀节讲存储器分段中所说的段内偏移地址。

除了这些基本的寻址⽅式以外,还有固定寻址和I/O端⼝寻址等,但不会在本节中介绍到。

基本寻址⽅式下⾯重点说⼀下这七种基本寻址⽅式的特点:1. ⽴即寻址⽅式先解释⼀个概念,叫做⽴即数。

操作数包含在指令中,它作为指令的⼀部分,跟在操作码后存放在代码段。

这种操作数称为⽴即数。

⽴即寻址⽅式所提供的操作数紧跟在操作码后⾯,与操作码⼀起放在指令代码段中,不需要到其他地址单元中去取。

⽴即数可以是8位,也可以是16位。

这种寻址⽅式主要⽤于给寄存器或存储单元赋初值的场合。

⽴即寻址⽅式是这七种寻址⽅式中速度最快的寻址⽅式。

举例:MOV AX, 1234H ; 给AX寄存器赋值为1234H2. 寄存器寻址⽅式寄存器寻址的特点是操作数在CPU内部的寄存器中,在指令中指定寄存器号。

对于16位操作数,寄存器可以是AX、BX、CX、DX、SI、DI和SP等;对于8位操作数,寄存器可以是AL、AH、BL、BH、CL、CH、DL和DH。

例如:MOV SI, AXMOV AL, DH由于操作数在寄存器中,不需要通过访问存储器来取得操作数,所以采⽤寄存器寻址⽅式的指令执⾏速度较快。

3. 直接寻址⽅式直接寻址的操作数在存储器中,指令直接包含有操作数的有效地址。

由于操作数⼀般存放在数据段,所以操作数的地址由DS加上指令中给出的16位偏移得到。

假如DS内容是5000H,地址为51234H字存储单元中的内容时6789H,那么在执⾏“MOV AX, [1234H]”后寄存器AX的内容是6789H。

8086指令格式和寻址方式

8086指令格式和寻址方式

物理地址=
CS DS SS × 10H + EA ES
第4章 80x86指令系统
寻找存储器操作数,必须经过总线控制逻辑电 路进行存取。当EU单元需要读/写位于存储器的操作 数时: ①根据寻址方式(指令中的B2字节),由EU计算 出操作数的偏移量,即有效地址EA; ②将EA送至BIU单元,同时请求BIU执行一个 总线周期; ③BIU将某个段寄存器的内容左移4位,在加上 EU送来的EA,形成20位的实际地址,即物理地址 PA; ④执行总线周期,读/写指令所需要的操作数。 计算EA的通式为:
第4章 80x86指令系统
由此可见,操作数可分为源操作数和目的操作
数。 源操作数:只能读取的操作数。 目的操作数:即可读取又可写入(存放操作结 果)的操作数。
操作数又可分为两大类:数据操作数和地址操 作数。
第4章 80x86指令系统
指令长度与字长的关系
指令的长度主要取决于指令操作码的长度、操作 数的长度和操作数的个数。通常指令字长位数越多, 所能表示的操作信息也就越多,指令功能就越丰富。 但位数多则指令所占的存储空间就多,读取指令的时 间就增加。 字长(一般是指CPU的机器字长)是指CUP一次能 够处理的二进制数位数,它都是字节长度(8位二进制 数)的1、2、4或8倍,也就是8、16、32或64位。因此, 指令字长也是字节的简单倍数,如一字节指令,二字 节指令、三字节指令……。
000000DW mod reg 000 r/m 001 Disp-L Disp-H
000000 1 1
0000 0011
10
00100110
0010 0110
00001000
0000 1000
1000 0001
03H

第3章 8086的寻址方式

第3章 8086的寻址方式
➢ 最后一个字节就是8位位移量〔D8=〕00
第3章 8086指令的寻址方式
其它机器代码形式
操作码 操作数
mov al,05 ;机器代码是B0 05 ➢ 前一个字节B0是操作码(含一个操作数AL),后
一个字节05是立即数
mov ax,0102H ;机器代码是B8 02 01 ➢ 前一个字节B8是操作码(含一个操作数AX),后
第3章 8086指令的寻址方式
3.1.1 8086的机器代码格式
1/2字节 操作码
0/1字节
0/1/2字节
mod reg r/m 位移量
0/1/2字节 立即数
操作数 ➢ 表明采用的寻址方式(表1.7) ➢ 给出某些寻址方式需要的对基地址的偏移量
➢ 给出立即寻址方式需要的数值本身
第3章 8086指令的寻址方式
指令操作数BH BL CH CL DH DL
➢r16——任意一个16位通用寄存器
AX BX CX DX SI DI BP SP
➢reg——代表r8或r16 ➢seg——段寄存器 CS/DS/ES/SS
第3章 8086指令的寻址方式
指令操作数的表达-存储器
两个字节02 01是16位立即数(低字节02在低地址)
第3章 8086指令的寻址方式
指令的助记符格式
示例
操作码 操作数1,操作数2 ;注释
➢ 操作数2,称为源操作数 src,它表示参与指令操 作的一个对象
➢ 操作数1,称为目的操作数 dest,它不仅可以作 为指令操作的一个对象,还可以用来存放指令操 作的结果
➢ 指令中的操作数: 可以是一个具体的数值 可以是存放数据的寄存器 或指明数据在主存位置的存储器地址
第3章 8086指令的寻址方式

第三章_8086的寻址方式和指令系统[3-3.1]

第三章_8086的寻址方式和指令系统[3-3.1]
10
(其中:JNZ为条件转移指令,表示结果不为零则转移)
§3-3 8086的指令系统
2.算术逻辑移位指令(Shift Arithmetic and Shift Logical)
这类指令可对寄存器、存储器中的字或字节的各位进行算术移位或 逻辑移位,移位的次数由指令中的计数值决定。
算术左移指令 SAL(Shift Arithmetic Left)
6
§3-3 8086的指令系统
(3)OR逻辑或指令(Logical OR)
指令格式:OR 目的,源
指令功能:目的目的∨源 指令用途:主要用于使操作数的某些位保留(和“0”相或),而使某些位 置位(和“1”相或)。
例1: MOV AX, 3538H AND OR AX, 0F0FH AX,3030H ; AX 0508H ; AX 3538H
算术右移指令 SAR(Shift Arithmetic Right) 逻辑左移指令 SHL(Shift Logic Left) 逻辑右移指令 SHR(Shift Logic Right)
这4条指令的格式相同,以SAL为例:
SAL mem/reg,
CL
1
;移位位数大于1时
;移位位数等于1时
例: MOV CL, 05H
解:MOV AL,1000 0101B
MOV CL,03H SHR 运行结果: AL,CL
;AL=133
;CL=移位次数
;右移3次
指令执行后,AL=00010000B=10H=16,余数5被丢失。 标志位CF=1,ZF=0,SF=0,PF=0,OF和AF不定。
15
§3-3 8086的指令系统
(4)SAR算术右移指令(Shift Arithmetic Right)

8086CPU中的寻址方式一

8086CPU中的寻址方式一

8086CPU中的寻址⽅式⼀寻址⽅式定义寻址⽅式:求操作数所在地或者所在存储器地址单元的⽅式。

指令中的操作数,⼤多数都在存储器单元当中,也可以在寄存器⾥⾯,也可以是在指令中⽴即给出的常数。

我们都把求得她们的⽅式归属于寻址⽅式。

类型寻址⽅式按求得的操作数的⽬的不同,可以分为两类:1. 数据⽤2. 程序要实现转移的地址⽤如果要实现段内转移,就需要求得段内偏移地址给IP⽤,如果要实现段间转移,除了偏移地址外,还需要求得⽬的地的段地址给CS⽤。

要计算的数据的所在存储地址怎么得到,或者转移的地址内容的所在存储地址怎么得到,就需要⽤以⼀种寻址⽅式去求得。

关于数据的寻址⽅式1.⽴即数寻址要寻找的操作数在指令中⽴即给出,直接以常数给出。

如mov AX,1234HAX是⽬的操作数,1234H是源操作数,对于源操作数⽽⾔,采⽤的就是⽴即数寻址。

指令中要传送给AX的数据在哪⾥呢?指令中⽴即给出了。

这就叫⽴即数寻址。

要搞清楚8086⽴即寻址,就需要了解谁和谁之间可以传送从图中可知,在8086当中,⽴即数只能作为源操作数。

⽴即数传送数据时要类型明确。

mov [0002H],15H中括号⾥⾯表⽰的是地址,这条语句是把⽴即数15H送到地址为0002H的存储器单元中。

但是我们只知道地址是多少,不知道存储器单元的存储类型是什么?语法错误。

类型不明确。

这中问题只要源操作数和⽬标操作数有⼀⽅明确,双⽅均能明确(不⼀致另说)。

双⽅不明确,类型不明确。

改mov WORD PTR [0002H],15H如果要传送数据给段寄存器,不能直接⽴即数传送,要按箭头⾛。

从图中也可以看出,段寄存器CS单独划分出来,因为⽤户⽆法改变CS的内容,和IP寄存器⼀样,开机的内容由操作系统完成。

执⾏期间是由CPU完成转移指令改变。

CS和IP不能做⽬标操作数,但是可以做源操作数。

2.寄存器寻址指要寻找的操作数在某寄存器当中。

如mov AX,BX对于源操作数⽽⾔,要操作的数据在BX寄存器中,这就是寄存器寻址。

8086寻址方式及举例

8086寻址方式及举例

8086寻址方式及举例8086寻址方式指的是在Intel 8086处理器中进行内存访问的方式。

8086寻址方式主要有以下几种:1. 直接寻址(Direct addressing):给出地址直接访问内存中的数据。

2. 寄存器寻址(Register addressing):使用寄存器中存放的地址进行内存访问。

3. 寄存器间接寻址(Register indirect addressing):使用寄存器中存放的地址作为内存地址的间接寻址方式。

4. 寄存器相对寻址(Register relative addressing):使用一个寄存器中存放的地址作为起始点,加上一个常数作为偏移量。

5. 基址加变址寻址(Base + index addressing):使用基址寄存器和变址寄存器相加得到内存地址。

6. 相对基址加变址寻址(Base + index + offset addressing):使用基址寄存器、变址寄存器和一个常数作为偏移量相加得到内存地址。

举例:1. 直接寻址: MOV AX, [1000H] 表示将内存地址为1000H的数据复制到AX寄存器中。

2. 寄存器寻址: MOV AX, BX 表示将BX寄存器中的数据复制到AX寄存器中。

3. 寄存器间接寻址: MOV AX, [BX] 表示将内存地址为BX寄存器中的数据所指向的内存单元中的数据复制到AX寄存器中。

4. 寄存器相对寻址: MOV AX, [BX+2] 表示将内存地址为BX寄存器中的数据加上2所得到的地址中的数据复制到AX寄存器中。

5. 基址加变址寻址: MOV AX, [BX+SI] 表示将基址寄存器BX和变址寄存器SI中的数据相加得到的地址中的数据复制到AX寄存器中。

6. 相对基址加变址寻址: MOV AX, [BX+SI+2] 表示将基址寄存器BX和变址寄存器SI中的数据相加得到的地址再加上2所得到的地址中的数据复制到AX寄存器中。

lec04 8086寻址方式

lec04 8086寻址方式


CS: SS: DS: ES:
;代码段超越,使用代码段的数据 ;堆栈段超越,使用堆栈段的数据 ;数据段超越,使用数据段的数据 ;附加段超越,使用附加段的数据
段寄存器的使用规定 总结
访问存储器的方式
取指令 堆栈操作 一般数据访问 BP基址的寻址方式 串操作的源操作数
默认
CS SS DS SS DS

;方法4,寄存器相对寻址: LEA BX,DWAR ;WVAR数组首个元素地址臵入BX MOV AX,3*2[BX]


;方法5,基址变址寻址: LEA BX,DWAR ;WVAR数组首个元素地址臵入BX MOV SI,3*2 ;第4个元素距首个元素的位移量为3*2,臵入变址寄存器SI MOV AX,[BX+SI] ;方法6,相对基址变址寻址:(本例中该方法不是很恰当) LEA BX,DWAR ;WVAR数组首个元素地址臵入BX MOV SI,4 ;第3个元素距首个元素的位移量为2*2,臵入变址寄存器SI MOV AX,[BX+SI+2] ;第4个元素距第2个元素的位移量为2,作为相对量。

操作数1,目的操作数 DST,


分号后的内容是对指令的解释
2. 8086的寻址方式
一、与数据有关的寻址方式:以 MOV 指令为例
• 立即寻址
MOV AX , 3069H

• • • • •
寄存器寻址
直接寻址 寄存器间接寻址 寄存器相对寻址 基址变址寻址 相对基址变址寻址
存储器寻址
MOV AL , BH
* 只能用于 SRC 字段 * SRC 和 DST 的字长一致
MOV 40H, AL
MOV AH, 3064H
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档