微机原理教案71.ppt

上传人:sccc 文档编号:5296446 上传时间:2023-06-23 格式:PPT 页数:51 大小:328.01KB
返回 下载 相关 举报
微机原理教案71.ppt_第1页
第1页 / 共51页
微机原理教案71.ppt_第2页
第2页 / 共51页
微机原理教案71.ppt_第3页
第3页 / 共51页
微机原理教案71.ppt_第4页
第4页 / 共51页
微机原理教案71.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《微机原理教案71.ppt》由会员分享,可在线阅读,更多相关《微机原理教案71.ppt(51页珍藏版)》请在三一办公上搜索。

1、第 六 讲,8086/8088的指令系统,指令系统概述,按照汇编指令格式划分,指令有三种:双操作数指令:指令中指定两个操作数,其中一个是源操作数(SRC),另一个是目的操作数(DEST)。单操作数指令:指令只需一个操作数。它既是源操作数(SRC),也是目的操作数(DEST)。无操作数指令:虽然指令本身未指明操作数在哪里,但是指令却隐含指明操作数的地方。,指令系统概述,学习每一条指令应该注意以下几点:指令的格式和执行的操作允许的寻址方式与标志位的关系,指令系统概述,按照汇编指令功能划分,8086的指令可以分成六大类:数据传送指令算术运算指令位运算指令串操作指令控制转移指令处理器控制指令,数据传送

2、指令,指令类型,指令,指令功能,通用数据传送,目标地址传送,标志位传送,I/O数据传送,MOVd,sPUSH sPOP dXCHG d,sXLAT,字节或字传送字压入堆栈字弹出堆栈字节或字交换字节翻译(代码转换),LEAd,sLDSd,sLESd,s,装入有效地址装入地址指针(用DS)装入地址指针(用ES),LAHFSAHFPUSHFPOPF,将F低字节装入AH寄存器将AH内容装入F低字节将F的内容压入堆栈从堆栈中弹出一个字装入F,IN累加器,端口OUT端口,累加器,输入字节或字输出字节或字,表一数据传送指令列表,通用数据传送指令,有以下五条MOV 把源操作数传送到目的操作数PUSH指针上移,

3、源操作数进栈POP 出栈到目的操作数,指针下移XCHG交换源,目的操作数XLAT代码转换,通用数据传送指令,MOV 指令 基本格式和功能指令格式:MOV dest,src 其中 dest 表示目的操作数,src表示源操作数 执行的操作:(dest)(src)与标志的关系:与标志没有关系,不影响标志位。,通用数据传送指令,MOV 指令 数据传送通道,图1 MOV 指令数据传送通道,通用数据传送指令,MOV 指令 一些说明说明:立即数不能直接传给段寄存器;段寄存器之间也不能进行直接传送。(这2种情况通常要通过通用寄存器间接进行)DEST和SRC两个操作数不能同时为存储器操作数;两个存储单元之间不能

4、用一条MOV指令直接完成数据传送。存储器操作数可用任何一种存储器寻址方式。DEST和SRC长度须相同,即同时为字或字节。,通用数据传送指令,MOV 指令 一些说明说明立即数只能出现在源操作数位置,不能作DESTCS只能作源操作数,不能作目的操作数。传送实质上是复制,对源操作数无影响。16位数据的传送遵循地址“高对高,低对低”的原则。这个原则不仅对MOV指令适用,对所有的传送皆适用。,通用数据传送指令,MOV 指令 例子立即数r/m MOV CL,05H MOV AX,1234H MOV ADDR,12H MOV ADDR,1234H,通用数据传送指令,MOV 指令 例子reg reg MOV

5、DH,AL MOV DS,AXr m MOV DL,DA_BYTE MOV DL,SI MOV AX,DA_WORD,通用数据传送指令,MOV 指令 例子m m MOV DL,DA_BYTE1 MOV DA_BYTE2,DLm m(存储单元内容互换)MOV CL,DA_BYTE1 MOV DL,DA_BYTE2 MOV DA_BYTE1,DL MOV DA_BYTE2,CL,通用数据传送指令,MOV 指令 例子指令辩误:判断下列指令的正误并说明原因MOV AL,CXMOV AL,CXMOV 3000H,BXMOV AL,1200HMOV CS,BXMOV DS,1200HMOV ES,DS,通

6、用数据传送指令,MOV 指令 练习 题目1:已知当前BX=1200H,CS=1800H,IP=0500H,DS=3000H,则执行指令MOV BX+2000H,12ABH 后,12ABH放在哪两个存储单元(物理地址)?,答案:12ABH放在33200H和33201H存储单元中。其中12H放在33201H单元中,而0ABH放在33200单元中。,通用数据传送指令,MOV 指令 练习题目2:将DS段中2000H单元与3000H单元的内容互换,请写出指令序列。解:,MOV AL,2000HMOV BL,3000HMOV 2000H,BLMOV 3000H,AL,通用数据传送指令,PUSH 和 POP

7、指令 基本格式和功能指令格式:PUSH SRC POP DEST执行的操作:PUSH 压入。源操作数进栈至栈顶。“先减再压”SP SP-2 SS:(SP),(SP)+1)(SRC)POP 弹出。栈顶出栈到目的操作数。“先弹再加”(DEST)SS:(SP),(SP)+1)SP SP+2,通用数据传送指令,PUSH 和 POP指令 基本格式和功能与标志的关系:与各标志位无关,不影响标志位寻址方式:PUSH mem/reg POP mem/reg 注意:操作数一律为16位操作数。允许使用段寄存器,但POP操作数不允许为CS。可以使用除立即数以外的任何数据寻址方式。,通用数据传送指令,PUSH 和 P

8、OP指令 关于堆栈堆栈是一段特殊组织的内存区域,其内容的存取主要由堆栈指针控制,规则是:“先进后出”或者“后进先出”。,XX,32H,30012H,30013H,30011H,30010H,3000FH,3000EH,30000H,3000H,SS,000FH,SP,6CH,45H,0AH,0013H,SP,堆栈段,通用数据传送指令,PUSH 和 POP指令 关于堆栈例:将4456H压入堆栈。,XX,30012H,30013H,30011H,30010H,3000FH,3000EH,30000H,3000H,SS,56H,堆栈段,44H,“先减再压”,通用数据传送指令,PUSH 和 POP指令

9、 关于堆栈例:从堆栈弹出两个字节送AX。,XX,30012H,30013H,30011H,30010H,3000FH,3000EH,30000H,3000H,SS,56H,堆栈段,78H,12H,34H,34H,AX,12H,AH,AL,“先弹再加”,通用数据传送指令,PUSH 和 POP指令 用途堆栈常有两个用途:暂存和传送。暂存:PUSH AX PUSH BX POP BX POP AX传送:PUSH AX PUSH BX POP AX POP BX,XX,5A06H,AX,1200H,BX,sp,通用数据传送指令,PUSH 和 POP指令 练习题目:已知SS=2000H,AX=1600H

10、,SP=0202H,CX=3456H,当执行以下两条指令后:PUSH AX PUSH CX问:这时SS,AX,CX,SP的内容?存储器中20200H单元的内容为多少?,答案:SS=2000H,AX=1600H,CX=3456H,SP=01FEH;(20200H)=00H,01FEH,01FFH,0200H,0201H,0202H,XX,通用数据传送指令,XCHG指令 基本格式和功能指令格式:XCHG DEST,SRC执行的操作:源操作数与目的操作数内容互换(DEST)(SRC)与标志的关系:与各标志位互不影响,通用数据传送指令,XCHG指令 基本格式和功能寻址方式:XCHG mem/reg,m

11、em/reg注意:两操作数均不允许为立即数和段寄存器,不能同为存储器操作数;可以是字或字节交换。,图3 XCHG指令的数据交换通路,通用数据传送指令,XCHG指令 例子例:两个存储单元之间进行数据交换。(应用三条指令实现),MOVAL,DABYTE1XCHGAL,DABYTE2XCHGAL,DABYTE1,通用数据传送指令,XLAT指令 基本格式和功能指令格式:XLAT 或 XLAT AL,BX执行的操作:其功能是从转换表中找出一个字节的内容,用其取代AL寄存器的内容。转换表由用户设计,最长为256个字节,换码时,应将代码表首地址保存在BX中,AL中保存待查字节序号(即代码表中字符序号),换码

12、后,A L取得对应的码值。,通用数据传送指令,XLAT指令 例子例:假设用户设计转换表TABLE如下图所示,如需要查找表中第8个单元的内容,则可以使用指令序列:,MOVAX,SEGTABLEMOVDS,AXMOVBX,OFFSETTABLEMOVAL,07HXLAT,TABLE,+1,+2,+3,+4,+5,+6,+7,+8,7EH,30H,6DH,79H,33H,5BH,1FH,70H,7FH,执行后AL=70H,通用数据传送指令,课堂练习1、请将存储器中DS段内三个存储单元的内容轮换。(设3个存储单元的偏移地址分别是1020H,1040H,1060H)2、将CX与DX的内容互换,可以有多少

13、种方法?,通用数据传送指令,参考答案1、MOV AL,1020HXCHG AL,1040HXCHG AL,1060HMOV 1020H,AL2、至少有三种:用MOV指令:用堆栈指令:用XCHG指令:,MOV AX,CXMOV CX,DXMOV DX,AX,PUSH CXPUSH DXPOP CXPOP DX,XCHG CX,DX,目标地址传送指令,共3条LEA 取有效地址LDS 从双字中取偏移地址和数据段的段地址LES 从双字中取偏移地址和附加段的段地址,目标地址传送指令,LEA指令 基本格式和功能指令格式:LEA DEST,SRC执行的操作:指令功能:源操作数的有效地址EA送给目的操作数。D

14、ESTSRC的有效地址EA与标志的关系:指令对标志无影响。,目标地址传送指令,LEA指令 基本格式和功能寻址方式:LEA reg,mem说明:SRC必须是存储器操作数。DEST一定是一个16位通用寄存器,而不能是8位的寄存器或段寄存器。编程时,程序员不必了解数据或指令的有效地址,但有时这些地址会在程序其它部分用到,这时可以使用LEA 指令。,目标地址传送指令,LEA指令 例子例:如BX=00CDH,SI=00A6H,存储单元的内容为78ABH,则指令MOVAX,BXSI执行后,AX78ABH;而 LEAAX,BXSI执行后,AX00CDH00A6H=0173H。,目标地址传送指令,LDS和LE

15、S指令基本格式和功能指令格式:LDS DEST,SRC LES DEST,SRC执行的操作:功能:将SRC中的双字内容依次送入到DEST及DS(LDS指令)或ES(LES指令)中。指令中SRC为一双字指针,高位字送指定的段寄存器,低位字送指定的寄存器。,目标地址传送指令,LDS和LES指令基本格式和功能与标志的关系:指令对标志无影响。寻址方式:LDS/LES reg,mem说明:SRC处保存的一般是某个逻辑地址(SEG:OFFSET),事先由用户准备好。DEST必须是任一通用寄存器(16位);SRC一定是存储器操作数。本指令用于同时建立段地址和段内偏移地址。,目标地址传送指令,LDS和LES指

16、令例子例:设当前DS2000H,DI2400H,存储单元2340AH处的内容如下图所示。则指令LDSSI,DI100AH 执行后,DS与SI的值分别为多少?,80H,01H,30H,22H,2340AH,答案:DS2230H,SI0180H,标志位传送指令,共有4条:LAHF 标志送AH指令SAHF AH送标志指令PUSHF 标志进栈指令POPF 标志出栈指令这些指令用于保存和恢复PSW,标志位传送指令,LAHF 与 SAHF指令基本格式和功能指令格式:LAHF SAHF功能:LAHF:AH FlagsLSAHF:FlagsL AH,标志位传送指令,LAHF 与 SAHF指令基本格式和功能说明

17、:LAHF指令对F本身无影响;SAHF指令对F高8位无影响,对F低8位的影响要看AH的内容。复习:F标志寄存器各位位置,OF,DF,IF,TF,SF,ZF,AF,PF,CF,15,0,8,7,标志位传送指令,LAHF 与 SAHF指令例子例:欲将F中的进位标志和奇偶标志都设置为1,请写出指令序列。,答案:MOVAH,05H SAHF,标志位传送指令,PUSHF 与 POPF指令基本格式和功能指令格式:PUSHF POPF功能:PUSHF:stack Flags(F进栈)POPF:Flags stack(F出栈),标志位传送指令,PUSHF 与 POPF指令基本格式和功能说明:PUSHF指令对F

18、本身无影响。POPF指令对F的影响由栈顶内容决定。Flags中各标志位的值只有少数几个能通过别的指令去设置,其余的只能通过上述4条指令去设置。,标志位传送指令,PUSHF 与 POPF指令例子例1:欲将F的内容传送到AX中。请写出指令序列。,答案:PUSHF POP AX,标志位传送指令,PUSHF 与 POPF指令例子例2:欲设置F寄存器的内容为1234H。请写出指令序列。,答案:PUSH 1234H POPF,正确答案:MOV AX,1234H PUSH AX POPF,指令有误,I/O数据传送指令,IN 和 OUT指令 基本格式和功能指令格式:长格式(直接寻址):IN AL,端口地址 I

19、N AX,端口地址 OUT 端口地址,AL OUT 端口地址,AX注意:长格式中直接采用端口地址,但地址必须是8位的,也就是00FFH号端口才可以使用长格式。,I/O数据传送指令,IN 和 OUT指令 例子合法的I/O指令:IN AL,70H IN AX,70H OUT 71H,AL OUT 71H,AX,I/O数据传送指令,IN 和 OUT指令 基本格式和功能短格式(间接寻址)IN AL,DX IN AX,DX OUT DX,AL OUT DX,AX短格式中的端口地址保存在DX中,由于DX是十六位寄存器,所以这种寻址方式可对0 65535个端口进行寻址。,I/O数据传送指令,IN 和 OUT

20、指令 基本格式和功能执行的操作:16位端口 IN:(AX)(port)OUT:(port)(AX)8位端口 IN:(AL)(port)OUT:(port)(AL),I/O数据传送指令,IN 和 OUT指令 说明要注意区分I/O端口的数据与地址的宽度(位数)。所谓16位端口指的是数据宽度是16位的端口,8位端口指其数据宽度是8位,它们的地址可以是8位或16位的。因此I/O指令可能有如下几种情况:(以IN指令为例)8位数据8位地址:IN AL,61H8位数据16位地址:IN AL,DX16位数据8位地址:IN AX,61H16位数据16位地址:IN AX,DX,I/O数据传送指令,IN 和 OUT指令 例子例:编写指令:将2024H端口中一个字的内容存入堆栈。,答案:MOV DX,2024H IN AX,DX PUSH AX,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号