8086指令系统.ppt

合集下载

第6章 8086指令系统与汇编基础

第6章 8086指令系统与汇编基础

第13页
2013年8月1日星期四
第6章
8086指令系统与汇编基础 3.段地址寄存器
有 CS、DS、ES、SS 四 个 , 分 别 表 示 程 序 码 ( code segment register)、 数 据 ( data segment register)、附加(extra segment register)、堆栈 (stack segment register)段地址用。在 DOS 系统 中,每一个段地址容量只有 64KBytes。 当数据段地址不够用时,就可以用附加数据段地址 来补足,例如想要将一个段地址的某些内容复制到 另一段地址中,就可以同时指定 DS、ES 分别表示 这两个段地址。
第17页 2013年8月1日星期四
第6章
6.2.4
8086指令系统与汇编基础
寄存器间接寻址(Register Indirect Addressing) 寄存器间接寻址方式中,操作数存放在存储器 中,但操作数的有效地址EA在基址寄存器BX、BP或 变址寄存器SI、DI中。操作数的物理地址为: 物理地址=16(段寄存器)+(寄存器)
执行结果为:(AX)=8060H 指令中也可指定段跨越前缀以取得其它段中的 数据。如:MOV AX,ES:[BX]指令,则从附加段中 取得数据。
操作码
DS 3000 0 BX + 200 0
代 码

30000 32000 AH AL
60 80
3200 0
数 据

图 6- 2- 2
例 6 - 5 的执行过程
第3页 2013年8月1日星期四
第6章
8086指令系统与汇编基础
计算机只能识别二进制代码,因此计算机能执行 的指令必须以二进制代码的形式表示,这种以二进制 代码形式表示的指令称为指令的机器码(Machine Code)。 2.汇编指令格式 一条指令一般包含操作码和操作数两部分。

48086CPU指令系统

48086CPU指令系统
• 不能使用段寄存器
XCHG DS,ES XCHG AX,DS XCHG DS,[ BX ] • 不能使用双存储器 XCHG [ BX ],[ SI ] • 不能使用立即数 XCHG AX,2000H XCHG 20H,BL
《例》用 MOV、PUSH,POP、XCHG 指令 完成两寄存器AX、BX 中数据的交换
• 指令格式

指令功能
OPR1、OPR2 两个操作数间交换数据
数据传送类指令
XCHG指令的应用范围
• 通用寄存器与通用寄存器间交换数据
XCHG AX,BX XCHG DL,CH • 通用寄存器与存储器间交换数据 XCHG AX,[ BX ] XCHG [ SI ],AL
数据传送类指令
XCHG指令的 禁用情况
通用传送指令 PUSH、POP 中 src、dst 操作数的使用
• 为通用寄存器、段寄存器操作数
PUSH AX、PUSH ES POP DS、 POP BX • 为存储器操作数 PUSH [ 2000H ]、PUSH [ BX ] POP [ BX ]、 POP [ 1000H ]
通用传送指令PUSH、POP中 src、dst 操作数的禁用
数据传送类指令
指令 LEA 与 LDS,LES 的区别
• LEA src
scr 表示存储器地址本身
• LDS r,src
LES r,src src 表示存储器地址中的值
地址传送指令的比较
已知:DS=09A0H,BX= 0048H
LEA DI,[BX] → 执行后:DI=0048H 等价于 MOV DI,OFFSET [BX] LDS DI,[BX] → 执行后:DI=003EH DS=0816H LES DI,[BX] → 执行后:DI=003EH ES=0816H Memory

微机原理5_8086指令系统08

微机原理5_8086指令系统08

• 指令中的操作数:
– 可以是一个具体的数值 – 可以是存放数据的寄存器 – 或指明数据在主存位置的存储器地址
6
双操作数指令
MOV dst, src ; (dst) (src) ↑ ↑ ↑ 助记符 目的 源操作数 操作数 例: MOV AH,BL MOV AX,1234H
ADD dst, src ; (dst) (dst)+(src) ↑ ↑ ↑ 助记符 目的 源操作数 操作数 例: ADD AL,36H ADD BX,CX 大多数运算型指令都是双操作数指令,对这种指令, 有的机器(大中型)使用“三地址”指令:除给出参加 运算的两个操作数外,还要指出运算结果的存放地址 7
18
寄存器寻址
19
特 点
(1) 操作数就在寄存器中,不需要访问存
储器来取得操作数(指令执行时,操作就在 CPU的内部进行),因而执行速度快。
(2)寄存器号比内存地址短 * 在编程中,如有可能,尽量使用这种寻址 方式的指令。 * 寄存器寻址方式既可用于源操作数,也可 用于目的操作数,还可以两者都用于寄存器寻 址方式(如 MOV BX , AX )
物理地址 = 16d (DS) +
BP (SS)
(SI)
(DI)
28
物理地址 = 16d (SS) + (BP)
例:
MOV AX, [BX] MOV ES:[BX] , AX MOV DX, [BP] • MOV AX , [BX] ;
设 ( DS) = 2000H ,(BX) = 1000H PA =20000H + 1000H =21000H 指令的执行结果为: (AX) = 50A0H *指令中也可以通过“段跨越前缀”取 得其他段中的数据, 例如: MOV AX,ES: [BX] PA = 16d (DS) + (BX) PA = 16d (ES) + (BX) PA = 16d (SS) + (BP)

第二章 8086系统

第二章  8086系统
通过本章的学习,应该掌握以下内容:
8086/8088微处理器的结构及指令执行的操作 过程 8086/8088微处理器的寄存器组织、存储器组 织、I/O组织、堆栈 8086/8088在最小模式下引脚功能 8086/8088微处理器在最小模式下的典型配置 8086的操作时序
第二章
8086/8088系统结构
2、物理地址和逻辑地址 8086系统中的每个存储单元在1M内存空间中的位 置可以用2个形式的地址来表示。 物理地址(实际地址、绝对地址)和逻辑地址。
物理地址:是用唯一的20位二进制数所表示的地 址,规定了1M字节存储体中某个具体单元的地址 。 CPU与存储器之间进行信息交换都需要提供的地 址,范围00000H—FFFFFH。
BP作基址寻址 SS 一般数据存取 源字符串 目的字符串 DS DS ES
5、8086存储器的分体结构 由于访问存储器的操作类型不同,BIU所使用的逻辑 地址来源也不同。 (1)存储体
15 00001 00003 00005 512KB× 8(位) 奇地址存储体 (A0=1) 512KB× 8(位) 偶地址存储体 (A0=0) 8 7 0 00000 00002 00004
数据DS、ES:存放数据和运算结果; 堆栈段SS:用来传递参数,保存数据和状态信息。
CS IP
0000
代码段
DS或ES
0000
数据段
SI、DI或BX
SS
0000 SP或BP
堆栈段 存储器
段寄存器和偏移地址寄存器组合关系
存储器分段的好处 (1)使指令系统中的大部分指令仅涉及16位偏移 地址,减少了指令长度,提高了程序的执行速度。 (2)为程序在内存中的浮动分配创造了条件。由 于程序可以浮动地装配在内存任何一个区域。这 使得多道程序和多任务程序能充分使用现有的存 储器容量。

第3章 80868088指令系统3(算术运算指令)PPT课件

第3章 80868088指令系统3(算术运算指令)PPT课件

INC SI
;(SI)+1
DEC CX
;(CX)-1
JNZ LL
;若(CX)0,则转LL
思考:若最高位有进位,如何改?
11
ADD/ADC指令对条件标志位(CF/OF/ZF/SF)的影响:
SF=
1 结果为负 0 否则
ZF=
1 结果为0 0 否则
CF=
1 0
和的最高有效位有向高位的进位 否则
OF= 1 两个操作数符号相同,而结果符号与之相反
无符号数 有符号数
0000 1000
8
+8
+1111 1101 10000 0101
结果5
+253 261 CF=1
+(-3) +5
OF=0
③ 有符号数溢出
0000 1000
8
+8
+0111 1101 +125 +(+125)
1000 0101 133
+133
结果-123
CF=0
OF=1
(补码表示)
2
• 两个8位数相加时有4种情况:
无符号数范围0~255 带符号数范围-128~127 ①无符号数和有符号数均不溢出
二进制相加 0000 1000 +0001 1110 0010 0110
无符号数加 8
+ 30 38
有符号数加 +8
+ (+30) +38
结果38
CF=0
OF=0
3
② 无符号数溢出
作用类似于C语言中的”--”操作符。
格式:DEC opr 操作:opr←(opr)-1

8086指令系统

8086指令系统

第2章
第2章
2.1.2 堆栈操作指令
堆栈是一个“后进先出
FILO” ( 或说“ 先进 后 出 FILO” )的主存区域, 位于堆栈段中;SS段寄 存器记录其段地址 堆栈只有一个出口,即 当前栈顶;用堆栈指针 寄存器SP指定 栈顶是地址较小的一端 (低端),栈底不变
第2章
堆栈的操作
堆栈只有两种基本操作:进栈和
第2章
更改时钟频率的变速齿轮
修改系统时钟频率: mov al, 34h //写入8253控制寄存器 out 43h,al mov ax,Count //count定时值 out 40h,al //写定时值低位 mov al,ah out 40h,al //写定时值高位
课间休息
字节送低字节,高地址字节送高字节
堆栈操作遵循先进后出原则,但可用存储器
寻址方式随机存取堆栈中的数据 堆栈常用来

临时存放数据 传递参数 保存和恢复寄存器
例题 2.11
第2章
2.1.3 标志传送指令
标志寄存器传送指令用来传送标
志寄存器FLAGS的内容 标志位操作指令直接对 CF、 DF、 IF标志进行复位或置位
有3条指令
MOV
XCHG
MOV
XLAT
XCHG
XLAT
第2章
1. 传送指令MOV(move)
MOV
把一个字节或字的操作数从源地址传
送至目的地址
MOV reg/mem,imm
例题 2.1
例题 2.2 ;立即数送寄存器或主存 MOV reg/mem/seg,reg 例题 2.3 MOV;寄存器送(段)寄存器或主存 reg/seg,mem 例题 2.5 ;主存送(段)寄存器 MOV reg/mem,seg

第三章 8086 8088指令系统

第三章 8086 8088指令系统

SI 1200
+)
6000 0 1200 61200 AX 33 44
61200H 61201H
存储器 . . . 44H 33H 数 据 段
. . .
图 3-5 寄存器间接寻址示意图
3.2.5 寄存器相对寻址
寄存器相对寻址——操作数在存储器中。由指令指定的地址寄存器的内容加上指令中
给出的一个8位或16位的地址位移量,即可得操作数的偏移地址。
SI AX AX AX AX AX
3.2.8隐含寻址
隐含寻址—— 操作数隐含在操作码中,在有些指令的操作数中,不仅包含了操作的性质,
还隐含了部分操作数的地址。如乘法指令 MUL,在这条指令中只须指明乘数的地址,而被乘数 已经乘积的地址是隐含且固定的。这种将一个操作数隐含在指令码中的寻址方式就称为隐含
立即数操作数: 所谓立即数指具有固定数值的操作数,不因指令的执行而发生变化 。立即数操作 数只能用作源操作数,而不能用作目标操作数。

寄存器操作数:
8086CPU的8个通用寄存器和4个段寄存器可以作为指令中的寄存器操作数,寄存
器操作数在指令中既可以作为源操作数,也可以用作目标操作数。 存储器操作数: 参加运算的数据是存放在内存中。
两单元的内容送到AX中。假设DS=2000H,则所寻找的操作数的物理地址为: 2000H×10H+3102H = 23102H, 指令的执行情况如图3-3所示
存储器 . . .
MOV操作码
02H 31H AH AL 23102H 23103H
图 3-3 直接寻址方式
代 码 段
. . . ×× ×× . . . 数 据 段
请注意:使用基址—变址方式时,不允许将两个基址寄存器或两个变址寄存器组合

微型计算机原理与接口技术课件-第三章指令系统和寻址方式

微型计算机原理与接口技术课件-第三章指令系统和寻址方式
指出的存储区进行直接寻址,应在指令中指定段
超越前缀。例如,数据若放在附加段中,则应在
有效地址前加“ES:”,这里的冒号“:”称为 修改
属性运算符,计算物理地址时要用ES作基地址, 而不再是默认值DS。
例如: MOV AX,ES:[500H] 该指令的源操作数的物理地址等于16×ES+
500H。
3.符号地址 在汇编语言中还允许用符号地址代替数值地
MOV CL,AH 注意:源操作数的长度必须与目的操作数一
致,否则会出错。例如,不能将AH寄存器的内 容传送到CX中去,尽管CX寄存器放得下AH的 内容,但汇编程序不知道将它放到CH还是CL中。
这种寻址方式的优点是:寄存器数量 一般在几个到几十个,比存储器单元少很 多,因此它的地址码短,从而缩短了指令 长度,节省了程序存储空间;另一方面, 从寄存器里取数比从存储器里取数的速度 快得多,从而提高了指令执行速度。
用汇编语言(即主要由指令系统组成的语言)编写的程 序称为汇编语言源程序,若直接将它送到计算机,机器
并不认识那些构成程序的指令和符号的含义,还必须由
汇编程序将源程序翻译成计算机能认识的二进制机器语
言指令(机器码)后,才能被计算机识别和执行,得到运算 结果。
8086指令系统采用变长指令,指令的长度可由l~6 字节组成。一字节指令中只包含8位操作码,没有操作数。 如清进位位指令CLC的机器码为1111 1000,可直接从指 令编码表中查到。对于大部分指令来说,除了操作码(不 一定是8位)外,还包含操作数部分,所以要由几个字节组 成。不同的指令,其操作码和寻址方式都是不一样的,
例如:AREA1 EQU 0867H MOV AX,AREA1
例如:AREA1 DW 0867H MOV AX,AREA1 (该指令也可

第3章 8086指令系统(最后有练习题)

第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指令系统(上)

第3章8086指令系统(上)
操作数的物理地址为: (SI) (DS)×16+ (DI) (BX)

(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的指令系统3.1 8086指令系统概述所谓一个微处理器的指令系统是一个微处理器所执行的全部指令的集合。

在8086的指令系统中一共有133条指令。

8086指令系统是在8位微处理器8080/8085的指令系统基础上设计的,它兼容了8080/8085的全部指令,这部分对8位微处理器具有兼容性的指令往往是处理字节(8位)的。

此外,8086还有自己所特有的对字或字符串的处理指令,以及对带符号数的运算指令、中断指令和协处理器指令。

对微处理器的指令的描述,一般有两种表示方法:指令的机器码和汇编指令。

无论对于机器码指令还是对于汇编指令均要解决三个问题(三个信息)(1)指令要完成什么操作(操作码);(2)参加这个操作的操作数在哪里(操作数);(3)操作结果放在哪里(结果);为了简化指令,通常在微机系统中规定:操作结果要放在某一个操作数中。

如MOV AL,08H;ADD AX,BX;(源操作数,目标操作数)这样,就将指令所要提供的信息简化为了两部分:操作码、操作数。

指令的机器码就是用二进制码描述指令的操作码和操作数的一种方式,实际上在微机系统内部,指令就是以机器码的形式存在的。

所谓的汇编指令是用指令功能的英文缩写表示操作码,用数字和符号表示操作数的指令描述方法。

例如操作码操作数MOV AX,2000H操作码B8H操作数:00H20H由于汇编语言程序有便于理解、识别、阅读和交流的优点。

所以汇编指令得到了广泛的应用。

但由于最终在机器中使用的是机器码,所以要有一个中间环节就是对其进行翻译。

3.2 8086指令的寻址方式所谓寻址方式就是寻找操作数的方式,所以寻址方式实际上在两种情况下被涉及:一种是用来对操作数进行寻址;另一种是对转移地址和调用地址进行寻址。

下面我们所讨论的寻址方式都是针对操作数的,关于指令地址的寻址,将在讲述转移指令和调用指令时作具体说明。

一条指令的机器码通常包含操作码(OP)和操作数两部分。

课件:第3章 8086指令系统_加减运算指令比较指令52

课件:第3章 8086指令系统_加减运算指令比较指令52
第3章 8086指令系统
1
3.4 通用指令
1.概述 Intel 8086指令系统共有117条基本指令,按照指令功能, 可分位6类指令: ① 数据传送类指令。 ② 算术运算指令。 ③ 逻辑移位指令。 ④ 串操作指令。 ⑤ 控制转移指令。 ⑥ 处理机控制类指令。
2
3.4.2 算术运算指令
8086的算术运算指令包括二进制运算指令(加法、减法、 乘法和除法指令)和BCD码十进制调整指令。 算术运算指令用来执行算术运算,它们中有的是双操作 数指令,有的是单操作数指令。 双操作数指令是两个操作数中,除了源操作数为立即数 的情况外,必需有个操作数在寄存器中。单操作数指令不 允许使用立即数方式。
11
ADC指令的使用价值
主要用于由于数据较大(多字节),需要多 次运算的加法运算中。 例:有两个4字节的无符号数相加:
2D568F8CH+3C9E489BH=? 设 被加数存放在BUF1开始的存储区内
加数存放在BUF2开始的存储区内 要求和放回BUF1存储区
12
13
程序段: MOV CX,4 ;置循环次 数
10
(1)加法指令
②ADC带进位加法指令 指令格式:ADC DST, SRC 执行的操作: (DST)←(SRC)+(DST)+CF 目的操作数:8/16/32位的寄存器/存储器 源操作数:与目的操作数同类型的寄存器/存储器/立即数 指令功能:将源操作数与目的操作数以及进位标志位CF的 值相加,并将结果存放于目的操作数。
3.4.2 算术运算指令
算术运算指令涉及两种类型数据,即无符号 数和有符号数
对加法指令和减法指令而言,无符号和有符 号数可采用同一套指令,其先决条件有两 个:
一是参加的操作数必须同为无符号数或同为 有符号数 二是要采用不同标志位来检查无符号数和有 5

8086的指令系统

8086的指令系统

TEST AL,80H;查AL的D7= 1? JNZ T_ALARM;是1,则转温度报警程序 TEST AL, 40H; D7=0, D6=1? JNZ P_ALARM;是1,则转压力报警程序
(4) XLAT 表转换指令 格式:XLAT 转换表 或 XLAT


功能:将一个字节从一种代码转换为另一种代码 例:若十进制数字0~9的LED七段对照表如下: 十进制数字 七段显示码 十进制数字 七段显示码 0 40H 5 12H 1 2 3 79H 24H 30H 6 7 8 02H 78H 00H

(2) AND逻辑与指令 指令格式: AND 目的,源 指令功能:对两个操作数进行按位逻辑与操作 结果送回目的操作数 即: 目的←目的∧源。 例3.66 假设AX=3538H, AND AX,0F0FH; 执行该指令后,AX=0508H

(3) OR逻辑或指令 指令格式:OR 目的,源 例3.67 设AX=0508H, OR AX,3030H;AX=3538H

2.输入输出指令 (1) IN输入指令 指令格式: ① IN AL,端口地址 (8位) 或 IN AX,端口地址;(16位) ② IN AL, DX;端口地址存放在DX中 或 IN AX, DX 例3.32 IN AL,0F1H; AL从F1H端口读入一个字节 IN AX,80H; AL 80H端口的内容 ; AH 81H端口的内容 MOV DX,310H;端口地址310H先送入DX中 IN AL,DX; AL 310H端口的内容



MOV MOV XLAT MOV MOV XLAT MOV 4· 标志传送指令
二、算术运算指令 数的类型: 无符号二进制数、带符号二进制数、 压缩十进制数、非压缩十进制数 压缩与非压缩数: 例: 23 压缩: 0010 0011 非压缩表示:0000 0010 0000 0011

第3章80888086指令系统(老师用的课件哦)

第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所示。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
寻址
根据指令内容确定操作数地址的过程,称为寻址。
有效地址
根据寻址方式计算所得到的地址叫做有效地址EA, 也就是段内偏移地址。有效地址还需要与相应的段 基地址组合才是20位的物理地址,该工作由CPU完 成。
寻址方式在两种方式下被涉及:
操作数的寻址方式和对调用或转移指令的寻址方式。
本讲只介绍对操作数的寻址!!!
3位
操作码 1字节
方式 寄存器 1字节(寻址方式)
低高 字字 节节
位移量
1-2字节
低高 字字 节节
立即数
1-2字节
2021/3/21
黄玉清制作
3.1 IA-32的指令格式
机器指令:计算机能识别和执行的指令的二进制 代码。如:1011000001100010
汇编指令:用助记符表示机器指令的操作码和操 作数,例如上面指令的汇编指令是 MOV AL,62H
黄玉清制作
3.3 8086的操作数的寻址方式
3.3.1 立即数寻址
操作数由指令提供. 例: MOV AL,80 H MOV AX,1090 H MOV CX,100
3.3.2 寄存器寻址
操作数在寄存器中。 MOV AH,BL MOV AX,BX MOV CX,AX
AH AL
AX
1090H
BX
2021/3/21
2021/3/21
第3章 8086指令系统
3.1 概述 3.2 指令格式 3.3 8086的操作数的寻址方式
3.3.1 立即数寻址 3.3.2 寄存器寻址 3.3.3 存储器操作数寻址方式 3.4 IA-32通用指令 3.4.1 数据传送指令 3.4.2 算术运算指令 3.4.3 逻辑运算、移位 3.4.4 串操作指令 3.4.5 控制转移指令 3.4.6 处理器控制指令 本章小节 思考题
偏移地址
IP SP SI DI 有效地址EA 有效地址EA
2021/3/21
黄玉清制作
3.3 8086的操作数的寻址方式
任何内存实际地址(PA)都由两部分组成: PA=段基址+段内偏移地址(此单元与段基址的距离) 段内的偏移地址又称为有效地址(EA).
2021/3/21
黄玉清制作
3.3 8086的操作数的寻址方式
直接寻址
操作数在存储器中,其地址由指令提供。
例:MOV AX,[ 1070 H ]
(DS) = 2000 H,物理地址为:
....
PA=20000H+1070H=21070 H
A1H
70H
10H
AX AH AL
....
代码段
2021/3/21
2000:1070
20 H
2000:1071 30 H
2000:1072
黄玉清制作
3.1概述
3.1 概述
80x86结构的基本数据类型
字节:8位 字:16位,2个字节 双字:32位,4个字节 四字:64位,8个字节(80486CPU引入) 双四字:128位,16个字节(Pentium III)
数据在内存中的字节顺序
80X86多字节数据的存放原则是低位字节在低端地址, 高位字节在高端地址。 而最低地址就是操作数的地址。
通用格式如下:
指令格式
操作码域 操作数或操作数地址
操作码域: 存放指令的操作码,即指明计算机所要执行 的操作。
地址域 :指出在指令执行过程中所需要的操作数或操作 数所在的地址。
2021/3/21
黄玉清制作
3.2 IA-32的指令格式
8086 CPU指令格式
opco3位
2021/3/21
黄玉清制作
3.1 IA-32的指令格式
指令执行时间
指令执行时间:由时钟周期长短和执行指令所需要 的时钟周期数决定。
MOV AX,BX
;执行时间最短
MOV AX,[1000H]
MOV [2000H],CX
2021/3/21
黄玉清制作
3.3 8086的操作数的寻址方式
3-3 8086的操作数的寻址方式
在地址2000H中的字为 1B23H
在地址2004H中的双字 为5678AA99H
2021/3/21
黄玉清制作
3.1概述
本讲要解决的问题: 8086/8088寻址
指令系统? 指令格式? 寻址概念?寻址方式? 操作数寻址的方法?
2021/3/21
黄玉清制作
3.2 IA-32的指令格式
3.2
指令格式
MOV BX,ES:DATA
2021/3/21
黄玉清制作
3.3 8086的操作数的寻址方式
寄存器间接寻址
操作数在存储器中,寻址方式同直接寻址相似, 但偏移地址由指针寄存器提供.
指令 寄存器 内存
寄存器
EA
数据
2021/3/21
黄玉清制作
[3B.3X8]086的操作数的寻址方式 [BP] [SI] [DI]
2021/3/21
黄玉清制作
例如,1B23H存放在2000H与2001H地址单元 中,2000H即为该操作数的地址;
在地址2001H中的 字节为1BH
存储器
23H 1BH ** ** 99H AAH 78H 56H **
2000H 2001H 2002H 2003H 2004H 2005H 2006H 2007H 2008H
2021/3/21
黄玉清制作
3.3 8086的操作数的寻址方式
计算机中操作数数按存放的方法分为:
立即数(指令中)
寄存器数
操作数
寻址方式
存储器数
立即数
立即数寻址
I/O端口
寄存器数
寄存器寻址
2021/3/21
存储器数 端口寻址
直接寻址 寄存器间接寻址
变址寻址 基址变址寻址
串操作寻址
直接寻址 寄存器间接寻址
数据段
黄玉清制作
8086执行某种操作时,预先规定了采用的段和段寄 存器,即有基本的段约定,如果要改变默认的段 约定(即段超越),则需要在指令中明确指出来.
例如:
MOV BX,ES:[3400H];
将附加段ES段中偏移地址为3400H和3401H两单元 的内容送BX中。
若用DATA代替偏移地址3400H :
EA=
[BX] [BP] [SI]
8 或16
+ 位移量
[DI]
EA=
[BX] [BP]
+
[SI] [DI]
+
8 或 16 位移量
2021/3/21
黄玉清制作
3.3 8086的操作数的寻址方式
黄玉清制作
3.3 8086的操作数的寻址方式
3.3.3 存储器操作数寻址方式
规定段寄存器
操作类型
段基址 正常来源 其他来源
取 指 令 CS

堆 栈 操 作 SS

串 操 作 源 地 址 DS CS、SS、ES
串操作目的地址 ES

用BP 间 接 寻 址 SS CS、SS、ES
一 般 数 据 存 取 DS CS、SS、ES
相关文档
最新文档