第三章寻址方式讲义
微机原理课件第三章8086寻址方式和指令系统
![微机原理课件第三章8086寻址方式和指令系统](https://img.taocdn.com/s3/m/dfebe14a7fd5360cba1adb83.png)
数寻在址堆方栈式段来中说,,操就作相数当的于段钥地匙址在段寄存器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,
微机原理第三章 8086的寻址方式和指令系统ppt课件
![微机原理第三章 8086的寻址方式和指令系统ppt课件](https://img.taocdn.com/s3/m/1e49a23e50e2524de4187e3e.png)
4、寄存器间接寻址方式 (Register Indirect Addressing)
EA在指定的寄存器中,只能是基址BX、BP,变址SI、 DI四者之一。 MOV AX, [DX] (非法)
默认关系:SS:BP, DS:BX、SI、DI 可进行段超越,如 MOV AX,DS:[BP]
• 根据有效地址EA〔Effective Address〕的构成 方式,存储器寻址分为以下五种:
• 段寄存器使用的基本约定 •
3、直接寻址方式(Direct Addressing) EA就在指令中,默认段寄存器为DS 如:MOV AX,[2000H] 设DS=3000H 则EA=2000H,PA=DS×16+EA=32000H, 操作数来自32000H〔或3000H:2000H处),结果AX=3514H
例如: MOV AX,COUNT[BX][SI] MOV AX,COUNT[BX+SI] MOV AX,[BX+SI+COUNT]
以上三者等价
如 MOV AX,MASK[BX][SI] 设DS=4100H,位移量MASK=0134H,BX=2500H,SI=1200H 则EA=(BX)+(SI)+MASK=3834H,PA= (DS)
• 8086的指令按功能可分为六大类:数据传送指令、 算术运算指令、逻辑运算和移位指令、字符串处 理指令、控制转移指令、处理器控制指令。
一、数据传送指令:负责数据在寄存器、存储器、I/O端口 之间的传递,特点是不影响标志位。
1.通用数据传送指令 (1) MOV 传送指令〔Move) 格式:MOV 目的,源;(源)→(目的)
微机原理第三章8086的寻址方式和指令系统PPT课件
![微机原理第三章8086的寻址方式和指令系统PPT课件](https://img.taocdn.com/s3/m/3f13c56b580102020740be1e650e52ea5418ce4b.png)
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指令从第一个操作数中 减去第二个操作数,并将结 果存储在目标操作数中。
逻辑运算类指令
逻辑运算类指令用于执行逻 辑与、或、非等逻辑运算。
[物理]单片机3第三章寻址方式
![[物理]单片机3第三章寻址方式](https://img.taocdn.com/s3/m/b2ca773355270722192ef7f1.png)
北京化工大学 信息科学与技术学院 郭 青
1
第三章
本章重点
寻址方式
80C51指令系统
指令格式
操作结果及对标志位影响
3.1
111条指令
概述
29 24 24 17
数据传送类指令 数学运算类指令
分类
逻辑运算类指令 控制转移类指令
位操作指令
17
单字节指令 按指令长度分类
双字节指令
三字节指令 12个振荡周期 64
COUNT:PUSH DPH; 保护DPTR内容
PUSH DPL;
MOV DPTR,#TABLE ;赋表首地址给DPTR
MOVC A, @A+DPTR
; POP DPL; 根据A中内容查表 恢复DPTR内容 返回主程序
POP DPH
RET;
ORG 1000H TABLE:DB 00 DB 01 DB 04 DB 09 DB 16 DB 25 DB 36 DB 49 DB 64 DB 81
19
3.3.1 数据传送类指令
按操作方式,分为三种: 数据传送 数据交换 栈操作
一、普通传送类指令 格式: MOV (目的操作数),(源操作数) 操作码助记符 操作: 将源操作数单元内容,传送到目的操作数 单元中,源操作数内容不变。不影响标志 位Cy,AC和OV。
操作数的组合关系
1、立即数的传送 MOV A, #data MOV Rn, #data (A) (Rn) #data #data
d:MOV direct,#data
将8位立即数送入由direct直接寻址的地 址单元中。 direct:00H~FFH,8位二进制地址码
寻址内部RAM(00H~7FH)及SFR
第三章-X的寻址方式和指令系统-.ppt
![第三章-X的寻址方式和指令系统-.ppt](https://img.taocdn.com/s3/m/a369ccfe0c22590102029da3.png)
3.2 机器指令格式
操作码(Op) 地址码(Ad)
操作码(Operation Code) 地址码(Addressable Code)
3.3 寻址方式
存放方式
包含在指令中 立即寻址(Immediate addressing) 存放在CPU中的某个寄存器 寄存器寻址(register
addressing)
ARRAY
7. 相对基址加变址寻址方式
(Relative based indexed addressing)
操作数有效地址是一个基址寄存器和一个变址寄存器的内容 和8位或16位位移量之和 。
除有段跨越前缀之外,形成物理地址有二种方式:
PA=16d×(DS)+ (BX) +
(SI) +
(DI)
8位位移量 16位位移量
寄存器相对寻址方式 MOV AX,COUNT[BP]
用途:这种寻址方式同样用于表格处理。 表格首地址COUNT 修改基址或变址寄存器来取得表格中的值。
例:某数据表的首地址为COUNT 欲读取表中第10个数据,存放到(AL)中。 第10个数据的有效地址: EA= COUNT + 9 MOV SI , 09H MOV AL , [SI+COUNT]
1. 立即寻址(Immediate Addressing)
操作数直接存放在指令中,紧跟在操作码之后,作为 指令 的一部分,存放在代码段里,这种操作数称为立 即数。
例:MOV AX,1234H
AH AL
MOV
34H
代
12H
码
┇
段
2.寄存器寻址(Register addressing)
MOV AX,BX
第3章指令系统和寻址方式3PPT课件
![第3章指令系统和寻址方式3PPT课件](https://img.taocdn.com/s3/m/bcac7641d4d8d15abf234e6a.png)
说明: 1)条件转移的范围为-128至+127之间,采用
相对转移方式,通过在IP上加一个地址差的方法 实现.
2)通常,在条件转移指令之前,总有用于条件 判别的指令.
3)比较无符号数和有符号数之间的大小所用 的转移指令不同,注意区分。
例:在存储器中有一个首址为ARRAY的N字数组,测试其中 正、负、0的个数存放在DI、SI和AX中。
比较无符号数 JB(JNAE,JC) OPR:低于(<) JNB(JAE,JNC) OPR:不低于( ≧ ) JBE(JNA) OPR:低于或等于(≦) JNBE(JA) OPR:不低于或等于(>)
微机原理2011
比较有符号数 JL(JNGE)OPR:小于(<) JLE(JNG)OPR:不大于(≦) JNL(JGE)OPR:不小于( ≧ ) JNLE(JG)OPR:大于(>)
微机原理2011
(217E0H)=0400H,(217E2H)=9000H,试确定下列转移指
令的转移地址。
1)JMP 2300H
2)JMP
WORD PTR [BX]
3)JMP
DWORD PRT [BX+DATA]
微机原理2011
➢ 条件转移指令 根据执行上一指令后标志寄存器的状态而决定
是否转移 格式: Jcc 标号
根据单个标志位的条件转移指令(见教材P71)
JZ
JP
JNZ
JNP
JC
JS
JNC
JNS
JO
JNO
微机原理2011
例:试分析下列程序段:
ADD AX,BX JNO L1 JNC L2 SUB AX,BX JNC L3 JNO L4 JMP SHORT L5 如果AX和BX的内容给定如下: AX BX 1)147B 80DC OF=0,CF=0 ,转L1 2)B568 54B7 OF=0,CF=1 ,转L1
第3讲_1 寻址方式
![第3讲_1 寻址方式](https://img.taocdn.com/s3/m/69040089680203d8ce2f24e6.png)
⑤基址变址寻址(2)
基址变址寻址的格式: [BX+SI+位移量] [BX+DI+位移量] [BP+SI+ [BP+SI+位移量] [BP+DI+位移量] ] [BP+DI+ ] [BX+SI] [BX+DI] [BP+SI] [BP+DI] 错误的写法: [BX+BP] [SI+DI] 位移量的范围: 补码表示的8位或16位 (-128~+127,-32768~+32767)
3.3 寻址方式
3.3.1 3.3.2 3.3.4 3.3.5 操作数的种类 寻址方式 段更换和段跨越 有效地址的计算时间
1
3.3.1 操作数的种类
(1) 立即操作数: 指令要操作的数据在指令代码中, MOV AL,10H ;指令码B010. (2) 存储器操作数:指令要操作的数据在存储器(内 存)中, MOV AL,[1234H]; 指令码A03412. (3)寄存器操作数:指令要操作的数据在CPU的寄存 器中, MOV AL,BL; 指令码88D8. (4)I/O端口操作数, IN AL,20H; 指令码E420.
假定 DS=1000H, SS=2000H, BP=0100H, BX=0100H, 如下指 令在执行完后的结果分别是什 么? ① MOV AX,[BX+100H] ② MOV AX,[BP+100H]
19
寻址方式中不能出现的情况
立即数只能用于源操作数寻址 除源操作数为立即寻址方式外,其中一个操 作数的寻址方式必须是寄存器直接寻址,即 两个操作数不能同时为存储器操作数 例如 MOV data1,12h MOV data1,data2 错
指令系统和寻址方式.ppt
![指令系统和寻址方式.ppt](https://img.taocdn.com/s3/m/30160ec44431b90d6c85c7e7.png)
第3章 指令系统和寻址方式
每条指令由两部分组成:操作码字段和地址码字段。 格式如图3.1所示。
操作码
操作数(地址码)
图3.1 指令格式 操作码字段:用来说明该指令所要完成的操作。 地址码字段:用来描述该指令的操作对象。一般是直 接给出操作数,或者给出操作数存放的寄存器编号,或 者给出操作数存放的存储单元的地址或有关地址的信息。
第3章 指令系统和寻址方式
代码段
AL
OPΒιβλιοθήκη 0FFH图3.3 8位立即寻址操作示意图
第3章 指令系统和寻址方式
AX
代码段
OP 34H 12H
图3.4 16位立即寻址操作示意图
第3章 指令系统和寻址方式
由此看出,这种寻址方式不需要访问存储器而是立 即从指令中取得操作数。这正是立即寻址方式名称的 含义所在。
由于在这种寻址方式中操作数是指令的一部分,不 能修改,而一般情况下,指令所处理的数据都是在不 断变化的,比如本条指令的操作数是上一条指令的执 行结果。因此,这种寻址方式只能适用于操作数固定 的情况。例如,给某一寄存器赋初值或给某存储单元 提供常数等。
第3章 指令系统和寻址方式
此外要注意,这种寻址方式不能用于单操作数指令; 若 用于双操作数指令,也只能用于源操作数字段,不 能用于目的操作数字段。
第3章 指令系统和寻址方式
因此,人们就用一些助记符来代替这种基2码表示的指 令,这就形成了汇编指令。汇编指令中的助记符通常 用英文单词的缩写来表示,如加法用ADD,减法用 SUB,传送用MOV等等。这些符号化了的指令使得书 写程序、阅读程序和修改程序变得简单、方便,但计 算机不能直接识别和执行,在把它交付给计算机执行 之前,必须翻译成计算机所能识别的机器指令。这个 翻译过程由一个被称为“汇编程序”的工具软件自动 实现。汇编指令与机器指令是一一对应的,本书中的 指令都使用汇编指令形式书写,便于读者学习和理解。
汇编语言讲义第三章 80x86的寻址方式
![汇编语言讲义第三章 80x86的寻址方式](https://img.taocdn.com/s3/m/a41d3630647d27284b7351b5.png)
32000H
50H 50H
… … … … …
AX
跨段访问情况
•
8086的存储器是分段使用的,通常,若选用寄存器(BX、BP、SI和 DI) 做间接寄存器、变址寄存器或基址寄存器,只要有BP寄存器出现,操作数
就在当前的堆栈段。操作数的物理地址由堆栈段寄存器SS的内容左移4位
与偏移地址EA相加;
• •
…
• 如指令中用BP寄存器,
则操作数的段地址在SS中,即堆栈段。
E9H? 20H
00H
…
基址寻址方式
例10 ADD AX,[SI] ; AX+((DS)×10H+(SI))→AX
DS
… …
AX 11 22H + +
执行前:(AX)= 1122H,(SI)= 20H,
(DS)= 1000H,(10020H)= 3344H 执行后:(AX)= 4466H,(SI)= 20H,
MOV 18,AL ; 18←AL
执行后:(AL)= 12H
例2 MOV AX,2000H ; 2000H→AL 执行后:(AX)= 2000H
CS
E8H 00H 20H
… … … …
2、寄存器寻址方式:R
• 操作数包含于CPU的内部寄存器之中。寄存器名是操作数的符号地址,寄存器
的内容是指令所需的操作数。 例3 INC AX ;(AX)+1→AX
例 MOV AX,BX 例 ADD AX,BX
;(BX)→AX ;(AX)+(BX)→AX
例 SUB AX,BX
;(AX)-(BX)→AX
与数据有关的寻址方式
寻址方式可能有三种情况:
16位寻址
微型计算机原理与接口技术课件-第三章指令系统和寻址方式
![微型计算机原理与接口技术课件-第三章指令系统和寻址方式](https://img.taocdn.com/s3/m/7b569104f90f76c660371a7f.png)
超越前缀。例如,数据若放在附加段中,则应在
有效地址前加“ES:”,这里的冒号“:”称为 修改
属性运算符,计算物理地址时要用ES作基地址, 而不再是默认值DS。
例如: MOV AX,ES:[500H] 该指令的源操作数的物理地址等于16×ES+
500H。
3.符号地址 在汇编语言中还允许用符号地址代替数值地
MOV CL,AH 注意:源操作数的长度必须与目的操作数一
致,否则会出错。例如,不能将AH寄存器的内 容传送到CX中去,尽管CX寄存器放得下AH的 内容,但汇编程序不知道将它放到CH还是CL中。
这种寻址方式的优点是:寄存器数量 一般在几个到几十个,比存储器单元少很 多,因此它的地址码短,从而缩短了指令 长度,节省了程序存储空间;另一方面, 从寄存器里取数比从存储器里取数的速度 快得多,从而提高了指令执行速度。
用汇编语言(即主要由指令系统组成的语言)编写的程 序称为汇编语言源程序,若直接将它送到计算机,机器
并不认识那些构成程序的指令和符号的含义,还必须由
汇编程序将源程序翻译成计算机能认识的二进制机器语
言指令(机器码)后,才能被计算机识别和执行,得到运算 结果。
8086指令系统采用变长指令,指令的长度可由l~6 字节组成。一字节指令中只包含8位操作码,没有操作数。 如清进位位指令CLC的机器码为1111 1000,可直接从指 令编码表中查到。对于大部分指令来说,除了操作码(不 一定是8位)外,还包含操作数部分,所以要由几个字节组 成。不同的指令,其操作码和寻址方式都是不一样的,
例如:AREA1 EQU 0867H MOV AX,AREA1
例如:AREA1 DW 0867H MOV AX,AREA1 (该指令也可
汇编语言课件(3)—指令系统和寻址方式
![汇编语言课件(3)—指令系统和寻址方式](https://img.taocdn.com/s3/m/ee88ff7ecc7931b764ce1564.png)
第3章 指令系统和寻址方式
◆ 汇编指令格式 ◆ 寻址方式
◆ 8086指令系统 ◆ 80X86及Pentium扩展指令
汇编语言 程序设计
3.1 汇编指令格式
计算机中的一条指令通常包含两部分:
操作码 操作数
依据操作数的个数划分,80X86CPU指令 系统中的指令格式最常用的有:双操作数指 令、单操作数指令和无操作数指令。
位通用寄存器。 说明: ① 源操作数必须是存储器操作数,即OPS采用存储器寻址;
目的操作数必须是一个16位通用寄存器。 ② 本指令对标志位无影响。 ③ 该指令通常用来建立内存储器的寄存器指针。
汇编语言 程序设计
பைடு நூலகம்
(2)传送偏移地址及数据段首址指令LDS
格式:LDS REG16,OPS
功能:将由源操作数确定的双字存储单元的内容传送给DS及目的操
MOV VAL,
对使用直接寻址方式需说明以下几点:
● 操作数默认存放在数据段中,段寄存器DS在指令 格式无须指定。
汇编语言 程序设计
(2)寄存器间接寻址
此寻址方式中,操作数的有效地址EA存放在SI、 DI、BX或BP四个寄存器之一中,即:EA=(BX)或 (BP)或(SI)或(DI)。
汇编格式: [ R ] (其中R是寄存器SI、DI、BX、 BP之一)
这3个地址分量的不同组合,使形成有效地址EA的方
汇编语言 程序设计
(1)直接寻址
直接寻址是最简单的存储器寻址,这种寻址,操 作数的有效地址EA由指令直接给出。它主要用于存取 简单变量。
汇编格式:(a)[ 常量 ] 有变量的表达式
(b)变量 或 含
【例3.3】 MOV AL,[ 1000H ] BX
第三章 寻址方式
![第三章 寻址方式](https://img.taocdn.com/s3/m/65cfe74c767f5acfa1c7cdd9.png)
立即数寻址方式常用来给寄存器赋值
立即数寻址指令
MOV AL,05H ;AL←05H MOV AX,0102H ;AX←0102H
立即寻址
3.2.3 寄存器寻址方式
操作数存放在CPU的内部寄存器reg中,可以 是:
8位寄存器r8: AH、AL、BH、BL、CH、CL、DH、DL 16位寄存器r16: AX、BX、CX、DX、SI、DI、BP、SP 4个段寄存器seg: CS、DS、SS、ES
* 不允许使用AX、CX、DX 存放 EA
MOV AX, [CX]
* SRC 和 DST 的字长一致
MOV DL, [ BX ]
MOV DX, [ BX ]
; [BX]指示一个字节单元
; [BX]指示一
(5) 寄存器相对寻址方式*
(BX) (BP) 8位
; mov cx, 17 ; string的偏址 bx ; mov dl, [bx+si] ; 显示一个字符 ; 循环指令
reg——代表r8或r16 seg——段寄存器 CS/DS/ES/SS
指令操作数的表达-存储器
m8——一个8位存储器操作数单元(所 有主存寻址方式) m16——一个16位存储器操作数单元 (所有主存寻址方式) mem——代表m8或m16
指令操作数的表达-立即数
i8——一个8位立即数 i16——一个16位立即数 imm——代表i8或i16 dest——目的操作数 src——源操作数
传送指令MOV的格式
MOV dest,src ;dest←src
演示
MOV指令的功能是将源操作数src传送至目的操作数 dest,例如:
MOV MOV MOV MOV MOV
单片机指令系统-第3讲寻址方式
![单片机指令系统-第3讲寻址方式](https://img.taocdn.com/s3/m/5e2684d66429647d27284b73f242336c1eb930d8.png)
单片机指令系统-第3讲寻址方式单片机指令系统第 3 讲寻址方式在单片机的世界里,指令系统就像是它的“语言”,而寻址方式则是这门语言中的重要语法规则。
理解了寻址方式,我们就能更加高效、准确地编写单片机程序,让单片机按照我们的意愿去工作。
什么是寻址方式呢?简单来说,寻址方式就是寻找操作数的方式。
在单片机执行指令的过程中,需要对各种数据进行操作,而这些数据可能存放在不同的地方,比如寄存器、内存单元等等。
寻址方式就是告诉单片机如何找到这些数据。
常见的寻址方式有以下几种:一、立即寻址立即寻址是最简单直观的一种寻址方式。
在这种方式下,操作数直接包含在指令中。
例如,指令“MOV A, 50H”中,“50H”就是一个立即数,单片机直接将这个数值赋给累加器 A。
这种方式的优点是指令执行速度快,因为操作数就在指令中,不需要额外的时间去寻找。
但是,由于指令长度有限,能表示的立即数范围也有限。
二、直接寻址直接寻址就是直接给出操作数所在的内存单元地址。
比如,指令“MOV A, 30H”,这里的“30H”就是一个内存单元的地址,单片机从这个地址中取出数据并赋给累加器 A。
直接寻址方式可以访问片内 RAM 的 00H 7FH 单元以及特殊功能寄存器(SFR)。
使用直接寻址可以方便地对特定的内存单元进行操作,但需要注意的是,直接寻址的范围相对有限。
三、寄存器寻址寄存器寻址是指操作数存放在寄存器中。
例如,指令“MOV A, R0”,就是将寄存器 R0 中的内容传送到累加器 A 中。
由于寄存器的存取速度比内存快得多,所以寄存器寻址方式可以提高指令的执行效率。
在单片机中,通常有多个通用寄存器可供选择,程序员可以根据需要灵活使用。
四、寄存器间接寻址寄存器间接寻址是通过寄存器中的内容作为地址来访问内存单元。
比如,指令“MOV A, @R0”,这里的 R0 中存放的不是操作数本身,而是操作数所在的内存地址。
单片机先从 R0 中取出地址,然后再从这个地址中取出数据赋给累加器A。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8088/8086 CPU 的寻址方式
定义:
确定操作数存在的方式,称为寻址方式
寄存器寻址方式
立即数寻址方式 存储器寻址方式 其它寻址方式
微机原理及应用
8088/8086 CPU 的寻址方式
立即数寻址
非存储器寻址方式
寄存器寻址
直接寻址
寄存器间接寻址
存储器寻址方式
基址寻址 变址寻址 基址加变址寻址
寄存器寻址方式 b7、b6 = 00、01、10
存贮器寻址方式
微机原理及应用
8088/8086 CPU 通用指令格式
b3 ~ b5(REG)—— 寄存器名编码
b5 b4 b3 W = 0(8位REG) W = 1 (16位REG) 0 0 0 AL AX 0 0 1 CL CX 0 0 1 1 1 1 1 1 0 0 1 1 0 1 0 1 0 1 DL BL AH CH DH BH DX BX SP BP SI DI
•
微机原理及应用
指令助记符 ADD AH,[ BX+20H ] 指令机器码 02H、67H、20H 分析
• B1 = 02H = 00000010B OP = 000000 ADD 基本操作码码头 D=1 AH为目的寄存器操作数 AH在B2中为REG编码 [BX+20H]在B2中为R/M 编码 W= 0 • MOD = 01 REG = 100 R/M = 111 • B3 = 20H AH为字节操作数, 存储器寻址方式编码 目的寄存器操作数 AH 的编码 源存储器操作数 [BX+D8] 的编码 存储器相对寻址中的 D8 值 B2 = 67H = 01100111B
• B1 = 8BH = 10001011B
OP = 100010 D=1 基本操作码码头 CX为目的寄存器操作数(总指向目的操作数) CX在B2中为REG 编码 AX在B2中为R/M 编码 W=1 CX、AX 为字操作数 寄存器寻址方式编码
•
B2 = C8H = 11001000B
MOD = 11
微机原理及应用
8088/8086 CPU 的寻址方式
立即数寻址方式
定义:操作数立即出现在操作码的后面
指 令: MOV AL,20H 机器码: B0H(码)、20H(8 位立即数) 功 能:(AL) = 20H
指 令: MOV AX,2000H 机器码: B8H(码)、00H、20H (16位立即数) 功 能:(AX) = 2000H
微机原理及应用
存储器寻址方式机器码分析
• ADD AH,[BX+20H] 机器码为 02H、67H、20H
ADD [BX+20H],AH 机器码为
00H、67H、20H
•
D = 0 指向目的寄存器
D = 1 指向源寄存器
• 源、目的寄存器、存储器交换位置后
机器码 B1字节变,B2字节不变
微机原理及应用
注:OP 与操作码有关;dst、src 是操作数
微机原理及应用
指令的基本格式
8088/8086 CPU 的操作码段
一字节操作码 二字节操作码
8088/8086 CPU 的操作数段
字节数从 0 字节到 4 字节 由不同的寻址方式寻找操作数
微机原理及应用
指令的基本格式
操作数的存在形式
微机原理及应用
立即寻址与直接寻址比较
• 立即寻址 MOV AX,2000H 操作数为 2000H,在CS段 CS段
B8H
00H
20H
• 直接寻址
MOV AX,[ 2000H ] 操作数存放在 DS 段的偏移 地址 2000H 中
CS段
A1H
00H
20H
微机原理及应用
存储器寻址中的段超越前缀
概念:从 DS 段外的其它段中寻找操作数 MOV AX,[ 2000H ] 注:省略段符时,隐含为 DS 段 MOV AX,DS:[ 2000H ] MOV AX,SS:[ 2000H ] MOV AX,ES:[ 2000H ] MOV AX,CS:[ 2000H ] 注:给出段符时,确定了操作数的段特性
D = 0 寄存器操作数为源操作数
D = 1 寄存器操作数为目的操作数
注: D 值影响 B2 中 REG 的确定
b0 (W) —— 操作数的类型定义
W = 0 字节操作数,8bit W = 1 字操作数,16bit
微机原理及应用
8088/8086 CPU 通用指令格式
B2字节的位定义(寻址方式定义)
微机原理及应用
8088/8086 CPU 的寻址方式
存储器寻址方式
定义:操作数段为操作数存放的存储器地址值
• 特点:寻址方式多样、灵活、应用广泛
需进行地址运算,相对速度较慢 • 条件:指令中仅有一个存储器操作数, 可以是源操作数或者目的操作数 • 形式:存储器操作数助记符表示为 [ ]
微机原理及应用
微机原理及应用
8088/8086 CPU 通用指令格式
b0 ~ b2(R/M) —— 存贮器寻址方式编码
b2 b1 b0
0 0 0 0 1 1 1 0 0 1 1 0 1 1 0 1 0 1 1 0 1
MOD=00
[BX+SI] [BX+DI] [BP+SI] [BP+DI]
MOD = 01
[BX+SI+D8] [BX+DI+D8] [BP+SI+D8] [BP+DI+D8]
注:可变长度,从 1 字节指令 ~ 7 字节指令
微机原理及应用
8088/8086 CPU 通用指令格式
B0 —— 前缀操作码字节(扩展)
确定操作数存放在 DS、ES、SS、CS 段中
B1、B2 —— 可变操作码段字节
B1字节 —— 基本操作码定义(必要条件) B2字节 —— 寻址方式定义(充分条件)
AX为目的寄存器操作数(总指向目的操作数)
•
B2 = C8H = 11000001B
MOD = 11
REG = 000
R/M = 001
目的寄存器操作数 AX 的编码
源寄存器操作数 CX 的编码
微机原理及应用
寄存器寻址方式机器码分析
• MOV CX,AX 的机器码为 8BH、C8H
MOV AX,CX 的机器码为 8BH、C1H • D 必为1,即指向目的寄存器操作数 • 源、目的寄存器交换位置后 机器码 B1字节不变,B2字节变
指令中有源操作数且有目的操作数出现
微机原理及应用
指令的基本格式
计算机中的指令集 复杂指令集 —— CISC (Complex Instruction Set Computer)
指令较复杂,每条指令字节长度不一致及指令种 类多,以Intel公司为代表的CPU,例如8086CPU芯片
精简指令集 —— RISC (Reduced Instruction Set Computer)
操作数隐含在操作码中 操作数本身在代码段中 操作数在寄存器中寻找 操作数在数据段中寻找
微机原理及应用
指令的基本格式
指令中的操作数
无操作数指令
指令中操作数隐含
例:XLAT 例:PUSH AX 例:MOV AX,BX
单操作数指令 双操作数指令
指令中仅有源操作数或者目的操作数出现
B3、B4、B5、B6 —— 可变操作数段字节
操作数或操作数存放的直接地址定义 字节操作数或字操作数的类型定义
微机原理及应用
8088/8086 CPU 通用指令格式
B1字节的位定义(基本操作码定义)
b2 ~ b7 (OP)—— 64 种基本的操作码定义
b1 (D) —— 寄存操作数的位置定义
微机原理及应用
指令助记符 ADD [ BX+20H ],AH 指令机器码 00H、67H、20H 分析
• B1 = 00H = 00000000B OP = 000000 D=0 ADD 基本操作码码头 AH为源寄存器操作数 AH在B2中为REG编码 [BX+20H]在B2中为R/M 编码 W=0 • MOD = 01 REG = 100 R/M = 111 • B3 = 20H AH为字节操作数 存储器寻址方式编码 源寄存器操作数 AH 的编码 目的存储器操作数 [BX+D8] 的编码 存储器相对寻址中的 D8 值 B2 = 67H = 01100111B
其它寻址方式
固定寻址、相对寻址、I/O端口寻址
微机原理及应用
8088/8086 CPU 的寻址方式
寄存器寻址方式
定义:操作数隐含在寄存器中 指 令: PUSH AX 机器码: 50H(一字节操作码) 功 能:(AX) → [ SS:SP ]
指 令: MOV AX,BX 机器码: 8BH、C3H (二字节操作码) 功 能:(AX) ← (BX)
微机原理及应用
8088/8086 CPU 指令系统 主要内容
指令的基本格式
8088/8086CPU 的寻址方式
8088/ 8086CPU 指令系统
中断指令和 DOS 功能调用
微机原理及应用
指令的基本格式
人类语言的共同点
语言
中文: 我是学生
英文: I am student
语法
主体 —— 动作
指令较简单,每条指令字节长度一致及指令种 类少,以 IBM 公司为代表的 CPU ,例如 POWER PC 芯片
微机原理及应用
8088/8086 CPU 通用指令格式