北理工自动化复试微机原理-第五章第二部分

上传人:今*** 文档编号:107499997 上传时间:2019-10-19 格式:PPT 页数:215 大小:1.15MB
返回 下载 相关 举报
北理工自动化复试微机原理-第五章第二部分_第1页
第1页 / 共215页
北理工自动化复试微机原理-第五章第二部分_第2页
第2页 / 共215页
北理工自动化复试微机原理-第五章第二部分_第3页
第3页 / 共215页
北理工自动化复试微机原理-第五章第二部分_第4页
第4页 / 共215页
北理工自动化复试微机原理-第五章第二部分_第5页
第5页 / 共215页
点击查看更多>>
资源描述

《北理工自动化复试微机原理-第五章第二部分》由会员分享,可在线阅读,更多相关《北理工自动化复试微机原理-第五章第二部分(215页珍藏版)》请在金锄头文库上搜索。

1、8086和8088的指令系统,传送类指令 数据操作类指令 串操作指令 控制类指令,本章要求,编程与程序调试,传 送 类 指 令,传送类指令是指令系统中最活跃的一类指令,也是条数最多的一类指令,主要用于数据的保存及交换等场合。这类指令分为以下四种: 通用数据传送指令 目标地址传送指令 标志位传送指令 输入输出数据传送指令 小结,返 回,通用数据传送指令,通用数据传送指令主要由以下几部分组成: 最基本的传送指令 堆栈操作指令 数据交换指令 查表换码指令,返 回,特点: 该类指令的执行对标志位不产生影响,最基本的传送指令,指令格式:MOV 目的操作数,源操作数 指令功能:实现CPU内部寄存器之间的数

2、据传送、寄存器和内存之间的数据传送,以及把一个立即数送给CPU的内部寄存器或者内存单元。,示 例,返 回,MOV指令示例,MOV ES, DX ; DX中16位数据送ES MOV AX, BX ; BX和BX+1所指的两个内存单元的内容送AX MOV DI, AX ; 累加器的内容送DI和DI+1所指的两个单元 MOV CX, 1000H ; 将1000H和1001H两单元的内容送CX MOV DX, 5040H ; 立即数5040H送DX MOV WORD PTRSI, 6070H ; 立即数6070送SI和SI+1所指 的两个单元; 这里的PTR是一个汇编操作符,与前 面的 WORD一起,

3、意思是从SI地址中取一个字; 而不是一个字节,一般数据传送指令,注意: 两操作数字长必须相同 两操作数不允许同时为存储器操作数 两操作数不允许同时为段寄存器 在源操作数是立即数时,目标操作数不能是段寄存器 IP和CS不作为目标操作数,FLAGS一般也不作为操作数在指令中出现,一般数据传送指令应用例,将(*) 的ASCII码2AH送入内存1000H开始的100个 单元中: MOV DI,1000H MOV CX,64H MOV AL,2AH AGAIN:MOV DI,AL INC DI ;DI+1 DEC CX ;CX-1 JNZ AGAIN ;CX0则继续 HLT,上段程序在代码段中的存放形式

4、,设CS=109EH,IP=0100H,则各条指令存放地址 如下: CS : IP 109E:0100 MOV DI,1000H 109E:0103 MOV CX,64H 109E:0106 MOV AL,2AH 109E:0108 MOV DI,AL 109E:010A INC DI 109E:010B DEC CX 109E:010C JNZ 0108 109E:010E HLT,数据段中的分布,送上2AH后数据段中相应存储单元的内容改变如下: DS:1000 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A DS:1010 2A 2A 2A

5、2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A DS:1020 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A DS:1030 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A DS:1040 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A DS:1050 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A DS:1060 2A 2A 2A 2A 00 00 00 00 00 00

6、 00 00 00 00 00 00,偏移地址DI,返 回,堆栈操作指令,指令格式:PUSH 源操作数/POP 目的操作数 实现功能:完成对寄存器的值的保存和恢复 注意事项:使用堆栈操作指令时,应预置堆栈段寄存器SS、堆栈指示器SP的值,使SP指向当前堆栈段的栈顶。在执行PUSH指令时,堆栈指示器SP自动减2;然后,将一个字以源操作数传送至栈顶。POP指令是将SP指出的当前堆栈段的栈顶的一个操作数,传送到目的操作数中,然后,SP自动加2,指向新的栈顶。,flash,堆栈操作指令,掌握: 有关堆栈的概念 栈顶、栈首、栈底 堆栈指令的操作原理,执行过程,执行结果,堆栈操作的原则,后进先出 以字为单

7、位,堆栈操作指令,压栈指令 PUSH 执行过程: (SP)(SP)-2 (SP)-1操作数高字节 (SP)-2操作数低字节,出栈指令POP执行过程: (SP) 操作数低字节 (SP)+1 操作数高字节 (SP)(SP)+2,压栈指令的操作,设AX=1234H,SP=1200H,执行 PUSH AX 指令后堆栈区的状态:,堆栈段,出栈指令的操作,执行 POP AX 堆栈区的状态:,堆栈操作指令说明,指令的操作数必须是16位的 操作数可以是寄存器或存储器两单元,但不能是立即数 不能从栈顶弹出一个字给CS PUSH和POP指令在程序中一般成对出现 PUSH指令的操作方向是从高地址向低地址,而POP指

8、令的操作正好相反,堆栈操作指令示例,例:将16位通用寄存器CX的内容压入堆栈,然后,弹出栈顶至CX中,已知:(SS)=0200H, (SP)=0008H, (CX)=12FAH,其示意图如下所示:,PUSH CX 指令的操作过程示意图,PUSH CX 指令的操作过程示意图,堆栈操作指令示例,堆栈中的内容是按后进先出的次序进行传送的,因此,保存内容和恢复内容时,要按照对称的次序执行一系列压入指令和弹出指令.例如: PUSH DS PHSH ES POP ES POP DS,返 回,数据交换指令,指令格式:XCHG 目的,源 指令功能:实现字节、字交换。交换过程可以在CPU的内部寄存器之间进行,也

9、可以在内部寄存器和存储单元之间进行。 注意:不能在两个存储单元之间执行数据交换过程,两操作数必须有一个是寄存器操作数。 不允许使用段寄存器。两操作数应等长。,示 例,返 回,数据交换指令示例,1 XCHG AL, BL ; AL和BL之间进行字节换 2 XCHG BX, CX ; BX和CX之间进行字交换 3 设(DS)2000H,(22530H)88H, (22531H)66H, 执行指令XCHG 2530H, CX 后(CX)=? CX中的内容和数据段中的2530、2531H两单元的内容交换,返 回,(CX)6688H,换 码 指 令,指令格式:XLAT 实现功能:它可以使累加器中的一个值

10、变换为内存表格中的某一个值,一般用来实现编码制的转换。 指令说明:使用换码指令时,要求BX寄存器指向表的首地址,AL中为表中某一项与表格首地址之间的偏移量,指令执行时,会将BX和AL中的值相加,把得到的值作为地址,然后将此地址所对应的单元中的值取到AL中去。 XLAT指令就是通过查表方式来完成翻译功能的,因此,在执行该指令之前,必须建立好一张翻译表,该表的最大容量为256字节。,示 例,返 回,查表指令例,数据段中存放有一 张ASCII码转换表, 设首地址为2000H, 现欲查出表中第11 个代码的ASCII码 (设DS=4000H),查表指令例,可用如下指令实现: MOV BX,2000H

11、;(BX)表首地址 MOV AL,0BH ;(AL)序号 XALT ; 查表转换 执行后得到:(AL)=42H,换码指令示例,例:将十进制数字(09)翻译成七段显示码的译码表,执行XLAT指令通过查表可将任意一个十进制数翻译成七段显示码。其操作步骤如下: (1)将译码表定位到某个逻辑段的一片连续地址中, 并将其表首地址的偏移量置入BX寄存器中; (2)将待翻译的十进制数字送入AL寄存器中; (3)执行XLAT指令。 例如,假设这段数据存放在偏移量地址为2000H开始的内存中 取出“3”所对应的七段码,用如下几条程序助记符即可完成: MOV BX, 2000H MOV AL, 3 XLAT,返

12、回,表,表十进制数的七段显示码,返 回,目标地址传送指令,这是一类专用于传送地址码的指令,可用来传送操作数的段地址或偏移地址,共包含以下三条指令: 一、取有效地址指令 二、将地址指针装到DS和另一个寄存器的指令 三、将地址指针装到ES和另一个寄存器的指令,返 回,取有效地址指令LEA,指令格式:LEA 目标,源 指令功能:将存储器地址送到一个寄存器。 说明:LEA指令格式中,要求源操作数必须为内存单元地址,目的操作数必须为一个16位的通用寄存器。LEA常用来使一个寄存器作为地址指针。,返 回,示 例,取有效地址指令示例,LEA BX, BP+SI ; 指令执行后,BX中的内容 为BP+SI的值

13、 LEA SP, 0428H ; 使堆栈指针SP为0482H,思考:试比较下面两条指令的不同,LEA AX, 2728H MOV AX, 2728H,将2728H单元的偏移量送AX指令执行后,AX中为2728H,将2728H单元中的内容送到AX中,LEA指令,比较下列指令: LEA SI,DATA1 MOV SI,DATA1 MOV AX,BX LEA AX,BX,符号地址,LEA指令在程序中的应用,将数据段中首地址为MEM1 的50个字节的数据传送到同一逻辑段首地址为MEM2的区域存放。编写相应的程序段,LEA指令在程序中的应用,开 始,取源地址,取目标地址,送数据块长度到CL,传送一个字节

14、,修改地址指针,修改计数值,计数值=0?,结 束,N,Y,LEA指令在程序中的应用,LEA SI,MEM1 LEA DI,MEM2 MOV CL,50 NEXT: MOV AL,SI MOV DI,AL INC SI INC DI DEC CL JNZ NEXT HLT,返 回,P 133,LDS 指 令,指令格式:LDS 目标,源 指令功能:是把四个字节的地址指针(其中包括一个段地址和一个偏移量)传送到两个目的寄存器,其中,地址指针的后两个字节即段地址一定送到DS中。 示例:执行指令 LDS DI, 2130H 执行该指令后使2130H和2131H这两个单元中的地址偏移量送到DI,2132H

15、和2133H中的段地址值送到DS。,LDS指令例,例:下列指令执行后结果如何? LDS DI,1200H MOV AX,DI,(DS) = 6000H (DI) = 1234H (AX) = 2233H,返 回,LES 指 令,指令格式:LES 目标,源 功能:是把四个字节的地址指针(其中包括一个段地址和一个偏移量)传送到两个目的寄存器,其中,地址指针的后两个字节即段地址一定送到ES中。,基本相同,所不同仅在于将源操作数所指的地址指针中的段基址(后两个字节)传送到ES段寄存器,而不是DS段寄存器。,思考:LES指令与LDS指令的操作有何不同?,LES指令例,LES DI,1200H MOV AX,DI,返 回,标志位传送指令,可完成标志位传送的指令共有以下四条: 一、读取标志指令 二、设置标志指令 三、对标志寄存器的压入堆栈和弹出堆 栈指令,返 回,读取标志指令LAHF,读取标志指令LAHF被执行时,将标志寄存器中的低8位传送到AH中,其指令隐含操作数AH,操作示意图如下所示:,返 回,LAHF指令的功能示意图,设置标志指令SAHF,设置标志指令SAHF被执行时,将AH寄存器的相应位传送到标志寄存器的低8位。其指令隐含操作数AH,操作示意图如下所示:,返 回,AH,FLAG,SAHF指令的功能示意图,PUSHF和POPF指令

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

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

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