第3章 8086寻址方式和指令系统
微机原理课件第三章8086寻址方式和指令系统
![微机原理课件第三章8086寻址方式和指令系统](https://img.taocdn.com/s3/m/dfebe14a7fd5360cba1adb83.png)
数寻在址堆方栈式段来中说,,操就作相数当的于段钥地匙址在段寄存器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,
第3章 8086寻址方式和指令系统
![第3章 8086寻址方式和指令系统](https://img.taocdn.com/s3/m/6acfc425192e45361066f5f5.png)
30
31
加法指令(Addition)
ADD 加法指令
ADD 目的,源;目的←源+目的 ADC 目的,源;目的←源+目的+CF,用于多字节加法
ADC带进位的加法指令
目的操作数只能是寄存器和存储单元 源操作数可以是寄存器、存储器或立即数 注意:源和目的操作数不能同时为存储器,必须都是字节或字
AX
(21A00H)=26BFH
16
存储器寻址
5
17
8086指令系统
数据传送指令 算术运算指令 逻辑运算
18
19
数据传送指令
通用数据传送指令
输入输出指令
MOV PUSH
目的,源 源
IN AL,端口地址
OUT 端口Biblioteka 址,ALIN AX,端口地址
IN AL,DX IN AX,DX
CX
12H 34H
操作码 34H 12H CS段 高地址
注意:立即数只能作源操作数,不能作目的操作数; 以A~F开头的数字出现在指令中需在前加0
5
寄存器寻址(Register Addressing)
操作数包含在指令中指定的8位或16位寄存器中 寄存器:AX,BX,CX,DX,SI,DI,SP,BP
物理地址=16×DS+BX+SI(DI)+位移量 物理地址=16×SS+BP+SI(DI)+位移量
15
基址寄存器为BP时,段寄存器为SS
相对基址变址寻址 (Relative Based Indexed Addressing)
第3章 8086的寻址方式和指令系统
![第3章 8086的寻址方式和指令系统](https://img.taocdn.com/s3/m/89c09ef90975f46527d3e16e.png)
格式: 位移量[寄存器] 位移量+[寄存器] [寄存器+位移量]
§3.1 8086的寻址方式
二. 8086 的寻址方式
5.寄存器相对寻址 ■ 用途:寄存器相对寻址适用于表格处理。 例如:某8位数据表的首地址为COUNT,欲将表中 第10个数据读取到AL中。
COUNT表示数组或表格的首地址,修改基址或变址寄存器对表格中的 表项进行访问。
MOV CX,AH
尽管CX寄存器放得下 1、16位寄存器:AX,BX,CX,DX,SI,DI,AH BP, SP。 的内容,但汇编程 CH 2、8位寄存器:AH,AL,BH,BL,CH,CL,序不知道将它放到 DH,DL。 还是CL。 3、寄存器既能做源操作数,又能做目的操作数。
4、源操作数的长度必须与目的操作数一致,否则会出错。
1EH
数 据 段
指令执行示例
§3.1 8086的寻址方式
址(存储器寻址)
■ 直接寻址的几点说明:
1、直接寻址方式用于处理存储器中的单个变量。 2、直接寻址的段超越前缀缺省时,隐含是DS,允许段超越。 3、如果要对代码段、堆栈段或附加段寄存器所指出的存储区进行直 接寻址,应在指令中指定段超越前缀。 4、除了指令之外,以下操作不 允许段超越:
操作数的物理地址PA=段基址×16(10H)+有效地址EA 从指令队列取入段寄存器内容,再与EA通过地址加 法器形成20位PA。
§3.1 8086的寻址方式
二. 8086 的寻址方式
3. 直接寻址(存储器寻址) 例3-4: MOV AX,[2000H] ;缺省,默认DS。
;将位于DS:2000H的两个字节(地址连续, 低位低地址,高位高地址)传送到AX中
第3章_8086_指令系统和寻址方式
![第3章_8086_指令系统和寻址方式](https://img.taocdn.com/s3/m/4e4ffb7af46527d3240ce0b6.png)
20
与地址有关的寻址方式(二)
(2) 段内间接寻址 用段内间接寻址方式时,有效地址总是在寄存器中或是内存单元中 的内容,段内间接寻址方式可适用于于无条件转移指令和调用指令。 不能用于条件转移指令。 存储器或存储单元的内容可以用数据寻址方式中除立即数以外的任 何一种寻址方式,所得到的转向的有效地址用来代替IP寄存器的内 容。 (DS)=2000H,(BX)=1256H,(SI)=528FH,位移量=20A1H (232f7)=3280H,(264E5H)=2450H JMP BX JMP TABLE[BX] JMP [BX][SI]
MOV AX,1090H
6ห้องสมุดไป่ตู้
与数据有关的寻址方式(二) (2) 寄存器寻址方式 定义:指令中操作数由寄存器提供的寻址方式。指令指 定寄存器号。
16位:AX, CX, DX, BX, SP, BP, SI, DI 8位: AH, AL, BH, BL, CH, CL, DH,DL
这种寻址方式操作数就在寄存器中,不需要访问存储器来取得操作 数,可以得到较高的运算速度 ;将AL中内容送入DL中 MOV DL,AL ;将CX中内容送入AX中 MOV AX,CX
8
与数据有关的寻址方式(三)
指令中的操作数部分直接给出操作数的有效地址EA, 操作数可以是16位或32位整数,操作数默认在DS段中 低地址 MOV AX, [3000H] 操作码
00H
DS + 5000 0 3000 53000 50000 53000 AX 12H 34H 34H 12H
CS段
30H
16
与数据有关的寻址方式(八) (6) 基址变址寻址方式 定义:由基址寄存器(BX,BP)的内容加上变 址寄存器(SI,DI)的内容得到操作数有效地 址EA的寻址方式。 [BX] [SI] 操作数的有效地址为:EA
微机原理及接口技术课件第3章 8086寻址方式与指令系统
![微机原理及接口技术课件第3章 8086寻址方式与指令系统](https://img.taocdn.com/s3/m/c9139f2827284b73f2425095.png)
其中,方括号表示的部分为任选部分,在具体指令中不是必需的。
4
第3章 8086寻址方式与指令系统
3.1 指令格式 3.2 8086寻址方式 3.3 8086指令系统 3.4 数据传送指令 3.5 算术运算指令 3.6 逻辑运算和移位指令 3.7 串操作指令 3.8 程序控制指令 3.9 处理器控制指令
; 将立即数1234H送入累加器AX ; 将立即数0FH送入累加器AL ; 将立即数12H送入变量VAR指向的存储单元 ; 把0000H送入DI ; 把字母A的ASCII码(41H)送入AH ; 把ASCII码(4241H)送入BX ; 把二进制数10100011B送入CL ; 把100(64H)送入数据段由SI和SI+1指向的 ; 两个存储单元中
25
3.2 8086寻址方式
一般情况下指令是顺序逐条执行的,但实际上也经常发生执行转移指令改变程 序执行流向的现象。与前述数据寻址方式是确定操作数的地址不同,转移地址 寻址方式是用来确定转移指令的转向地址(又称转移的目标地址)。下面首先 说明与程序转移有关的几个基本概念,然后介绍4种不同类型的转移地址寻址 方式,即段内直接寻址、段内间接寻址、段间直接寻址和段间间接寻址。图36展示了4种程序转移地址的寻址方式。
4.寄存器间接寻址
寄存器间接寻址分为两种情况: (1)以SI、DI、BX间接寻址,通常操作数在现行数据 段区域中,此时DS×16+REG为操作数的地址,REG表示 寄存器是SI、DI、BX之一。 ( 2 ) 以 寄 存 器 BP 间 接 寻 址 , 操 作 数 在 堆 栈 段 中 , 即 SS×16+BP为操作数的地址。
第3章8086寻址方式与指令系统
![第3章8086寻址方式与指令系统](https://img.taocdn.com/s3/m/5f4d6cdc5727a5e9856a61e1.png)
❖操作数的物理地址 =(DS)×10H+(SI)/(DI)+(BX) 或 =(SS)×10H+(SI)/(DI)+(BP)
第3章 8086寻址方式与指令系统
❖例如: MOV AX,[BX] [SI] ❖该指令的源操作数采用基址变址寻址方式。 ❖若(DS)=2000H,(BX)=2008H,(SI)=8H,
第3章 8086寻址方式与指令系统
❖例如: MOV AX,[SI]
❖该指令的源操作数采用寄存器间接寻址方式。 ❖若(DS)=2000H,(SI)=2010H,那么指令执行后
,(AX)=1225H。 ❖如操作数不存放在间址寄存器默认的段,则指
定段超越的指令可采用如下形式。 MOV AX,ES:[SI]
寄存器寻址方式指令执行示意图
存储器
AH
AX
20H
00000H
~~
AL
10H
操作码
10H
代码段
20H
~~
FFFFFH
第3章 8086寻址方式与指令系统
寄存器寻址方式说明
❖在一条指令中,寄存器寻址方式既可用于源操作 数,也可用于目标操作数,还可以两者都用寄存 器寻址方式。
❖源操作数与目标操作数的长度应一致。例如,不 能将寄存器AX的内容传送到寄存器BH中,也不能 将寄存器BH的内容传送到寄存器AX中。
第3章 8086寻址方式与指令系统
❖8086汇编指令中的操作数可以有零个、一个或两 个,通常称为零地址、一地址或二地址指令。
❖二地址指令中的两个操作数分别称为源操作数和 目标操作数。
第3章 8086寻址方式与指令系统
第3章8086的寻址方式指令系统
![第3章8086的寻址方式指令系统](https://img.taocdn.com/s3/m/6cf8e7d5b9f3f90f76c61bfd.png)
4、寄存器间接寻址(Register indirect addressing) 内存单元的逻辑偏移地址通过寄存 器间接给出。 例: MOV SI , 61A8H MOV DX , [SI]
5、基址/变址寻址(Based/Indexed addressing)
这种寻址方式中提出位移量的概念, 即在寄存器间接寻址给出的偏移地址上, 加一相对位移量。位移量是一带符号的16 位16进制数。当使用BX或BP寄存器时, 称基址寻址;使用SI或DI寄存器时,称 变址寻址。 例: MOV CX , 36H[BX] MOV -20[BP] , AL
4)XCHG 交换指令
指令格式为: XCHG 目的操作数 ,源操作数 操作数不能为立即数; 源和目的不能同时为存储单元; 段寄存器不能作为操作数。
2、累加器专用传送指令
1) IN 输入指令
指令格式为: IN IN IN IN AL , n AX , n AL , DX AX , DX n , AL n , AX DX , AL DX , AX
3、算术乘法指令
1) MUL 无符号数乘法 指令功能:完成两个操作数相乘 2) IMUL 带符号数乘法 指令功能:完成两个操作数相乘 3) AAM 非压缩BCD数乘法操作结果校正 指令功能:完成两个非压缩BCD 数乘法结果的十进制数调整
4、算术除法指令
• DIV 无符号数除法 指令功能:完成两个操作数相除 • IDIV 带符号数除法 指令功能:完成两个操作数相除
JC JNC JE/JZ JNE/JNZ JS JNS JO JNO JP/JPE JNP/JPO ;CF标志为1,则转移 ;CF标志为0,则转移 ;ZF标志为1,则转移 ;ZF标志为0,则转移 ;SF标志为1,则转移 ;SF标志为0,则转移 ;OF标志为1,则转移 ;OF标志为0,则转移 ;PF标志为1,则转移 ;PF标志为0,则转移
微机原理课件第三章8086寻址方式和指令系统
![微机原理课件第三章8086寻址方式和指令系统](https://img.taocdn.com/s3/m/a6145eebd0f34693daef5ef7ba0d4a7303766c6d.png)
支持外部中断和内部中断,用于处理各种事 件和异常。
通过寄存器的内容来访问数据。
寄存器相对寻址
通过寄存器的内容加上偏移量来计算内存地 址,然后访问数据。
指令格式
操作码和操作数
指令由操作码和操作数组成。
操作数的个数
指令前缀
指令可以有不同数量的操作数, 包括零个、一个、两个或更多。
指令前缀用于改变指令的行为 或影响指令的执行方式。
指令系统
1
数据传送指令
微机原理课件第三章8086 寻址方式和指令系统
本章将介绍8086微处理器的寻址方式和指令系统。内容包括不同的寻址方式, 指令格式,指令系统,指令执行周期,以及8086处理器的特点和功能。
寻址方式
直接寻址
通过直接给出内存地址来访问数据。
寄存器间接寻址
通过寄存器的内容所指向的内存地址来访问 数据。
寄存器直接寻址
从内存中获取指令。 执行指令中的操作。 将结果存储回内存。 处理器响应中断请求。
8086处理器
8086处理器的特点
具有16位的数据总线和地址总线,支持最多 1MB的内存。
8086处理器的工作模式
包括实模式和保护模式,可以用于运行不同 类型的软件。
8086处理器的寄存器
包括通用寄存器、段寄存器和指令指针寄存 器。
用于在寄存器和内存之间传输数据。算,如加法、减法、乘法、除法和位操作。
3
逻辑指令
执行逻辑操作,如与、或、非和异或。
4
比较指令
用于比较两个值的大小,并根据比较结果设置标志位。
5
转移指令
用于无条件或有条件地改变指令执行的顺序。
指令执行周期
取指令周期 执行指令周期 存储指令周期 中断响应周期
第三章8086的寻址方式和指令系统
![第三章8086的寻址方式和指令系统](https://img.taocdn.com/s3/m/8f78591c650e52ea5518983e.png)
段寄存器 CS*,DS,SS,ES
MOV功能描述
MOV允许在CPU的寄存器之间、存储器与寄存器之间 传输数据,也可将立即数传到寄存器和存储器中 注意: 1. IP寄存器不能作为操作数 2. 立即数和CS不能作为目的操作数 3. 两个操作数不能同时为存储器,也不能同时为段寄 存器 4. 立即数不能送入段寄存器
而:
10
MOV
AX,
[BX]
11
五、寄存器相对寻址
MOV
AX,
[BX+1008H]
利用这种寻址方式时,操作数在存储器中。而操作 数有效地址由BX、BP、SI、DI中的内容加上指令中给出 的位移量, 得到操作数的有效地址。
有效地址=间址寄存器的内容加上一个8/16位的位移量
(BX)
有效地址=
(BP) (SI) (DI)
可以访问216=64K个I/O端口。
22
寻址方式总结
• 操作数,要么在存储器里,要么在寄存
器里,要么在IO端口中。
• 如果出现”[]”,则操作数在存储器里,需
要确定其段基址和偏移地址
• 不带“[]”的,就是立即寻址和寄存器寻
址、隐含寻址、IO端口寻址了。
23
3.3
8086 的指令系统 ý 数据传送指令
3、立即数到段寄存器
举例: 向1000H开始的100个存储单元写入ASCII码2AH(*) 程序段如下: MOV SI,1000H MOV CX,100 MOV AL,2AH AGAIN:MOV [SI],AL INC SI DEC CX JNZ AGAIN INT 20H ;返回DOS
33
上程序段存放在代码段中,設(CS)=109EH ,则各条指令存放地址如下: 109E:0100 109E:0103 109E:0106 109E:0108 109E:010A 109E:010B 109E:010C 109E:010E 109E:0110 MOV MOV MOV MOV INC DEC JNZ INT SI, 1000H CX, 64H AL, 2AH [SI],AL SI CX 0108 20H
第3章8086的寻址方式和指令系统
![第3章8086的寻址方式和指令系统](https://img.taocdn.com/s3/m/4dc35db8910ef12d2af9e78d.png)
第3章8086的寻址方式和指令系统【课前思考】(1)什么是指令和指令系统?指令在什么时候由哪部分来执行?(2)8086汇编语言指令由几部分组成?各部分的作用是什么?(3)8086汇编语言指令可以有几个操作数?指令中指定的操作数可能存放在哪里?(4)什么是寻址方式?8086汇编语言提供了几种寻址方式?(5)各种寻址方式所确定的有效地址是什么?(6)在存储器寻址方式中,为什么有时候要使用段跨越前缀?(7)8086机器语言指令由哪几个字节组成?为什么说汇编语言指令与机器指令是一一对应的?(8)8086的指令系统按功能可分为几组?(9)每条指令的功能、助记符、所支持的寻址方式、对标志位的影响、需要预置的参数以及隐含使用的或限定使用的寄存器等。
【学习目标】熟练掌握8086各种寻址方式;熟悉8086常用指令的功能【学习指南】学习寻址方式时,要注意各种寻址方式所指定的操作数或操作数地址是什么;各种寻址方式形成操作数地址时,段寄存器和基址、变址寄存器的组合;各种寻址方式限定使用的寄存器。
学习指令系统时,要注意每条指令的功能,所支持的寻址方式、对标志位的影响、需要预置的参数以及隐含使用的或限定使用的寄存器等。
【难重点】重点理解8086常用指令的功能,熟悉8086的各种寻址方式,这是进行汇编语言程序设计的基础。
【知识点】3.1 寻址方式3.3 指令系统第一节 8086的寻址方式指令的一般格式:例如,单操作数指令就是一地址指令,它只需要指定一个操作数,如加1指令只需要指出需要加1 的操作数。
大多数运算型指令可使用三地址指令:除给出参加运算的两个操作数外,还指出运算结果的存放地址。
也可使用二地址指令,此时分别称两个操作数为源操作数(source)和目的操作数(destination)。
尽管在指令执行前这两个操作数都是输入操作数,但指令执行后将把运算结果存放到目的操作数的地址之中。
8086的大多数运算型指令就采用这种二地址指令。
第三章 8086的寻址方式
![第三章 8086的寻址方式](https://img.taocdn.com/s3/m/26fea047c850ad02de804169.png)
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表示操作数, 显然这样的表示方式更清晰,更便于记忆和使用。 用符号、助记符书写的指令称为符号指令。用符号指令书写程 序的规范称为汇编语言,对应的程序称为汇编语言源程序。
第三章 8086的寻址方式和指令系统
![第三章 8086的寻址方式和指令系统](https://img.taocdn.com/s3/m/4fa7964f2e3f5727a5e96290.png)
第三章 8086/8088的指令系统
3.1 8086的寻址方式 3.2 指令的机器码表示方式 3.3 8086的指令系统
3.3 8086的指令系统
一、数据传送指令 三、逻辑运算指令 五、控制转移指令
二、算术运算指令 四、串操作指令 六、处理器控制指令
3.3 8086的指令系统
8088的指令系统可以分为六个功能组:
(一)通用传送指令 (续)
数据段说明举例:
DATA SEGMENT ;数据段说明开始 AREA1 DB 14H,3BH AREA2 DB 3 DUP(0) ARRAY DW 3100H,01A6H STRING DB ‘GOOD’ DATA ENDS ;数据段说明结束
AREA1 机器码表示方式
汇编语言(Assembly Language)是面向机器的程序设计语 言。在汇编语言中,用助记符(Memoni)代替操作码,用地址 符号(Symbol)或标号(Label)代替地址码。这样用符号代替机 器语言的二进制码。就把机器语音变成了汇编语言。于是汇 编语言亦称为符号语言。 使用汇编语言编写的程序,机器不能直接识别,要由一 种程序将汇编语言翻译成机器语言,这种起翻译作用的程序 叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇 编语言把汇编程序翻译成机器语言的过程称为汇编。 汇编语言比机器语言易于读写、易于调试和修改,同时 也具有机器语言执行速度快,占内存空间少等优点,但在编 写复杂程序时具有明显的局限性,汇编语言依赖于具体的机 型,不能通用,也不能在不同机型之间移植。
8086的寻址方式
计算机的指令一般由操作码和操作数组成,操作码规定了 指令的功能;而操作数则规定了指令操作的对象。操作数可以 以立即数的形式存放在指令中,但在大多数情况下,操作数是 以地址的形式存放在指令(指示操作数在哪儿)。用于说明操 作数所在地址的方法称为寻址方式。 在微机中,操作数存放在: 1、在指令中;2、在CPU的 某一内部寄存器中;3、在内存的数据区中;4、I/O端口。 在8086CPU中,内存地址是由数据段地址和段内偏移量 组成。而指令中规定的地址即为段内偏移量(逻辑地址)— —有效地址EA,有效地址EA构成的方法不同,则为不同的寻 址方式。
微机原理第三章 8086寻址和指令系统
![微机原理第三章 8086寻址和指令系统](https://img.taocdn.com/s3/m/a22662234b35eefdc8d333fb.png)
4、查表转换指令 XLAT 指定表首地址→BX;表元素号→AL 查表结果((BX)+(AL)) →AL 例:若十进制数字0~9 的 LED七段显示码对照表已存放在内存中, 表格的首地址为TABLE,用 XLAT 指令求数字5的七段显示码 值程序如下: TABLE DB 40H, 79H, 24H, 30H, 19H ; 建立七段显示码表格 DB 12H, 02H, 78H, 00H, 18H OFFSET是运算符 MOV AL,5 ; AL 5 MOV BX,OFFSET TABLE ; BX 表格首地址 XLAT ; AL 12H
AAA
非压缩十进制加法BCD调整(8bit) CF、OF、PF、SF、ZF
8bit(0×) 加 法 后 , AL 中 的 非 压 缩 BCD 码 → AH(0+ 拾 位)AL(0+个位)。 例: MOV BL,09H MOV AL,05H ADD AL,BL AAA ;非压缩BCD码 ; ;(AX)=0104H 09 05 (AL)=0 EH AAA调整 (AX)=0 1 0 4H
指令
基址寄存器
disp
&
EA 内存 操作数
基址 (BX) (SI) (DI) (BP)
EA=
+disp 段寄存器DS(即操作数在数据段)
+disp 段寄存器SS (即操作数在堆栈段)
指令
基址寄存器
disp
&
EA
内存 操作数
基址
EA=
(BX) (SI) (DI) (BP)
+disp 段寄存器DS(即操作数在数据段) +disp 段寄存器SS (即操作数在堆栈段)
第三章 8086寻址和指令系统
3.第三章 8086的寻址方式和指令系统
![3.第三章 8086的寻址方式和指令系统](https://img.taocdn.com/s3/m/415e6d2aed630b1c59eeb5b8.png)
3.1.2 8086指令系统的寻址方式
1. 立即寻址
立即寻址方式中,源操作数是一个立即数,它作为指令的一 部分紧跟在指令操作码之后,都存放于内存的代码段中。 立即数可以是8位或16位整数,若为16位,低8位放低地址单 元,高8位放高地址单元。 例子:MOV AX,3102H 如下图所示: B8
操作码 AH AL 02H 代 码 段
图 MOV指令所允许的数据传送路径及类型
MOV指令的形式有如下几种:
1)从通用寄存器到通用寄存器 MOV reg1,reg2
2)立即数传送到通用寄存器
3)通用寄存器和存储单元之间
MOV reg ,imm
MOV mem (reg),reg (mem) 4)立即数传送到存储单元 MOV mem, imm 5)段寄存器与通用寄存器间的数据传送 MOV seg,reg 或 MOV reg, seg 6)段寄存器与存储单元间的数据传送 MOV seg,mem 或 MOV mem, seg
B0 B1 B2………….B9 B10…..
TABLE
另外:以下书写格式等同: MOV AL ,DATA[SI], MOV AL ,DATA+[SI] MOV AL ,[DATA+SI]
(4) 基址-变址寻址
基址变址寻址方式是: 由一个基址寄存器 ( BX或BP )和一个变址寄存器( SI或DI )的 内容相加形成操作数的偏移地址EA 。但指令中 不能同时出现两个基址寄存器或两个变址寄存器。 如果基址寄存器为BX,则段寄存器使用DS;如果 基址寄存器用BP,则段寄存器用SS。允许段超越
默认配对:BX
DS
;
BP
SS
微机原理 第3章 8086的寻址方式和指令系统
![微机原理 第3章 8086的寻址方式和指令系统](https://img.taocdn.com/s3/m/286f84c4a1c7aa00b52acb19.png)
与有效地址有关的寻址方式的确定
有效地址的三种成分的不同组合形成以下5种不同 的寻址方式: – 只有位移量一种成分----直接寻址 – 只有基址或变址一种成分----寄存器间接寻址 – 含有位移量和基址(或位移量和变址)两种 成分----寄存器相对寻址 – 含有基址和变址两种成分----基址变址寻址 – 三种成分同时存在----相对基址变址寻址
3.3 8086指令系统
开 始
3.1 指令的寻址方式
计算机都是通过指令来解决问题的,因而 每种计算机都有一组指令供使用,成为计 算机的指令集。
汇编语言指令由操作码和操作数两部分组 成的
– 操作码:指示计算机所要进行的操作,对每一种操 作指定一种二进制代码。 – 操作数:操作的对象,操作数可以是立即数,寄存 器或存储单元;操作数可以有一个、两个或三个, 也可以无操作数
②源操作数必须与目的操作数相匹配。
如
MOV AL,BX是错误的
3. 存储器寻址
如果操作码所需操作数存放在内存储器中,则 指令中需要给出操作数的地址信息。
有效地址:操作数的偏移地址称为有效地址(EA)
有效地址的三种成分: 位移量:存放在指令中的一个8位、16位的位移量 基址:存放在基址寄存器中的内容 变址:存放在变址寄存器中的内容 有效地址的计算: EA=位移量+基址+变址
2. 寄存器寻址
寄存器寻址方式的操作数在指令指明的寄 存器中。
注意 – 源、目的操作数的类型必须一致 – 目的操作数不能为代码段寄存器 – 由于操作数都在寄存器中,不需要访问 存储器来取得操作数,因而可以得到较 高的运算速度
【例3.2】
下列程序执行后,(AX)=?,(BX)=? MOV AX,1234H MOV BX,5678H ADD AX,BX 该程序中MOV指令为数据传送指令操作符,ADD指令 为加法指令操作符,三条指令皆为双操作数指令。第一、二
第3章 8086的寻址方式和指令系统
![第3章 8086的寻址方式和指令系统](https://img.taocdn.com/s3/m/f1362226482fb4daa58d4b74.png)
3-3 8086的指令系统 8086的指令系统
一、数据传送指令
1.通用数据传送指令 1.通用数据传送指令 MOV传送指令 MOV传送指令 指令格式: 目的, 指令格式:MOV 目的,源 指令功能: 指令功能:将源操作数送到目的操作数 注:IP寄存器不能作为源或目的操作数 IP寄存器不能作为源或目的操作数 目的操作数不允许用立即数和CS寄存器 目的操作数不允许用立即数和CS寄存器 CS 除源操作数为立即数外, 除源操作数为立即数外,两个操作数必有一 个寄存器, 个寄存器,但不能都是段寄存器
PUSH进栈指令 PUSH进栈指令 指令格式: 指令格式:PUSH 源 指令功能: 指令功能:将源操作数推入堆栈 POP出栈指令 POP出栈指令 指令格式: 指令格式:POP 目的 指令功能:将当前堆栈指针SP所指的字送入到 指令功能:将当前堆栈指针SP所指的字送入到 SP 指定的目的操作数中 例3-29 设 SS=2000H,SP=40H,BX=3120H,AX=25FEH,依次执 SS=2000H,SP=40H,BX=3120H,AX=25FEH,依次执 行下列指令: 行下列指令:PUSH BX ,PUSH AX ,POP BX 。 堆栈中数据和SP变化如下图所示。 堆栈中数据和SP变化如下图所示。 SP变化如下图所示
LES将双字指针送到寄存器和ES指令 LES将双字指针送到寄存器和ES指令 将双字指针送到寄存器和ES 指令格式:LES 目的, 指令格式:LES 目的,源 指令功能:取源操作数地址偏移量,将其送入 指令功能:取源操作数地址偏移量, 目的操作数所在单元(包括目的寄存器和ES) ES)。 目的操作数所在单元(包括目的寄存器和ES)。 例3-39 设DS=0100H,BX=0020H, (01020H)=0300H,(01022H)=0500H 执行LES DI,[BX]后 执行LES DI,[BX]后 DI=0300H ES=0500H 4.标志传送指令 4.标志传送指令 LAHF标志送到AH指令 LAHF标志送到AH指令 标志送到AH SAHF送标志寄存器指令 SAHF送标志寄存器指令 格式: 格式:LAHF 格式: 格式:SAHF
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CS段 CS段
2000 4000 36000
DS段 DS段 高地址
12
BX
12H 34H
基址变址寻址 (Based Indexed Addressing)
指令中指定一个基址和一个变址寄存器, 指令中指定一个基址和一个变址寄存器,其内 容之和为操作数的有效地址EA 容之和为操作数的有效地址EA
基址寄存器:BX或BP;变址寄存器:SI或 基址寄存器:BX或BP;变址寄存器:SI或DI 基址寄存器为BX时,段寄存器为DS 基址寄存器为BX时 段寄存器为DS BX 物理地址=16×DS+BX+SI(DI) 物理地址=16×DS+BX+SI(DI) 基址寄存器为BP时 段寄存器为SS 基址寄存器为BP时,段寄存器为SS BP 物理地址=16×SS+BP+SI(DI) 物理地址=16×SS+BP+SI(DI)
指令中给出的寄存器中的内容是操作数的有效地址EA 指令中给出的寄存器中的内容是操作数的有效地址EA
寄存器加[], 寄存器加[],与寄存器寻址区别 [] 间址寄存器:基址寄存器BX、BP和变址寄存器SI、 间址寄存器:基址寄存器BX、BP和变址寄存器SI、DI BX 和变址寄存器SI BX、SI、DI作间址寄存器时,默认段地址为DS中内容 BX、SI、DI作间址寄存器时,默认段地址为DS中内容 作间址寄存器时 DS BP作间址寄存器时,默认段地址为SS中内容 BP作间址寄存器时,默认段地址为SS中内容 作间址寄存器时 SS 可以指定段超越前缀访问默认段以外数据 例: MOV AX,DS:[BP] MOV AX,ES:[SI]
14
低地址 操作码 CS段 段
相对基址变址寻址 (Relative Based Indexed Addressing)
指令中指定一个基址、一个变址寄存器和一个位 指令中指定一个基址、一个变址寄存器和一个位 移量,其内容之和为操作数的有效地址EA 移量,其内容之和为操作数的有效地址EA
除了需要加位移量,其他与基址变址寻址相同: 除了需要加位移量,其他与基址变址寻址相同: 基址寄存器:BX或BP;变址寄存器:SI或 基址寄存器:BX或BP;变址寄存器:SI或DI 基址寄存器为BX时 段寄存器为DS 基址寄存器为BX时,段寄存器为DS BX 物理地址=16×DS+BX+SI(DI)+位移量 物理地址=16×DS+BX+SI(DI)+位移量 )+ 基址寄存器为BP时,段寄存器为SS 基址寄存器为BP时 段寄存器为SS BP 物理地址=16×SS+BP+SI(DI)+位移量 物理地址=16×SS+BP+SI(DI)+位移量 )+
15
相对基址变址寻址 (Relative Based Indexed Addressing)
例:MOV AX, 200H[BX][SI] ≌ MOV AX, 200H[BX+SI] ≌ MOV AX, [200H+BX+SI] ≌ MOV AX, [BX+200H][SI] 如DS=2000H,BX=1500H,SI=0300H, 则物理地址=16×DS+BX+SI+ 则物理地址=16×DS+BX+SI+200H 20000H+1500H+300H+ =20000H+1500H+300H+200H =21A00H
例:MOV AX,[BX][SI] ≌ MOV AX,[BX+SI]
13
基址变址寻址 (Based Indexed Addressing)
例:MOV AX,[BX][SI]
操作码 DS BX + SI 3000 ×10H 1200 0500 31700 31700 AX 12H 34H 34H 12H DS段 段 高地址
微机原理及应用
8086寻址方式和指令系统 第3章 8086寻址方式和指令系统
寻址方式和指令系统
8086寻址方式 8086寻址方式 8086指令系统 8086指令系统
2
8086寻址方式 8086寻址方式
指令
操作码- 操作码-操作的性质 操作数- 操作数-操作的对象 寻址方式- 寻址方式-说明操作数本身或其所在地址的方法
例: MOV DX, AX MOV CL, AH 注意:源操作数与目的操作数长度必须一致,即都为8位或16位 注意:源操作数与目的操作数长度必须一致,即都为8位或16位 16
6
直接寻址(Direct 直接寻址(Direct Addressing)
指令中的直接给出操作数的有效地址EA 指令中的直接给出操作数的有效地址EA Address,即偏移地址 即偏移地址) (Effective Address,即偏移地址)
操作数默认在DS段中,如果操作数在数据段以外, 操作数默认在DS段中,如果操作数在数据段以外,必 DS段中 须在直接地址前加段超越前缀 须在直接地址前加段超越前缀 操作数的物理地址=16×段地址+ 操作数的物理地址=16×段地址+EA 地址加[], [],与立即数寻址区分 地址加[],与立即数寻址区分 允许出现符号地址 例: MOV AX, [2000H] MOV AX, ES:[500H] 例: MOV AX, ADDR1 MOV AX, [ADDR1]
7
直接寻址(Direct 直接寻址(Direct Addressing)
例: MOV AX,[2000H]
操作码 00H DS 3000 ×10H + 2000 30000 32000 32000 AX 12H 34H 20H CS段 段 低地址
34H 12H
DS段 段 高地址
8
寄存器间接寻址 (Register Indirect Addressing)
指令格式
操作码 目的操作数,源操作数;注释 目的操作数,源操作数;
例
MOV AL,1
3
8086寻址方式 8086寻址方式
操作数 操作数地址 操作数 寄存器 立即寻址 MOV AL,20H 直接寻址 MOV AL,[1234H] 寄存器寻址 MOV AL,BH 寄存器间接寻址 MOV AL,[BX] 寄存器相对寻址 MOV AX,200H[BX] 基址变址寻址 MOV AX,[BX][SI] 相对基址变址寻址 MOV AX,200H[BX][SI]
22
通用数据传送指令通用数据传送指令-PUSH
PUSH 源
源操作数为字数据, 源操作数为字数据,但不能是立即数 先进后出 堆栈区段地址由SS SS确定 堆栈区段地址由SS确定 堆栈指针SP指向栈顶,总为偶数, FFFEH到 SP指向栈顶 堆栈指针SP指向栈顶,总为偶数,从FFFEH到0 PUSH BX SP←SPSP←SP-2 [SP]=BX
例: MOV BX, MOV BX, MOV AX,
200H[BP] [BP+200H] ES: ES:1200H[BP]
11
寄存器相对寻址 (Register Relative Addressing)
例:MOV BX,4000H[SI]
低地址 操作码 DS SI + 3000
×10H
00H 00H 40H 30000 36000 34H 12H
例: MOV CX,1234H 低地址 CX 12H 34H 操作码 34H 12H CS段 段 高地址
注意:立即数只能作源操作数,不能作目的操作数; 注意:立即数只能作源操作数,不能作目的操作数; 开头的数字出现在指令中需在前加0 以A~F开头的数字出现在指令中需在前加0
5
寄存器寻址(Register 寄存器寻址(Register Addressing)
操作数包含在指令中指定的8位或16位寄存器中 操作数包含在指令中指定的8位或16位寄存器中 16 寄存器: 寄存器:AX,BX,CX,DX,SI,DI,SP,BP AH,AL,BH,BL,CH,CL,DH,DL 寄存器寻址可以在CPU内部立即执行,故指令执 寄存器寻址可以在CPU内部立即执行, CPU内部立即执行 行速度最快
IP不能作源和目的操作数 IP不能作源和目的操作数 立即数和CS CS寄存器不能作目的操作数 立即数和CS寄存器不能作目的操作数 立即数不能直接传送给段寄存器 两个存储器和两个段寄存器之间不能直接传送数据
21
通用数据传送指令通用数据传送指令-MOV
例 MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV [BX],0FEH AL,30H BL,‘S’ AX,1250H BX,OFFSET TABLE [BP],BX CL,5[BX] [SI],DS ES,AX AX,DX 例 MOV 60H,AL MOV [BX],[SI] MOV CS,AX MOV BX,IP MOV DS,ES MOV CX,AL
指令中指定寄存器中内容与指令中指定的位移 量之和为操作数有效地址EA 量之和为操作数有效地址EA
除了需要加位移量,其它与寄存器间接寻址相同: 除了需要加位移量,其它与寄存器间接寻址相同:
相对寻址寄存器:基址寄存器BX、BP和变址寄存器SI、DI 相对寻址寄存器:基址寄存器BX、BP和变址寄存器SI、 BX SI BX、SI、DI作间址寄存器时默认段地址为DS中内容 作间址寄存器时默认段地址为DS BX、SI、DI作间址寄存器时默认段地址为DS中内容 BP作间址寄存器时 默认段地址为SS 作间址寄存器时, SS中内容 BP作间址寄存器时,默认段地址为SS中内容 允许使用段超越前缀
AX (21A00H)=26BFH 21A00H)=26BFH )=
16
存储器寻址
17
8086指令系统 8086指令系统
数据传送指令 算术运算指令 逻辑运算
18
19
数据传送指令
通用数据传送指令
MOV PUSH POP XCHG 目的, 目的,源 源 目的 目的, 目的,源
输入输出指令
AL,端口地址 IN AL,端口地址 IN AX,端口地址 AX,端口地址 IN AL,DX IN AX,DX 端口地址,AL OUT 端口地址,AL OUT 端口地址,AX 端口地址,AX OUT DX,AL OUT DX,AX