第三章 8086指令系统

合集下载

第3章 8086指令系统-汇编语言程序设计教程-陆遥-清华大学出版社

第3章  8086指令系统-汇编语言程序设计教程-陆遥-清华大学出版社

直接寻址方式可以利用变量名的偏移地址属性来 描述操作数的偏移地址(可直接用变量名,或将 变量名置于方括号[ ]中),段寄存器默认为DS。 如果实际使用的段寄存器不是DS,则必须用段 前缀明确指出。
【例3.7】设数据段内有如下变量定义语句
VAR DB 76H,5CH,0A3H,08H
分析以下指令的执行结果。
3.1 指令系统基本概念
指令是给计算机下达的一个简单操作任务,CPU 所能执行的所有指令构成了一个计算机的指令系 统(也称指令集)。
汇编语言指令是对机器指令的符号化表示,采用 助记符来表示指令的操作功能和操作对象。
指令通常可以分为以下几类:
⑴ 数据传送类指令。 ⑵ 算术运算类指令。
⑸ 程序控制类指令。 ⑹ 处理器控制类指令。
【例3.3】要求将数据68传送给AL寄存器,写出相应的传 送指令。 分析:由于AL寄存器接收数据,所以目的操作数为AL, 采用寄存器寻址方式,而源操作数为常数68,采用立即寻 址方式
MOV AL,68 ;AL←68
【例3.4】设被加数存于寄存器DX中,加数为512,写出相 应的加法指令。 分析:因为被加数由寄存器DX提供,所以DX为目的操作 数,采用寄存器寻址方式,而加数为常数512,采用立即 寻址方式
操作数。
2. ADD指令
指令格式:ADD DST,SRC 指令功能:DST←(DST)+(SRC) 。执行加法运算。 操作数特点:两个操作数。被加数DST为目的操作数,加
数SRC为源操作数。
3. NOT指令
指令格式:NOT OPR 指令功能:OPR←(OPR) 。执行逻辑非运算。 操作数特点:一个操作数。OPR既是目的操作数,也是源
段地址由段寄存器提供,用段前缀(DS:,ES:, CS:或SS:)来指明;偏移地址(亦称有效地址) 则有多种表示形式,由此形成了不同的存储器寻 址方式。

微机原理第3章8086指令系统

微机原理第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指令系统

第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的指令系统

第三章 8086的指令系统
操作码 操作数
机器指令 B0 56 04 78 CB
操作码 操作数
计算机执行的指令是机器指令,是一串二进制代码。 MOV、ADD 是机器指令操作码 B0、04 的助记词。
2. 8086的机器指令格式
B1 OP D W MOD B2 B3 REG R/M B4 B5 B6
操作码 (6)
方 0-字节 寻址 向 1-字操作 方式
立即数→通用寄存器、内存单元
立即数→通用寄存器 MOV AX,2356H; MOV BH,33H; 立即数→内存单元 MOV [BX+SI],0F080H; MOV BYTE PTR [BX],12H; 源操作数、目的操作数的类型要匹配。 源操作数是单字节,目的操作数是间址、变址、基址+ 变址的内存操作数,后者必须用PTR说明是字节型。
三. 标志寄存器
1. 格式 2. 含义
1. 格式
记录当前指令执行后的特征信息,16位数据用9位
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 O D I T S Z A P C
溢出
8位无符号数相加大于255,有符号数相加大于127或小于 -128 16位无符号数相加大于65535,有符号数相加大于32767 或者 小于-32768; 判断 操作数是有符号数,运算后O标志为1表示溢出。
寄存 器号
寻址 方式
① ② ③ ④ ⑤ ⑥
8086 指令是 1~6字节的变字节指令格式。 指令的长度:最少一个字节,最多六个字节。 B1、B2为基本字节,B3-B6 根据指令取舍。 B1字节-称作操作码字节,必不可少的。 B2-操作数寻址方式。一条指令最多可用两个操作数。 B3~B6- 一般为存储器操作地址位移量或立即操作数。

第3章 8086指令系统(1)

第3章 8086指令系统(1)

第三章 8086指令系统 8086指令系统
21
例 MOV BX,[SI] , 解:设:DS=1000H,SI=2000H,(12000H)=318BH = , = , = 物理地址= × 则:物理地址= 16×DS + SI = 10000H + 200Байду номын сангаасH = 12000H 指令执行后, = 指令执行后,BX=318BH,指令执行过程如图所示。 ,指令执行过程如图所示。
第三章 8086指令系统 8086指令系统
15
1.2.3 直接寻址方式
1.含义: 1.含义: 含义 存储单元的有效地址EA( 操作数的偏移地址) 存储单元的有效地址EA(即:操作数的偏移地址)直接 由指令给出。 由指令给出。 2.特点: 2.特点: 特点 机器码中,有效地址存放在代码段中指令的操作码之后, 机器码中,有效地址存放在代码段中指令的操作码之后, 而该地址单元中的数据总是存放在存储器中。 而该地址单元中的数据总是存放在存储器中。须先求出操作 数的物理地址,再从存储器中取得操作数。 数的物理地址,再从存储器中取得操作数。 操作数的物理地址=16× 操作数的物理地址=16×DS + EA 3.作用: 3.作用: 作用 实现对存储单元的读/写操作。 实现对存储单元的读/写操作。
6
第三章 8086指令系统 8086指令系统
各种寻址方式指令执行速度不同: 各种寻址方式指令执行速度不同:
操作数在寄存器中指令执行速度快 操作数在寄存器中指令执行速度快:在CPU内部立即执行; 寄存器中指令执行速度 CPU内部立即执行 内部立即执行; 立即数寻址指令执行速度较快:直接从指令队列中取数; 立即数寻址指令执行速度较快:直接从指令队列中取数; 寻址指令执行速度较快 操作数在存储器中指令执行速度较慢 通过总线与CPU交 操作数在存储器中指令执行速度较慢:通过总线与CPU交 存储器中指令执行速度较慢: 换数据。 换数据。 CPU进行读 写存储器的操作: CPU进行读/写存储器的操作: 进行读/ ① 把一个偏移量送到BIU,计算出20位物理地址; 把一个偏移量送到BIU,计算出20位物理地址 位物理地址; ② 执行总线周期存取操作数。 执行总线周期存取操作数。

第3章 8086的指令系统

第3章 8086的指令系统

第三章8086的寻址方式和指令系统基本内容:8086寻址方式的概念,7种寻址方式的操作过程,8086的指令系统的构成及六大类基本指令。

基本要求:掌握8086的7种寻址方式,掌握8086指令系统的汇编格式,掌握每一个指令的功能用法。

重点内容:8086的7种寻址方式,传送指令、算术运算指令、逻辑指令、控制转移指令。

难点:立即寻址与直接寻址,寄存器寻址与寄存器间接寻址的区别,相对寻址的寄存器搭配使用,算术指令中寄存器的使用及结存放移位指令的使用,控制转移指令的操作过程。

第一节8086的寻址方式计算机中的汇编指令由操作码字段和操作数字段组成,操作码字段指示CPU执行哪一种操作,如传送、运算等;操作数为参与操作的数据,如寄存器中的数据或内存单元中的数据等。

(如加法指令须指明两个被加数)操作数字段可以直接给出操作数本身或者指明操作数的存放地址,如是在寄存器中存放须指出寄存器名称,若是在存储器中存放,须给出此操作数在存储器中的地址。

8086中对操作数的寻址方式可分为下列7种寻址方式。

一、立即数寻址方式特征:操作数由指令直接给出,紧跟于操作码之后,做为指令的一部分。

注意:1、立即数可做源操作数,不能是目的操作数;2、立即数只能是8位或16位的整数,不能是小数,且与目的操作数格式要一致;例:MOV BX,107DHMOV AL,90H不能写为MOV90H,AL操作数的立即数可以是16进制,十进制或二进制,但必须注明。

例:MOV BL,90(D)――十进制后缀可不写,系统默认。

MOV AL,10010000B特点:不启动总线周期,速度快。

二、寄存器寻址特征:操作数存放于寄存器中,指令中用寄存器名指出。

16位操作数---------AX,BX,CX,DX,SI,DI,SP,BP等。

8位操作数---------AL,BL,CL,DL,AH,BH,CH,DH特点:不访问存储器,速度快。

例:MOV AX,BX 执行前(AX)=OFC56H (BH)=0100H执行后(AX)=0100H (BH)=0100H不变INC DL 执行前(DL)=02H 执行后(DL)=03H注:寄存器寻址时,寄存器可以是源操作数,也可以目的操作数。

2_第3章 8086指令系统_加减运算指令比较指令52

2_第3章 8086指令系统_加减运算指令比较指令52
4
3.4.2 算术运算指令
算术运算指令涉及两种类型数据,即无符号数和有符号数 对加法指令和减法指令而言,无符号和有符号数可采用同
一套指令,其先决条件有两个: 一是参加的操作数必须同为无符号数或同为有符号数 二是要采用不同标志位来检查无符号数和有符号数的 运算结果是否溢出
而乘除运算指令则需要区分无符号数和有符号数
11 11
ADC指令的使用价值
主要用于由于数据较大(多字节),需要多次运算的加法 运算中。 例:有两个4字节的无符号数相加:
2D568F8CH+3C9E489BH=? 设 被加数存放在BUF1开始的存储区内
加数存放在BUF2开始的存储区内 要求和放回BUF1存储区 假设CPU进行8位的加法运算,为此将进行4次加法运算
.386
……
MOVZX AX, A
MOVZX BX, B
ADD
AX, BX
MOVZX BX, C
ADD
AX, BX
MOV
SUM, AX
;取第一个数,扩展0传送 ;取第二个数 ;加第二个数 ;取第三个数 ;加第三个数 ;保存三个数的和
20 20
[例] P,Q,R均为8位有符号数,求它们的和,送入TOTAL
这个问题的另一种方法:
MOV AL, A
;取第一个数
MOV AH, 0
;高8位清零,准备存放和的高8位
ADD AL, B
;加第二个数
ADC AH, 0
;如果有进位,存入AH
ADD AL, C
;加第三个数
ADC AH, 0
;如果有进位,加入AH
MOV SUM, AX ;保存三个数的和
19 19
这个问题的第三种方法:

第3章8086指令系统1

第3章8086指令系统1
30H 00H 44H 11H … 66H 58H 79H 05H … 10H 0FH
MOV AX,1000H MOV AX,BX MOV AX,[1200H] MOV AX,[BX] MOV AX,1100H[BX] MOV AX,[BX][SI] MOV AX,1100H[BX][SI]
第3章
段地址对应BX基址寄存器默认是
DS, 对 应 BP基 址 寄 存 器 默 认 是 SS;可用段超越前缀改变
第3章
基址变址寻址指令
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]
第3章
操作数的寻址方式
立即寻址方式 寄存器寻址方式 直接寻址方式 寄存器间接寻址方式 寄存器相对寻址方式 基址变址寻址方式 相对基址变址寻址方式
第3章
相对基址变址寻址方式
有效地址是基址寄存器(BX/BP)、
变址寄存器(SI/DI)与一个8位或16 位位移量之和:
有效地址=BX/BP+SI/DI+8/16位位移量
有效地址在指令中直接给出 默认的段地址在DS段寄存器,
可使用段超越前缀改变
MOV AX,[2000H] ;AX←DS:[2000H] ;指令代码:A10020
MOV AX,ES:[2000H] ;AX←ES:[2000H] ;指令代码:26A10020
第3章
直接寻址方式
例:MOV AX, [1000H] 设(DS)=4000H,EA=1000H 那么:操作数的物理地址PA=?
OPD——目的操作数

第3章_8086指令系统

第3章_8086指令系统

EA =

(BX) (BP)
+
(SI)
(DI)
同一组内的寄存器不能同时出现。
寻址的寄存器为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 AX,0FA00H MOV 8000H,DX ;正确 ;错误
• 2、寄存器操作数
存放在8个通用寄存器或4个段寄存器中的操作数
AX BX CX DX
AH BH CH DH
AL BL CL DL
可以存放8位或 16位操作数
SI DI BP SP
只能存放16位操作数
CS
DS ES SS
61200
AX AH AL
61200H
44H 33H
数 据 段
寄存器相对寻址

EA=间址寄存器的内容加上一个8/16位的位移量
(BX)
EA =
(BP) (SI) (DI)
+
8位
16位
位移量
寻址的寄存器为BX、SI、DI,默认的段寄存器为DS ;
寻址的寄存器为 BP时,默认的段寄存器为SS 。

例: MOV AX, [BX+8] MOV CX, TABLE[SI] MOV AX, [BP+16H] ;
数 据 段
基址-变址-相对寻址
在基址-变址寻址的基础上再加上一个相对位移量 注意事项同基址-变址寻址

第3章 8086指令系统

第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指令系统

第三章 8086指令系统
指令实现的操作mov指令可以实现以下各种传送寄存器与寄存器寄存器与段寄存器之间的传送movbxsimovdsaxmovaxcs寄存器与存储器之间的传送若传送的是字操作数那么将对连续两个存储单元进行存取且寄存器的高8位对应存储器的高地址单元寄存器的低8位对应存储器的低地址单元
第三章8086指令系统
课时分配:10学时
二、寻址方式
寻址方式:主要是指获得操作数所在地址,也就是操作数的偏移地址(有效地值)。一般是指源操作数的地址。
在8086系统中,一般将寻址方式分为两种不同的类型,一类是寻找操作数的地址,另一类是寻找要执行的下一条指令的地址,即程序的地址。主要在程序转移或过程调用时用来寻找目的地址或入口地址。这将在调用指令CALL和程序转移指令JMP中详细介绍。
例:MOV AX,[BX+1024H]
操作数地址是:(DS)×16+(BX)+1024H
同样:当以SI、DI、BX寻址时,默认的段是DS;以BP寻址时,默认的段是SS。也可以用段前缀来指定其他的段寄存器,如:
MOV AX,DS:[BP+1024H]
6.基址―变址寻址
操作数在存储单元中,有效地址一个基址寄存器和一个变址寄存器之和,可表示为:
(1)MOVAX,0ABH(2)MOVAX,[100H]
(3)MOVBX,[SI](4)MOVCL,[BX+SI+200H]
(5)MOVAL,VAL[BX](6)MOVDI,[BP][SI]
2、判断下列指令是否有错,并说明原因( 5对)
(1) MOV [DI],[SI](2) MOV CS,AX
(3) MOV 128,CL(4) MOV AX,[SI][DI]
(1)指令特点:

第三章8086指令系统

第三章8086指令系统

DI
例: MOV AX, COUNT[SI] 或 MOV AX, [COUNT+SI] 假设DS=3000H, SI=2000H, COUNT=3000H 那么 PA = 35000H 指令功能:将35000H开始的两个单元内容送AX
(4)基址变址寻址
BX
有效地址EA
=
BP
SI
+
DI
MOV AX, [BX+SI] ;AX←DS:[BX+SI]
MOV BYTE PTR[SI],50H
MOV BYTE PTR[SI+6],51H
法2:
MOV AX,2000H
MOV DS,AX
MOV BL,50H
MOV BH,51H
MOV DS: [1000H],BL
MOV DS: [1006H],BH
例:交换BUF1和BUF2两单元的内容。
MOV MOV
寄存器间接寻址
寄存器 相对寻址
PA=DS×16+BX或SI或DI
MOV AX, [BX]
仅允许 PA=SS ×16+BP
PA=DS×16+BX或SI或DI+位移量
; (AX)←((DS)×16+(BX)) MOV AL, MESS[SI]
PA=SS×16+BP+位移量
;AL←(DS×16+SI+OFFS ET MESS)
§3-2 数据传送类指令
• 通用数据传送指令 • 地址传送指令 • 标志寄存器传送指令
一、通用数据传送指令
提供方便灵活的通用传送操作
有4种指令
MOV
PUSH POP
XCHG

第三次课 8086的指令系统

第三次课   8086的指令系统

第三章8086的指令系统3.1 8086指令系统概述所谓一个微处理器的指令系统是一个微处理器所执行的全部指令的集合。

在8086的指令系统中一共有133条指令。

8086指令系统是在8位微处理器8080/8085的指令系统基础上设计的,它兼容了8080/8085的全部指令,这部分对8位微处理器具有兼容性的指令往往是处理字节(8位)的。

此外,8086还有自己所特有的对字或字符串的处理指令,以及对带符号数的运算指令、中断指令和协处理器指令。

对微处理器的指令的描述,一般有两种表示方法:指令的机器码和汇编指令。

无论对于机器码指令还是对于汇编指令均要解决三个问题(三个信息)(1)指令要完成什么操作(操作码);(2)参加这个操作的操作数在哪里(操作数);(3)操作结果放在哪里(结果);为了简化指令,通常在微机系统中规定:操作结果要放在某一个操作数中。

如MOV AL,08H;ADD AX,BX;(源操作数,目标操作数)这样,就将指令所要提供的信息简化为了两部分:操作码、操作数。

指令的机器码就是用二进制码描述指令的操作码和操作数的一种方式,实际上在微机系统内部,指令就是以机器码的形式存在的。

所谓的汇编指令是用指令功能的英文缩写表示操作码,用数字和符号表示操作数的指令描述方法。

例如操作码操作数MOV AX,2000H操作码B8H操作数:00H20H由于汇编语言程序有便于理解、识别、阅读和交流的优点。

所以汇编指令得到了广泛的应用。

但由于最终在机器中使用的是机器码,所以要有一个中间环节就是对其进行翻译。

3.2 8086指令的寻址方式所谓寻址方式就是寻找操作数的方式,所以寻址方式实际上在两种情况下被涉及:一种是用来对操作数进行寻址;另一种是对转移地址和调用地址进行寻址。

下面我们所讨论的寻址方式都是针对操作数的,关于指令地址的寻址,将在讲述转移指令和调用指令时作具体说明。

一条指令的机器码通常包含操作码(OP)和操作数两部分。

[小学教育]第三章 8086指令系统

[小学教育]第三章 8086指令系统

指令
数据
(a)
指令
内存
指令 基址寄存器 变址寄存器
变址值
EA
数据
(b)
指令
寄存器
寄存器
数据
(f) 指令
基址值
基址寄存器 变址寄存器 位移量
(c)
指令
寄存器
内存
变址值
寄存器
EA
(d) 指令
数据
基址值 (g)
寄存器 位移量
内存
+
数据
8086寻址方式
地址 (e)
内存
+ 数据
内存
+ EA 数据

§3.3 数据传送指令


[17000H] AL

[17001H] AH


原 理
[SI]

(2) 若EA = [BP] +

[DI]



则操作地址:SS: EA
第 三 章
7. 相对的基址加变址寻址
[SI]
(1) 若EA = [BX] +
+ 8位或16位偏移量
[DI]
则操作数地址:DS: EA
例 MOV AX,[BX+SI+0250H]
SI,DI - 变址寄存器
第 三 章
微 机
[SI] (1) 若EA = [BX] +
[DI]


则操作数地址:DS: EA
及 接
例 MOV AX,[BX+SI]

若 DS = 1000H, BX = 5000H, SI = 2000H
技 术
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例:
将AX、BX、SI寄存器清零。 将数FF11H送CX、DX寄存器。
AX,0000H BX,0 SI, 0 CX,0FF11H DX,0FF11H AX,0 BX,AX 送的数第一个为字母 时,要用0隔开。
法1: MOV MOV MOV MOV MOV 法2: MOV MOV
MOV MOV MOV
OPR1, OPR2 ;OPR1 OPR2
允许寄存器与寄存器之间交换数据
允许寄存器与存储器之间交换数据 注意: * 不影响标志位
* 不允许在存储器与存储器之间交换数据 * 不允许使用段寄存器
例:XCHG BX, [BP+SI] XCHG AL, BH
XCHG
[BX], [BP+SI]
XCHG
PUSH
AL
字量数据从栈顶压入和弹出时,都是低地址字节送低字节,
高地址字节送高字节。(高对高,低对低)
堆栈操作遵循先进后出原则。 不能用立即寻址方式。 不影响标志位。 出栈指令DST不能是CS 。
PUSH 2600H
POP
CS
堆栈段是程序中不可缺少的一个内存区,常用来
临时存放数据
§3-1 8086汇编语言及寻址方式
•掌握8086基本指令的格式、功能及应用方法。
一、指令格式
必须有
可有(1或2) 可无
目的操作数dest
源操作数src
操作码
操作数1,操作数2
;注释
1、操作码(指令助记符) 反映了指令的功能(或操作的性质),用英文缩写表示。 如: MOV 传送 CMP 比较 ADD 加法 OUT 输出 2、操作数(学习指令系统应特别注意) 指令操作的对象(所要处理的数据或数据的位置信息)。 三种类型:立即数; 寄存器; 存储器(地址信息)
说明BUF1和BUF2 为地址的偏移量
MOV指令并非任意传送! 非法指令的主要现象: • 两个操作数的类型不一致 Eg: MOV CX,AL • 无法确定是字节量还是字量操作 Eg: MOV [1004],5 Eg: MOV SI,1004H MOV AL,5 MOV [SI],AL • 两个操作数都是存储器 Eg: MOV [2000H],[3000H] • 段寄存器的操作有一些限制 Eg: MOV DS,2000H Eg: MOV DS,ES
BL,50H BH,51H
MOV
MOV
DS: [1000H],BL
DS: [1006H],BH
例:交换BUF1和BUF2两单元的内容。 MOV MOV MOV MOV MOV SI,OFFSET BUF1 DI,OFFSET BUF2 AL,[SI] AH,[DI] [SI],AH
MOV
[DI],AL
BX BP
+
SI DI
=
MOV AX, [BX+SI] MOV AX, [BX][SI]
;AX←DS:[BX+SI]
* 必须是一个基址寄存器和一个变址寄存器的组合
MOV AX, [BX][BP] MOV AX, [SI][DI]
(5)相对基址变址寻址
BX BP SI DI
有效地址EA
=
+
+
8位 16位
操作数地址(PA)
操作数由指令给出 操作数在寄存器中 操作数的有效地址由指令直接给出
指令格式举例
MOV DX, 100H ADD AX, BX MOV AX, [2000H] ;DX←100H ; AX←AX+BX ;AX←(2000H)(2001H)
寄存器间接寻址 寄存器 相对寻址 基址变址寻址
PA=DS×16+BX或SI或DI PA=SS ×16+BP
二、寻址方式
1、立即寻址——操作数由指令给出 。
源操作数为“立即数”。
如: MOV AX, 3064H
;功能将立即数3064H送AX
源操作 数 目的操作数
2、寄存器寻址 —— 操作数在指定的寄存器中 操作数存放在CPU的内部寄存器reg中:
8位寄存器r8:AH、AL、BH、BL、CH、CL、DH、DL
PTR
说明是字操作
例:将50H、51H分别存入存储器21000H、21006H单元
法1: MOV AX,2000H
MOV
MOV MOV 法2:
AX
SI,1000H BYTE PTR[SI],50H
MOV MOV MOV
MOV MOV
BYTE PTR[SI+6],51H AX,2000H DS,AX
BX
有效地址EA
=
BP SI DI
+
8位 16位
位移量
例: MOV AX, COUNT[SI]
或 MOV AX, [COUNT+SI]
假设DS=3000H, SI=2000H, COUNT=3000H 那么 PA = 35000H
指令功能:将35000H开始的两个单元内容送AX
(4)基址变址寻址
有效地址EA
16位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SP
4个段寄存器seg:CS、DS、SS、ES
例:MOV
AX, BX ;AX←BX
MOV CS, AX
注意:*源操作数和目的操作数的字长要一致。 MOV AH, BX
* CS不能用MOV指令改变
3、存储器操作数的寻址方式 程序设计时,8086采用逻辑地址表示主存地址
BX, DS

4、 换码指令(将一个字节从一种代码换成另一种代码)
XLAT ;AL←DS:[BX+AL]
将BX指定的缓冲区中、AL指定的位移处的一个字节 数据取出赋给AL。
换码指令执行前: *造表 *表格首地址---->BX *相对表格首地址的位移量----> AL
•换码指令执行后: AL中的值已转换为内存表格中的某一值。
BX、BP、SI、DI 及其组合
MOV AX, BUFF(BX+DI) ;AX←(DS×16+BX+DI+OFFSET BUFF)
相对基址 变址寻址
PA=DS×16+BX+SI或DI+位移量 PA=SS×16+BP +SI或DI+位移量
学习寻址方式时要注意:
(1) 正确书写各种寻址方式的汇编格式
(2) 清楚各种寻址方式所指定的操作数或操作数地址在何处?
SI, AX CX,0FF11H DX,CX
当一个操作数的操作类型无法确定时, 需要利用汇编语言的操作符显式指明 如: MOV 修正: MOV ; BYTE MOV ; WORD [BX+SI], 255 ;非法指令,
BYTE PTR [BX+SI],255 PTR 说明是字节操作
WORD PTR [BX+SI],255
直接端口寻址:端口地址由指令直接提供,是8位立即数,访问端 口号00~FFH,共256个端口。例:IN AL,63H 间接端口寻址:寻址的端口号由寄存器DX提供,访问 端口号 0000~FFFFH,共64K个端口。例:MOV DX,213H IN AL,DX
寻 址 方 式 小 结
寻址方式
立即寻址 寄存器寻址 直接寻址
5、串操作指令
注意:1. 指令的基本功能 2. 指令的执行对标志位的影响 6、控制类指令
3. 对寻址方式或寄存器使用的限制和隐含使用的情况
§3-2
数据传送类指令
通用数据传送指令
地址传送指令 标志寄存器传送指令
一、通用数据传送指令
提供方便灵活的通用传送操作
有4种指令
MOV
PUSH POP
传递参数
保存和恢复寄存器
例: PUSH DS SUB AX, AX PUSH AX …… …… RET ;实验中正确返回 DOS系统的一种方法 例: PUSH AX ;保护现场 PUSH BX … ;此期间用到AX和BX寄存器 … POP BX ;恢复现场 POP AX RET
3、交换指令: XCHG
;DS(SI+ 2728H+2)和(SI+ 2728H+3)
( 指令中 / 寄存器中 / 存储器单元中) (3) 各种存储器寻址方式是如何形成操作数的物理地址的? (段寄存器 / 基址、变址寄存器 / 偏移量的组合关系) (4)各种寻址方式限定使用的寄存器
三、 8086指令系统的分类
8086微处理器指令系统中有133条指令,根据指令的操作性质
可分为六大类。 1、传送类指令 2、运算类指令 8086指令系统 3、逻辑类指令 4、转移类指令
XCHG
XLAT
1、传送指令:
MOV
立即数 注意: * DST不能是CS、立即数 存 储 器 AX BX CX DX BP SP SI DI * 不影响标志位
DST, SRC
; DST
SRC
* DST、SRC不能同时为段寄存器 段寄存器 CS DS ES SS
例:
MOV DS, ES

* 立即数不能直接送段寄存器 例: MOV DS, 2000H
位移量
MOV AX, [BX+DI+56] ;AX←DS:[BX+DI+56]
MOV AX, 56[BX+DI]
MOV AX, 56[BX][DI]
4、固定寻址(隐含寻址)
指令中已经默认对微处理器中的某寄存器进行操作,不用在指 令中指明使用的寄存器。 DAA LOOP N1
5、I/O端口操作数的寻址方式
(2)寄存器间接寻址——EA只能在 BX、BP、SI、DI中
如: MOV AX,[BX]
相关文档
最新文档