第3章 8086的寻址方式和指令系统(1)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
§3.1 指令格式
指令是计算机能够识别和执行的操作命令。一条
完整的指令称为一个指令字。主要描述CPU应进行何种
操作、寻址并使用哪一种操作数以及下一条指令存放 在何处。
指令有机器指令和符号指令两种。
一、机器指令
操作码
地址码
操作码:表示该指令所要完成的操作。
地址码:表示参与运算的操作数或操作数的地址。
3.2.1 立即寻址(Immediate Addressing)
操作数直接存放在指令中,紧跟在操作码之后,作为指令 的一部分,存放在代码段里,这种操作数称为立即数。 立即数可以是8位或16位的。16位的立即数是高位字节放 在高地址,低位字节放在低地址。 使用场合:经常用于给寄存器赋初值。 注意:只能用于源操作数字段,不能用于目的操作数字段。
62000H
PA=62000H
(62000H)=50A0H (BX)=50A0H
...
AOH 50H
数 据 段
...
寄存器间接寻址方式 MOV BX,[DI]
2)若选择BP寄存器作为间接寻址 操作数在堆栈段区域中,用SS寄存器的内容作为段地址。 操作数物理地址:
SS 1000H BP 3000H
PA=16d ×(SS)+(BP)
即允许使用CS、SS、ES作为段寄存器,这时必须在指令中特
别标明。 (3)指令中不允许两个操作数都是存储器操作数,其中一个 必须使用寄存器方式。
例如:将DS中100H单元的内容送至200H单元中,不
能使用MOV [0200H], [0100H],必须使用下列指令完 成: MOV AX, [0100H] MOV [0200H], AX
直接寻址方式
代 码 段
(AX)=3050H
AH 30H
63100H AL 50H
数 据 段
注意:
(1)在汇编语言中规定,可以对某个存储单元赋予变量名。 即可以用符号地址代替数值地址。
如:MOV AX,VALUE
或
MOV AX,[VALUE]
(2)直接寻址方式隐含的段寄存器是DS,8086允许段超越,
四、基址变址寻址方式(Based Indexed Addressing
)
操作数的有效地址是一个基址寄存器和一个变址寄存器的
内容之和,基址寄存器名和变址寄存器名均由指令指定。 8086中,BX、BP用作基址寄存器,SI、DI用作变址寄存器。
操作数逻辑地址表达式为: 段寄存器:[基址寄存器 + 变址寄存器] 段寄存器:[基址寄存器][变址寄存器]
§3.2 8086的寻址方式
所谓寻址方式,是指寻找和获得操作数、操作数地
址的方法。
操作数是指令中的操作对象。操作数采取哪一种 寻址方式,对机器运行的速度和效率有相应的影响。 一般情况下,操作数在微机系统中有以下四种存 放方式:
•立即操作数
操作数包含在指令当中,是一个固定数值的操作数; 相应的寻址方式称为立即寻址。 •寄存器操作数 寄存器操作数存放在CPU的某个寄存器中;相应的寻 址方式称为寄存器寻址。 •存储器操作数(内存操作数) 操作数存放在内存的数据区中。相应的寻址方式称为 存储器寻址。 •I/O端口操作数 操作数存放在I/O端口中;相应的寻址方式称为I/O端口 寻址。
存储器寻址:偏移地址表达 主存操作数的偏移地址常被称为有效地址EA 16位有效地址 = 基址寄存器+变址寄存器+位移量
基址寄存器:BX或BP 变址寄存器:SI或DI 位移量:8或16位有符号值
常用的存储器操作数寻址有以下几种方式:
1、直接寻址 2、寄存器间接寻址
3、基址寻址 4、变址寻址
操作数的有效地址(EA)是一个基址或变址寄存器的内
容和指令中指定的8位或16位位移量之和。
(BX) (BP) EA = (SI) (DI) + 16位位移量 8位位移量
操作数一般在内存的数据段中,但允许段超越。 除有段超越前缀之外,形成物理地址有二种方式:
(BX) PA=16d ×(DS)+ (SI) (DI) +
89 67 …. OP 70 10
DS×16 50000H + 1070H 51070H
代码段
AH AL AX 67 89
50000H 51070H 51071H
数据段
…
例:MOV AX,[3100H]
(DS)=6000H , (63100H)=3050H 则:(AX)=?
DS 6000H 60000 + 3100 63100 ... 操作码 00 31 ... 50H 30H ...
指令执行后:
(SS)=3064H (AX)保持不变。
寄存器寻址方式
SS AX 3064H
指令执行前:
指令执行后:
1234H
3064H
3064H
3.2.3 存储器寻址( Memory Addressing )
操作数存放在某个逻辑段的存储单元中。 CPU要访问存储器中的操作数,必须计算出存放 操作数的存储单元在存储器中的物理地址,然后
3、8086允许数据存放在数据段以外的其它段中,即允许段超
越。此时应在指令中指定段超越(可以是CS,SS,ES)。
例:
MOV AX,[1070H] ;DS段的1070H和1071H两单元的内容传送到AX中。
假设DS=5000H,地址为51070H字存储单元的内容是6789H。
00000H
存储器 … … ….
才能对指定的存储单元进行读/写操作。
编程时主存使用逻辑地址:段地址和偏移地址
存储器寻址:
段地址表达
段地址可以使用默认逻辑段,Biblioteka Baidu用显式说明
一般是DS,指向数据段 采用BP或SP作为基地址,默认SS指向堆栈段
段地址必要时使用段超越指令前缀显式说明
段超越指令前缀:段寄存器名后跟英文冒号 CS∶ DS∶ SS∶ ES∶
操作数在CPU的某个寄存器中,指令指定寄存器号。 对于16位操作数,寄存器可以是: AX,BX,CX,DX,SI,DI,SP,BP以及段寄存器CS, DS,SS,ES。 对于8位操作数,寄存器可以是: AL,AH,BL,BH,CL,CH,DL,DH。 寄存器寻址方式特点:指令长度短,执行速度快。
例:指令执行前:(AX)=3064H (SS)=1234H MOV SS,AX
例: MOV AX, [BX][SI] 或 MOV AX, [BX+SI] 执行指令前: (DS)=3200H, (BX)=0456H, AH (SI) =1094H (334EAH)=4567H 45H 执行指令后: EA=14EAH PA=334EAH (AX)=4567H
32000H AL 67H 334EAH
物理地址PA=16 d ×(DS)+(BX) 物理地址PA=16 d × (DS)+(SI) 物理地址PA=16 d × (DS)+(DI)
DS
例:MOV BX,[DI] (DS)=6000H (DI)=2000H
DI 2000H
6000H
6 0 0 0 0 + 2 0 0 0 6 2 0 0 0 BH 50H BL A0H
则:源操作数的物理地址是548ACH→
再假设548ACH字存储单元的内容是55AAH 那么,执行该指令后,(AX)=55AAH
例: MOV AX, COUNT[BP] 或MOV AX, [COUNT+BP]
AH AL 48H
存储器 OP OP 40H 20H ... 50000H 55040H ... 48H 55H 堆 栈 段 操 作 码 位移量 COUNT
二、寄存器间接寻址方式(Register Indirect Addressing)
操作数在存储器中,操作数地址的16位偏移量(有效地址
EA)包含在:BP、BX、SI、DI寄存器中。
1)若选择SI、DI、BX作为间接寻址
操作数存放在数据段区域中,即默认DS为段寄存器,用
(DS)作为段地址。
即操作数物理地址为:
...
3 )用 SI、DI、BX 、BP作为间接寻址允许段超越 指令中可以指定段超越前缀来取得其他段中的数据。
例: MOV ES:[DI], AX MOV DX, DS:[BP] 这种寻址方法可以用于表格处理,在循环结构程序设 计中经常用到间址方式。
三、基址寻址(Based Addressing) 变址寻址(Indexed Addressing)
例: MOV [BP], AX 执行前: (SS)=1000H , (BP)=3000H , (AX)=1234H
+
1 0 0 0 0 3 0 0 0 1 3 0 0 0 AH 12H AL 34H
13000H
...
34H 12H
堆 栈 段
执行后:PA=13000H
(13000H)=1234H
寄存器间接寻址方式 寄存器间接寻址方式 MOV [BP], AX MOV [BP], AX
5、基址变址寻址 6、带位移的基址变址寻址
一、直接寻址(Direct Addressing)
1、操作数地址的16位偏移量(有效地址EA),直接包含在指 令中,存放在代码段中指令操作码之后。
2、操作数一般存放在数据段中,必须先求出操作数的物理地
址,然后再访问存储器才能取得操作数。
物理地址:PA=16d或(10H)×(DS)+EA
每种指令的操作码:
用一个唯一的助记符表示(指令功能的英文缩写)
对应着机器指令的一个二进制编码
指令中的操作数:
可以是一个具体的数值
可以是存放数据的寄存器 或指明数据在主存位置的存储器地址
三、汇编语言
1、汇编语言即:以助记符形式表示的计算机指令。
①助记符是便于人们记忆、并能描述指令功能和指令操作数的符
第三章 8086CPU的寻址方 式 和指令系统
教学目的及要求
1. 掌握数据寻址方式 2. 掌握基本指令的功能及其应用 3. 熟悉常见指令的功能
4. 理解常见语法错误、符号扩展等问题
指令是计算机能够识别和执行的操作命令,是计算
机用以控制各个部件协调工作的命令。 指令系统是微处理器所能执行的指令的集合,它与 微处理器有密切的联系,不同的微处理器有不同的指令 系统 。
机器指令都是由“0”、“1”组成,是二进制代码。
二、符号指令(助记符指令)
汇编语言助记符指令书写的基本格式为:
[标号]:操作码 [目的操作数] [,源操作数] [;注释]
其中,操作码是指令语句中不可缺少的;带括号的项是可选 项;多个操作数间是以‘,’隔开的;操作码与操作数之间 必须以空格分开。
8位位移量
16位位移量
8位位移量 PA=16d ×(SS)+ (BP) + 16位位移量
指令中逻辑地址表达式形式有以下表示方法: [基址/变址寄存器 + 位移量] [基址/变址寄存器]位移量 位移量[基址/变址寄存器]
MOV AX,1234H[DI]
另一种书写格式 例: MOV AX,[DI+1234H] 假设(DS)=5000H,(DI)=3678H 50000H 3678H + 1234H 548ACH
当BX用作基址寄存器时,默认段寄存器为DS;
当BP用作基址寄存器时,默认段寄存器为SS。
(SI)
EA=
(BX)
+ (DI)
(SI)
EA=
(BP)
+ (DI)
除有段超越前缀之外,形成物理地址有二种方式:
(SI) PA=16d×(DS )+ (BX) + (DI)
(SI) PA=16d×(SS)+ (BP) + (DI)
例:MOV
AL,05H (AL)=05H
AL 05H
... 操作码 05H ... 指 令 代 码 段
指令执行后:
例:MOV
AX,3064H (AX)=3064H
AH 30H
AL 64H
... 操作码 64H 30H ... 指 令 代 码 段
指令执行后:
立即寻址方式
3.2.2 寄存器寻址( Register Addressing )
设COUNT为16位位移量。 指令执行前: (SS)=5000H, (BP)=3000H, COUNT=2040H, (AX)=1234H 指令执行后:EA=5040H PA=55040H (55040H)=5548H (AX)=5548H
55H
代 码 段
...
寄存器相对寻址方式 MOV AX,COUNT[BP]
号; ②助记符是表明指令功能的英语单词或其缩写。
2、汇编语言程序:用汇编语言书写的程序; 汇编程序:将汇编语言程序“汇编”成机器代码目 标模块的程序。
3、汇编语言的特点
优点:
直接控制计算机硬件部件 编写“时间”和“空间”两方面最有效程序
缺点:
与处理器密切有关
需要熟悉计算机硬件系统、考虑许多细节 编写繁琐,调试、维护、交流和移植困难