第03章 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寻址方式和指令系统
30
31
加法指令(Addition)
ADD 加法指令
ADD 目的,源;目的←源+目的 ADC 目的,源;目的←源+目的+CF,用于多字节加法
ADC带进位的加法指令
目的操作数只能是寄存器和存储单元 源操作数可以是寄存器、存储器或立即数 注意:源和目的操作数不能同时为存储器,必须都是字节或字
AX
(21A00H)=26BFH
16
存储器寻址
5
17
8086指令系统
数据传送指令 算术运算指令 逻辑运算
18
19
数据传送指令
通用数据传送指令
输入输出指令
MOV PUSH
目的,源 源
IN AL,端口地址
OUT 端口Biblioteka 址,ALIN AX,端口地址
IN AL,DX IN AX,DX
CX
12H 34H
操作码 34H 12H CS段 高地址
注意:立即数只能作源操作数,不能作目的操作数; 以A~F开头的数字出现在指令中需在前加0
5
寄存器寻址(Register Addressing)
操作数包含在指令中指定的8位或16位寄存器中 寄存器:AX,BX,CX,DX,SI,DI,SP,BP
物理地址=16×DS+BX+SI(DI)+位移量 物理地址=16×SS+BP+SI(DI)+位移量
15
基址寄存器为BP时,段寄存器为SS
相对基址变址寻址 (Relative Based Indexed Addressing)
微机原理课件第三章 8086的寻址方式和指令系统
默认关系与段超越同基址变址寻址。
• 例如: MOV AX,COUNT[BX][SI] MOV AX,COUNT[BX+SI] MOV AX,[BX+SI+COUNT]
• 以上三者等价
19
如 MOV AX,MASK[BX][SI] 设DS=4100H,位移量MASK=0134H,BX=2500H,SI=1200H 则EA=(BX)+(SI)+MASK=3834H,PA= (DS)
1、立即寻址方式(Immediate Addressing) 操作数就在指令中,常用来给寄存器赋初值。 如:MOV AX,2000H MOV BL,12H
6
注:a、立即数只能作源,不能作目的 MOV 2000H,AX 非法。
b、若16进制立即数以A~F打头,为区别其他符 号名,应在前面加数字0,因符号名的命名规则 为第一个字符不能为数字。
• 根据有效地址EA(Effective Address)的构成 方式,存储器寻址分为以下五种:
9
• 段寄存器使用的基本约定
10
3、直接寻址方式(Direct Addressing) EA就在指令中,默认段寄存器为DS 如:MOV AX,[2000H] 设DS=3000H 则EA=2000H,PA=DS×16+EA=32000H, 操作数来自32000H(或3000H:2000H处),结果AX=3514H
13
• 例:MOV AX, [BX] • 已知BX=5000H,DS=3000H,则EA=(BX)
=5000H,PA=DS×16+EA=35000H • 该指令执行完,AX=32A0H
微机原理第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指令系统
MOV AL, 80H
AL
80H
程序存储器 操作码字节 指 令 码
80H
程序存储器
MOV AX, 1234H
AH 12H
AL 34H
操作码字节
34H 12H
指 令 码
2)寄存器寻址方式 例如:INC CX MOV AX, CX
程序存储器 AX
CX
89 C1
指令码 (包括操作数)
3)存储器寻址方式 存储器寻址方式的操作数存放在存储器单元 中。因此,要存取操作数就必须知道其存储器的 单元地址。在指令中可以直接给出或间接给出操 作数的地址,以达到存取操作数的目的。 指令中给出的地址只是操作数的有效地址 (EA),并且是放在方括号(“[ ]”)中。若 要从存储器中存取操作数还须得到实际的地址 (物理地址)。 物理地址=段地址左移四位+有效地址
40000H … … 41444H 45
代 码 段
AH
45
数 据 段
4)I/O端口寻址方式 ⑴ 直接端口寻址方式 IN AL, 21H
I/O接口 01H 02H
……
操作码
21H AL
代 码 段
80
21H
80
⑵ 间接端口寻址方式 OUT DX, AL
I/O接口 12
0001H 0002H
……
DX
34
2.地址的寻址方式 地址的寻址方式其时是程序转移地址的寻 址方式,也就是找出程序转移的地址号,而不 是操作数。 转移地址可以在段内(称段内转移),也 可以跨段(称段间转移)。寻求转移地址的方 法有以下四种: 1)段内直接寻址 转移的地址是当前IP内容和指令规定的8位 或16位位移量之和。 当位移量是8位时,称为短程转移;位移量 是16位时称为近程转移。
[工学]第三章 8086的寻址方式和指令系统
19
3.2
8086指令系统的概况
3.2.1 指令格式 说明:① 指令系统规定一条指令只能包含1个或2个
操作数。涉及一个操作数的指令称为单操作数指令; 单操作数指令中的操作数可能由指令本身提供,也可 能用指令隐含指出。涉及2个操作数的称为双操作数 指令;双操作数指令中至少有1个操作数必须通过寄 存器指出,不允许2个操作数均在存储器中。
操作数就在 CPU 的内部寄存器 (AX、BX、CX、DX、DI、 SI、BP、SP)中,寄存器名由指令指出。 例: DEC BL ;将BL的内容减1 MOV DX,AX ;将AX中的值送入DX中 ROL AH,1 ;将AH中的内容循环左移一位 说明:①采用此寻址方式的指令在执行时,操作数就在 CPU 内部进行,不需要使用总线周期,指令执行速度快。 ②一条指令中可以对源操作数、也可对目的操作数、 还可两者都采用寄存器寻址方式。 7
3. 双操作数指令:
例:MOV
AX,[BX+2000H]
25
指令编码格式举例:
26
3.2.2 指令的执行时间
指令周期:是指计算机完成对一条指令从取指开始至 执行完毕所需要的时间叫指令周期。与时 钟周期长短和所需要的时钟数有关。 即包括:
一条指令基本执行时间加上计算有效地址所需要的时间。 计算有效地址所需要的时间由寻址方式决定。
0
OP
例如:HLT指令编码为:
7
0
11110100
F4H
22
2. 单操作数指令:
单操作数在寄存器中
格式一:
7
格式二:
000—AX 001—CX 010—DX 011—BX 100—SP 101—BP 110—SI 111—DI
第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注:寄存器寻址时,寄存器可以是源操作数,也可以目的操作数。
第3章8086寻址方式与指令系统
❖操作数的物理地址 =(DS)×10H+(SI)/(DI)+(BX) 或 =(SS)×10H+(SI)/(DI)+(BP)
第3章 8086寻址方式与指令系统
❖例如: MOV AX,[BX] [SI] ❖该指令的源操作数采用基址变址寻址方式。 ❖若(DS)=2000H,(BX)=2008H,(SI)=8H,
第3章 8086寻址方式与指令系统
❖例如: MOV AX,[SI]
❖该指令的源操作数采用寄存器间接寻址方式。 ❖若(DS)=2000H,(SI)=2010H,那么指令执行后
,(AX)=1225H。 ❖如操作数不存放在间址寄存器默认的段,则指
定段超越的指令可采用如下形式。 MOV AX,ES:[SI]
寄存器寻址方式指令执行示意图
存储器
AH
AX
20H
00000H
~~
AL
10H
操作码
10H
代码段
20H
~~
FFFFFH
第3章 8086寻址方式与指令系统
寄存器寻址方式说明
❖在一条指令中,寄存器寻址方式既可用于源操作 数,也可用于目标操作数,还可以两者都用寄存 器寻址方式。
❖源操作数与目标操作数的长度应一致。例如,不 能将寄存器AX的内容传送到寄存器BH中,也不能 将寄存器BH的内容传送到寄存器AX中。
第3章 8086寻址方式与指令系统
❖8086汇编指令中的操作数可以有零个、一个或两 个,通常称为零地址、一地址或二地址指令。
❖二地址指令中的两个操作数分别称为源操作数和 目标操作数。
第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的寻址方式指令系统
4、寄存器间接寻址(Register indirect addressing) 内存单元的逻辑偏移地址通过寄存 器间接给出。 例: MOV SI , 61A8H MOV DX , [SI]
5、基址/变址寻址(Based/Indexed addressing)
这种寻址方式中提出位移量的概念, 即在寄存器间接寻址给出的偏移地址上, 加一相对位移量。位移量是一带符号的16 位16进制数。当使用BX或BP寄存器时, 称基址寻址;使用SI或DI寄存器时,称 变址寻址。 例: MOV CX , 36H[BX] MOV -20[BP] , AL
4)XCHG 交换指令
指令格式为: XCHG 目的操作数 ,源操作数 操作数不能为立即数; 源和目的不能同时为存储单元; 段寄存器不能作为操作数。
2、累加器专用传送指令
1) IN 输入指令
指令格式为: IN IN IN IN AL , n AX , n AL , DX AX , DX n , AL n , AX DX , AL DX , AX
3、算术乘法指令
1) MUL 无符号数乘法 指令功能:完成两个操作数相乘 2) IMUL 带符号数乘法 指令功能:完成两个操作数相乘 3) AAM 非压缩BCD数乘法操作结果校正 指令功能:完成两个非压缩BCD 数乘法结果的十进制数调整
4、算术除法指令
• DIV 无符号数除法 指令功能:完成两个操作数相除 • IDIV 带符号数除法 指令功能:完成两个操作数相除
JC JNC JE/JZ JNE/JNZ JS JNS JO JNO JP/JPE JNP/JPO ;CF标志为1,则转移 ;CF标志为0,则转移 ;ZF标志为1,则转移 ;ZF标志为0,则转移 ;SF标志为1,则转移 ;SF标志为0,则转移 ;OF标志为1,则转移 ;OF标志为0,则转移 ;PF标志为1,则转移 ;PF标志为0,则转移
第3章 8086 8088指令系统和寻址方式
第3章 指令系统和寻址方式
3.1 概述 3.2 数据寻址方式 3.3指令格式及指令执行时间 3.4 8088/8086 CPU的指令系统
3.1 指令系统概述
指令是计算机能够识别和执行的指挥计算机进行操作的命
令。指令系统是指微处理器能执行的各种指令的集合。
程序是指令的有序集合,指令是程序的组成元素,通常一
演示
3.2 数据寻址方式
2. 寄存器间接寻址方式
在计算机中通常将BX、BP称为基址寄存器,SI、DI称为
变址寄存器,寻址时操作数的地址被放在这些寄存器中。
寄存器间接寻址方式在汇编格式中表示为
[基址寄存器名或变址寄存器名]
【例】
MOV AX, [BX]
;AX←DS:[BX]
演示
3.2 数据寻址方式
直接寻址方式是指寻找的操作数的地址在指令中直接给出。 这种寻址方式在汇编格式中表示为 ● 操作码 地址表达式 (或[地址表达式]) ● 操作码 [数字表达式]
3.2 数据寻址方式
【例】
MOV AX, [2000H];AX←DS:[2000H] MOV AX, ES: [2000H] ;AX←ES:[2000H]
MOV AX, 0102H
;AX←0102H
演示
3.2 数据寻址方式
3.2.2 寄存器寻址方式
寄存器寻址是指寻找的操作数在某个寄存器中。 格式: 操作码 寄存器名
比如AL,BX,CX,DS、IP等等。 【例】
MOV AX, BX
;AX←BX
演示
3.2 数据寻址方式
3.2.3 存储器寻址方式
1. 直接寻址方式
若(CS)=5200H 时,物理转移地址为 B230H,则当CS 的内容被设定为7800H, 物理转移地址应为多少? =9230H 78000H +9230H=81230H。
第三章8086的寻址方式和指令系统
段寄存器 CS*,DS,SS,ES
MOV功能描述
MOV允许在CPU的寄存器之间、存储器与寄存器之间 传输数据,也可将立即数传到寄存器和存储器中 注意: 1. IP寄存器不能作为操作数 2. 立即数和CS不能作为目的操作数 3. 两个操作数不能同时为存储器,也不能同时为段寄 存器 4. 立即数不能送入段寄存器
而:
10
MOV
AX,
[BX]
11
五、寄存器相对寻址
MOV
AX,
[BX+1008H]
利用这种寻址方式时,操作数在存储器中。而操作 数有效地址由BX、BP、SI、DI中的内容加上指令中给出 的位移量, 得到操作数的有效地址。
有效地址=间址寄存器的内容加上一个8/16位的位移量
(BX)
有效地址=
(BP) (SI) (DI)
可以访问216=64K个I/O端口。
22
寻址方式总结
• 操作数,要么在存储器里,要么在寄存
器里,要么在IO端口中。
• 如果出现”[]”,则操作数在存储器里,需
要确定其段基址和偏移地址
• 不带“[]”的,就是立即寻址和寄存器寻
址、隐含寻址、IO端口寻址了。
23
3.3
8086 的指令系统 ý 数据传送指令
3、立即数到段寄存器
举例: 向1000H开始的100个存储单元写入ASCII码2AH(*) 程序段如下: MOV SI,1000H MOV CX,100 MOV AL,2AH AGAIN:MOV [SI],AL INC SI DEC CX JNZ AGAIN INT 20H ;返回DOS
33
上程序段存放在代码段中,設(CS)=109EH ,则各条指令存放地址如下: 109E:0100 109E:0103 109E:0106 109E:0108 109E:010A 109E:010B 109E:010C 109E:010E 109E:0110 MOV MOV MOV MOV INC DEC JNZ INT SI, 1000H CX, 64H AL, 2AH [SI],AL SI CX 0108 20H
第3章8086的寻址方式和指令系统
第3章8086的寻址方式和指令系统【课前思考】(1)什么是指令和指令系统?指令在什么时候由哪部分来执行?(2)8086汇编语言指令由几部分组成?各部分的作用是什么?(3)8086汇编语言指令可以有几个操作数?指令中指定的操作数可能存放在哪里?(4)什么是寻址方式?8086汇编语言提供了几种寻址方式?(5)各种寻址方式所确定的有效地址是什么?(6)在存储器寻址方式中,为什么有时候要使用段跨越前缀?(7)8086机器语言指令由哪几个字节组成?为什么说汇编语言指令与机器指令是一一对应的?(8)8086的指令系统按功能可分为几组?(9)每条指令的功能、助记符、所支持的寻址方式、对标志位的影响、需要预置的参数以及隐含使用的或限定使用的寄存器等。
【学习目标】熟练掌握8086各种寻址方式;熟悉8086常用指令的功能【学习指南】学习寻址方式时,要注意各种寻址方式所指定的操作数或操作数地址是什么;各种寻址方式形成操作数地址时,段寄存器和基址、变址寄存器的组合;各种寻址方式限定使用的寄存器。
学习指令系统时,要注意每条指令的功能,所支持的寻址方式、对标志位的影响、需要预置的参数以及隐含使用的或限定使用的寄存器等。
【难重点】重点理解8086常用指令的功能,熟悉8086的各种寻址方式,这是进行汇编语言程序设计的基础。
【知识点】3.1 寻址方式3.3 指令系统第一节 8086的寻址方式指令的一般格式:例如,单操作数指令就是一地址指令,它只需要指定一个操作数,如加1指令只需要指出需要加1 的操作数。
大多数运算型指令可使用三地址指令:除给出参加运算的两个操作数外,还指出运算结果的存放地址。
也可使用二地址指令,此时分别称两个操作数为源操作数(source)和目的操作数(destination)。
尽管在指令执行前这两个操作数都是输入操作数,但指令执行后将把运算结果存放到目的操作数的地址之中。
8086的大多数运算型指令就采用这种二地址指令。
第三章 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表示操作数, 显然这样的表示方式更清晰,更便于记忆和使用。 用符号、助记符书写的指令称为符号指令。用符号指令书写程 序的规范称为汇编语言,对应的程序称为汇编语言源程序。
第三章 8086的寻址方式和指令系统
第三章 8086/8088的指令系统
3.1 8086的寻址方式 3.2 指令的机器码表示方式 3.3 8086的指令系统
3.3 8086的指令系统
一、数据传送指令 三、逻辑运算指令 五、控制转移指令
二、算术运算指令 四、串操作指令 六、处理器控制指令
3.3 8086的指令系统
8088的指令系统可以分为六个功能组:
(一)通用传送指令 (续)
数据段说明举例:
DATA SEGMENT ;数据段说明开始 AREA1 DB 14H,3BH AREA2 DB 3 DUP(0) ARRAY DW 3100H,01A6H STRING DB ‘GOOD’ DATA ENDS ;数据段说明结束
AREA1 机器码表示方式
汇编语言(Assembly Language)是面向机器的程序设计语 言。在汇编语言中,用助记符(Memoni)代替操作码,用地址 符号(Symbol)或标号(Label)代替地址码。这样用符号代替机 器语言的二进制码。就把机器语音变成了汇编语言。于是汇 编语言亦称为符号语言。 使用汇编语言编写的程序,机器不能直接识别,要由一 种程序将汇编语言翻译成机器语言,这种起翻译作用的程序 叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇 编语言把汇编程序翻译成机器语言的过程称为汇编。 汇编语言比机器语言易于读写、易于调试和修改,同时 也具有机器语言执行速度快,占内存空间少等优点,但在编 写复杂程序时具有明显的局限性,汇编语言依赖于具体的机 型,不能通用,也不能在不同机型之间移植。
8086的寻址方式
计算机的指令一般由操作码和操作数组成,操作码规定了 指令的功能;而操作数则规定了指令操作的对象。操作数可以 以立即数的形式存放在指令中,但在大多数情况下,操作数是 以地址的形式存放在指令(指示操作数在哪儿)。用于说明操 作数所在地址的方法称为寻址方式。 在微机中,操作数存放在: 1、在指令中;2、在CPU的 某一内部寄存器中;3、在内存的数据区中;4、I/O端口。 在8086CPU中,内存地址是由数据段地址和段内偏移量 组成。而指令中规定的地址即为段内偏移量(逻辑地址)— —有效地址EA,有效地址EA构成的方法不同,则为不同的寻 址方式。
8086寻址方式与指令系统
27
8086堆栈的构造
栈底(Bottom) 为堆栈空间的高地 址单元。
段地址:SS 0000H
栈顶(TOP) 为低地址单元。
DS 8000 BX 2000 DI 1000
...
操作码
代
码
段
+ DATA 0200
83200
...
83200H
78H
56H
AX AH AL
...
数 据 段
18
段 寄 存 器 的 使 用 规 定
默认的 访问存储器的方式 段寄存器 偏移地址
可跨越的 段寄存器
取指令
CS
IP
无
堆栈操作
SS
SP
无
一般数据访问
指令执行后: AX=1234H
DS 8000
...
操作码
BX 2000
+ SI 1000
83000
...
83000H
34H
AX AH AL
12H
...
代码段
数据段
16
( 7 ) 相对基址变址寻址方式:由一基址寄存器(BX/BP) 和一变址 寄存器(SI/DI)和偏移量相加作为参加操作的数所在的有效地址。
• 段间寻址 段间直接寻址 JMP FAR PTR NEXT
段间间接寻址 JMP DWORD PTR [ BX ]
8086指令系统
共133条基本指令,按功能分为六大类 • 数据传送指令 • 算术运算指令 • 逻辑运算和移位指令 • 串操作指令 • 程序控制指令 • 处理器控制指令
微机原理第三章 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的寻址方式和指令系统
⑵ seg——段寄存器 ⑶ mem——存储单元 ⑷ imm——立即数
ruction)最简单、最常
用的一类指令,一般功能为把数据从 一个存储位置搬运到另一个存储位置, 一般不影响标志位。
一、MOV —— 数据传送指令
(4C002H)=5A78H
源操作数为寄存器间接寻址,有效地址由 (BP)指出,隐含使用的段寄存器为SS 要特别注意隐含搭配的段寄存器。
⑷寄存器相对寻址方式
操作数在存储器内,利用基址或变址寄存器内容加上位移 量作为偏移地址来寻址内存中的数据 形式: 位移量[寄存器] 或 [位移量+寄存器]
偏移地址EA= 5000H 物理地址 =35000H
例②: 执行指令 :ADD 5[BP],BL 执行前 BL=40H, BP=0030H,SS=2000H, (20035H)=50H 求执行结果 (20035H)=90H
⑸基址变址寻址方式:
操作数在存储器中,指令将基址寄存器(BX或BP) 与变址寄存器(SI或DI)内容之和作为操作数的偏移 地址。 形式: [基址寄存器名+变址寄存器名]
⑶ 寄存器间接寻址
形式: [寄存器]
例: MOV AX,[BX] 操作数的偏移地址存在基址或变址寄存器中、操作数存在 内存。 寄存器名要用方括号括起,以便与寄存器寻址相区别。 (BX) +段寄存器DS段地址 (SI) 物理地址 = (DI) (BP) +段寄存器SS段地址
物理地址计算方法: 物理地址 =(DS) * 16 + (BX)或(SI)或(DI) 物理地址 =(SS) * 16 + (BP)
MOV [2000H], BL
MOV [3000H], AL
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11/50
内容提要
立即寻址 例3.1 例3.2
寄存器寻址 直接寻址 寄存器间接 寄存器相对 基址变址 相对基址变址
3.2 寻址方式
一、立即寻址 操作数本身作为指令的一部分直接出现在 指令中,即为立即数,寻找该立即数的寻 址方式称为立即寻址。 例3.1 MOV AL,36H
20/50
内容提要
立即寻址 寄存器寻址 直接寻址 寄存器间接
注意 例3.8 寄存器相对 基址变址 相对基址变址
3.2 寻址方式
注意: (1) 所用寄存器只能是BX、BP、SI、DI; (2) 当使用寄存器BX、SI、DI时,默认的
段寄存器是数据段寄存器DS; (3) 当使用寄存器是BP时,默认的段寄存
25/50
内容提要
立即寻址 寄存器寻址 直接寻址 寄存器间接 寄存器相对 基址变址
注意 例3.10 相对基址变址
3.2 寻址方式
六、基址变址寻址 操作数放在存储器的存储单元中,其有效 地址是一个基址寄存器(BX、BP)与一 个变址寄存器(SI、DI)的内容之和,该 操作数的这种寻址方式称为基址变址寻址。
例3.5 例3.6 例3.7 寄存器间接 寄存器相对 基址变址 相对基址变址
3.2 寻址方式
三、直接寻址 操作数放在存储器的存储单元中,在指令 中直接给出该操作数在存储器中的偏移地 址,这种寻址方式称为直接寻址。 该偏移地址也称有效地址EA(Effective Address)。
23/50
内容提要
立即寻址 寄存器寻址 直接寻址 寄存器间接 寄存器相对
注意 例3.9 基址变址 相对基址变址
3.2 寻址方式
注意: (1) 当使用寄存器BX、SI、DI时,默认的
段寄存器是DS; (2) 当使用的寄存器是BP是,默认的段寄
存器是SS; (3) 寄存器相对寻址方式允许使用段跨越
(BX)=4567H 则指令执行后,(AX)=?,
(BX)=? 该指令中源操作数和目的操作数的寻址方 式都是寄存器寻址。
15/50
内容提要
立即寻址 寄存器寻址
例3.3 例3.4 可用寄存器 直接寻址 寄存器间接 寄存器相对 基址变址 相对基址变址
3.2 寻址方式
可以使用的8位寄存器有:
29/50
内容提要
立即寻址 寄存器寻址 直接寻址 寄存器间接 寄存器相对 基址变址 相对基址变址
注意 例3.10
3.2 寻址方式
注意: (1) 当基址寄存器BX的内容作为有效地址
的一部分时,默认的段寄存器是DS; (2) 当基址寄存器BP的内容作为有效地址
的一部分时,默认的段寄存器是SS; (3) 相对基址变址寻址方式允许使用段跨
缀。
27/50
内容提要
立即寻址 寄存器寻址 直接寻址 寄存器间接 寄存器相对 基址变址
注意 例3.10 相对基址变址
3.2 寻址方式
例3.10 MOV AX,[BX][SI] 也可写成:MOV AX,[BX+SI] 已知:(DS)=2100H,(BX)=0158H,
AL、AH、BL、BH、CL、CH、DL、DH
可以使用的16位寄存器有:
AX、BX、CX、DX、SI、DI、BP、SP、 DS、CS、SS、ES
注意: (1)段寄存器CS只能做源操作数; (2)当段寄存器DS、SS、ES作目的操
作数时,源操作数不能是立即数。
16/50
内容提要
立即寻址 寄存器寻址 直接寻址
越前缀。
30/50
内容提要
立即寻址 寄存器寻址 直接寻址 寄存器间接 寄存器相对 基址变址 相对基址变址
注意 例3.11
3.2 寻址方式
例3.11 MOV AX,NUM[BP][SI] 也可写成:MOV AX,NUM[BP+SI]
或:MOV AX,[NUM+BP+SI] 已知:(SS)=3000H,(BP)=2000H,
硬指令格式: [标号:] 操作符 [目的操作数] [,源操作数] [;注释] 伪指令格式: [名字] 定义符 [操作数] [;注释]
5/50
3.1 指令的分类及格式 [标号:] 操作符 [目的操作数] [,源操作数] [;注释] [名字] 定义符 [操作数] [;注释]
标号:指出了该条硬指令的起始地址,程序员可 通过标号来引用所标识的硬指令。
例3.6 MOV AX,ES:[1000H] 在汇编语言程序中,通常用符号地址(变 量名)来代替数值地址。 例如:MOV AX,Value
18/50
内容提要
立即寻址 寄存器寻址 直接寻址
例3.5 例3.6 例3.7 寄存器间接 寄存器相对 基址变址 相对基址变址
3.2 寻址方式
器是堆栈段寄存器SS。 (4) 寄存器间接寻址方式允许使用段跨越
前缀。
21/50
内容提要
立即寻址 寄存器寻址 直接寻址 寄存器间接
注意 例3.8 寄存器相对 基址变址 相对基址变址
3.2 寻址方式
例3.8 MOV AX,[BX] 已知:(DS)=2000H,(BX)=1000H 则该指令执行后:(AX)=?
前缀。
24/50
内容提要
立即寻址 寄存器寻址 直接寻址 寄存器间接 寄存器相对
注意 例3.9 基址变址 相对基址变址
3.2 寻址方式
例3.9 MOV AX,NUM[BX] 也可写成:MOV AX,[NUM+BX] 已知:(DS)=3000H,(BX)=2000H,
NUM=3000H 则该指令执行后: (AX)=?
名字:在伪指令中用来定义变量名、过程名等。
6/50
内容提要
指令分类 指令格式
3.1 指令的分类及格式
标号和名字统称为标识符。 关于标识符的规定:
长度不能超过31个字符,组成该字 符串的字符可以是字母(A~Z或a~z)、 数字(0~9)、特殊符号(“?”、“.”、 “@”、“_”、“$”)。其中数字不能做 第一个字符,标识符中如果使用到“.”, 则该字符必须是第一个字符。
3/50
内容提要
指令分类 硬指令 伪指令
指令格式
3.1 指令的分类及格式
2. 伪指令:指一些固定格式的约定符号, 用于指示汇编程序如何工作, 不产生任何目标代码。
4/50
内容提要
指令分类 指令格式
3.1 指令的分类及格式
二、指令的格式 8088/8086汇编语言的硬指令和伪指令的 格式基本相同。
指令执行后,(DL)=? 该指令中目的操作数的寻址方式是 寄存器寻址。
14/50
内容提要
立即寻址 寄存器寻址
例3.3 例3.4 可用寄存器 直接寻址 寄存器间接 寄存器相对 基址变址 相对基址变址
3.2 寻址方式
例3.4 MOV AX,BX 如果指令执行前(AX)=1234H,
17/50
内容提要
立即寻址 寄存器寻址 直接寻址
例3.5 例3.6 例3.7 寄存器间接 寄存器相对 基址变址 相对基址变址
3.2 寻址方式
例3.5 MOV AX,[1000H] 缺省情况下,操作数有效地址的作用域是 DS所指向的数据段,但也允许使用段跨 越前缀将作用域指定为其他的段。
26/50
内容提要
立即寻址 寄存器寻址 直接寻址 寄存器间接 寄存器相对 基址变址
注意 例3.10 相对基址变址
3.2 寻址方式
注意: (1) 当基址寄存器BX的内容作为有效地址
的一部分时,默认的段寄存器是DS; (2) 当基址寄存器BP的内容作为有效地址
的一部分时,默认的段寄存器是SS; (3) 基址变址寻址方式允许使用段跨越前
注意:立即数只能用作源操作数,不能用 作目的操作数,且源操作数的长度 与目的操作数的长度必须一致。
13/50
内容提要
立即寻址 寄存器寻址
例3.3 例3.4 可用寄存器 直接寻址 寄存器间接 寄存器相对 基址变址 相对基址变址
3.2 寻址方式
二、寄存器寻址 当源操作数已经存储在某个寄存器中,或 者要把目的操作数存入某个寄存器时,指 令中就指出所要使用的寄存器名称,该操 作数的寻址方式即为寄存器寻址方式。 例3.3 MOV DL,81H
22/50
内容提要
立即寻址 寄存器寻址 直接寻址 寄存器间接 寄存器相对
注意 例3.9 基址变址 相对基址变址
3.2 寻址方式
五、寄存器相对寻址 操作数放在存储器的存储单元中,其有效 地址是基址寄存器(BX、BP)或变址寄 存器(SI、DI)的内容与指令中给定的8 位或16位位移量之和,该操作数的这种寻 址方式称为寄存器相对寻址。
3学时
本章主要内容 一、指令的分类及格式 二、寻址方式 三、数据传送指令
2/50
内容提要
指令分类 硬指令 伪指令
指令格式
3.1 指令的分类及格式
一、指令的分类 汇编语言中所使用的指令分成两类: 1. 硬指令:与二进制的机器指令一一对应,
由计算机来执行。 硬指令(简称指令)分成6类: 数据传送指令、算术运算指令、位操作 指令、串处理指令、控制转移指令、处 理机控制指令。
(SI)=10A5H 则该指令执行后: (AX)=?
28/50
内容提要
立即寻址 寄存器寻址 直接寻址 寄存器间接 寄存器相对 基址变址 相对基址变 操作数放在存储器的存储单元中,其有效 地址是以下三个量之和:一个基址寄存器 (BX、BP)的内容、一个变址寄存器 (SI、DI)的内容、一个8位或16位位移 量,该操作数的这种寻址方式称为相对基 址变址寻址。