微机原理与接口技术第2版第03章8086的指令系统
《微机原理与接口技术》课件——第3章8086指令系统(3-3)
•例如:
• MOV SI,2000H
• MOV DI,3000H
• MOV CX,100 ;CX←传送次数
• CLD ;设置DF=0,实现地址增加
•again: MOVSB ;传送一个字节
• DEC CX ;传送次数减1
• JNZ again ;判断传送次数CX是否为0,不为0,则转
•
移again处执行;
17
§3-3 8086的指令系统 ——字符串处理指令
④DF标志:控制字符串处理的方向。 DF=0为递增方向。DS:SI指向源串首地址,每执行一次 串操作:字节串操作时,SI、DI分别增1;字串操作时,SI 和DI分别增2; DF=1为递减方向。DS:SI指向源串末地址,每执行一次 串操作:字节串操作时减1;字串操作时减2。 STD指令使DF置1,CLD指令将DF清0。 ⑤串长度:要处理的字符串长度(字节或字数)放在CX寄存器 中。
②对于存储器操作,需指明是字还是字节。
注意:指令执行后,对标志位无影响。
例 NOT AX
;AX AX取反
NOT BL
;BL BL取反
NOT BYTE PTR[BX] ;对存储单元字节内容取反
后送回该单元
3
§3-3 8086的指令系统 ——逻辑运算和移位指令
⑵ AND逻辑与指令(Logical AND) 指令格式:AND 目的,源 指令功能:目的目的∧源 有置“0”功能 ⑶ OR逻辑或指令(Logical OR) 指令格式:OR 目的,源 指令功能:目的目的∨源 有置“1”功能。
15
§3-3 8086的指令系统 ——字符串处理指令
四、字符串处理指令
8086CPU提供了串操作指令,使长字符串的处理更快速、
微机原理第三章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指令从第一个操作数中 减去第二个操作数,并将结 果存储在目标操作数中。
逻辑运算类指令
逻辑运算类指令用于执行逻 辑与、或、非等逻辑运算。
微机原理 第03章 8086的指令系统
计算机科学与技术学院系统教研室
【例】设 DS=3000H,SI=2000H,(32000H)=50H, (32001H)=40H, 执行指令 MOV AX,[SI]后,AX = ?
① 根据指令中给出的寄存器及寄存器内容得到存储单元的物理地 址: DS × 16 + 2000H = 32000H ② 把该内存单元开始的两个字节的内容传送到AX中。低地址单元 内容传送到AL中,高地址单元内容传送到AH中。 AX = 4050H
4.指令有极强的寻址能力
8086的寻址方式多达9种,特别是对内存的寻 址方式十分灵活。
5.指令有处理多种数据的能力
8086指令能处理8位/16位数、带符号/无符号 数以及压缩BCD数/非压缩BCD数。带符号数和无 符号数有相应的乘法、除法指令,压缩BCD数和非 压缩BCD数有相应的调整指令。
计算机科学与技术学院系统教研室
2. 数据传送指令 以MOV指令为例,其格式为:
MOV 目的操作数,源操作数 目的操作数和源操作数均可采用不同的寻址方式, 两个操作数的类型必需一致。
计算机科学与技术学院系统教研室
3.2.2 寻址方式介绍
存储器
1.立即寻址
操作数就在指令中,紧 跟在操作码后面,作为指令 一部分存放在内存的代码段 中,这种操作数称为立即数。
计算机科学与技术学院系统教研室
C. I/O端口寻址(I/O port addressing)
当操作数在外部设备时,使用I/O指令。此时有两种 不同的寻址方式访问I/O端口。
(1) 当外部设备地址用8位寻址时,直接端口寻址方式。 此方式中,I/O地址仅有256个,即0~255(00H~FFH)。 IN AL , 25H (2)当外部设备地址为16位(或超过8位)时,采用DX寄存 器间接寻址方式。此时的端口地址多达216个。 MOV DX , 3E4H OUT DX , AL 由于外部设备的数据宽度不同,输入指令中的目的操 作数、输出指令中源操作数可为AL或AX。
微机原理及接口技术课件第3章 8086寻址方式与指令系统
其中,方括号表示的部分为任选部分,在具体指令中不是必需的。
4
第3章 8086寻址方式与指令系统
3.1 指令格式 3.2 8086寻址方式 3.3 8086指令系统 3.4 数据传送指令 3.5 算术运算指令 3.6 逻辑运算和移位指令 3.7 串操作指令 3.8 程序控制指令 3.9 处理器控制指令
; 将立即数1234H送入累加器AX ; 将立即数0FH送入累加器AL ; 将立即数12H送入变量VAR指向的存储单元 ; 把0000H送入DI ; 把字母A的ASCII码(41H)送入AH ; 把ASCII码(4241H)送入BX ; 把二进制数10100011B送入CL ; 把100(64H)送入数据段由SI和SI+1指向的 ; 两个存储单元中
25
3.2 8086寻址方式
一般情况下指令是顺序逐条执行的,但实际上也经常发生执行转移指令改变程 序执行流向的现象。与前述数据寻址方式是确定操作数的地址不同,转移地址 寻址方式是用来确定转移指令的转向地址(又称转移的目标地址)。下面首先 说明与程序转移有关的几个基本概念,然后介绍4种不同类型的转移地址寻址 方式,即段内直接寻址、段内间接寻址、段间直接寻址和段间间接寻址。图36展示了4种程序转移地址的寻址方式。
4.寄存器间接寻址
寄存器间接寻址分为两种情况: (1)以SI、DI、BX间接寻址,通常操作数在现行数据 段区域中,此时DS×16+REG为操作数的地址,REG表示 寄存器是SI、DI、BX之一。 ( 2 ) 以 寄 存 器 BP 间 接 寻 址 , 操 作 数 在 堆 栈 段 中 , 即 SS×16+BP为操作数的地址。
微机原理与接口技术 第三章 8086指令系统
第三章8086指令系统3.1 基本数据类型3.2 IA-32的指令格式3.3 IA-32指令的寻址方式3.3.1 操作数寻址3.3.2 相关约束与规定3.3.3 与转移地址有关的寻址3.4 IA-32的通用指令3.1 基本数据类型1、基本数据类型字节(Byte,8位)字(2字节,16位)双字(4字节,32位)四字(8字节,64位,INTEL 80486后引入)双四字(16字节,128位,PIII 后引入)2、基本数据类型在内存中的存储形式•标号(标识符):由字母、数字、@、-、?加:组成;第一个字符必须是字母或某个特殊字符,?不单独做标识符号;整个标识符号的长度不超过31。
•指令助记符:是指令名称的代表符号,必须有。
•操作数:参加本条指令运算的数据。
•注释:以;开头,用来说明指令的功能等。
指令助记符操作数注释标号:3.2 IA-32的指令格式一、立即数寻址操作数由指令直接提供。
例:MOV AL,80 HMOV AX,1090 HMOV CX,100 H数据指令对操作数寻址对调用或转移指令寻址3.3 IA-32指令的寻址方式——操作数寻址二、直接寻址操作数在存储器中,其地址由指令提供。
例:MOV AX ,[ 1070 H ]若DS = 2000 H ,物理地址为:21070 H21071 H则:AX = 3020 H 例:MOV BX ,CS :[ 3000 H ]MOV AH ,[ 1000 H ]20 H 30 H三、寄存器寻址操作数在寄存器中。
MOV AH,BLMOV AX,BXMOV CX,AX四、寄存器间接寻址操作数在存储器中,存储器的EA由寄存器指出。
EA=+8 或16 位移量[BX] ;段为DS [BP] ;段为SS [SI] ;段为DS [DI] ;段为DS或ES1、以BX 寄存器进行间接寻址——数据段基址寻址例:若DS = 2000 H ,ES = 3000 H ,BX = 1000 H1)MOV AX ,[BX]AX← [21000 H] [21001 H]AX = 5B40 H 405B21000 H21001 H寄存器间接寻址可分为以下四种:2)MOV CX ,ES :[BX]AX ← [31000 H] [31001 H]2、以BP寄存器进行间接寻址——堆栈段基址寻址MOV AX,[BP]若SS = 5000 H,BP = 3000 H,将53020 H、53021 H单元的内容送AX。
微机原理与接口技术第2版第03章8086的指令系统精品文档
8086指令特点 8086的寻址方式 8086的指令格式及数据类型 8086的指令集
3.1 8086指令特点
1.8086具有灵活的指令格式 2.8086有较强的运算指令 3.8086指令有极强的寻址能力 4.8086指令有处理多种数据能力
3.2 8086的寻址方式
举例:多位的加法
2、算术减法指令
1) SUB 算术减法 指令功能:目的地目的操作数-源操作数 2) SBB 带进位算术减法 指令功能:目的地目的操作数-源操作数-CF 3) DEC 减1指令 指令功能:目的地目的操作数-1 4) DAS 对压缩BCD数减法操作的结果进行校正 指令功能:对AL寄存器的内容进行十进制调整 5) AAS 对非压缩BCD数减法操作的结果进行校正 指令功能:对AL寄存器的内容进行十进制调整 6) CMP 比较指令 指令功能:两个操作数相减,不产生运算结果仅影响 标志
MOV SI , 61A8H
MOV DX , [SI]
5、基址/变址寻址(Based/Indexed addressing)
这种寻址方式中提出位移量的概念,即 在寄存器间接寻址给出的偏移地址上,加一 相对位移量。位移量是一带符号的16位16进 制数。当使用BX或BP寄存器时,称基址寻址; 使用SI或DI寄存器时,称变址寻址。
例:
MOV AX , 34EAH B8 EA 34
MOV BL , 20H B3 20
2、寄存器寻址
(Register addressing)
操作数在寄存器中,指令中源操 作数和目的操作数都可用这种寻址 方式。
例:
MOV AL , BL
88 D8
MOV AX , 1234H
第03章 指令系统 微机原理与接口技术 课件
2020/10/3
1
第一节 指令的基本结构和执行时间
指令
指令系统
8086/8088CPU的指令系统共包含92种基 本指令,按照功能可将它们分为6大类:
• 数据传送指令
• 算术运算指令
• 逻辑运算和移位指令
• 串操作指令
• 控制转移指令
• 处理器控制指令
2020/10/3
执行的结果为(AX)=789AH
2020/10/3
12
2.选择BP作为间址寄存器 操作数在堆栈段(没有使用段超越时)
MOV [BP],AX 若已知(SS)=6000H,(BP)=1500H,则操作数的
物理地址为: 6000H×10H+1500H=61500H
若已知(AX)=5566H,则指令的执行结果为: 66H送到61500H内存单元, 55H送到61501H内存单元
2020/10/3
13
无论用SI、DI、BX或BP作为间址寄存器, 都允许段超越。
MOV ES:[DI],AX MOV DX,DS:[BP]
2020/10/3
14
五、变址寻址(Indexed Addressing)
以指定的寄存器内容, 加上指令中给出的8位或 16位位移量(必须要以 一个段寄存器作为基地 址),作为操作数的地 址。
2020/10/3
7
直接寻址:
MOV AX,[3200H]
如果DS=5000H,则所 寻找的操作数的物理 地址: 5000H×10H+3200H =50000H+3200H
=53200H
2020/10/3
8
段超越 : MOV BX,ES:[2100H]
微机原理与接口技术习题答案3
第3章8086CPU指令系统1.写出完成下列要求的变量定义语句:(1)在变量var1中保存6个字变量:4512H,4512,-1,100/3,10H,65530;(2)在变量var2中保存字符串:’BYTE’,’word’,’WOR’D;(3)在缓冲区buf1中留出100个字节的存储空间;(4)在缓冲区buf2中,保存5个字节的55H,再保存10个字节的240,并将这一过程重复7次;(5)在变量var3中保存缓冲区buf1的长度;(6)在变量pointer中保存变量var1和缓冲区buf1的偏移地址。
解:var1DW4512H,4512,-1,100/3,10H,65530var2DB’BYTE’,’word’,’WORD’buf1DB100DUP(?)buf2DB7DUP(5DUP(55H),10DUP(240))var3DBLENGTHbuf1pointerDWvar1,buf1(或者pointerDWOFFSETvar1,OFFSETbuf1)2.设变量var1的逻辑地址为0100:0000,画出下列语句定义的变量的存储分配图:var1DB12,-12,20/6,4DUP(0,55H)var2DB‘Assemble’var3DW‘AB’,‘cd’,‘E’var4DWvar2var5DDvar2解:3.指令正误判断,对正确指令写出源和目的操作数的寻址方式,对错误指令指出原因(设VAR1,VAR2为字变量,L1为标号):(1)MOVSI,100(2)MOVBX,VAR1[SI](3)MOVAX,[BX](4)MOVAL,[DX](5)MOVBP,AL(6)MOVVAR1,VAR2(7)MOVCS,AX(8)MOVDS,0100H(9)MOV[BX][SI],1(10)MOVAX,VAR1+VAR2(11)ADDAX,LENGTHVAR1(12)ORBL,TYPEVAR2(13)SUB[DI],78H(14)MOVSVAR1,VAR2(15)PUSH100H(16)POPCS(17)XCHGAX,ES(18)MOVDS,CS(19)JMPL1+5(20)DIVAX,10(21)SHLBL,2(22)MOVAL,15+23(23)MULCX(24)XCHGCL,[SI](25)ADCCS:[0100],AH(26)SBBVAR1-5,154解:(1)MOVSI,100正确。
微机原理与接口技术第2版第03章8086的指令系统
4、算术除法指令
• DIV 无符号数除法 指令功能:完成两个操作数相除
DIV OPRD AX/OPRDAL:商,AH:余数 DXAX/OPRD AX:商,DX:余数 • IDIV 带符号数除法 指令功能:完成两个操作数相除
另外还有: CBW 带符号数字节扩展、 CWD 带符号数字扩展、 AAD 非压缩BCD数除法校正 举例:把AL二进制数转为扩展BCD数
指令的16进制代码 40H 43H
2、双操作数指令
指令助记符 MOV AL , 04 MOV AX , 04
指令的16进制代码 B004H B80400
3、三个操作数指令
8086指令系统中,大多数指令中 只有1-2个操作数,但也有少数指 令中有3个操作数,不过有一操作数 隐含在操作码中。
例: ADC AX , BX
这种寻址方式中提出位移量的概念,即 在寄存器间接寻址给出的偏移地址上,加一 相对位移量。位移量是一带符号的16位16进 制数。当使用BX或BP寄存器时,称基址寻址; 使用SI或DI寄存器时,称变址寻址。
例:
MOV CX , 36H[BX]
MOV -20[BP] , AL
6、基址加变址寻址(Based Indexed addressing)
DAA MUL BL
寄存器名
ቤተ መጻሕፍቲ ባይዱ
特殊用途
在输入输出指令中作数据寄存器用 AX, AL 在乘法指令中存放被乘数或乘积,在除法指令中存放被除数或商
AH 在LAHF指令中,作目标寄存器用
在十进制运算指令中作累加器用 AL 在XLAT指令中作累加器用
在间接寻址中作基址寄存器用 BX 在XLAT指令中作基址寄存器用
XLAT
微机原理--第3章 8086指令系统(1)
JUST
《微机原理与接口技术》
JUST
《微机原理与接口技术》
3.1.2 数字数据类型
数字数据类型:无符号整数,有符号整数 无符号整数:原始二进制值
符号整数:最高位是符号位,0表示正数,1表示负数
?补码的概念
JUST
《微机原理与接口技术》
JUST
《微机原理与接口技术》
3.1.3 指针数据类型
MOV [BX],4 A35H
001101010 1001010 C707354A
(5)五、六字节指令(参考附录2,P.417)
JUST
《微机原理与接口技术》
操作数
1. 2. 3. 立即操作数 寄存器操作数 存储器操作数
JUST
《微机原理与接口技术》
1. 立即数操作数
具有固定数值的数, 即常数。表3-2
JUST
《微机原理与接口技术》
3.1 基本数据类型
IA-32结构的基本数据类型是字节、字、双字、四字和双四字
JUST
《微机原理与接口技术》
3.1 基本数据类型
四字是在Intel 80486处理器中引入IA-32 结构的, 双四字是在具有SSE扩展的Pentium Ⅲ 处理器中 引入的。 基本数据类型在内存中的字节顺序:低字节(位 0至位7)占用内存中的最低地址,该地址也是此 操作数的地址。
2.表3-2 段寄存器使用的一些基本约定 (P49)
JUST
《微机原理与接口技术》
3.3
8086的寻址方式
寻址方式:寻找操作数地址的方法
在8086指令系统中,寻址方式可分为8种: ①立即寻址 ⑤寄存器相对寻址
②直接寻址
③寄存器寻址 ④寄存器间接寻址
经典:微机原理与接口技术-8086指令系统
23
9、输入输出指令 输入指令
IN AC,DX IN AC,PORT
输出指令 OUT DX,AC OUT PORT,AC
该指令用来完成I/O端口与累加器之间的数据传送, PORT为端口地址,DX中存放端口地址。
二、算术运算指令 1、加/减指令
a.不带进位位的加/减指令 ADD X,Y; X←X+Y SUB X,Y; X←X-Y X,Y可为:RR,RR‘(或[MEM],NN); [MEM],RR(或NN);AC,NN。
执行指令:MOV AX ,[BP] 执 行 后 : ( AX)=?,(BP)=?,(SS)=?, (20030H)=? 图形表示如下:
8
【例2】
设执行前: (AX)=0040H,(BX) =0030H,(DS)=2000H,(20036H) =0050H
执行指令:ADD 6[BX],AX 执行后:(AX)=?,(BX)=?,(DS)
AL←[BX], AH←[BX+1] [DI],AX ;将AX中的16位二进制数送[DI]和
[DI+1]单元中 CX,[1000H];将[1000H]和[1001H]中的16位二进
制数送CX单元中 BX, 5040H ;将5040H送BX AL,‘E’; 将字符E送AL,即将E的ASCII码送AL AX,30H[BX+SI];将30H+BX+SI单元的内容送AX
8086/8088指令系统有133条指令,共
6组,功能较强
数据传送指令
串处理指令
算术指令
控制转移指令
逻辑指令
处理机控制指令
14
为了更快的学习、领会指令系统,我们 作如下约定:
微机原理第3章8086指令系统-PPT课件
指令的基本概念和指令所包含的 基本内容。 8086指令的格式及编码方式。 8086指令的寻址方式及寻址过程。
8086指令系统的分类、功能及操
作过程,每条指令的格式及用法。
学习目的
掌握指令及指令系统的基本概念。 掌握8086各种寻址方式所执行的数 据寻址过程。
牢固地掌握存储器段地址:偏移地
MOV表示“传送”助记符,BL(寄存器) 表示结果存放的位置, AL (寄存器)表示数 据的来源。
No Image
记忆,但最终必须将助记符指令 “翻译” 成机器指令才能被识别和执行。这个过程
叫“汇编”。
助记符指令
No Image
汇编
助记符表示的指令便于书写、理解和
机器指令
3.3 8086 CPU的寻址方式
例:AAA 操作 :对固定寄存器 AL 中的内容进行十进制调 整,结果仍在AL中。(可能影响AH的内容)
十进制调整
AL
AH
结果
送回 影响
+1
2. 立即数寻址
操作数作为立即数就在指令中给出。
例:MOV AX,1234H
机器码:B8 34 12 (低字节在地址小的单元)
操作:把立即数1234H送寄存器AX中。
No Image
MOV AX,1234H
代码段 (存储器中)
AH
AX
56 12
指令执行后,AX=1234H (原有的内容被新
No Image
AL
78 34
B8 34 12
...
操作码(B8) 操作数(1234H) 立即数 一 条 指 令
...
的内容替换)。
3. 寄存器寻址
操作数在某个寄存器中。 例:INC BL
微型计算机基本原理与接口技术(第二版)教学课件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) 影响的标志位:无
微机原理与接口技术第三章指令系统
标识符的构成
符号集合 英文字母(a~Z)、数字(0~9)、特殊符号(?、@、 _、 $)。 构成规则 不可以以数字开头;
不能实用单独的“?”作为标识符;
取名尽量有含义,但不能采用汇编语言的保留字; 助记符、定义符、寄存器名称等 最大长度为31字符。 例如: ABCDH →标识符 0ABCDH →立即数
MOV AX,05C7H 汇编指令 B8C705H
一对一
机器指令
3.1.2 指令格式 汇编语言指令:由操作码和操作数两部分组成。 操作码 操作数 操作数 指令的一般格式
操作码:指示指令要执行的具体操作。用助记符(一 般为英文字母缩写)表示。 操作数:指出指令执行过程中的操作对象。用符号或 符号地址标志。
(×)MOV CS,AX
(×)MOV AH, BX
AH AL BH BL CH CL DH DL
MOV AX, BX
;AX←BX
演示
寄存器寻址方式举例
MOV BX,1234H ;AX=1234H
源操作数是立即数寻址方式
目的操作数是寄存器寻址方式 MOV AX,BX BX=AX=1234H 源操作数和目的操作数均为寄存器寻址方式
AX 88H 66H … 66H 88H … 堆栈段 33200H 33201H
……
……
MOV BX, 1100H MOV AX, [BX]
码段
AX: 0078H
堆栈段
DS:0000H
…… ……
内存内容 偏移地址
0000H 0001H …… 1100H 1101H 1102H
…… ……
78H 00H 56H
微机原理与接口技术(3)3_8086寻址方式与指令系统
第3章:有效地址传送指令LEA(load effective address)
将存储器操作数的有效地址送至指定的16位通用 寄存器 LEA r16, mem ;r16←mem的有效地址EA 例题2.5 有效地址的获取 mov bx,400h mov si,3ch lea bx,[bx+si+0f62h] ;BX←400H+3CH+0F62H=139EH
演示
pop ax pop wvar
第3章:堆栈操作的特点
堆栈操作的单位是字,进栈和出栈只对字量 字量数据从栈顶压入和弹出时,都是低地址字节
பைடு நூலகம்
送低字节,高地址字节送高字节 堆栈操作遵循先进后出原则,但可用存储器寻址 方式随机存取堆栈中的数据 堆栈段是程序中不可或缺的一个内存区,常用来
(SP)=0FE+2=100H (DS)=1000H
第3章:3.3.3 标志操作指令
1. 标志位操作指令
CLC STC CMC CLD STD CLI STI ;复位进位标志:CF←0 ;置位进位标志:CF←1 ;求反进位标志:CF←~CF ;复位方向标志:DF←0 ;置位方向标志:DF←1 ;复位中断标志:IF←0 ;置位中断标志:IF←1
提供方便灵活的通用传送操作 有3条指令 MOV XCHG MOV XLAT
XCHG XLAT
第3章:1. 传送指令MOV(move)
把一个字节或字的操作数从源地址传 送至目的地址
MOV reg/mem,imm ;立即数送寄存器或主存 MOV reg/mem/seg,reg ;寄存器送(段)寄存器或主存 MOV reg/seg,mem ;主存送(段)寄存器 MOV reg/mem,seg ;段寄存器送寄存器或主存
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MOV DX , [SI]
5、基址/变址寻址(Based/Indexed addressing)
这种寻址方式中提出位移量的概念,即 在寄存器间接寻址给出的偏移地址上,加一 相对位移量。位移量是一带符号的16位16进 制数。当使用BX或BP寄存器时,称基址寻址; 使用SI或DI寄存器时,称变址寻址。 例:
XCHG R, OPRD
OPRD: R, MEM 操作数不能为立即数; 源和目的不能同时为存储单元; 段寄存器不能作为操作数。
举例: 把2000H单元的字和3000H单元互换
2、累加器专用传送指令
1) IN 输入指令
指令格式为: IN AL , n IN AX , n IN AL , DX IN AX , DX
(6) 执行逻辑操作指令,CF均被清0
1、 逻辑运算指令
• 1) NOT 逻辑求反 指令功能:将8位、16位寄存器或存储器内容求反
• 2) AND 逻辑与操作 指令功能:将8位、16位寄存器或存储器内容和源操 作数“与”
• 5) AAA 对非压缩BCD数加法操作的结果进行校正 指令功能:对AL寄存器的内容进行十进制调整
举例:多位的加法
2、算术减法指令
1) SUB 算术减法 指令功能:目的地目的操作数-源操作数 2) SBB 带进位算术减法 指令功能:目的地目的操作数-源操作数-CF 3) DEC 减1指令 指令功能:目的地目的操作数-1 4) DAS 对压缩BCD数减法操作的结果进行校正 指令功能:对AL寄存器的内容进行十进制调整 5) AAS 对非压缩BCD数减法操作的结果进行校正 指令功能:对AL寄存器的内容进行十进制调整 6) CMP 比较指令 指令功能:两个操作数相减,不产生运算结果仅影响 标志
3)POP 出栈指令
指令格式为:POP oped Oped: r, mem, seg(不包括 CS!!!)
其操作过程是: a、将SS:SP所指示的栈顶处的两个字
节作。
4)XCHG 交换指令
指令格式为: XCHG 目的操作数 ,源操作数
mov seg, oprd
Oped: r, mem 注意:1、mem不能到mem
2、seg做目的操作数时, 不包括cs。 3、类型匹配
2)PUSH 进栈指令
指令格式为:PUSH oprd
Oprd: r, mem, seg 其操作过程是: a、SP-2,指示堆栈中可以存放数 据的位置 b、存源操作数,完成进栈操作。
例:
MOV AX , 34EAH B8 EA 34
MOV BL , 20HB3 20
2、寄存器寻址 (Register addressing)
操作数在寄存器中,指令中源操 作数和目的操作数都可用这种寻址 方式。
例:
MOV AL , BL
88 D8
MOV AX , 1234H
B8 34 12
MOV AL , AH
88 E0
3、直接寻址(Direct addressing) 当指令中的源操作数或目的操
作数,采用直接给出被访问内存单 元的逻辑地址时,这种寻址方式称 直接寻址。 例:
MOV AX , [3E4CH] A1 4C 3E
MOV [1234H] , AL A2 34 12
4、寄存器间接寻址(Register indirect addressing) 内存单元的逻辑偏移地址通过寄存 器间接给出。 例:
1)LAHF AH 送 FR寄存器的低8位 2)SAHF FR寄存器的低8位送AH 3)PUSHF FR寄存器推入堆栈 4)POPF 从栈顶中弹出存入FR寄存器
举例: 1、把FR各位清零 2、把TF置1,其他位不变
二、算术运算指令
1、算术加法指令
• 1) ADD 算术加法 指令功能:目的地目的操作数+源操作数
串寻址方式仅在8086的串指令中 使用。规定源操作数的逻辑地址为 DS:SI;目的操作数的逻辑地址为 ES:DI。当执行串指令的重复操作时, 根据设定的方向标志DF,SI和DI会 自动调整。
c、I/O(输入/输出)端口寻址 (I/O port addressing)
当操作数在外部设备时,使用I/O指令。 此时有两种不同的寻址方式访问I/O端口。 (1) 直接端口寻址方式。 (2) 采用DX寄存器间接寻址方式 (3) 输入指令中目的操作数可为AL或
2)OUT 输出指令
指令格式为: OUT n , AL OUT n , AX OUT DX , AL OUT DX , AX
• 3) XLAT 换码指令 指令格式为:XLAT 功能[bx+al]->al 例:查表求n的平方。n:[0-9]
1、将0-9的平方表建立在偏移地址为 2000H的内存中,如图。
在间接寻址中作基址寄存器用 BX 在XLAT指令中作基址寄存器用
CX 在串操作指令和LOOP指令中作计数器用
CL 在移位/循环移位指令中作移位次数计数器用
DX
在字乘法/除法指令中存放乘积高位或被除数高位或余数 在间接寻址的输入输出指令中作地址寄存器用
在字符串运算指令中作源变址寄存器用 SI 在间接寻址中作变址寄存器用
寻址方式就是指令中用于说明操作数所在 地址的方法
MOV AX, 1234H ;B8 34 12 MOV AX, [1234H] ;A1 34 12
一、 8086的寻址方式说明
1.有效地址EA(Effective Address) 当操作数在内存中时,指令的地址 码(操作码)给出所访问的内存单 元的逻辑地址。在寻址方式中,逻 辑地址的形成是由多个分量组合而 成,该组合地址又叫有效地址。
AX ; 输 出 指 令 中 源 操 作 数 可 为 AL 或 AX。 例:
IN AL , 25H
E5 25H
MOV DX , 3E4H
OUT DX , AL
EE
3.3 8086的指令格式及数据类型
指令由操作码和操作数(地址码) 组成。8086的指令长度是可变的,一 条指令一般由1-6个字节组成。
常用的符号
累加器 a
ax,al 寄存器 r:
ax,bx,cx,dx,si,di,sp,bp,
al,ah,cl,ch,bl,bhdl,dh 段寄存器seg:
ds,es,ss,cs 内存 mem:
[nn], [bx],[si],[di],[bp]
[bx/bp+count], [si/di+count]
在字符串运算指令中作目标变址寄存器用 DI 在间接寻址中作变址寄存器用
BP 在间接寻址中作基址指针用
SP 在堆栈操作中作堆栈指针用
隐含性质 不能隐含 隐含 隐含 隐含 隐含 不能隐含 隐含 隐含 不能隐含 隐含 不能隐含 隐含 不能隐含 隐含 不能隐含 不能隐含 隐含
B、串寻址(String addressing)
• 格式 – ADD R,OPRD
OPRD: R,MEM,IM – ADD MEM, OPRD
OPRD:R,im 算术指令影响标志位
二、算术运算指令
1、算术加法指令
• 2)ADC 带进位算术加法 指令功能:目的地目的操作数+源操作数+CF
• 3)INC 加1指令 指令功能:目的地目的操作数+1 4) DAA 对压缩BCD数加法操作的结果进行校正 指令功能:对AL寄存器的内容进行十进制调整
2、MOV数据传送指令 其格式为: MOV 目的操作数,源操作数 目的操作数和源操作数均可采用不 同的寻址方式, 两个操作数的类型必需一致。
二、寻址方式介绍
1.立即寻址(Immediate addressing) 操作数就在指令中,紧跟在操作码
后面,作为指令一部分存放在内存的 代码段中,这种操作数称为立即数。
MOV CX , 36H[BX] MOV -20[BP] , AL
6、基址加变址寻址(Based Indexed addressing)
它的EA是由三部分组成的,基址寄存器 BX或BP的内容加上变址寄存器的内容再加 位移量。物理地址由基址寄存器按规则选 择段寄存器,也可以使用段超越。 例:
MOV AX , 8AH[BX][SI] 该例中EA=8AH+BX+SI 物理地址=DS×10H+8AH+BX+SI
7) NEG 取补指令 指令功能:0-目的操作数
3、算术乘法指令
1) MUL 无符号数乘法 指令功能:完成两个操作数相乘
MUL OPRD;
AL*OPRD->AX
AX*OPRD->DX AX
OPRD: R, MEM 2) IMUL 带符号数乘法
指令功能:完成两个操作数相乘
3) AAM 非压缩BCD数乘法操作结果校正 指令功能:完成两个非压缩BCD数乘 法结果的十进制数调整
2、查表
完成求5的平方指令序列为:
MOV BX , 2000H ;指向平方表的首地址
MOV AL , 5 ;将5换码成5的平方值
XLAT
;查表,平方值在AL中
3、目标地址传送指令 这类指令有:
1)LEA 有效地址传送到寄存器 2)LDS 装入一个新的物理地址 3)LES 装入一个新的物理地址
4、标志寄存器传送指令
一、数据传送指令
数据传送指令又可以分成4种: l 通用数据传送 l输入/输出数据传送 l 目的地址传送 l 标志寄存器转送
指令的共同特点是:
1、除POP和SAHF指令外,这类指令 的操作结果不会影响FR寄存器中的标 志。 2、指令中有两个操作数,目的操作数 和源操作数,其执行过程为:
目的操作数 源操作数, 当指令中仅列出一个操作数时,另一 操作数为隐含。
举例:把扩展BCD转二进制数
4、算术除法指令
• DIV 无符号数除法 指令功能:完成两个操作数相除
DIV OPRD AX/OPRDAL:商,AH:余数 DXAX/OPRD AX:商,DX:余数 • IDIV 带符号数除法 指令功能:完成两个操作数相除