微机原理指令系统_第1页
微机原理指令系统_第2页
微机原理指令系统_第3页
微机原理指令系统_第4页
微机原理指令系统_第5页
已阅读5页,还剩42页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 第二章指令系统2本章主要内容本章主要内容l 寻址方式寻址方式l 8086/8088指令系统指令系统学习网站:学习网站:http:/ 例如:例如: ADD AX, 1000Hl机器指令:指令的二进制代码形式机器指令:指令的二进制代码形式 例如:例如: 05 00 10l指令系统:指令系统:CPU所有指令及其使用规则的集合所有指令及其使用规则的集合4指令的基本构成指令的基本构成操作码操作码操作数操作数说明要执行的是说明要执行的是什么操作什么操作操作的对象操作的对象(可以有可以有0个、个、1个或个或2个个)示例:示例:ADD AX, 1000H对应机器指令:对应机器指令:05 00 1005为操

2、作码,表示要执行为操作码,表示要执行“与累加器相加与累加器相加”操作,操作,00 10为操作数,是低位开始存放的操作数为操作数,是低位开始存放的操作数1000H5示例示例l 借助系统自带的借助系统自带的debug工具,明确机器码的概念工具,明确机器码的概念6寻址方式寻址方式指令由指令由操作码操作码和和操作数操作数构成。构成。操作码操作码在指令中已经显式给出;在指令中已经显式给出;如何寻找如何寻找操作数操作数?寻址方式寻址方式 寻址方式寻址方式是是CPU指令中规定的寻找操作数所在指令中规定的寻找操作数所在地址的方式。地址的方式。7逻辑地址(回顾)逻辑地址(回顾)l程序设计时,使用的是逻辑地址。逻

3、辑地址程序设计时,使用的是逻辑地址。逻辑地址由由“段基址段基址”和和“偏移量偏移量”构成(均为构成(均为16位)。位)。l表示方法:表示方法:段基址:偏移量段基址:偏移量 “段基址段基址”由段寄存器由段寄存器CS、DS、SS和和ES提提供供 “偏移量偏移量”由由BX、BP、IP、SP、SI、DI或或根据寻址方式计算出的有效地址根据寻址方式计算出的有效地址EA(Effective Address)提供提供8由逻辑地址获得物理地址的计算公式(由逻辑地址获得物理地址的计算公式(回顾回顾) 物理地址段基址物理地址段基址10H偏移量偏移量15 03 019 015 00000段基址段基址偏移量偏移量物理

4、地址物理地址逻辑地址逻辑地址物理地址物理地址9寻址方式的种类寻址方式的种类1、立即寻址(、立即寻址(Immediate Addressing)MOV AL, 100; MOV CX, 2000H; 2、寄存器寻址(、寄存器寻址(Register Addressing)MOV DS, AX; MOVCX,BX;MOVSI,DX3、直接寻址(、直接寻址(Direct Addressing) MOV AX,2000H ; MOV AL,BUFFER;4、寄存器间接寻址、寄存器间接寻址 (Register Indirect Addressing)MOV AX,SI; MOV BL,DI; MOV CH

5、,BX; MOV DX,BP10寻址方式的种类寻址方式的种类5、变址寻址(、变址寻址(Indexed Addressing)SI、DI索引源变址寄存器索引源变址寄存器SI 目标变址寄存器目标变址寄存器DI EA=SI/DI+位移量位移量 MOV AX,SI+6;MOV DL,TABLESI6、基址寻址(、基址寻址(Based Addressing) BX、BPMOV AL,BX+100;MOV DX,TABLEBP 基址寻址与变址寻址类似,不同之处在基址寻址与变址寻址类似,不同之处在于于: 变址寻址中的寄存器是变址寻址中的寄存器是 SI、DI 基址寻址中的寄存器是基址寻址中的寄存器是BX、BP

6、11寻址方式的种类寻址方式的种类7、基址、基址-变址寻址(变址寻址(Based Indexed Addressing)EA=BX/BP+SI/DI+COUNTMOV AL,COUNT BXSIMOV DX,BP+DI+COUNT下面,进行这几种寻址方式的动画演示下面,进行这几种寻址方式的动画演示12立即寻址立即寻址MOV AX, 0102HAXAHAL高地址高地址低地址低地址存储器存储器操作码操作码MOV AX, 0102H0102B8立即数立即数立即数立即数010213寄存器寻址寄存器寻址MOV AX,AXAHALBXBHBLMOV AX,BXBX121234123414寄存器间接寻址寄存器

7、间接寻址 MOV AX, AX AH AL16921H 操作码操作码 高地址高地址 低地址低地址 2000H BXBX9078078BDS 1492H016920H物理地址物理地址 操作数操作数 9078DS=1492H 15变址寻址变址寻址 & 基址寻址基址寻址MOV AX, 存储器存储器高地址高地址16927H16926H7890低地址低地址 8B44 操作码操作码AX AH AL2000H SIDS 1492H016926H物理地址物理地址 SI+06H操作数操作数 9078060006H0616基址基址-变址寻址变址寻址MOV AX, BXSI+06H1000H BX1000H

8、 SIDS 1492H016926H物理地址物理地址 高地址高地址 9078064116927H 操作码操作码 低地址低地址 操作数操作数 90788B0006H06 AH ALAX178086/8088CPU的功能框图的功能框图(回顾回顾)AH ALBH BLCH CLDH DLSPBPDISI通通 用用 寄寄 存存 器器AXBXCXDXALU数据总线(数据总线(16位)位)运算寄存器运算寄存器ALU标志寄存器标志寄存器EU 控控制系统制系统执行单元执行单元EUCSDSSSESIP内部暂存器内部暂存器1 2 3 4 5 6数据总线数据总线8088:8位位8086:16位位总线总线 控控制逻辑

9、制逻辑地址总线地址总线20位位指令队列指令队列80888086Q总线总线(8位)位)指令指针指令指针段寄存器段寄存器总线接口总线接口单元单元BIU外部外部总线总线18寄存器(回顾)寄存器(回顾)AHSIALBHBLCHCLDH DLDIBPSPDSESSSCSIPFLAGSAX,累加器累加器AccumulatorBX,基址寄存器基址寄存器BaseCX,计数寄存器计数寄存器CountDX,数据寄存器数据寄存器Data源变址寄存器源变址寄存器Source Index目的变址寄存器目的变址寄存器Destination Index基址指针寄存器基址指针寄存器Base Point堆栈指针寄存器堆栈指针寄

10、存器Stack Point数据段寄存器数据段寄存器Data Segment附加段寄存器附加段寄存器Extra Segment堆栈段寄存器堆栈段寄存器Stack Segment代码段寄存器代码段寄存器Code Segment指令指针寄存器指令指针寄存器Instruction Pointer状态标志寄存器状态标志寄存器数据数据寄存器寄存器变址变址寄存器寄存器指针指针寄存器寄存器通用寄存器通用寄存器段寄存器段寄存器控制寄存器控制寄存器19指令系统的分类指令系统的分类类型类型说明说明举例举例数据传送数据传送通用通用/ IO 目标地址传送目标地址传送/标志传送标志传送 MOV、OUT LEA 、PUSH

11、F算术运算算术运算整型数据处理整型数据处理ADD、 MUL 逻辑指令逻辑指令逻辑数据处理逻辑数据处理AND、 SHL串处理串处理字符型数据处理字符型数据处理MOVS、REP控制转移控制转移程序流控制处理程序流控制处理JMP、LOOP CALL、 INT处理器控制处理器控制系统控制管理系统控制管理CLS、 HLT20指令中操作数的表示指令中操作数的表示符号符号表示内容表示内容I立即数操作数立即数操作数R通用寄存器通用寄存器操作数操作数8位位 AH、AL、BH、BL、CH、CL、DH、DL16位位 AX,BX,CX,DX,BP,SP,SI,DISR段寄存器段寄存器 CS、DS、SS、ESM或或 存

12、储器操作数存储器操作数src源操作数源操作数dst目的操作数目的操作数()()注释时表示寄存器、存储器、端口的内容注释时表示寄存器、存储器、端口的内容oprd1 oprd2两操作数两操作数21书写指令注意事项书写指令注意事项l 不区分字母的大小写不区分字母的大小写下列写法表示同一条指令:下列写法表示同一条指令:MOV AX, 1ABDH mov ax, 1abdhl 不添加指令系统没有的指令不添加指令系统没有的指令将将 MOV AL , 0 写成写成MOVE AL,0 JMP Label 写成写成JUMP Labell 注意操作数的范围注意操作数的范围对字节操作指令对字节操作指令 0 FFH

13、0 255 对字操作指令对字操作指令 0 FFFFH 0 65535 22书写指令注意事项书写指令注意事项l 对无操作数指令,不添加操作数对无操作数指令,不添加操作数STC AL l 对单操作数指令,操作数不能是立即数对单操作数指令,操作数不能是立即数IMUL 6 l 对双操作数指令对双操作数指令 不能两个同为存储器操作数不能两个同为存储器操作数MOV DI , SI 目的操作数不能是立即数目的操作数不能是立即数ADD 3 , AL 两个操作数的类型应相同两个操作数的类型应相同SUB AX , BL 若若 value 定义为字类型存储器变量:定义为字类型存储器变量: MOV CL, value

14、 23书写指令注意事项书写指令注意事项l 内存操作数的属性应明确内存操作数的属性应明确MOV BX ,0MOV byte ptr BX , 0MOV word ptr BX , 0MOV BX , ALMOV BX , AX24书写指令注意事项书写指令注意事项l A、B、C、D、E、F开头的十六进制数前面加开头的十六进制数前面加0,与与H结尾的标识符区别结尾的标识符区别如如 寄存器名:寄存器名: AH、BH、CH、 DH 变量名变量名 : abcdH 等等例例:mov AL, 0AHmov AL, AH mov BX, 0abcdH上面,上面,0AH是立即数,是立即数,AH是寄存器。是寄存器。

15、25数据传送数据传送地址总线地址总线 AB存存储储器器I/O接接口口输输入入设设备备I/O接接口口数据总线数据总线 DB控制总线控制总线 CB输输出出设设备备CPU寄存器,存储器,寄存器,存储器,I/O端口端口26数据传送数据传送按传送内容,可分为四类:按传送内容,可分为四类:1.通用数据传送通用数据传送 MOV PUSH POP XCHG2.累加器专用传送累加器专用传送 IN OUT XLAT 3.地址传送地址传送 LEA LDS LES4.标志传送标志传送 PUSHF POPF LAHF SAHF 特点:特点:1. 除除POPF、SAHF外,其他传送指令对标志位均无影响外,其他传送指令对标

16、志位均无影响2. 唯一允许以唯一允许以段寄存器段寄存器做操作数的指令种类;做操作数的指令种类; 且只有且只有MOV、PUSH、POP这三条允许这三条允许27通用数据传送通用数据传送(GP transfer)MOV BYTE/WORD数据传送;可以使用各种寻址方式;数据传送;可以使用各种寻址方式; MOV DST,SRC 执行:执行:(dst) (src) MOV AX,80A0H ; (BX,SI,3000)允许:允许:RR/M,I(立即数)(立即数)R/M;R/MSR(段寄存器)(段寄存器)禁止:禁止:MM;ISR;SRSR28举例举例 R/M/SR R 通用寄存器通用寄存器/存储器存储器/

17、段寄存器段寄存器通用寄存器通用寄存器MOV AL , BL MOV BX , AL MOV DS , AX R/SR M 通用寄存器通用寄存器/段寄存器段寄存器 存储器存储器MOV AL , BX MOV DS , BX+SI R/M SR 通用寄存器通用寄存器/存储器存储器 段寄存器段寄存器MOV BX , CS MOV BX , DS R/M I 通用寄存器通用寄存器/存储器存储器 立即数立即数MOV Al , 9MOV BX , OFFSET bufferMOV BYTE PTR value , 0 MOV WORD PTR BX , 129例题例题l 例:编程将例:编程将CL寄存器的内

18、容传送到寄存器的内容传送到200:100H单元中单元中 MOV AX, 200H MOV DS , AX ; (DS) = 200H MOV 100H , CL ;(02100H) = (CL)编程编程1: MOV AX, 200H MOV DS , AX ; (DS) = 200H MOV DI , 100H ; (DI) = 100H MOV DI , CL ;(02100H) = (CL)编程编程2: MOV 200:100H , CL30通用数据传送通用数据传送(GP transfer)堆栈操作指令堆栈操作指令PUSH (Push word onto stack)POP(Pop wor

19、d off stack)l 什么是堆栈,为什么需要堆栈什么是堆栈,为什么需要堆栈?堆栈是按照堆栈是按照先进后出先进后出原则组织的一段内存区域原则组织的一段内存区域, 通常用于存放一些重要数据通常用于存放一些重要数据,如:如:程序的地址、或是需要恢复的数据程序的地址、或是需要恢复的数据。l 为方便数据的存放和恢复为方便数据的存放和恢复, 设置专门的指针,指向堆栈中要操作的单元设置专门的指针,指向堆栈中要操作的单元。 段值由段值由 SS 给出,偏移地址由给出,偏移地址由 SP 给出给出 SS 堆栈段寄存器堆栈段寄存器 (stack segment) SP 堆栈指针寄存器堆栈指针寄存器 (stack

20、 point)SS:SP 31通用数据传送通用数据传送(GP transfer)PUSH SRC (SP)(SP)- 2;(SP)+1,(SP)(SRC);POP DST (DST)(SP)+1,(SP); (SP)(SP)+2;SRC/DST 可以为可以为 R/M/SR (但(但DST不可为不可为CS)SP只能为偶数只能为偶数!l 用途用途 临时保存数据(临时保存数据(INT断点断点/CALL返回地址返回地址/数据)数据)传递信息(函数传递信息(函数/子程序)子程序)32通用数据传送通用数据传送(GP transfer)特点与规则特点与规则l 操作操作 按字(按字(2字节)进行字节)进行 l

21、 PUSH指令指令 从高地址从高地址低地址增长低地址增长, POP相反相反l 操作规则操作规则 FILO (First-In-Last-Out)l SP 为当前栈顶指针(为当前栈顶指针(EA)使用过程使用过程 / 关键关键1. 堆栈平衡,防止溢出堆栈平衡,防止溢出2. PUSH、POP配对使用配对使用33示例示例 - PUSH AXl 存放存放CPU寄存器或存储器中暂时不使用的数据寄存器或存储器中暂时不使用的数据,使用数据使用数据时将其弹出:时将其弹出: PUSH AX; 将将(AX)入栈入栈(AX)(AX) 低地址低地址. 高地址高地址.11112222(SP)-2(SP)-2(SP)-1(

22、SP)-1(SP)(SP)堆堆栈栈段段PUSH AXPUSH AX前前 低地址低地址.22H22H11H11H 高地址高地址.11H11H22H22H(SP)(SP)(SP)+1(SP)+1(SP)+2(SP)+2堆堆栈栈段段PUSH AXPUSH AX后后34示例示例 PUSH AX若执行前:若执行前: (SS)= 2000H(SP)= 1002H(SS:SP)= 2010H (AX)= 1234H10低低高高20地址地址SS:SP2000:1002指令执行前指令执行前则执行则执行PUSH AX后:后: (SS)= 2000H(SP)= 1000H(SS:SP)= 1234H(AX)= 12

23、34H123410低低高高20地址地址指令执行后指令执行后不变不变 减减2 2 变变不变不变 SS:SP2000:100035示例示例 POP BXl 使用数据时将其弹出:使用数据时将其弹出:POP BX 低地址低地址.22H22H11H11H 高地址高地址.33H33H44H44HBXBX(SP)(SP)(SP)+1(SP)+1(SP)+2(SP)+2堆堆栈栈段段POP BXPOP BX前前 低地址低地址.22H22H11H11H 高地址高地址.11H11H22H22HBXBX(SP)-2(SP)-2(SP)-1(SP)-1(SP)(SP)堆堆栈栈段段POP BXPOP BX后后36示例示例

24、 POP BX若执行前:若执行前: (SS)= 2000H(SP)= 1000H(SS:SP)= 1234H (BX)= 5678H则执行则执行POP BX后:后: (SS)= 2000H(SP)= 1002H (SS:SP)= 2010H (BX)= 1234H 不变不变 加加2 变变 变变 123410低低高高20地址地址指令执行前指令执行前SS:SP2000:100010低低高高20地址地址SS:SP2000:1002指令执行后指令执行后(BX)= 5678H1234(BX)= 1234H37q 调用子程序(或过程)或发生中断时要保护断点的地址,调用子程序(或过程)或发生中断时要保护断点

25、的地址, 子程序或中断返回时恢复断点。子程序或中断返回时恢复断点。子程序嵌套子程序嵌套断点地址压入和弹出情况断点地址压入和弹出情况主主程程序序子子程程序序1 1子子程程序序2 2断点1断点1断点2断点2弹出弹出断点2断点2弹出弹出断点1断点1程序嵌套调用程序嵌套调用 低地址低地址.断点断点2(L)2(L)断点断点2(H)2(H)断点断点1(L)1(L)断点断点1(H)1(H) 高地址高地址.(SP)(SP)先先压压入入后后压压入入先先弹弹出出后后弹弹出出堆堆栈栈段段38通用数据传送通用数据传送(GP transfer)XCHG dest,src ; (dest) (src)交换操作数。交换操作

26、数。可可进行进行字或字节操作字或字节操作,不影响标志位。不影响标志位。 支持支持RR/M; 禁止禁止MM例例:XCHG AL, AH XCHG AX, BX l 例例 XCHG AX, BX 字操作字操作 执行前(执行前(AX)= 1122H , (BX)= 3344H 执行后(执行后(AX)= 3344H , (BX)= 1122H l 例例 XCHG AH, BL 字节操作字节操作 执行前(执行前(AX)= 1122H , (BX)= 3344H 执行后(执行后(AX)= 4422H , (BX)= 3311H39通用数据传送通用数据传送(GP transfer)XLAT字节转换指令(换码

27、指令)字节转换指令(换码指令)该指令不影响标志位该指令不影响标志位l 语句格式:语句格式:XLAT src_tablel 功能:将(功能:将(BX)为首址()为首址(AL)为位移量的字节存储单元)为位移量的字节存储单元中的数据送中的数据送AL寄存器。即(寄存器。即(BX+AL)AL。运行前运行前BX须赋值,例须赋值,例:MOV BX, OFFSET src_table ; (BX) 表首址表首址MOV AL, SEG src_table ;(AL) 序号序号XLAT src_table ;查表转换查表转换 (详见书详见书P69 例例2.4)40I/O端口端口(Port)传送指令传送指令输入输出

28、指令共两种:输入输出指令共两种:IN (Input byte or word)OUT (Output byte or word) 输入指令用于输入指令用于CPU从外设端口接受数据,从外设端口接受数据, 输出指令用于输出指令用于CPU向外设端口发送数据。向外设端口发送数据。l 无论接受还是发送数据,必须通过累加器无论接受还是发送数据,必须通过累加器AX(字字)或或AL(字节字节)使用使用AX,则输入,则输入(输出输出)字字;使用;使用AL,则输入,则输入(输出输出)字节字节。l 输入、输出指令不影响标志位。输入、输出指令不影响标志位。l 当端口地址为当端口地址为16位二进制数时,外部设备最多有位

29、二进制数时,外部设备最多有65536个个I/O端口,由端口,由A0A15译码形成。译码形成。41I/O端口端口(Port)传送指令传送指令l 每个外设要占几个端口:数据口,状态口和控制口每个外设要占几个端口:数据口,状态口和控制口;信息交换要通过端口。信息交换要通过端口。端口是端口是CPU和外设的桥梁。和外设的桥梁。CPUIO接口接口I/O设备设备译译码码数据端口数据端口状态端口状态端口控制端口控制端口总线总线42I/O端口端口(Port)传送指令传送指令访问方式访问方式l 直接:直接:端口号中前端口号中前256个端口(个端口(0FFH),可以直接写在指令中,端),可以直接写在指令中,端口号代替指令中的口号代替指令中的PORTINAL/AX, portNo;8位立即数位立即数portNo:025

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论