第三章_8086的寻址方式和指令系统[3-3.1]
微机原理课件第三章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.1寻址方式
例:(BX)=2000H,(SI)=1000H,偏移量=0250H,
则EA= 2000H+1000H+0250H=3250H
寻址目的
确定本条指令的操作数据 在指令中 PA:存储器内的绝对地址(20位) 在存储器中 EA:某个段内的相对地址(16位) 在寄存器中 确定下一条指令的地址 根据指令长度计算 根据转移指令的目标地址
寄存器名表示其内容(操作数)
MOV AX, BX
MOV AL, BH
;AX←BX
;AL←BH
演示
第3章: 3.1.3 存储器寻址方式
操作数在主存储器中,用主存地址表示 程序设计时,8088采用逻辑地址表示主存地址
段地址在默认的或用段超越前缀指定的段寄存器中 指令中只需给出操作数的偏移地址(有效地址EA)
演示
;AX←DS:[SI+06H]
第3章:4. 基址加变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上 变址寄存器(SI或DI)的内容构成: 有效地址=BX/BP+SI/DI 段地址对应BX基址寄存器默认是DS,对应BP基 址寄存器默认是SS;可用段超越前缀改变
MOV AX, [BX+SI] MOV AX, [BX][SI]
*微型计算机汇编语言特点 *微型计算机指令系统概述 *寻址方式
指令及其格式
指令及指令集 计算机能够识别和执行的基本操作命令
指令的作用
告诉CPU干什么?What? 告诉CPU从哪儿取数据?Where? 告诉CPU下一条指令在哪儿?Where? 操作码 操作数或操作数地址 指令的格式
微机原理第三章 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指令从第一个操作数中 减去第二个操作数,并将结 果存储在目标操作数中。
逻辑运算类指令
逻辑运算类指令用于执行逻 辑与、或、非等逻辑运算。
第三章 8086的寻址方式和指令系统[3-4]
§3-3 8086的指令系统
3、循环控制指令(Iteration Control)
通常的循环控制
MOV CX, N ; N为循环次数 BEGIN: …. …. …. DEC CX JNZ BEGIN 用LOOP BEGIN替换
循环体
有了循环控制指令,上面程序简化为: MOV CX, N BEGIN: ……
单字节指令,总是被安排在中断服务程序的出口处。
任何中断服务程序不管是外部中断引起的,还是内部中断引起的 , 最后都要
用IRET返回。
举例:
主程序: CODE START: SEGMENT ASSUME CS:CODE, DS:CODE …… STI . . . ENDS END START 中断子程序: …… STI . . . CLI … STI IRET
微型计算机原理与接口技术
第 8讲 佘青山
86919130 qsshe@
There’s always more to learn, and there are always better ways to do what you’ve done
( 1 )无符号数比较测试指令中,指令助记符中的“ A”是英文 Above的缩写, 表示“高于”之意,“B”是英文Below的缩写,表示“低于”之意;
(2)带符号数比较测试指令中,指令助记符中的“G”(Great than)表示大于, “L”(Less than)表示小于。
12:16
17
§3-3 8086的指令系统
24
CODE
12:16
§3-3 8086的指令系统
6类指令系统:
数据传送指令 算术运算指令 逻辑运算和移位指令 字符串处理指令
05第3章 8086寻址方式和指令系统1PPT课件
2020/10/30
11
指令中符号的判别(1)
• 直接寻址在汇编语言书写形式上类似立即数寻址,必 须从整个程序上下文分析中才能得出正确结论。
例如:
DSEG SEGMENT
DATANDS
CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG
START: MOV AX, DSEG
AX AH AL
代码段
OP 64 30
操作码
操作数 (立即数)
2020/10/30
6
3.1.2 寄存器寻址方式
指令 寄存器号
寄存器 操作数
寄存器寻址方式示意图
• 操作数在寄存器中,指令指定寄存器号。对于16位操作数, 寄存器可以是AX、BX、CX、DX、SI、DI、SP和BP等; 对于8位操作数,寄存器可以是AH、AL、BH、BL、CH、 CL、DH和DL等。这种寻址方式操作数的示意如上图所示。
2020/10/30
3
3.1 8086的寻址方式
• 立即数寻址方式 • 寄存器寻址方式 • 直接寻址方式 • 寄存器间接寻址方式 • 寄存器相对寻址方式 • 基址变址寻址方式 • 相对基址变址寻址方式 • 其他
2020/10/30
4
3.1.1 立即数寻址方式
• 操作数直接存放在指令中,紧跟在操作码之后,它作 为指令的数字段存放在指令代码中,这种操作数称为 立即数。立即数可以是8位的或16位的。如果是16位立 即数,则低位字节数存放在低地址单元中,高位字节 数存放在高地址单元中。机器码存放形式如下所示:
微型计算机原理与接口技术 第5讲
电子邮件:gqz@
1
第3章 8086寻址方式和指令系统
• 本章介绍以下内容
微机原理课件第三章8086寻址方式和指令系统
支持外部中断和内部中断,用于处理各种事 件和异常。
通过寄存器的内容来访问数据。
寄存器相对寻址
通过寄存器的内容加上偏移量来计算内存地 址,然后访问数据。
指令格式
操作码和操作数
指令由操作码和操作数组成。
操作数的个数
指令前缀
指令可以有不同数量的操作数, 包括零个、一个、两个或更多。
指令前缀用于改变指令的行为 或影响指令的执行方式。
指令系统
1
数据传送指令
微机原理课件第三章8086 寻址方式和指令系统
本章将介绍8086微处理器的寻址方式和指令系统。内容包括不同的寻址方式, 指令格式,指令系统,指令执行周期,以及8086处理器的特点和功能。
寻址方式
直接寻址
通过直接给出内存地址来访问数据。
寄存器间接寻址
通过寄存器的内容所指向的内存地址来访问 数据。
寄存器直接寻址
从内存中获取指令。 执行指令中的操作。 将结果存储回内存。 处理器响应中断请求。
8086处理器
8086处理器的特点
具有16位的数据总线和地址总线,支持最多 1MB的内存。
8086处理器的工作模式
包括实模式和保护模式,可以用于运行不同 类型的软件。
8086处理器的寄存器
包括通用寄存器、段寄存器和指令指针寄存 器。
用于在寄存器和内存之间传输数据。算,如加法、减法、乘法、除法和位操作。
3
逻辑指令
执行逻辑操作,如与、或、非和异或。
4
比较指令
用于比较两个值的大小,并根据比较结果设置标志位。
5
转移指令
用于无条件或有条件地改变指令执行的顺序。
指令执行周期
取指令周期 执行指令周期 存储指令周期 中断响应周期
寻址方式和指令系统
寻址⽅式和指令系统《微机原理》复习思考题第3章 8086的寻址⽅式和指令系统3.1 8086汇编语⾔指令的寻址⽅式有哪⼏类?⽤哪⼀种寻址⽅式的指令执⾏速度最快?3.2 直接寻址⽅式中,⼀般只指出操作数的偏移地址,那么,段地址如何确定?如果要⽤某个段寄存器指出段地址,指令中应如何表⽰?3.3 在寄存器间接寻址⽅式中,如果指令中没有具体指明段寄存器,那么,段地址如何确定?3.4 ⽤寄存器间接寻址⽅式时,BX,BP,SI,DI分别针对什么情况来使⽤?这四个寄存器组合间接寻址时,地址是怎样计算的?举例进⾏说明。
3.5 设DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下⾯两条指令所进⾏的具体操作:MOV BYTE PTR [BP], 2000MOV WORD PTR [BX], 20003.6 使⽤堆栈操作指令时要注意什么问题?传送指令和交换指令在涉及内容操作数时分别要注意什么问题?3.7 下⾯这些指令中哪些是正确的?哪些是错误的?如果是错误的,请说明原因。
XCHG CS, AXMOV [BX], [1000]XCHG BX, IPPUSH CSPOP CSIN BX, DXMOV BYTE[BX], 1000MOV CS, [1000]3.8 8086系统中,当对SS和SP寄存器的值进⾏修改时,有什么特殊规定?这样做的原因是什么?[解答] 凡是遇到给SS寄存器赋值的传送指令时,系统会⾃动禁⽌外部中断,等到本条指令和下条指令执⾏之后,⼜⾃动恢复对SS寄存器赋值前的中断开放情况。
这样做是为了允许程序员连续⽤两条指令分别对SS和SP寄存器赋值,同时⼜防⽌堆栈空间变动过程中出现中断。
3.9 以下是格雷码的编码表0——0000 1——0001 2——0011 3——0010 4——01105——0111 6——0101 7——0100 8——1100 9——1101请⽤换码指令和其他指令设计⼀个程序段,实现格雷码往ASCII的转换。
汇编语言 第3章1 80x86的指令系统和寻址方式
CS、DS、SS、ES
寄存器寻址指令
MOV AX,1234H MOV BX,AX ;AX←1234H ;BX←AX
寄存器寻址
3.1.4 存储器寻址方式
指令中给出操作数的主存地址信息(偏移
地址,称之为有效地址EA),而段地址在 默认的或用段超越前缀指定的段寄存器中
8086设计了多种存储器寻址方式
量之和,寄存器可以是BX、BP或SI、DI 有效地址=BX/BP/SI/DI+8/16位位移量
段地址对应BX/SI/DI寄存器默认是DS,对应BP
寄存器默认是SS;可用段超越前缀改变 MOV AX,[DI+06H]; mov ax,table[di] ;AX←DS:[DI+06H] MOV AX,[BP+06H] ;AX←SS:[BP+06H] 相对寻址
;AX←DS:[BX+SI+06H]
相对基址变址
位移量可用符号表示 同一寻址方式有多种表达形式
指令操作数的表达-寄存器
r8——任意一个8位通用寄存器
AH AL BH BL CH CL DH DL
r16——任意一个16位通用寄存器
AX BX CX DX SI DI BP SP
reg——代表r8或r16
(4)基址变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上
变址寄存器(SI或DI)的内容构成:
有效地址=BX/BP+SI/DI
段地址对应BX基址寄存器默认是DS,对应BP
基址寄存器默认是SS;可用段超越前缀改变 MOV AX,[BX+SI] ;AX←DS:[BX+SI] MOV AX,[BP+DI] ;AX←SS:[BP+DI] MOV AX,DS:[BP+DI] ;AX←DS:[BP+DI]
微机原理与接口技术 8086的寻址方式和指令系统[3-1]
微机原理与接口技术第五讲第三章8086的寻址方式和指令系统内容提要z8086的寻址方式z微机系统指令的机器码表示方法z8086的指令系统§3-1 8086的寻址方式概述z计算机的指令包括:操作码+操作数↓↓操作的性质操作的对象↓存放寄存器、存储器、I/O端口地址、立即数(由寻址方式决定)z寻址方式:指令中说明操作数所在地址的方法。
z指令分类:单操作数、双操作数、无操作数。
(双操作数指令形式:操作码目的操作数,源操作数)各种寻址方式指令执行速度不同:z操作数在寄存器中指令执行速度快:在CPU内部立即执行;z立即数寻址指令执行速度较快:直接从指令队列中取数;z操作数在存储器中指令执行速度较慢:通过总线与CPU交换数据。
CPU进行读/写存储器的操作:①把一个偏移量送到BIU,计算出20位物理地址;②执行总线周期存取操作数。
寻址方式举例:8086指令的寻址方式类型一、立即寻址方式二、寄存器寻址方式三、直接寻址方式四、寄存器间接寻址方式五、寄存器相对寻址方式六、基址变址寻址方式七、相对基址变址寻址方式八、其它一、立即寻址方式(Immediate Addressing )1.含义:操作数是立即数(即8位或16位的常数),直接包含在指令中。
2.特点:翻译成机器码时,立即数是指令的一部分,紧跟在操作码之后存放在代码段内。
在取出指令的同时也就取出了操作数,立即有操作数可用,所以称之为立即寻址。
16位数:高字节→代码段的高地址单元,低字节→低地址单元;3.作用:常用于给寄存器赋初值。
§3-1 8086的寻址方式—概述8086指令的寻址方式类型一、立即寻址方式二、寄存器寻址方式三、直接寻址方式四、寄存器间接寻址方式五、寄存器相对寻址方式六、基址变址寻址方式七、相对基址变址寻址方式八、其它§3-1 8086的寻址方式——寄存器寻址方式§3-1 8086的寻址方式—概述8086指令的寻址方式类型一、立即寻址方式二、寄存器寻址方式三、直接寻址方式四、寄存器间接寻址方式五、寄存器相对寻址方式六、基址变址寻址方式七、相对基址变址寻址方式八、其它§3-1 8086的寻址方式——直接寻址方式三、直接寻址方式(Direct Addressing)1.含义:存储单元的有效地址EA(即:操作数的偏移地址)直接由指令给出。
计算机原理指令系统
I/O端口寻址
二. I/O端口寻址
操作数在I/O端口中时,必须通过累加器(AX或AL)实现对端口的访问 1. 直接端口寻址 — 指令直接提供8位端口的地址 例:IN AL, 63H ;AL(63H) 端口寻址时,地址不加[ ],当端口地址可用一个字节来表示时,可使用 直接端口寻址 2. 间接端口寻址 — 由DX寄存器给出16位端口地址
例:MOV AX, [BX+1000H] ;AX BX+1000H 所指向的存储单元 内容
若BX = 2000H,则将数据段(3000H, 3001H)的内容传送给AX
指令也可书写为: MOV AX, 1000H[BX]
7. 基址变址寻址
操作数的有效地址由基址寄存器和变址寄存器的内容相加产生
例:MOV
8086指令介绍
第3.3节 8086指令介绍
8086 CPU共有133条指令,根据操作性质,可分为: ➢ 传输指令 ➢ 算术运算指令 ➢ 逻辑运算和移位指令 ➢ 串操作指令 ➢ 控制转移指令
※ 操作数的符号表示 ✓ DST:目的操作数 ✓ SRC:源操作数 ✓ TARGET:循环、转移和调用指令中的目的操作数
CPU内部操作数寻址
一. 数据寻址方式
1. 立即数寻址
指令中直接给出操作数,指令执行时可以立即得到,此时 把操作数又称作“立即数”
例:MOV AL,5 ;AL5
2. 寄存器寻址
操作数放在CPU内部的寄存器中,在指令中直接指出寄存 器的名字
例:INC CX ;将CX的内容加1
3. 隐含寻址
指令已经默认是对CPU中的某个寄存器操作
PUSH 1000 错误
➢ 操作:DST (SP+1, SP),SP SP+2
第三章 8086的寻址方式
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表示操作数, 显然这样的表示方式更清晰,更便于记忆和使用。 用符号、助记符书写的指令称为符号指令。用符号指令书写程 序的规范称为汇编语言,对应的程序称为汇编语言源程序。
第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章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所示。
第3章 指令系统 3.1 寻址方式3.1.1 指令格式及操作数类型1.指令...
格式:CBW 功能:把AL中的符号位扩展到AH。即如果AL的最高位为0, 则AH=00H;如AL的最高位为1,则AH=FFH。 (2).字扩展为双字指令CWD 格式:CWD 功能:把AX的符号位扩展到DX。即如果AX的最高位为0,则 DX=0000H;如AX的最高位为1,则DX=FFFFH。 3.2.3 逻辑运算及移位指令 1.逻辑运算指令 (1).逻辑与指令AND 格式:AND 功能:OPD←OPD∧OPS. 允许的操作数组合:OPD与OPS的组合情况完全等同于ADD指 令,参图3-9所示。 应用:与指令可使一个操作数在其它位不变情况下将某些位 置0.要保持不变的位应与1相与要置0的位应与0相与。
格式:XCHG OPD,OPS 功能:将两个操作数OPD与OPS的内容互换. 允许的操作数组合:交换可以在通用寄存器之间或通用寄存 器与存储器之间进行,OPD与OPS可以同 时是字节或字操作数。 (2).换码指令XLAT 格式:XLAT (格式1)或:XLAT OPS (格式2) 功能:XLAT指令将一种代码转换成另一种代码, 允许的操作数组合:该指令操作数全为隐含,换码表地址在 BX中,欲读取数据表单元偏移量在AL中。 对于格式2,虽然指令中有一个操作数OPS,OPS为表格的首 地址,但这个操作数仅是为提高程序的可读性而设置的,实 际上并不使用这个操作数。 4.地址传送指令 地址传送指令共有三条:LEA、LDS和LES,其中最常用的是 LEA指令,LDS和LES很少用到。
1.立即寻址 当需要的操作数为常数时,操作数可以在指令中直接给出,
这种寻址方式称为立即寻址方式。 2.寄存器寻址 当指令所需要的操作数在寄存器中时,在指令中指出需访问 的寄存器名字即可,这种寻址方式称为寄存器寻址。 其寻址方式如下图所示。 3.直接寻址 在这种寻址方式中,操作数在内存 单元中,并且在指令中直接给出这一 单元的逻辑地址。 4.寄存器间接寻址 图3-1 寄存器寻址 在这种寻址方式中,操作数在内存 单元中,并且在指令中按如下方式给出这一单元的逻辑地址: 段基址:段基址的给出同直接寻址。 偏称量:以寄存器SI、DI、BP、BX之一的内容作为偏称量。 5.变址寻址 变址寻址基本上同寄存器间接寻址,只是逻辑地址中偏移量 的给出方式不同:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(其中: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)
指令格式:SAL 目的,计数值
(2)SHL逻辑左移指令(Shift Logic Left)
指令格式:SHL 目的,计数值
指令功能:以上两条指令的功能完全相同 ,均将寄存器或存储器中的目 的操作数的各位左移,每移一次,最低有效位LSB补0,而最高有效位
MSB进入标志位CF。
例: MOV AH,06H SAL AH,1 ;AH=06H ;将AH的内容左移1次,AH=?,CF=? ;将DI的内容左移3次 ;将内存单元的字节左移1位
指令格式:SAR 目的,计数值
指令功能:各位右移。每移位一次,最高位(即符号位)保持不 变,最低位进入CF 。 注意:每移一次,相当于对带符号数进行除2操作。
例:用SAR指令计算-128/8=-16。 解:MOV AL,1000 0000B ;AL=-128 MOV CL,03H SAR AL,CL ;右移次数3 ;算术右移3次后,AL=11110000B=0F0H=-16
例1: 使AX的CF和OF标志位清0
AND AX, AX 例2:设AL寄存器中存有报警标志。若D7=1,表示温度报警,程序要转到温度
报警处理程序T_ ALARM;D6=1,则转压力报警程序P_ALARM。用TEST指
令来实现这种功能。 解:TEST AL,80H JNZ JNZ T_ALARM P_ALARM TEST AL,40H ;查AL的D7=1? ;是1(非零),则转温度报警程序 ;D7=0,D6=1? ;是1,转压力报警
19
§3-3 8086的指令系统
注意:
循环移位后:结果→目的操作数。
目的操作数可以是8/16位的寄存器、存储器,移位的次数可以 是1,也可以由CL寄存器的值指定。 关于标志位:
(1)ROL和ROR指令没有把进位标志CF包含在循环中;而RCL和RCR指令
把CF作为整个循环的一部分,一起参加循环移位。
RCL
RCR
通过进位的循环左移
通过进位的循环右移
3
§3-3 8086的指令系统
1、逻辑运算指令(Logical Operations)
(1)NOT取反指令(Logical Not)
指令格式:NOT 目的 指令功能:目的 目的取反 操作数要求: ①可以是8位或16位寄存器、存储器。 ②对于存储器操作,需指明是字还是字节。 注意:指令执行后,对标志位无影响。 例: NOT AX NOT BL NOT BYTE PTR[BX] ;AX AX取反 ;BL BL取反 ;对存储单元字节内容取反后送回该单元
逻辑运算(5条)
NOT
取反
逻辑乘(与) 逻辑加(或) 异或 测试
三、逻辑运算和移位指 令
指令的种类:
(1)逻辑运算 (2)算术逻辑移位 (3)循环移位
AND OR XOR TEST
算术逻辑移位(4条)
SHL/SAL 逻辑/算术左移 SHR SAR ROL ROR 逻辑右移 算术右移
循环移位(4条)
循环左移 循环右移
13
MOV CL,03H
SHL DI,CL SAL BYTE PTR[BX],1
§3-3 8086的指令系统
注意:
每左移一次,相当于将目的操作数乘以2;
计数值就是所要移位的次数: 若移位一次,直接将计数值置1;
移位次数大于1,将移位次数送进CL,再把CL放在计数值位置上
对标志位的影响: 移位次数为1时,若移位后最高位的值被改变,OF置1,否则OF清 0;而多次移位时,OF的值不确定。 不论移多少次,CF总是等于目的操作数最后被移出去的值。 SF和ZF将根据指令执行后目的操作数的状态来决定,PF只有当目 的操作数在AL中时才有效,AF不定。
第三章 8086的寻址方式和指令系统
内容提要
8086的寻址方式
微机系统指令的机器码表示方法
8086的指令系统
1
§3-3 8086的指令系统
6类指令系统:
数据传送指令 算术运算指令 逻辑运算和移位指令 字符串处理指令
控制转移指令
处理器控制指令
2
§3-3 8086的指令系统
MOV BL, AL ; 2x保存到BL,作为加数 MOV CL, 2 ; 移位次数送入CL
SAL AL, CL ; 2x左移2位,得8x ADD AL, BL ; 8x+2x = 10x
17
Байду номын сангаас
§3-3 8086的指令系统
3.循环移位指令(Rotate)
算术逻辑移位指令,移出操作数的数位均被丢失。循环移位指令把操 作数从一端移到另一端,移出的位不丢失。循环移位指令共四条: ⑴ ROL循环左移指令(Rotate Left) 指令格式:ROL 目的,计数值 ⑵ ROR循环右移指令(Rotate Right) 指令格式:ROR 目的,计数值 ⑶ RCL通过进位位循环左移(Rotate through Carry Left) 指令格式:RCL 目的,计数值 ⑷ RCR通过进位位循环右移(Rotate through Carry Right) 指令格式:RCR 目的,计数值
例1:把AX寄存器清零。 ① MOV AX, 0
② XOR AX, AX
③ AND AX, 0 ④ SUB AX, AX
例2:把DH的bit4, bit3变反 XOR DH, 00011000B ;即 XOR DH,18H
8
§3-3 8086的指令系统
(5)TEST测试指令(Test)
指令格式:TEST 目的,源
低位补0.
算术移位:把操作数作为有符号数进行移位。右移时,最高位保持不变;左移时,
最低位补0(左移1位时,若最高位(即符号位)发生改变(0→1或1 → 0),则OF=1;未发生改变时,OF =0 ).
12
§3-3 8086的指令系统
(1)SAL算术左移指令(Shift Arithmetic Left)
4
§3-3 8086的指令系统
(2)AND逻辑与指令(Logical AND)
指令格式:AND 目的,源
指令功能:目的目的∧源 指令用途:主要用于使操作数的某些位保留(和“1”相与)
,而使某些位清除(和“0”相与)。
例1:保留AL中低4位,高4位清0。保留AX中低8位,高8位清0? AND AL, 0FH 例2:AL中有字符’a’~’z’, 将其转换成大写。 MOV AL, ‘a’ ; ‘a’~’z’: 61H~7AH AND AL, 01011111B; ‘A’~’Z’:41H~5AH
14
§3-3 8086的指令系统
(3)逻辑右移指令(Shift Logic Right)
指令格式:SHR 目的,计数值
指令功能:各位进行右移。每移一次,低位进入CF,最高位补0。 注意:目的操作数为无符号数,每右移一次,目的操作数除以2,余数
被丢掉。
例:用右移的方法作除法133/8=16…5。
JNZ
…… MINUS:
MINUS ;是1(负数),转MINUS (JNZ为条件转移指令,表示ZF=0则转移)
;否则为正数
9
§3-3 8086的指令系统
对AND 、 OR 、XOR和TEST指令的说明:
源操作数可以是8位或16位立即数、寄存器、存储器;
目的操作数只能是寄存器、存储器,两操作数不能同时为存储器; 指令执行后,均将CF和OF清零,ZF、SF和 PF反映操作结果,AF未定义。
18
§3-3 8086的指令系统
循环移位指令操作示意图
CF MSB LSB ROL 循环左移
CF
MSB
LSB
ROR 循环右移
CF
MSB
LSB
RCL 通过进位位的 循环左移
CF
MSB
LSB
RCR 通过进位位 的循环右移
格式同非循环移位指令。
移位位数放在CL寄存器中,如果只移1位,也可以直接写在指令中
指令功能:目的∧源 逻辑与操作,并修改标志位,但不回送结果,两个操作数都不变