北航微机原理第3章(4)8086指令系统
微机原理课件第三章8086寻址方式和指令系统
数寻在址堆方栈式段来中说,,操就作相数当的于段钥地匙址在段寄存器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指令系统8086是Intel公司推出的一种16位微处理器,是x86架构的第一代处理器。
8086指令系统是8086微处理器所支持的指令集合,本章将介绍8086指令系统的基本特性和指令编码格式。
8086指令系统采用变长指令编码格式,指令长度可以是1个字节到多个字节,提供了多种寻址方式和丰富的操作类型。
8086指令系统共支持256条标准指令,可以执行各种算术逻辑运算、数据传输和控制流操作。
8086指令由操作码和操作数组成。
操作码指示了执行的具体操作,操作数则是操作码所针对的数据。
8086指令系统提供了多种寻址方式,包括立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、寄存器相对寻址和基址变址寻址等。
立即寻址是将常数或数据直接作为操作数,如MOVAX,1000H,表示将立即数1000H传送到AX寄存器。
直接寻址是通过指定一个内存单元的地址来作为操作数,如MOVAL,[BX],表示将BX寄存器指向的内存单元的内容传送到AL寄存器。
寄存器寻址是直接将一个寄存器作为操作数,如MOVAX,BX,表示将BX寄存器的内容传送到AX寄存器。
除了寻址方式,8086指令系统还提供了多种操作类型,如算术逻辑运算、数据传输和控制流操作等。
算术逻辑运算可以进行加、减、乘、除等数学运算,如ADD、SUB、MUL、DIV等指令。
数据传输可以进行数据的读取和存储操作,如MOV、PUSH、POP等指令。
控制流操作可以用于程序的跳转和条件判断,如JMP、JZ、JC等指令。
8086指令系统还支持多种数据类型的操作,包括字节、字和双字等。
字节操作是对8位数据进行操作,字操作是对16位数据进行操作,双字操作是对32位数据进行操作。
指令的操作数大小可以根据需要选择合适的寄存器或内存单元。
总之,8086指令系统是8086微处理器所支持的指令集合,提供了多种寻址方式和操作类型,支持多种数据类型的操作。
通过掌握8086指令系统,可以编写出高效、精确的8086汇编程序,实现各种功能和算法。
第3章8086指令系统
寻址方式 段寄存器 有效地址
DISP[BX][SI]
DS (BX)+(SI)+DISP
DISP[BX][DI]
DS (BX)+(DI)+DISP
DISP[BP][SI]
SS
(BP)+(SI)+DISP
DISP[BP][DI]
SS (BP)+(DI)+DISP
物理地址
(DS) ×10H+ (BX)+(SI)+DISP
(DS) ×10H+ (BX)+(DI)+DISP
(DS) ×10H+ (BP)+(SI)+DISP
(SS) ×10H+ (BP)+(DI)+DISP
例:下述各条指令都是错误的
• MOV AX, [CX] • MOV AX, [BX][BP] • MOV AX, [SI][DI] • MOV AX, 112200H[BX]
为数据段中的变量:
• MOV 1AH, CL ; 立即数不能作为目的操作数。
• MOV 1200H, AX
• MOV CS,BX
; CS, IP不能作为目的操作数
• MOV W1,[BX] ; 两个内存操作数之间不能传送
• MOV [1200H], [BX]
2. 段前缀
寻址方式隐含地规定了存储器操作数的段地址。
5.操作数的类型必须一致 例如,
MOV AX , BX
; 正确。指令执行后,AX←(BX),但BX不变
MOV AX, BL
; 错误。源和目的的位数不相同
MOV AL, 256
; 错误。 256=100H,超过了AL能存放的数的
微机原理第三章 8086的寻址方式和指令系统ppt课件
4、寄存器间接寻址方式 (Register Indirect Addressing)
EA在指定的寄存器中,只能是基址BX、BP,变址SI、 DI四者之一。 MOV AX, [DX] (非法)
默认关系:SS:BP, DS:BX、SI、DI 可进行段超越,如 MOV AX,DS:[BP]
• 根据有效地址EA〔Effective Address〕的构成 方式,存储器寻址分为以下五种:
• 段寄存器使用的基本约定 •
3、直接寻址方式(Direct Addressing) EA就在指令中,默认段寄存器为DS 如:MOV AX,[2000H] 设DS=3000H 则EA=2000H,PA=DS×16+EA=32000H, 操作数来自32000H〔或3000H:2000H处),结果AX=3514H
例如: MOV AX,COUNT[BX][SI] MOV AX,COUNT[BX+SI] MOV AX,[BX+SI+COUNT]
以上三者等价
如 MOV AX,MASK[BX][SI] 设DS=4100H,位移量MASK=0134H,BX=2500H,SI=1200H 则EA=(BX)+(SI)+MASK=3834H,PA= (DS)
• 8086的指令按功能可分为六大类:数据传送指令、 算术运算指令、逻辑运算和移位指令、字符串处 理指令、控制转移指令、处理器控制指令。
一、数据传送指令:负责数据在寄存器、存储器、I/O端口 之间的传递,特点是不影响标志位。
1.通用数据传送指令 (1) MOV 传送指令〔Move) 格式:MOV 目的,源;(源)→(目的)
微机原理第三章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指令从第一个操作数中 减去第二个操作数,并将结 果存储在目标操作数中。
逻辑运算类指令
逻辑运算类指令用于执行逻 辑与、或、非等逻辑运算。
微机原理 第03章 8086的指令系统
计算机科学与技术学院系统教研室
【例】设 DS=3000H,SI=2000H,(32000H)=50H, (32001H)=40H, 执行指令 MOV AX,[SI]后,AX = ?
① 根据指令中给出的寄存器及寄存器内容得到存储单元的物理地 址: DS × 16 + 2000H = 32000H ② 把该内存单元开始的两个字节的内容传送到AX中。低地址单元 内容传送到AL中,高地址单元内容传送到AH中。 AX = 4050H
4.指令有极强的寻址能力
8086的寻址方式多达9种,特别是对内存的寻 址方式十分灵活。
5.指令有处理多种数据的能力
8086指令能处理8位/16位数、带符号/无符号 数以及压缩BCD数/非压缩BCD数。带符号数和无 符号数有相应的乘法、除法指令,压缩BCD数和非 压缩BCD数有相应的调整指令。
计算机科学与技术学院系统教研室
2. 数据传送指令 以MOV指令为例,其格式为:
MOV 目的操作数,源操作数 目的操作数和源操作数均可采用不同的寻址方式, 两个操作数的类型必需一致。
计算机科学与技术学院系统教研室
3.2.2 寻址方式介绍
存储器
1.立即寻址
操作数就在指令中,紧 跟在操作码后面,作为指令 一部分存放在内存的代码段 中,这种操作数称为立即数。
计算机科学与技术学院系统教研室
C. I/O端口寻址(I/O port addressing)
当操作数在外部设备时,使用I/O指令。此时有两种 不同的寻址方式访问I/O端口。
(1) 当外部设备地址用8位寻址时,直接端口寻址方式。 此方式中,I/O地址仅有256个,即0~255(00H~FFH)。 IN AL , 25H (2)当外部设备地址为16位(或超过8位)时,采用DX寄存 器间接寻址方式。此时的端口地址多达216个。 MOV DX , 3E4H OUT DX , AL 由于外部设备的数据宽度不同,输入指令中的目的操 作数、输出指令中源操作数可为AL或AX。
第三章 8086的指令系统()PPT课件
7、串寻址(String addressing)
串寻址方式仅在8086的串指令中 使用。规定源操作数的逻辑地址为 DS:SI;目的操作数的逻辑地址为 ES:DI。当执行串指令的重复操作时, 根据设定的方向标志(DF),SI和 DI会自动调整。
8、I/O(输入/输出)端口寻址 (I/O port addressing)
2、MOV数据传送指令
其格式为:
MOV 目的操作数,源操作数
目的操作数和源操作数均可采用不 同的寻址方式,但两个操作数的类 型必需一致。
二、寻址方式介绍
1.立即寻址(Immediate addressing) 操作数就在指令中,紧跟在操作码后
面,作为指令一部分存放在内存的代 码段中,这种操作数称为立即数。
1、通用数据传送指令
1)、MOV 传送指令 指令格式为: MOV 目的 ,源
2)PUSH 进栈指令
指令格式为:PUSH 源操作数 其操作过程是: a、SP-1,
指示堆栈中可以存放数据的位置,存源 操作数的高8位; 。
3)POP 出栈指令
指令格式为:POP 目的操作数
一、8086的操作码
指令由操作码和操作数(地址码) 组成。8086的指令长度是可变的,一 条指令一般由1-6个字节组成(加上 前缀字节,最长可为7字节)。
二、8086指令中寄存器的编码
8086指令中通常使用一个或两个 操作数,在少数指令中有隐含的第三 个操作数。
三、指令中的操作数
1、单指令操作数
当操作数在外部设备时,使用I/O指令。 此时有两种不同的寻址方式访问I/O端口。 (1) 直接端口寻址方式。 (2) 采用寄存器间接寻址方式 (3) 输入指令中目的操作数可为AL或
AX;输出指令中源操作数可为AL或AX。 例:
微机原理及接口技术课件第3章 8086寻址方式与指令系统
其中,方括号表示的部分为任选部分,在具体指令中不是必需的。
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为操作数的地址。
微机原理与接口技术 第三章 8086指令系统
第三章8086指令系统3.1 基本数据类型3.2 IA-32的指令格式3.3 IA-32指令的寻址方式3.3.1 操作数寻址3.3.2 相关约束与规定3.3.3 与转移地址有关的寻址3.4 IA-32的通用指令3.1 基本数据类型1、基本数据类型字节(Byte,8位)字(2字节,16位)双字(4字节,32位)四字(8字节,64位,INTEL 80486后引入)双四字(16字节,128位,PIII 后引入)2、基本数据类型在内存中的存储形式•标号(标识符):由字母、数字、@、-、?加:组成;第一个字符必须是字母或某个特殊字符,?不单独做标识符号;整个标识符号的长度不超过31。
•指令助记符:是指令名称的代表符号,必须有。
•操作数:参加本条指令运算的数据。
•注释:以;开头,用来说明指令的功能等。
指令助记符操作数注释标号:3.2 IA-32的指令格式一、立即数寻址操作数由指令直接提供。
例:MOV AL,80 HMOV AX,1090 HMOV CX,100 H数据指令对操作数寻址对调用或转移指令寻址3.3 IA-32指令的寻址方式——操作数寻址二、直接寻址操作数在存储器中,其地址由指令提供。
例:MOV AX ,[ 1070 H ]若DS = 2000 H ,物理地址为:21070 H21071 H则:AX = 3020 H 例:MOV BX ,CS :[ 3000 H ]MOV AH ,[ 1000 H ]20 H 30 H三、寄存器寻址操作数在寄存器中。
MOV AH,BLMOV AX,BXMOV CX,AX四、寄存器间接寻址操作数在存储器中,存储器的EA由寄存器指出。
EA=+8 或16 位移量[BX] ;段为DS [BP] ;段为SS [SI] ;段为DS [DI] ;段为DS或ES1、以BX 寄存器进行间接寻址——数据段基址寻址例:若DS = 2000 H ,ES = 3000 H ,BX = 1000 H1)MOV AX ,[BX]AX← [21000 H] [21001 H]AX = 5B40 H 405B21000 H21001 H寄存器间接寻址可分为以下四种:2)MOV CX ,ES :[BX]AX ← [31000 H] [31001 H]2、以BP寄存器进行间接寻址——堆栈段基址寻址MOV AX,[BP]若SS = 5000 H,BP = 3000 H,将53020 H、53021 H单元的内容送AX。
计算机原理 第三章 8086微处理器的指令系统
汇编语言:汇编语言是一种符号语言,用助记符表示操作码,用符号
4
计算机原理 2013年7月10日9时44分
第三章 8086微处理器的指令系统
根据指令内容确定操作数地址的过程,称为寻址。
根据寻址方式计算所得到的地址叫做有效地址EA,也就是段 内偏移地址。有效地址还需要与相应的段基地址组合才是20位 的物理地址PA ,该工作由微处理器来完成。 寻址方式在两种方式下被涉及:操作数的寻址方式和指令的
3.3.6 处理器控制指令
2
计算机原理 2013年7月10日9时44分
第三章 8086微处理器的指令系统
3.1 指令系统概述 指令系统是一台计算机所能识别和执行的全部指令的集合。 它与微处理器有着密切的关系,不同的微处理器有不同的指令系统。 指令是使计算机执行某种特定操作的二进制编码。 指令一般包括两个部分:操作码域和地址域。 操作码域存放指令的操作码,即指明该指令应由计算机完成何种
22 计算机原理 2013年7月10日9时44分
第三章 8086微处理器的指令系统
8086操作数寻址方式小结:
立即寻址,操作数直接放在指令中。 隐含寻址,指令已经隐含了存放操作数的寄存器
寄存器寻址(8个通用寄存器)
直接寻址,有效地址由指令直接给出,即有效地址只包含位移量。 寄存器间接寻址和寄存器相对间接寻址(BX、BP、SI、DI,位移量)
10
计算机原理 2013年7月10日9时44分
第三章 8086微处理器的指令系统
例3.4 MOV AX,[2000H] 若(DS)=3000H,则执行情况如图示。 直接寻址也可用符号地址。 例3.5:MOV AX,VALUE/MOV AX,[VALUE]
这里,VALUE就是存放操作数单元的符号地址。
微机原理课件第三章8086寻址方式和指令系统
支持外部中断和内部中断,用于处理各种事 件和异常。
通过寄存器的内容来访问数据。
寄存器相对寻址
通过寄存器的内容加上偏移量来计算内存地 址,然后访问数据。
指令格式
操作码和操作数
指令由操作码和操作数组成。
操作数的个数
指令前缀
指令可以有不同数量的操作数, 包括零个、一个、两个或更多。
指令前缀用于改变指令的行为 或影响指令的执行方式。
指令系统
1
数据传送指令
微机原理课件第三章8086 寻址方式和指令系统
本章将介绍8086微处理器的寻址方式和指令系统。内容包括不同的寻址方式, 指令格式,指令系统,指令执行周期,以及8086处理器的特点和功能。
寻址方式
直接寻址
通过直接给出内存地址来访问数据。
寄存器间接寻址
通过寄存器的内容所指向的内存地址来访问 数据。
寄存器直接寻址
从内存中获取指令。 执行指令中的操作。 将结果存储回内存。 处理器响应中断请求。
8086处理器
8086处理器的特点
具有16位的数据总线和地址总线,支持最多 1MB的内存。
8086处理器的工作模式
包括实模式和保护模式,可以用于运行不同 类型的软件。
8086处理器的寄存器
包括通用寄存器、段寄存器和指令指针寄存 器。
用于在寄存器和内存之间传输数据。算,如加法、减法、乘法、除法和位操作。
3
逻辑指令
执行逻辑操作,如与、或、非和异或。
4
比较指令
用于比较两个值的大小,并根据比较结果设置标志位。
5
转移指令
用于无条件或有条件地改变指令执行的顺序。
指令执行周期
取指令周期 执行指令周期 存储指令周期 中断响应周期
第3章 8086指令系统
例如:MOV AX , [BX]
默认情况下,数据在DS段或SS段中,由间址寄存器决定; 物理地址PA = (DS) × 16 + (BX/SI/DI)
2017年3月13日星期一
;DS段 ;SS段
19
物理地址PA = (SS) × 16 + (BP)
寄存器间接寻址方式执行示意
地址加法器
该指令源操作数的寻址方式为寄存器相对寻址方式;
有效地址EA=(SI) + 100H =2445H,默认为DS段; 物理地址PA = (DS) × 16 + EA = 1000H ×16 + 2445H = 12445H
……
所以,该指令执行后 (BX) = (12445H) =2715H 12445H 15H
2017年3月13日星期一 5
3、示例指令
数据传送指令
MOV <目的操作数>,<源操作数> 指令功能 使用源操数的值为目的操作数赋值; 指令执行完,目的操作数的值与源操作数一样;
源操作数不变,目的操作数改变;
例如: MOV AX , 2 MOV AX , BX MOV AX , [BX]
∑ PA 20位
AH AL 1200H BH BL CH CL DH DL SP BP SI DI
通用寄存器 CS DS DS SS ES IP 内部暂存器 16位 输入/输出 控制电路 外 部 总 线
主存储器
1234H
16位
……
ALU
执行部 分控制 电路
12 3 4 5 8位 6 指令队列缓冲器
MOV AX , [BX]
第3章 8086指令系统
第三章 8086指令系统
SI PA DI DS 16 BX
PA BP SS 16
3.1 8086微处理器的寻址方式
3.1.2 8086微处理器的寻址方式
(4)、寄存器间接寻址
有效地址在SI、DI或BX中;
MOV AX,[SI]
低地址 DS 2000H SI 1000H 20000 + 1000 21000 AX 5E78H
3.1 8086微处理器的寻址方式
3.1.1 8086微处理器的指令结构 1、指令的构成
计算机中的指令由操作码字段和操作数字段构成
操作码字段用于表述操作的类型,以指示计算机 需要执行的动作; 操作数字段用于为动作提供处理的对象,即提供 指令执行中所需的操作数; 指令中的操作数可以是
3.2 8086微处理器的指令系统
3.2.2 8086指令系统详解-通用数据传送指令
具体讲,一条通用数据传送指令可以实现: (3)CPU内部寄存器(CS及IP除外)与存储器(所有寻址 方式)之间的数据传送,但存储单元间不能直接传送;
例:
MOV MOV MOV MOV MOV MOV MEM,AX ;累加器存储器,直接寻址 MEM,DS ;段寄存器存储器,直接寻址 DISP[BX],CX ;寄存器存储器,变址寻址 AX,DISP [SI];存储器累加器,变址寻址 DS,MEM ;存储器段寄存器,直接寻址 AX,DISP [BX][SI];存储器累加器,相对基址加变址
3.2 8086微处理器的指令系统
3.2.2 8086指令系统详解-通用数据传送指令
1. MOV 目的操作数,源操作数
功能:将一个字或字节的操作数从源传送到目的; 该指令可实现
寄存器寄存器/存储器的数据传送; 立即数寄存器/存储器的数据传送; 寄存器/存储器段寄存器间的数据传送
微机原理第3章8086指令系统-PPT课件
指令的基本概念和指令所包含的 基本内容。 8086指令的格式及编码方式。 8086指令的寻址方式及寻址过程。
8086指令系统的分类、功能及操
作过程,每条指令的格式及用法。
学习目的
掌握指令及指令系统的基本概念。 掌握8086各种寻址方式所执行的数 据寻址过程。
牢固地掌握存储器段地址:偏移地
MOV表示“传送”助记符,BL(寄存器) 表示结果存放的位置, AL (寄存器)表示数 据的来源。
No Image
记忆,但最终必须将助记符指令 “翻译” 成机器指令才能被识别和执行。这个过程
叫“汇编”。
助记符指令
No Image
汇编
助记符表示的指令便于书写、理解和
机器指令
3.3 8086 CPU的寻址方式
例:AAA 操作 :对固定寄存器 AL 中的内容进行十进制调 整,结果仍在AL中。(可能影响AH的内容)
十进制调整
AL
AH
结果
送回 影响
+1
2. 立即数寻址
操作数作为立即数就在指令中给出。
例:MOV AX,1234H
机器码:B8 34 12 (低字节在地址小的单元)
操作:把立即数1234H送寄存器AX中。
No Image
MOV AX,1234H
代码段 (存储器中)
AH
AX
56 12
指令执行后,AX=1234H (原有的内容被新
No Image
AL
78 34
B8 34 12
...
操作码(B8) 操作数(1234H) 立即数 一 条 指 令
...
的内容替换)。
3. 寄存器寻址
操作数在某个寄存器中。 例:INC BL
微机原理第三章 8086寻址和指令系统
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的寻址方式和指令系统
与有效地址有关的寻址方式的确定
有效地址的三种成分的不同组合形成以下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指令系统
基址寄存器号
变址寄存器号 位移量
段寄存器
段基址
变址寄存器
存储器
变址值
基址寄存器 基地址
⊕⊕
EA
操作数
相对基址变址寻址指令
MOV AX,[BX+SI+06H];AX←(DS:[BX+SI+06H])
MOV AX,06H[BX][SI] ;
地 址 总 结
物理地址(实地址、绝对地址) 0地址
物理地址 00000H 00001H 逻辑地址 0000:0000H 0000:0001H
100 011
REG
SP
R/M
BX
指令中的操作数
物理地址
段寄存器
1000 10000H
段基址
有效地址 EA=1000H EA=1002H
11000H
位移量 =02H
MOV AX,[1000H]
11002H
MOV AX,2[BX] (BX)=1000H
3.2.2 寻址方式
1 2 3 4 5 6 7 8 立即寻址 寄存器寻址 直接寻址 寄存器间接寻址 基址/变址寻址 基址加变址寻址 串寻址 I/O 端口寻址
:
: DATA1 00000001 00000010 11000H 11001H
DATA2 DW 1,2
: MOV AL,DATA2 MOV AX,DATA1
DATA2
00000001
00000000 00000010 00000000
11002H
11003H 11004H 11005H
:
11006H
8086寻址方式
逻辑地址→物理地址
寻址(addressing) : 把物理地址分配给程序 的各条指令的过程。
8086指令系统课件
第3页,共175页。
第四章 8086 指令系统
(1)零操作数指令
格式:
操作码
即指令中只有操作码,没有操作数,也称为无操作数指 令。有两种情况使用这种指令:
一是指令中不需要任何操作数,如空操作指令、停机指令 等;
二是指令的操作数是默认,如加法的ASCII码 调整、 十进制BCD调整指令等。
不同的指令系统。
第2页,共175页。
第四章 8086 指令系统
4.1.2 汇编指令格式
一条指令一般包含操作码和操作数两部分。
操作码用来表示该指令所要完成的操作,不同的指令用
不同的操作码表示;
操作数用来描述指令的操作对象,操作数可以是立即数、
寄存器和存储器的地址,不同的指令可以有一个、 二个、三个 或无操作数。
第14页,共175页。
第四章 8086 指令系统
6.基址变址寻址( Based Indexed Addressing)
操作数的有效地址为基址寄存器(BX或BP)和变址 寄存器(SI或DI)的内容之和。
物理地址=16(段寄存器)+(基址寄存器)+ (变址寄存器)
【例4.7】 MOV AX,[BX][DI]
=30000H+1000H+2000H+250H=33250H
第16页,共175页。
第四章 8086 指令系统
4.2.2 与程序转移有关的寻址方式
指令在顺序执行时,下一条指令的地址总是由指令指针IP 自动递增得到。
若程序非顺序执行,将要执行的指令的地址如何得 到呢? 又分为段内转移和段间转移:
段内转移:需要给出即将执行的那条指令的偏移地址,并用 它取代IP的原有内容;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• SHR/SAR每移1位,可视为分别将无符号数和带符号数除以2;使 用SHL/SAL每移1位,可视为将数值乘以2。
2020/7/13
8
School of Automation Science and Electrical Engineering
➢ 串操作指令是唯一的一组源操作数和目的操作数都在存储单元的指令。
➢方向标志DF决定指针的修改方向— DF =0,指针加;DF =1,指针减。串元素的类型决 定修改量——字节串,指针加减1;字串,指针加/减2。 ➢加有重复前缀时,固定使用CX计数并修改重复次数,再根据CX值及标志位ZF判断是否 重复进行串操作。前缀本身不影响任何标志位。
1.两个操作数要满足类型组合:D (R或M), S(R/M/N)
2.TEST不改变目标操作数内容, 其后常紧跟条件转移指令以 实现判断分支, AND将运算结果送目标操作数
3.逻辑操作按位进行
2020/7/13
4
School of Automation Science and Electrical Engineering
LODS B ;(字节)(AL) ((DS):(SI)),(SI) (SI) ±1 LODS W ;(字) (AX) ((DS):(SI)),(SI) (SI)±2
2020/7/13
1
School of Automation Science and Electrical Engineering
Computer and Systems
第3章 8086/8088微处理器及其系统
92种基本指令,全部公开,
六个功能组(六大类)
一、 数据传送(Data transfer)P65-P73 二、 算术运算(Arithmetic)P73-P86 三、 逻辑运算和移位指令(Logic & Shift) 四、 串操作(String manipulation) 五、 控制转移(Control Transfer) 六、 处理器控制(Processor Control)
9
School of Automation Science and Electrical Engineering
Computer and Systems
5. 8086/8088指令系统
四、串操作(String manipulation)
–串内存中一段地址连续的字节或字存储单元。通常用于 存放同一类数据。数据源:源串;数据结果:目的串。
Computer and Systems
5. 8086/8088指令系统
三、逻辑运算和移位指令(Logic & Shift)
– 逻辑运算指令格式 – 逻辑与 AND D, S – 逻辑或 OR D, S – 异 或 XOR D, S – 逻辑非 NOT D
– TEST TEST D,S
; DEST∧SRC→DEST ; DEST ∨ SRC → DEST ; DEST ⊕ SRC → DEST ; DEST → DEST ; DEST ∧ SRC
5. 8086/8088指令系统
四、串操作(String manipulation)
– LODS(Load from string)读串指令,一般不加前缀
LODS ;(字节)(AL) ((DS):(SI)), (SI) (SI) ±1 ;(字) (AX) ((DS):(SI)),(SI) (SI)±2
MOV单指令不能完成存储单元之间的数据传送; MOVS指令就是为解决 存储单元之间数据传送而设置的 MOVSB/MOVSW隐含了源、目的操作数
2020/7/13
12
School of Automation Science and Electrical Engineering
Computer and Systems
;移1位 ;移CL次
2020/7/13
6
School of Automation Science and Electrical Engineering
Computer and Systems
5. 8086/8088指令系统
三、逻辑运算和移位指令(Logic & Shift)
– 循环移位指令
2020/7/13
四、串操作(String manipulation)
– CMPS(Compare string ) 串比较指令
CMPS D,S ;((ES):(DI) - (DS):(SI)),结果不存,置标志
CMPSB
; (字节) (SI) (SI)±1,(DI)←(DI) ±1
CMPSW
; (字)(SI) (SI)±2,(DI) (DI)±2
2020/7/13
5
School of Automation Science and Electrical Engineering
Computer and Systems
5. 8086/8088指令系统
三、逻辑运算和移位指令(Logic & Shift)
– 移位指令
格式: SAL/SAR/SHL/SHR OPRD,1 SAL/SAR/SHL/SHR OPRD,CL
–串操作对串中各项进行操作(传送、比较、检索、装入 (读)、存储(写)),也叫数据块操作。串操作指令是 8086/8088实现内存之间数据传送的一组指令。
–串操作重复前缀加在串操作指令之前,根据不同条件判 断是否重复执行串操作。可以实现对整个串的同一种操作。
2020/7/13
10
School of Automation Science and Electrical Engineering
Computer and Systems
5. 8086/8088指令系统
三、逻辑运算和移位指令(Logic & Shift)
– 逻辑运算指令应用
• AND指令通常用于将操作数的某些位清0 AND AL,0FCH ;AL的低2位清0,其余保持不变 • TEST指令常用于“取出”操作数的某一位来进行判断 TEST AL,20H ;取AL的D5位
与前缀REPNE连用
(DI)—字符串起始地址,(AL)或(AX) — 关键字
两数相减, 只影响标志, 不影响操作数, 其它特性同MOVS
在串中查找关键字。
2020/7/13
14
School of Automation Science and Electrical Engineering
Computer and Systems
– 分析下面的程序段所实现的功能(可以用别的指令实现吗) SHL AL,1 ; 将AL中数左移1位,得2X MOV BL,AL ; 2X保存在BL中 MOV CL,2 ; 移位次数置入CL中 SHL AL,CL ; 2X左移2位,得8X ADD AL,BL ; 2X加上8X,所以AL中为10X
2020/7/13
三、逻辑运算和移位指令(Logic & Shift) –小结
• AND、TEST、OR、XOR指令对标志位的影响:固定使CF=OF=0; 根据运算结果改变SF、ZF、PF。
• NOT指令形式上只有一个操作数;不影响任何标志位。
• SAL、SAR、SHL、SHR指令的使用方法相同,对标志位的影响 也相同:移出位给CF;根据结果改变SF、ZF、PF;当移位次数为1 时,影响OF。
位 循环移位
串
串操作
处 理
重复控制
助记符
AND, TEST, OR, XOR, NOT SHL, SAL, SHR, SAR ROL, ROR, RCL, RCR MOVS, CMPS, SCAS, LODS,STOS REP, REPE/REPZ, REPNE/REPNZ
2020/7/13
3
School of Automation Science and Electrical Engineering
Computer and Systems
第3章 8086/8088微处理器及其系统
• 1. 8086/8088微处理器结构
– 微处理器功能结构 – 寄存器结构(编程结构)
• 2. 8086/8088存储器组织 • 3. 8086/8088工作方式
– 时序和引脚信号 – 最大和最小模式
• 4. 8086/8088寻址方式 • 5. 8086/8088指令系统
STD; 设DF=1 MOV CX,6 ;串操作次数
MOV SI, 1005 MOV DI, 1007 REP MOVSB
X
2020/7/13
13
School of Automation Science and Electrical Engineering
Computer and Systems
5. 8086/8088指令系统
与前缀REPZ连用
两数相减,只影响标志,不影响操作数,其它操作规定与MOVS同。
作用:比较两个串是否完成相同(P88,例3.67)
– SCAS (Scan string ) 串扫描、搜索指令
SCБайду номын сангаасS
SCASB
;(字节)(AL) - ((ES):(DI)),(DI)(DI)±1
SCASW
;(字)(AX)- ((ES):(DI)),(DI) (DI)±2
5. 8086/8088指令系统
思考:重叠串操作
SI 4000H:1000H 34 4000H:1000H 34H,0F2H,1CH,89H,76H,6BH
4000H:1001H F2
4000H:1002H 1C 4000H:1002H
DI 4000H:1003H 89 4000H:1003H