第3章 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,
数寻在址堆方栈式段来中说,,操就作相数当的于段钥地匙址在段寄存器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寻址方式和指令系统

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.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_指令系统和寻址方式

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寻址方式与指令系统

8086汇编语言指令由4部分组成,格式如下: [标号:] [前缀] 助记符 [操作数] [ ; 注释]
其中,方括号表示的部分为任选部分,在具体指令中不是必需的。
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为操作数的地址。
其中,方括号表示的部分为任选部分,在具体指令中不是必需的。
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寻址方式与指令系统

❖使用基址寄存器BP时,操作数默认存放在堆 栈段中,允许段超越。
❖操作数的物理地址 =(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寻址方式与指令系统
❖操作数的物理地址 =(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的寻址方式指令系统

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处理器的中断系统
支持外部中断和内部中断,用于处理各种事 件和异常。
通过寄存器的内容来访问数据。
寄存器相对寻址
通过寄存器的内容加上偏移量来计算内存地 址,然后访问数据。
指令格式
操作码和操作数
指令由操作码和操作数组成。
操作数的个数
指令前缀
指令可以有不同数量的操作数, 包括零个、一个、两个或更多。
指令前缀用于改变指令的行为 或影响指令的执行方式。
指令系统
1
数据传送指令
微机原理课件第三章8086 寻址方式和指令系统
本章将介绍8086微处理器的寻址方式和指令系统。内容包括不同的寻址方式, 指令格式,指令系统,指令执行周期,以及8086处理器的特点和功能。
寻址方式
直接寻址
通过直接给出内存地址来访问数据。
寄存器间接寻址
通过寄存器的内容所指向的内存地址来访问 数据。
寄存器直接寻址
从内存中获取指令。 执行指令中的操作。 将结果存储回内存。 处理器响应中断请求。
8086处理器
8086处理器的特点
具有16位的数据总线和地址总线,支持最多 1MB的内存。
8086处理器的工作模式
包括实模式和保护模式,可以用于运行不同 类型的软件。
8086处理器的寄存器
包括通用寄存器、段寄存器和指令指针寄存 器。
用于在寄存器和内存之间传输数据。算,如加法、减法、乘法、除法和位操作。
3
逻辑指令
执行逻辑操作,如与、或、非和异或。
4
比较指令
用于比较两个值的大小,并根据比较结果设置标志位。
5
转移指令
用于无条件或有条件地改变指令执行的顺序。
指令执行周期
取指令周期 执行指令周期 存储指令周期 中断响应周期
支持外部中断和内部中断,用于处理各种事 件和异常。
通过寄存器的内容来访问数据。
寄存器相对寻址
通过寄存器的内容加上偏移量来计算内存地 址,然后访问数据。
指令格式
操作码和操作数
指令由操作码和操作数组成。
操作数的个数
指令前缀
指令可以有不同数量的操作数, 包括零个、一个、两个或更多。
指令前缀用于改变指令的行为 或影响指令的执行方式。
指令系统
1
数据传送指令
微机原理课件第三章8086 寻址方式和指令系统
本章将介绍8086微处理器的寻址方式和指令系统。内容包括不同的寻址方式, 指令格式,指令系统,指令执行周期,以及8086处理器的特点和功能。
寻址方式
直接寻址
通过直接给出内存地址来访问数据。
寄存器间接寻址
通过寄存器的内容所指向的内存地址来访问 数据。
寄存器直接寻址
从内存中获取指令。 执行指令中的操作。 将结果存储回内存。 处理器响应中断请求。
8086处理器
8086处理器的特点
具有16位的数据总线和地址总线,支持最多 1MB的内存。
8086处理器的工作模式
包括实模式和保护模式,可以用于运行不同 类型的软件。
8086处理器的寄存器
包括通用寄存器、段寄存器和指令指针寄存 器。
用于在寄存器和内存之间传输数据。算,如加法、减法、乘法、除法和位操作。
3
逻辑指令
执行逻辑操作,如与、或、非和异或。
4
比较指令
用于比较两个值的大小,并根据比较结果设置标志位。
5
转移指令
用于无条件或有条件地改变指令执行的顺序。
指令执行周期
取指令周期 执行指令周期 存储指令周期 中断响应周期
- 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