微机原理第三章 80868088指令系统3-1基本数据类型
第三章80868088指令系统

第三章80868088指令系统机器语言指令由二进制代码组成。
一条指令一般包含操作码(OP )和操作数两部分,操作码指明指令所完成的操作,操作数指出该指令在执行规定操作时所需的信息。
指令中用于说明操作数(一般指源操作数)所在地址的方式被称为寻址方式。
(8086的寻址方式分两类:数据寻址方式和转移地址的寻址方式)3.2.1数据寻址方式 P51 1.立即寻址:数据是8位或16位,直接放在指令的最后一个(8位)或两个字节(16位)中,这样的数据称为立即数。
MOV AL ,80HADD AX ,0F000HMOV AX ,1234HADD AL ,10H操作码字节AX操作数字节操作码字节操作数(a )MOV AL , 80H(b )MOV AX , 1234H图3-2 立即寻址方式指令举例 P522. 寄存器寻址:数据存放在指令规定的寄存器中。
MOV CL ,DL MOV AX ,BX注意:在双操作数指令中源操作数寻址方式和目的操作数寻址方式。
CL DL AXAL AHBL BH (a )MOV CL , DL (b )MOV AX , BX图3-3 寄存器寻址方式指令举例 P523. 直接寻址:操作数在存储器中,其16位有效地址,即段内偏移地址在指令码中,占两个字节。
MOV AL ,[1064H] ;设(DS )=2000HADD AX ,[2000H]代码段操作数偏移地址数据段图3-4 直接寻址方式指令举例 P53操作数数据4. 寄存器间接寻址:操作数在存储器中,其16位有效地址EA 在指令指定的基址寄存器BX 或变址寄存器SI 、DI 中。
BX EA = SIDI 注意:新教材中有BP 【例】 MOV AX ,[SI] MOV [BX] , AL 如果:(DS )=3000H ,(SI )=2000H ,(BX )=1000H,(AL )=64H注意:默认段地址寄存器为DS 以上为二字节指令;MOV AX,[BP]为三字节指令;实为指令MOV AX ,[BP+0]的简写!图3-5 寄存器间接寻址方式指令举例 P535. 寄存器相对寻址:操作数在存储器中,其效地址是一个8位或16位的位移量与一个基址寄存器或变址寄存器的内容之和。
微机原理 第三章 微处理器

青岛理工大学琴岛学院
表3.1 通用寄存器的特定用法
寄存器 操作 寄存器 操作 在移位指令中作 移位次数计数器
AX
字乘,字除,字I/O
CL
AL
字节乘,字节除,字节I/O, 查表转换,十进制运算
字节乘,字节除
DX
字乘,字除指令 中作辅助累加器
堆栈操作,做堆 栈指针
AH
SP
BX
查表转换,做基址寄存器
SI
青岛理工大学琴岛学院
2)逻辑地址与物理地址
逻辑地址(LA)和物理地址(PA):
物理地址:就是存储器的实际地址,它是指CPU和存储器 进行数据交换时所使用的地址(20位)。
逻辑地址:是在程序中使用的地址,它由段基址和偏移地
址两部分组成(16位)。
物理地址=段基址(左移4位)+偏移量
形成20位段 起始地址 16位
青岛理工大学琴岛学院
2 . 8086/8088CPU的寄存器结构
8086/8088CPU中可供编程使用的有14个16位寄存器, 按其用途可分为3类:通用寄存器、段寄存器、指针和标 志寄存器,如所示。
AH BH CH DH SP BP SI DI FLAGS IP CS DS SS ES AL BL CL DL 累加器 基址寄存器 计数寄存器 数据寄存器 数据寄存器 通用寄存器 地址指针和 变址寄存器
2
3 4 5
6
存取一般变量(除3、4、5项外)
DS
有效地址EA
根据寻址方式计算出来的偏移量又叫操作数的有效地址EA
青岛理工大学琴岛学院
4. CPU对堆栈的设置与操作
堆栈的功能:用于暂存数据和现场保护 (特别是在过程调用或中断处理时暂存断 点信息) 堆栈的解释:实际上是由特定存储单元 构成的一个存储区,只是在这个存储区中 信息的出入严格按照“先进后出”或“后 进先出”的规则进行。
微机原理接口技术03_指令系统

3.2.1 数据的寻址方式
基址变址寻址同样适用于数组或表格处理,首地 址存放在基址寄存器中,变址寄存器访问数组中各元
素。因两个寄存器都可以修改,所以它比寄存器相对
寻址方式更灵活。需要注意的是,两个寄存器不能均 为基址寄存器,也不能均为变址寄存器。
3.2.1 数据的寻址方式
7.基址变址相对寻址 (Relative Based Indexed Addressing) 操作数的有效地址为指令中规定的1个基址寄存 器和1个变址寄存器的内容及指令中指定的位移量三 者之和。 位移量[基址寄存器][变址寄存器] 可以表示成多种形式组合。寻址寄存器要放在方括 号中。
3.2.1 数据的寻址方式
4.寄存器间接寻址(Register Indirect Addressing) 操作数的有效地址存放在基址寄存器或变址寄存 器中,而操作数则在存储器中。对16位数进行寄存器 间接寻址时可用的寄存器是基址寄存器BX、BP和变 址寄存器SI、DI。使用BP时默认的段寄存器为SS, 使用其他寄存器默认的段寄存器为DS。 操作数有效地址格式为:[间接寻址的寄存器]。 寻址寄存器放在方括号中。
CPU执行指令时,指令是按顺序存放在存储器 中的,而程序执行顺序是由CS和IP的内容来决定的。 当程序执行到某一转移或调用指令时,需脱离程序 的正常顺序执行,而把它转移到指定的指令地址, 程序转移及调用指令通过改变IP和CS内容,就可改 变程序执行顺序。
3.2.2 程序转移地址寻址方式
根据程序转移地址相对于当前程序地址的关 系,可分为段内、段外;又根据转移地址是否直 接出现在指令中,分为直接、间接,所以有四种 程序转移寻址方式:段内直接寻址、段内间接寻
第3章
指令系统
指令是计算机用以控制各个部件协调
微机原理与接口技术8086指令系统

通常我们把BX和BP称为基址寄存器,将SI和DI称 为变址寄存器,以BX和BP进行的寄存器间接寻址称为 基址寻址。以SI和DI进行的寄存器间接寻址称为变址 寻址。 MOV
操作码:指出指令所进行的操作,如加、减、乘、除、取数 和存数等等。 操作数:可以是操作数本身,也可以是操作数地址,还可以 是操作数地址的计算方法,表示参加运算的数据应从存储器 的哪个单元取,运算的结果应存到哪个单元。
汇编指令基本格式
汇编语言的程序中,每一个语句的格式如下:
目标操作数 <,源操作数> <;注释>
MOV
BL,CL
;将CL的内容送BL中
采用寄存器寻址方式由于操作数在寄存器中不需 要访问内存,不需要总线周期,速度快。寄存器可以 是8位或者16位。
直接寻址方式
数据在存储器中,存储单元的有效地址(EA)由 指令直接给出,是存储器访问的最简单的办法。
比如: MOV AX,[2000H]
内存地址
;将DS段的2000H和2001H ;两单元的内容取到AX中
其中地址1规定了运行起始地址,后面的若干地址均为断 点地址。若地址省略,则从CS段偏移量100(IP=100)的内存地 址开始执行代码。
追踪命令T,格式为:
-T[=起始地址]
ห้องสมุดไป่ตู้
从指定地址起执行一条指令后停下来,显示所有寄存器内 容及标志位的值,如未指定地址则从当前CS:1P开始执行。
微机原理第三章:8086微处理器结构

4.8086 和8088 二者的指令系统完全兼容
(1)有24 种寻址方式,具有乘、除法指令等。 (2)取指令和执行指令的操作并行运行,运行速度大大提高。
(3)具有最小模式和最大模式,应用领域宽广,适应性强。
(4)可方便地和数据处理器8087、I/O 处理器8089 或其它处理器 组成多处理机系统,提高数据处理能力和输人输出能力。
代码段寄存器 CS 标 志 寄 存 器
数据段寄存器 DS
堆栈段寄存器 SS
附加段寄存器 ES
由于8086/8088 CPU 可直接寻址的存储器空间是1M字节,直接寻址需要 20位地址码,而所有的内部寄存器都是16位的,用这些寄存器只能寻址 64K字节,为此需要采取分段技术来解决这个问题。
表3.1
通用寄存器的隐含使用
程序调试过程中。
3.1.2 8086/8088 的寄存器结构
四、指令指针寄存器 IP ★ 16 位的指令指针寄存器 IP 用来存放将要执行的下一条 指令在代码段中的偏移地址。 ★ 在程序运行过程中,BIU 可修改 IP 中的内容,使它始终 指向将要执行的下一条指令。 ★ 程序不能直接访问 IP,但可通过某些指令修改 IP 内容。 ★ 如遇到转移类指令,则将转移目标地址送人IP中,以实 现程序的转移。
★ 规则字的读/写操作可以一次完成。由于两个存储体上的地址
线 A19~A1 是连在一起的,只要使 A0=0,BHE=0,就可 以实现一次在两个存储体中对一个字的读/写操作。 ★ 读写的是从奇地址开始的字(高字节在偶体中,低字节在奇体 中),这种字的存放规则称为“非规则字”或“非对准字”。 ★ 非规则字的读/写,需要两次访问存储器才能完成。 第一次访问存储器读/写奇地址中的字节;
三、标志寄存器 FR
第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
《微机原理与接口技术》(第3版_汪吉鹏)电子教案3

说明:
OPS → OPD
(1)MOV指令不允许在两个存储单元之间直接传送数据。 (2)MOV指令不允许在两个段寄存器之间直接传送数据。 (3)MOV指令不允许用立即数直接为段寄存器赋值。 (4)MOV指令不影响标志位。
MOV指令传送信息的形式:
指令系统
(1)寄存器到寄存器,如: MOV AX,BX (2)立即数到寄存器,如: MOV AX, 1234H (3)立即数到存储单元,但必须用PRT确定操作数类型
汇编格式为:段寄存器名:偏移地址 功能:冒号“:”之前的段寄存器指明了操作数所在段。
指令系统
举例说明:
例如:
(1)MOV AX,DS:[BP]
(2)MOV AX,ES:[BX]
(3)MOV BX,SS:[SI]
其中,“DS:”、“ES:”、“SS:”均为跨段前缀。此时,默认不起作用。 所
以,操作数的物理地址由“:”前面的段寄存器内容左移4位与偏移地址EA相加 而
(21300H)=5678H。
执行后:AX=5678H,BX、DI,DS。(21300H)内容不变。
8.段超越问题
指令系统
以上七种寻址方式中,除立即数寻址方式和寄存器寻址方式外,其它各种 寻址方式的操作数都在除代码段以外的存储区中。通常,若选用寄存器BP 作间址寄存器、变址寄存器或基址寄存器,只要BP出现在方括号之内, 则操作数在当前堆栈段,此时,操作数的物理地址PA由堆栈段寄存器SS 的内容左移4位与偏移地址EA相加形成。这是8086的基本约定,即默认状 态。当要否定默认状态,到非约定段寻找操作数时,必须用跨越段前缀 指明操作数所在段的段寄存名。
注:该操作数可以是8位或者16位二进制补码表示的常数。
说明:指令的下一字单元的内容为操作数n, n也称为 立即操作数。
微机原理第3章指令

第3章指令系统机器指令:能指示计算机完成基本操作的二进制代码指令系统:CPU可执行的机器指令的集合。
为了方便编程,人们又把完成特定操作的机器码用特定的符号表示,这就产生了符号表示的机器指令-------指令助记符。
第3章8086指令系统机器指令由二进制代码组成,一条指令包括操作码和操作数(或地址)两部分,操作码指明该指令进行何种操作,操作数用来说明操作对象。
个别指只有操作码没有操作数。
由于不同的指令所表达的信息不尽相同,因此指令的长度即机器码字节数也有长有短。
8086指令系统的指令是可变长指令(1~6个字节)3.18086CPU寻址方式重点是存储器寻址存放在存储器中的数据称为存储器操作数。
指令中需要确定存储单元的段地址、偏移地址(亦称有效地址EA),以及存储器操作数的类型。
段地址存放在段寄存器中,确定段地址实际上就是确定段寄存器,采用的方法是默认或添加段超越前缀。
生成存储器有效地址有多种方法,这些方法形成了对存储器操作数的多种寻址形式。
确定数据类型的方法是源操作数和目的操作数类型一致原则或附加类型说明。
立即寻址方式中操作数也在存储器中,但立即寻址中的立即数包含在指令中,随程序存放在代码段,CPU在取指令时就获得操作数。
这里所说的存储器操作数是存放在数据段、附加段或堆栈段中,取指令时也不会被立即取到。
段超越前缀变量的定义在第四章详细介绍直接寻址:MOV AX,[2000H];寄存器间接寻址:MOV ES:[DI],AH基址寻址:MOV BYTE PTR[BX+1200H],10变址寻址:MOV DL,[SI+2AH]基址加变址寻址:MOV CL,[BX+SI+5]MOV AX,[BP+DI]MOV CL,[BX+SI+5]的等价形式:MOV CL,5[BX][SI]、MOV CL,5[BX+SI]、MOV CL,[BX][SI+5]MOV CL,[BX+SI-5]等价于MOV CL,[BX+SI+65531] MOV CL,[BX-SI]MOV CL,[SI+DI]错误!MOV[BX+DI],1000H正确吗?3.2.1数据传送类指令传送指令把数据从一个位置传送到另一个位置使用MOV指令应注意1.立即数只能作为源操作数2.无存储器之间直接传送与交换的指令3.没有用立即数对段寄存器直接赋值的指令4.段寄存器之间无传送指令5.两个操作数的类型要一致6.要能确定是字节还是字操作mov ah,al mov bvar,ch mov ax,bx mov ds,ax mov al,[bx]下列MOV指令正确吗?MOV AL,050AHMOV SI,DLMOV[BX+SI],255MOV DS,100HMOV[BX],[SI]MOV[BX+SI],bvarbvar是一个已定义过的字节变量 MOV CS,[SI]将数据段中偏移地址为2000H、2001H、2002H的3个字节的存储单元置数FFH。
8086_8088_汇编_指令_手册

8086 8088 汇编指令手册通用寄存器(1)数据寄存器数据寄存器共有4个寄存器AX、BX、CX、DX,用来保存操作数或运算结果等信息。
AX寄存器称为累加器。
使用频度最高,用于算术、逻辑运算以及与外设传送信息等。
BX寄存器称为基址寄存器。
常用于存放存储器地址。
CX寄存器称为计数器。
一般作为循环或串操作等指令中的隐含计数器。
DX寄存器称为数据寄存器。
常用来存放双字数据的高16位,或存放外设端口地址。
(2)变址和指针寄存器变址和指针寄存器包括SI、DI、SP、BP 4个16位寄存器,主要用于存放某个存储单元的偏移地址。
SI是源变址寄存器。
DI是目的变址寄存器,在字符串操作中,SI和DI都具有自动增量或减量的功能。
SP为堆栈指针寄存器,用于存放当前堆栈段中栈顶的偏移地址。
BP为基址指针寄存器,用于存放堆栈段中某一存储单元的偏移地址。
2.段寄存器8086 CPU的4个16位的段寄存器分别称为代码段寄存器CS,数据段寄存器DS,堆栈段寄存器SS,附加数据段寄存器ES。
段寄存器用来确定该段在内存中的起始地址。
代码段用来存放程序的指令序列。
CS存放代码段的段首址,指令指针寄存器IP指示代码段中指令的偏移地址。
3.指令指针8086 CPU中的指令指针IP,它总是保存下一次将要从主存中取出指令的偏移地址,偏移地址的值为该指令到所在段段首址的字节距离。
在目标程序运行时,IP的内容由微处理器硬件自动设置,程序不能直接访问IP,但一些指令却可改变IP的值,如转移指令、子程序调用指令等。
3.1 标志寄存器8086 CPU中有一个很重要的16位标志寄存器,它包含9个标志位,主要用于保存一条指令执行后,CPU所处状态信息及运算结果的特征。
条件标志(1)进位标志CF (2)零标志ZF (3)符号标志SF (4)溢出标志 OF(5)奇偶标志 PF (6)辅助进位标志AF状态控制标志(1)方向标志DF (2)中断允许标志IF (3)追踪标志TF运算结果标志位1、进位标志CF(Carry Flag)进位标志CF主要用来反映运算是否产生进位或借位。
微型计算机基本原理与接口技术(第二版)教学课件ppt作者陈红卫主编第三章

MOV BL,39H ADD AL,BL AAA
微机原理
② AAS 减法的ASCII码调整指令 指令格式: AAS 执行操作:AL←把减法结果AL的内容调整到 非压缩的BCD码格式 AH←AH - 调整所产生的借位值 标志位的影响:AF、CF
微机原理
3.1.6 转移类指令的寻址方式 1.段内相对转移寻址 有效地址EA为当前IP寄存器内容与指令中指定 的8位或16位有符号数之和 例:JZ DISP 其中DISP是符号地址 2.段内间接转移寻址 有效地址EA为寄存器或存储器单元的内容,这种 寻址方式不能用于条件转移指令。 例:JMP CX
微机原理
3.1.3 寄存器寻址方式 寄存器寻址:操作数存放在CPU内部的寄存器中 例 :MOV AX,DX ; AX←DX 3.1.4 寄存器间接寻址 寄存器间接寻址:有效地址包含在基址寄存器 BX、BP或变址寄存器SI、DI中直接寻址 例 MOV AX,[BX]
MOV AX,[BP] 3.1.5 寄存器相对寻址 寄存器相对寻址方式:有效地址在SI、DI、BX 或BP之一,加上指令中8位或16位相对地址 例 MOV AL,ADDR[SI]
3.2 8086/8088 CPU的指令系统 微机原理
3.2.2 算术运算指令
1.加法指令 ⑴ ADD 不带进位加法指令 指令格式:ADD DST,SRC 执行操作:(DST)←(SRC)+(DST)。 对标志位的影响:OF、SF、ZF、AF、PF、CF。
存储器 通用寄存器 立即数
存储器 通用寄存器 立即数
OR AL,20H 执行上述指令后AL=?
⑶逻辑非NOT 指令 指令格式:NOT OPR 执行操作: (OPR)←(OPR) 影响的标志位:无
微机原理 第3章 8086、8088指令系统

=20000H+1000H+2000H=23000H 指令执行结果是将23000H和23001H单元的内容送 入寄存器AX中。
MOV BL,2[BX] 或 MOV BL,[BX+2] ;(DS:[BX+2])BL
27
高地址
20
注意: (1) 直接寻址方式的操作数所在存储单元的段地址
一般在数据段寄存器DS中。 (2) 如果操作数在其他段,则需要在指令中用段超
越前缀指出相应的段寄存器名。
例4:MOV AH, ES∶ [2000H] ;将附加段寄存器ES的内 容乘16,再加上2000H作为操作数所在存储单 元的地址,取出该存储单元的内容送到寄存器 AH中。
运算结果的去向
指令系统:指令系统是计算机能够执行全部命令的 集合,它取决于计算机的硬件设计。指令系统因机 而异,没有通用性。
8
3、指令格式
指令格式: 操作码 [操作数],[操作数]
执行何种操作
目的操作数 源操作数
参加操作的数据
源操作数: 指令加工之前的数据 目的操作数:指令加工之后形成的数据
9
4、指令中的操作数类型: 根据操作数的来源进行分类:
表征参加操作的数据本身 立即数
表征数据存放的地址
寄存器 存储器
10
1)、立即数操作数:
表示参加操作的数据本身,可以是8位或16位 例: MOV AX,1234H ; AX 1234H MOV BL,22H
注意: 1)立即数只能用作源操作数,如 MOV AL,86H ∨ MOV 86H,AL ×
2)立即数必须和另一个操作数位数相等 MOV AL,3456H × MOV AX,34H ∨
微机原理 第三章1

(2)立即(数)寻址
② MOV AX,1234H
说明:这条指令的功能就是将立即数 1234H传送到寄存器AX中。 执行完该条指令后, AX=1234H
(3)寄存器寻址(Segment Addressing)
当操作数在寄存器中时为寄存器寻址(或称寄 存器直接寻址)。如: ① MOV AL,12H 说明:目的操作数AL即为寄存器寻址。
DS(BX的默认段)值
0000
Memory
ES值
SS(BP的默认段)值
CS值
BP: +)位移量:
0000 0000 0000
…… ××
0100 0000 0000 0000 0000 0000 0000 0010
20 位 物 理 地 址
MOV [SI]10 ,AH ( 设SI原值为008CH)
Bit 19 4 3 0
1、通用数据传送指令
(1)MOV指令 (2)PUSH和POP指令 (3)交换指令XCHG (4)换码指令XLAT
(1)MOV指令
是基本传送类指令,实现字或字节数据的 复制。
指令格式:MOV dst,src
指令功能:将源操作数src,传送到目的操作 数dst中。 如:MOV AL,12H
功能:执行指令就是将立即数12H传送到 AL中,执行完指令后AL=12H。
(6)寄存器相对寻址方式 使用基址寄存器(BX或BP)、并带位移 量的间接寻址。操作数EA=BX或BP值+位 移量。 例:MOV DL,[BP+2] 其它等效写法: MOV DL,[BP] 2 MOV DL,2 [BP]
MOV DL,[BP+2] ( 设BP原值为4000H)
Bit 19 4 3 0
汇编语言 用指令助记符表示机器码,例如对应于机器码 B8H、C3H的助记符为MOV AX,BX 。 CPU不同,机器码不同,助记符也不同。
第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.变址寻址 变址寻址基本上同寄存器间接寻址,只是逻辑地址中偏移量 的给出方式不同:
《微机原理与接口技术》徐惠民 微机原理与接口技术3章

数据传送指令
③ 两个段寄存器之间不能直接传送信息,也不允许 用立即寻址方式为段寄存器赋初值; (X) MOV DS, 100H; (X) MOV DS, ES;
④ 目的操作数,不能用立即寻址方式。
⑤ MOV指令不影响标志位
数据传送指令
2.堆栈指令
功能:从I/O端口输入数据至AL或AX.
输入指令允许把一个字节或一个字 由一个输入端口传送到AL或AX中。若端 口地址超过255时,则必须用DX保存端 口地址,这样用DX作端口寻址最多可寻 找64K个端口。
8086/8088通过 输入输出指令与 外设进行数据交 换;呈现给程序 员的外设是端口 (Port)即I/O地 址。
一般格式:
LES OPRD1,OPRD2
这条指令除将地址指针的段地址部分送入ES外,与 LDS类似。
例如: LES DI,[BX]
数据传送指令
6.标志寄存器传送(有四条标志传送指令)
⑴ LAHF (LOAD AH WITH FLAG) 将标志寄存器中的S、Z、A、P和C(即低8 位)传送至AH寄存器的指定位,空位没有定 义。
2、寄存器寻址
操作数就放在CPU的内部寄存器中,AX、BX、CX、DX、 DI、SI、SP和BP,不需要访问存储器。
例:INC CX MOV AX,BX 若执行前 AX =30A6H, BX =69EDH, CX =40D9H 则执行后 AX =69EDH, BX内容不变 CX =40DAH
3.1 8088/8086的寻址方式
– 操作数是指令执行的参与者,即各种操作的对象。 – 有些指令不需要操作数,通常的指令都有一个或两
个操作数,也有个别指令有3个甚至4个操作数。
第3章 8086(8088)CPU指令系统

第3章 8086/8088CPU指令系统
4.1.4 操作数寻址方式
3.存储器寻址(Memory Addressing)
4.1操作数寻址方式
存储器操作数的寻址方式中,数据都存放于存储单元中,指令操 作过程中需要BIU通过一个总线周期的访问,才能获取操作数。存储 器操作数的寻址方式是怎么计算出操作数的有效地址EA(Effective Address)。有效地址EA是三个地址量因子一个以上组合,由CPU执行 单元EU计算出来。
4.1操作数寻址方式
Relative -plus-Index Addressing)
有效地址是一个8/16位移量和一个基址与变址之和构成 EA=(BX/BP)+(SI/DI)+ DISP8/16
MOV AX,[BX+SI+10H] 操作如图所示
数据段 BX 20H 00H
3000H:0000H
注: ◆基址因子BP访问默认为堆栈段 ◆不能同时取两个基址因子;也不 能同时去两个变址因子
第3章 8086/8088CPU指令系统
3.1操作数寻址方式
3.2指令系统
1
第3章 8086/8088CPU指令系统
微机工作过程中其内部信息有两类: 一类是控制信息(指令); 一类是被加工处理的信息(数据)。
指令:微机中的控制信息就是使计算机进行某种 操作的命令,这些命令就称为指令。 指令系统:一台计算机所能执行的全部指令的集合称 为指令系统。不同的计算机其指令系统是不同的。
第3章 8086/8088CPU指令系统
4.1.4 操作数寻址方式
4.端口寻址(Port Addressing)
4.1操作数寻址方式
80X86系列CPU在访问外设时使用10根地址线A9-A0,其实际访问空 间为210=1K。根据通常书写习惯当高2为A9A8=00时,直接书写低8位, 可直接出现在指令格式中即端口的直接寻址;当A9A8≠00时,要按照 16为的数据书写,不能直接出现在指令格式中,要预先送到DX寄存器 中,即端口的间接寻址。 A 9 A 8 A7A6A5A4A3A2A1A0 0 0 X X X X X X X X 0 1 X X X X X X X X 1 0 X X X X X X X X 1 1 X X X X X X X X
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
. . .
YYH XXH
AX
AH
. . .
数 据 段
寄存器间接、寄存器相对、基址变址、相对 基址变址四种寻址方式的比较:
寻址方式 指令操作数形式
寄存器间接 —— 只有一个寄存器(BX/BP/SI/DI之一) 寄存器相对 —— 一个寄存器加上位移量 基址—变址 —— 两个不同类别的寄存器 相对基址-变址 —— 两个不同类别的寄存器加上位移量
低
AL
操作码 02H
31H
代 码 段
高
2 直接寻址
指令中直接给出操作数的16位偏移地址,为了区别
于立即数,偏移地址用“[ ]”括起;
偏移地址也称为有效地址(EA, Effective Address);
默认的段寄存器为DS;
例:
MOV
MOV
AX , [2A00H]
;默认段寄存器为DS
DX , ES: [2A00H] ;指定段寄存器为ES
数 据 段
CDH ABH
3 寄存器寻址
操作数放在某个寄存器中;
源操作数与目的操作数字长要相同;
寄存器寻址与段地址无关; 例: MOV AX, BX MOV [3F00H], AX
MOV CL, AL
错误例: × MOV AX, BL × MOV ES: AX, DX ; 字长不同 ; 寄存器与段无关
有符号数 80H~7FH(-128~127) 8000H~7FFFH(-32768~32767)
2 寄存器操作数
存放在8个通用寄存器或4个段寄存器中的操作数
AX BX CX DX AH BH CH DH AL BL CL DL
可以存放8位或 16位操作数
2 寄存器操作数
SI DI BP SP CS DS ES
60000 +) 1 2 0 0
61200
AX AH AL
61200H
44H 33H
数 据 段
5 寄存器相对寻址
EA=间址寄存器的内容加上一个8/16位的位移量
(BX)
EA =
(BP) (SI)
+
8位 16位
位移量
(DI)
寻址的寄存器为BX、SI、DI,默认的段寄存器为DS ; 寻址的寄存器为 BP时,默认的段寄存器为SS 。
指令操作过程示例:MOV AX,DATA[DI][BX]
设(DS)=8000H, (BX)=2000H, (DI)=1000H, DATA=200H 则指令执行后(AX)=XXYYH DS
80000 BX 2000
DI + DATA
. . .
操作码
代 码 段
1000
0200 83200
83200H AL
指令操作过程示例:MOV AX,[BX][SI] 设(DS)=8000H, (BX)=2000H, (SI)=1000H 指令执行后: (AX)=XXYYH
DS 80000 BX + SI 2000 1000 83000
AX AH AL
操作码
. . .
. . .
83000H
YYH XXH
代 码 段
3.1 基本数据类型
3.1基本数据类型—数字数据类型
3.1基本数据类型—指针数据类型
3.2 8086的指令格式
指令 指命令计算机完成某种基本操作的代码
指令系统
指微处理器所固有的基本操作指令的集合
3.2 8086的指令格式
• 每条指令由操作码和操作数两部分组成
目的
源
说明要执行的 是什么操作
第三章
8086/8088指令系统
3.1 基本数据类型
3.2 8086的指令格式 3.3 操作数寻址方式 3.4 8086指令系统
主要内容:
指令格式和寻址方式
8086指令系统
教学要求:
熟练掌握8086指令系统的寻址方式; 8086各类指令的格式、功能及对标志位的影响。
3.1 基本数据类型
基址-变址寻址示例
例1: MOV AX, [BX+SI] MOV AX, [BP] [DI] MOV AX, [BX] [BP] × MOV AX, [DI] [SI] × 例2: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]
1000 2A00 63A00
63A00H
操作码 00H 2AH
. . .
代 码 段
AX AH
AL
66H 55H
. . .
数 据 段
6 基址+变址寻址
若操作数的偏移地址: 由基址寄存器(BX或BP)给出 —— 基址寻址方式 由变址寄存器(SI或DI)给出 —— 变址寻址方式
由一个基址寄存器的内容和一个变址寄存器的内 容相加而形成操作数的偏移地址,称为基址+变址 寻址。
EA =
(BX) (BP)
+
(SI)
(DI)
同一组内的寄存器不能同时出现。
6 基址+变址寻址
寻址的寄存器为BX时,默认的段寄存器为DS ; 寻址的寄存器为 BP时,默认的段寄存器为SS 。 例: MOV AX, [BX] [SI] MOV AX, [BX+SI] MOV AX, DS: [BP] [DI] 错误例: × MOV AX, [BX] [BP] × MOV AX, [DI] [SI]
寄存器寻址示例
指令操作例:MOV SI,AX
设指令执行前:(AX)=2233H 则指令执行后:(AX)=2233H,(SI)=2233H 2233H
; SI
(AX)
AX
SI
4 寄存器间接寻址
操作数的偏移地址(有效地址EA)放在寄存器中; 只有SI、DI、BX和BP可作间址寄存器;
EA =
(BX) (BP) (SI) (DI)
3.FLAGS寄存器
16位FLAGS寄存器包含一组状态标志、一个 控制标志两个系统标志。下图定义了此寄存器中 的标志。
图:FLAGS寄存器
(1)状态标志
① 进位标志CF(Carry Flag) 当结果的最高位产生一个进位或借位,则C=1,
否则为0。
② 辅助进位标志AF(Auxitiary Carry Flag)
表明到什么地 方去找操作数
1 立即寻址
操作数(为一常数)直接由指令给出 ;
此操作数称为立即数;
立即寻址只能用于源操作数;
例:
MOV MOV
错误例:
AX, 1C8FH BL,43H 2A00H, AX ; 错误!
× MOV
立即寻址示例
例:MOV AX,3102H
AX AH
; AX
存储器
3102H
操作对象,可以 有0个、1个或2个
3.2 8086的指令格式
指令举例:
MOV AX , [2200h]
操作码 操作数 ADD INC HLT AX,[SI+6] [BX]
3.2 8086的指令格式—操作数分类
立即数 寄存器操作数 存储器操作数
1 立即数(常数)
取值范围如下表:
无符号数 8位 00H~FFH(0~255) 16位 0000H~FFFFH(0~65535)
. . .
数 据 段
7 基址+变址的相对寻址
在基址+变址寻址的基础上再加上一个相对位移量; 注意事项同基址+变址寻址
EA =
(BX)
(BP)
+
(SI) (DI)
+
8位
16位
位移量
例: MOV AX,BASE [SI] [BX]
MOV AX,[BX+BASE] [SI]
MOV AX,[BX+SI+BASE] MOV AX,[BX] BASE [SI] MOV AX,[BX+SI] BASE
在字节操作时,则由低半字节向高半字节有进位
或借位,则AF=1,否则为0。
③ 溢出标志OF(Overflow Flag)
在算术运算中,带符号数的运算结果超出了8
位、16位带符号数能表达的范围,即在字节运算
时>+127或<-128,在字运算时>+32767或<-
32768,OF=1,否则OF=0。
④ 符号标志SF(Sign Flag)
46
以BX、SI、DI间接寻址,默认的 段寄存器为DS ; 以 BP间接寻址时,默认的段寄 存器为SS 。
例: MOV AX, [BX] MOV CL, [DI] 错误例 : × MOV AX, [DX] × MOV CL, [AX]
指令操作过程示例:MOV AX,[SI]
设 (DS)=6000H, (SI)=1200H, (61200H)=44H, (61201H)=33H 则指令执行后,(AX)=3344H DS SI 1200 6000 存储器
4.指令指针
指令指针(IP)寄存器包含下一条要执行的
指令在当前码段中的偏移。
通常,它是顺序增加的,但在执行JMP、Jcc、
CALL、RET和IRET等指令时,它可以向前或向
后移动若干条指令。
总结ຫໍສະໝຸດ 1、了解80x86系列微处理器功能的扩展和性能的提高。 2、熟悉8086的功能结构,理解并掌握8086微处理器 的执行环境。 (1)地址空间及存储器的段式管理。 (2)8个通用寄存器及4个段寄存器的功能及运用。 (3)FLAGS寄存器各标志位。 (4)IP指令指针寄存器(CS) 。