微型计算机原理与汇编语言程序设计教学课件 第4章 指令系统

上传人:w****i 文档编号:94557491 上传时间:2019-08-08 格式:PPT 页数:134 大小:579.50KB
返回 下载 相关 举报
微型计算机原理与汇编语言程序设计教学课件 第4章 指令系统_第1页
第1页 / 共134页
微型计算机原理与汇编语言程序设计教学课件 第4章 指令系统_第2页
第2页 / 共134页
微型计算机原理与汇编语言程序设计教学课件 第4章 指令系统_第3页
第3页 / 共134页
微型计算机原理与汇编语言程序设计教学课件 第4章 指令系统_第4页
第4页 / 共134页
微型计算机原理与汇编语言程序设计教学课件 第4章 指令系统_第5页
第5页 / 共134页
点击查看更多>>
资源描述

《微型计算机原理与汇编语言程序设计教学课件 第4章 指令系统》由会员分享,可在线阅读,更多相关《微型计算机原理与汇编语言程序设计教学课件 第4章 指令系统(134页珍藏版)》请在金锄头文库上搜索。

1、第4章 8086指令系统 本章主要教学内容 1、8086指令的基本格式 2、8086指令系统的寻址方式 3、8086指令的应用 本章教学目的 使学生掌握指令的寻址方式过程,掌握指令的应用。 教学重点:指令系统的寻址方式和指令的应用 教学难点:指令的寻址方式,第4章 8086指令系统,4.1 指令的基本概念和基本格式 4.2 指令的寻址方式 4.3 8086指令系统 4.4 中断调用类指令,开 始,4.1 指令的基本概念和指令格式,机器指令:指挥计算机完成某种操作的命令。 从计算机组成的层次结构来说,计算机指令有机器指令、伪指令和宏指令之分。 指令格式如下: 操作符 OPD, OPS OPD:目

2、的操作数 OPS:源操作数,4.2 指令寻址方式,4.2.1 寻址方式的基本概念 4.2.2 与数据有关的寻址方式 4.2.3 I/O端口寻址方式,返回本章首页,4.2.1 寻址、寻址方式的概念,指令中操作数字段实质上是指出操作数存放于何处。一般来说,操作数可以跟随在指令操作码之后,称为立即数;操作数也可以存放在CPU内部的寄存器中,称为寄存器操作数。绝大多数的操作数存放在内存储器中,称为存储器操作数。指令指定操作数的位置,即给出地址信息,在执行时需要根据这个地址信息找到需要的操作数。这种寻找操作数的过程称为寻址,而寻找操作数的方法称为寻址方式。,4.2.2 与数据有关的寻址方式,1. 立即寻

3、址 立即寻址方式中,指令操作码和操作数都在存储器代码段中。 汇编格式:n(n为立即操作数,是用8位或16位二进制补码表示的有符号数) 功能:操作数存放在 存储器,指令下一单元的 内容为立即操作数n。 图形表示如右:,【例4.1】,【例2.5】MOV AX, 10 执行后(AX)=? 该例中源操作数为立即寻址方式,立即数为10,存放在指令的下一单元。 图形表示: 执行:10AX 执行后:(AX)=000AH,返回本节,2. 寄存器寻址,寄存器寻址方式的操作数在指令指明的寄存器中。 汇编格式:R 其中R表示寄存器名。 功能:操作数直接存放在寄存器R中。 图形表示: R 指令操作数,【例4.2】,下

4、列程序执行后,(AX)=?,(BX)=? MOV AX,1234H MOV BX,5678H ADD AX,BX 该程序中MOV指令为数据传送指令操作符,ADD指令为加法指令操作符,三条指令皆为双操作数指令。第一、二条指令AX、BX皆为目的操作数地址,为寄存器寻址方式。第三条指令中,AX为目的操作数地址,BX为源操作数地址。源地址和目的地址皆为寄存器寻址方式。,图形表示: 执行:1234HAX 5678HBX (AX)+(BX)AX 执行后:(AX)=68ACH,(BX)=5678H,返回本节,3. 存储器寻址,如果操作码所需操作数存放在内存储器中,则指令中需要给出操作数的地址信息。为了提高程

5、序的灵活性,8086指令系统提供了多种存储器寻址方式 (1)直接寻址 (2)寄存器间接寻址 (3)寄存器相对寻址 (4)基址变址寻址 (5)关于段跨跃前缀,(1) 直接寻址,汇编格式:含有变量的地址表达式。 段寄存器名:EA 。 功能:指令下一字单元的内容是操作数的偏移地址EA。 图形表示:,【例4.3】,【例4.3】寄存器和存储器内容为:(AX)=1212H,BUF为数据段定义的变量,其偏移地址是2000H,(DS)=3000H,(32000H)=4545H。 执行指令:MOV AX ,BUF 执行后:(AX)=? 图形表示: 执行:(32000H)AX 执行后:(AX)=4545H,返回本

6、节,(2) 寄存器间接寻址,寄存器间接寻址方式中,寄存器的内容为操作数的偏移地址EA,操作数在存储器中。 汇编格式:R 功能:操作数存放在存储器,寄存器R存放操作数的偏移地址EA。,寄存器间接寻址示意图:,例如:MOV AX,BX 若(DS)2000H,(BX)1000H,物理地址20000H1000H21000H。指令执行前,(AX)2030H,(21000H)0A0H,(21001H)50H,指令执行后,(AX)50A0H,(21000H)0A0H,(21001H)50H。指令执行情况如下:,偏移地址EA计算方法如下:,EA=,SI SI作间址寄存器。 DI DI作间址寄存器。 BX BX

7、作间址寄存器。 BP BP作间址寄存器。,执行指令:MOV AX ,BP 执行后:(AX)=?,(BP)=?,(SS)=?,(20030H)=? 图形表示如下:,【例4.4】寄存器和存储器内容分别为:(AX)=0,(BP)=0030H,(SS)=2000H,(20030H)=1234H,返回本节,(3) 寄存器相对寻址,寄存器相对寻址方式是在指令中给定一个基址寄存器(或变址寄存器)名和一个8位或16位的相对偏移量,两者之和作为操作数的有效地址。对BX、SI、DI这三个间址寄存器,指示的是数据段中的数据,而用BP作间址寄存器,则指示的是堆栈段中的数据。 汇编格式:XR(X表示位移量,是8位或16

8、位二进制补码表示的有符号数)。 功能:操作数存放在存储器,寄存器R的内容加位移量X为操作数的偏移地址EA。,偏移地址EA计算方法如下:,【例4.5】,设执行前: (AX)=0040H,(BX)=0030H,(DS)=2000H,(20036H)=0050H 执行指令:ADD 6BX,AX 执行后:(AX)=?,(BX)=?,(DS)=?,(20036H)=? 图形表示如下:,执行:(20036H)+(AX) 20036H 执行后:(AX)=0040H,(BX)=0030H,(DS)=2000H,(20036H)=0090H。,返回本节,(4) 基址变址寻址,基址变址寻址方式是在指令中给出一个基

9、址寄存器名和一个变址寄存器名,两者内容之和作为操作数的有效地址。基址寄存器为BX或BP,变址寄存器为SI或DI,但指令中不能同时出现两个基址寄存器或两个变址寄存器。如果基址寄存器为BX,则段寄存器使用DS;如果基址寄存器用BP,则段寄存器用SS。 汇编格式: BR+IR 功能:操作数存放在存储器,BR的内容加IR的内容加位移量X是操作数的偏移地址EA。,操作数偏移地址EA计算方法如下,返回本节,【例4.6】,例如 MOV AL,BXSI(MOV AL,BXSI) 若指令执行前,(DS)1000H,(BX)0010H,(SI)0002H,(10012H)45H 则EA(BX)(SI)0012H,

10、PA(DS)10HEA10012H 指令执行后(AL)45H。,返回本节,(5) 跨段问题,按前述规定:若选用BP作间址基址寄存器、变址寄存器或基址寄存器,则操作数在堆栈段,操作数的物理地址PA由堆栈段寄存器SS的内容左移4位与偏移地址EA相加后形成;否则,操作数在数据段,操作数的物理地址PA由数据段寄存器DS的内容左移4位与偏移EA相加后形成。该规定为系统默认状态。当要否定默认状态,到非约定段寻找操作数时,必须用跨段前缀指明操作数的段寄存器名。 汇编格式:段寄存器名:操作数地址。 功能:段寄存器名指明操作数属哪个段。,【例4.7】跨段前缀示例。,MOV AX,DS:BP MOV CX,SS:

11、SI 该例中,DS:,SS:均为跨段前缀,此时默认状态无效,操作数的物理地址PA由段寄存器内容左移4位加偏移EA形成。上述2条指令的源操作数物理地址分别为: PA1 =(DS)左移4位+BP PA2 =(SS)左移4位+SI,返回本节,4.2.3 I/O端口寻址方式,8086CPU采用独立编址的I/O端口,可以最多访问64K个字节端口或32K个字端口,用专门的IN指令和OUT指令访问。I/O端口寻址只用于这两种指令中。寻址方式有如下两种。 1. 直接端口寻址 在指令中直接给出端口地址,端口地址一般采用2位十六进制数,也可以用符号表示,这种寻址方式为直接端口寻址。因此,直接端口寻址可访问的端口数

12、为0255个。 例如:IN AL,25H 2. 寄存器间接端口寻址 如果访问的端口地址值大于255,则必须用I/O端口的间接寻址方式。所谓间接寻址,是指把I/O端口的地址先送到DX中,用DX作间接寻址寄存器,而且只能用DX寄存器。 例如:MOV DX,378H OUT DX,AL,4.3 8086指令系统,包括数据传送类指令、算术运算类指令、位操作类指令、串操作类指令、控制转移类指令、处理机控制类指令。后几节将分别介绍这些指令的语句格式和功能。 4.3.1 数据传送类指令 4.3.2 算术运算类指令 4.3.3 逻辑运算与移位类指令 4.3.4 串操作类指令 4.3.5 控制转移类指令,4.3

13、.1 数据传送类指令,1 通用数据传送指令 2 累加器专用传送指令 3 地址传送指令 4 标志寄存器传送指令,返回本章首页,1 通用数据传送指令,(1)传送指令MOV (2)堆栈指令PUSHPOP (3)数据交换指令XCHG,(1)传送指令MOV 语句格式:MOV OPD,OPS 功能:将源操作数传送入目的地址,源地址内容不变。即(OPS)OPD。 下图4.1描述了MOV指令在传送数据时允许传送的路径及类型。,图4.1 MOV指令所允许的数据传送路径及类型,MOV指令的形式有如下几种:,1)从通用寄存器到通用寄存器 MOV reg1,reg2 2)立即数传送到通用寄存器 MOV reg ,da

14、ta 3)通用寄存器和存储单元之间 MOV mem (reg),reg (mem) 4)立即数传送到存储单元 MOV mem, data 5)段寄存器与通用寄存器间的数据传送 MOV seg,reg 或 MOV reg, seg 6)段寄存器与存储单元间的数据传送 MOV seg,mem 或 MOV mem, seg,【例4.8】存储器与寄存器间数据传送。,MOV AX,BUF ;BUF是变量,源操作数为直接寻址 MOV BH,DI ;源操作数为寄存器间接寻址 MOV DI,ES:3SI ;源操作数为变址寻址,使用跨段前缀 MOV BP,3BX+SI ;源操作数为基址加变址寻址 MOV BUF

15、A,DL ;BUFA是一字节变量 MOV BP,AX ;使用SS段寄存器 MOV DS:BP,DL ;使用跨段前缀 MOV BUF,DS ;BUF是个字变量 MOV ES ,BUF,2数据交换指令XCHG,语句格式:XCHG OPD,OPS 功能:将源地址与目的地址中的内容互换。即(OPD)OPS,(OPS)OPD。 【例4.9】寄存器与存储器之间数据交换。 MOV AX,5678H ;(AX)=5678H MOV BX,0FFFFH ;(BX)=0FFFFH XCHG AX,BX ;(AX)=0FFFFH ,( BX)=5678H,(2) 堆栈操作指令,1)进栈指令PUSH 2)出栈指令PO

16、P,1)进栈指令PUSH,语句格式: PUSH OPS 功能:将寄存器、段寄存器或存储器中的一个字数据压入堆栈,堆栈指针减2。 即:(SP)SP(OPS)158SP (SP)SP (OPS)70SP,2)出栈指令POP,语句格式: POP OPD 功能: 将栈顶元素弹出送至某一寄存器、段寄存器(除CS外)或存储器,堆栈指针加2。 从POP指令功能可看出,该指令为PUSH指令的逆过程。 即:(SP)(OPD)70 (SP)+SP (SP)(OPD)158 (SP)+SP,返回本节,2.累加器专用传送指令,(1)输入/输出指令 (2)XLAT查表指令,1)输入指令IN,输入指令用来从指定的外设寄存器取信息送入累加器。它有四种形式

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号