收藏 分销(赏)

微机原理讲.ppt

上传人:快乐****生活 文档编号:1781320 上传时间:2024-05-09 格式:PPT 页数:71 大小:4MB
下载 相关 举报
微机原理讲.ppt_第1页
第1页 / 共71页
微机原理讲.ppt_第2页
第2页 / 共71页
微机原理讲.ppt_第3页
第3页 / 共71页
微机原理讲.ppt_第4页
第4页 / 共71页
微机原理讲.ppt_第5页
第5页 / 共71页
点击查看更多>>
资源描述

1、 ii第第3章章 8086的寻址方式和指令系统的寻址方式和指令系统 3.1 8086的寻址方式的寻址方式3.2 8086指令格式及数据类型指令格式及数据类型3.3 8086的指令集的指令集HH ii串处理指令命令命令含义含义时钟数时钟数MOVSB/MOVSW字符串传送17CMPSB/CMPSW字符串比较22SCASB/SCASW字符串扫描15LODSB/LODSW字符串装入12STOSB/STOSW字符串存储11REP无条件重复2REPE/REPZ相等/结果为零重复2REPNE/REPNZ不相等/非零重复2H H ii字符串 一系列存放在存储器中的字或字节数据,字符串长度可达64K64K字节。

2、字符串元素 组成字符串的字节或字。每种字符串指令对字符串元素只进行同一种操作。字符串操作指令 对字符串进行的传送、比较、扫描、存储及装入等5种操作。相关概念H H ii源串 起始地址(或末地址)为DSDS:SISI。源串允许使用段超越前缀来修改段地址。目的串 起始地址(或末地址)为ESES:DIDI。目的串不允许使用段超越前缀修改ESES。如果要在同一段内进行串运算,必须使DSDS和ESES指向同一段。指针 每执行一次字符串指令,指针SISI和DIDI会自动修改,以指向下一个待操作单元。隐含约定H H iiDFDF标志:控制字符串处理的方向。标志:控制字符串处理的方向。DFDF0 0为递增方向

3、为递增方向。DSDS:SISI指向源串首地址,每指向源串首地址,每执行一次串操作:字节串操作时,执行一次串操作:字节串操作时,SISI、DIDI分别增分别增1 1;字串;字串操作时,操作时,SISI和和DIDI分别增分别增2 2;DFDF1 1为递减方向为递减方向。DSDS:SISI指向源串末地址,每指向源串末地址,每执行一次串操作:字节串操作时减执行一次串操作:字节串操作时减1 1;字串操作时减;字串操作时减2 2。STDSTD使使DFDF置置1 1,CLDCLD将将DFDF清清0 0。串长度串长度 要处理的字符串长度要处理的字符串长度(字节或字数字节或字数)放在放在CXCX寄存器寄存器中。

4、中。隐含约定H H ii功能 在基本指令前加重复前缀,可加快串运算指令的执行速度。每重复执行一次,地址指针SISI和DIDI按方向标志自动修改,CXCX的值自动减1。类型和格式 REPREP:无条件重复,重复操作直到CXCX0 0为止。REPE/REPZREPE/REPZ:相等/结果为零则重复,重复直到ZFZF0 0或CXCX0 0为止。REPNE/REPNZREPNE/REPNZ:不相等/结果非零则重复,重复直到ZFZF1 1或CXCX0 0为止。重复前缀带有重复前缀的串指令执行过程中允许有中断进入。带有重复前缀的串指令执行过程中允许有中断进入。H H iiMOVS字符串传送指令MOVSMO

5、VS字符串传送指令 (Move String)(Move String)格式 MOVSMOVS 目的串,源串。功能 SISI作指针的源串中的一个字节或字,D DI作指针的目的串;自动修改指针SISI和DIDI。应用l解决MOVMOV指令不能直接在存储单元间进行数据传送的问题。l若使用重复前缀,还可以利用一条指令传送一批数据。H H iiH HMOVS字符串传送指令举例 要求把数据段中以SRC_MESSSRC_MESS为偏移地址的一串字符“HELLOHELLO!”,传送到附加段中以NEW_LOCNEW_LOC开始的单元中。DATA SEGMENT DATA SEGMENT;数据段;数据段 SRC

6、_MESS DB SRC_MESS DB HELLOHELLO!;源串;源串 DATA ENDSDATA ENDS;EXTRA SEGMENT EXTRA SEGMENT;附加段;附加段 NEW_LOC DB 6 DUP(NEW_LOC DB 6 DUP(?);存放目的串;存放目的串 EXTRA ENDSEXTRA ENDS;CODE SEGMENTCODE SEGMENT ASSUME CS ASSUME CS:CDCD,DSDS:DATADATA,ESES:EXTRAEXTRASTARTSTART:MOV AXMOV AX,DATADATA MOV DS MOV DS,AX AX;DSDS

7、数据段段址数据段段址 MOV AXMOV AX,EXTRAEXTRA MOV ES MOV ES,AX AX;ESES附加段段址附加段段址 LEA SILEA SI,SRC_MESS SRC_MESS;SISI指向源串偏移地址指向源串偏移地址 LEA DILEA DI,NEW_LOC NEW_LOC;DIDI指向目的串偏移地址指向目的串偏移地址 MOV CXMOV CX,6 6;CXCX作串长度计数器作串长度计数器 CLD CLD;清方向标志,地址增量;清方向标志,地址增量 REP MOVSB REP MOVSB;重复传送串中各字节,直到;重复传送串中各字节,直到CX=0CX=0 Code E

8、NDS Code ENDS End start End start iiCMPS字符串比较指令CMPSCMPS字符串比较指令 (Compare String)(Compare String)格式格式 CMPS CMPS 目的串,源串。功能功能 SISI作指针的源串减去DIDI作指针的目的串数据,结果反映在标志位上;两个数据串的原始值不变;源串和目的串指针自动修改,指向下一对待比较的串。常用来比较两个字符串是否相等。H H iiCMPS字符串比较指令加重复前缀lREPE/REPZ CMPSREPE/REPZ CMPS;直至CXCX0 0(比完了)或ZFZF0 0(两串不相等)时停止操作。lREP

9、NE/REPNZ CMPREPNE/REPNZ CMP;直至CXCX0 0(比完了)或ZFZF1 1(两串相等)时停止比较。H H iiSCAS字符串扫描指令SCASSCAS字符串扫描指令 (Scan String)(Scan String)格式 SCAS SCAS 目的串。功能 AL/AXAL/AX(字节/字操作)内容减去ES:DIES:DI中的串元素,结果反映在标志位上,源操作数不变,操作后目的串指针会自动修改,指向下一个待搜索的串元素。应用l利用SCASSCAS指令,可在内存中搜索关键字。指令执行前,必须事先将关键字存在AL(AL(字节)或AXAX(字)中,才能用SCASSCAS指令进行

10、搜索。l SCASSCAS指令可以加重复前缀。H H iiH HSCAS字符串扫描指令举例 在某一字符串中搜寻是否有字符A A,若有,则把搜索次数记下来,送到BXBX寄存器中,若没有查到,则将BXBX寄存器清0 0。设字符串起始地址STRINGSTRING的偏移地址为0 0,字符串长度为CXCX。解:解:MOV DIMOV DI,OFFSET STRING OFFSET STRING;DIDI字符串偏移地址字符串偏移地址 MOV CXMOV CX,COUNT COUNT;CXCX字符串长度字符串长度 MOV ALMOV AL,A A ;ALAL关键字关键字A A的的ASCIIASCII码码 C

11、LD CLD;清标志方向;清标志方向 REPNE SCASB REPNE SCASB;CX0(CX0(没查完没查完)和和ZF=0(ZF=0(不相等不相等)时重复时重复 JZ FIND JZ FIND;若;若ZF=1ZF=1,表示已搜到,转出,表示已搜到,转出 MOV DIMOV DI,0 0;若;若ZF=0ZF=0,表示没搜到,表示没搜到,DIDI0 0FINDFIND:MOV BXMOV BX,DI DI;BXBX 搜索次数搜索次数 HLTHLT iiLODS取字符串指令LODSLODS取字符串指令 (Load String)(Load String)格式格式 LODS LODS 源串。功能

12、功能 DS:SIDS:SI中的串元素AL/AX(AL/AX(字节/字操作)中,修改SISI,以指向串中的下一个元素。SISI的修改量由方向标志DFDF和源串的类型确定。H H iiSTOS存字符串指令STOSSTOS存字符串指令 (Store String)(Store String)格式格式 STOS STOS 目的串。功能功能 AL/AX(AL/AX(字节/字操作)的一个字节或字ES:DIES:DI所指的目的串;修改DIDI,以指向串中的下一个单元。关于重复前缀:“REP STOSREP STOS”,可用累加器中的常数,对数据串初始化。如初始化为全0 0串。H H ii控制转移指令作用 改

13、变CSCS和IPIP的值,从而改变指令的执行顺序。类型l无条件转移和过程调用指令l条件转移指令l条件循环控制指令l中断指令H H ii控制转移指令(28条)无条件转移和过程调用条件转移指令JMP无条件转移JZ/JE等等10条指令条指令直接标志转移CALL过程调用JA/JNBE等等8条指令条指令间接标志转移RET过程返回条件循环控制中断指令LOOPCX0循环INT中断LOOPE/LOOPZCX0和和ZF=1INTO溢出中断LOOPNE/LOOPNZ CX0和和ZF=0IRET中断返回JCXZCX=0则转移H H ii无条件转移和过程控制指令命令命令含义含义时钟数时钟数JMP无条件转移1124+E

14、ACALL过程调用1637+EARET过程返回1624H H iiJMPJMP无条件转移指令JMPJMP无条件转移指令 (Jump)(Jump)格式 JMPJMP 目的。功能 程序无条件地转移到指定的目的地址去执行。转移类型l段内转移或近(NEARNEAR)转移 转移指令的目的地址和JMPJMP指令在同一代码段中,转移时,仅改变IPIP寄存器的内容,段地址CSCS的值不变。l段间转移,又称为远(FARFAR)转移 转移时,CSCS和IPIP的值都要改变,转到另一代码段去执行。H H iiJMPJMP无条件转移指令两种提供地址的方式 l直接转移 指令码中直接给出转移的目的地址,目的操作数用一个标

15、号来表示,它又可分为段内直接转移和段间直接转移。l间接转移 目的地址包含在某个1616位寄存器或存储单元中,CPUCPU根据寄存器或存储器寻址方式,间接求出转移地址。H H iiJMP无条件转移指令无条件转移指令的类型和方式 类型类型 方式方式寻址目标寻址目标指令举例指令举例段内转移直接 立即短转移(8位)JMP SHORT PROG_S直接 立即近转移(16位)JMP NEAR PTR ROG_N间接 寄存器(16位)JMP BX间接 存储器(16位)JMP WORD PTR 5BX段间转移直接 立即转移(32位)JMP FAR PTR PROG_F间接 存储器(32位)JMP DWORD

16、PTR DIH H iiJMP无条件转移指令段内直接转移指令格式 JMP JMP SHORTSHORT 标号 JMP JMP NEAR PTRNEAR PTR 标号(或:JMPJMP 标号)。特点l目的操作数均用标号表示;l程序转向的有效地址当前IPIP寄存器的内容8/168/16位位移量(DISPDISP)。1616位:近转移,范围在-32768-32768+32767+32767个字节之间;8 8位:短转移,范围在-128-128+127+127个字节之间;H H iiJMP无条件转移指令段内间接转移指令格式 JMP 16JMP 16位寄存器/字存储单元特点l1616位有效地址存放在一个1

17、616位寄存器、字存储器单元;l寄存器间接寻址:有效地址存放在寄存器中,即IPIP 寄存器内容;l存储单元间接寻址:有效地址存放在存储单元中,即IPIP字存储单元内容;l要计算出存储单元的物理地址,再从该地址处取一个字送到IPIP。H H ii段内间接转移指令【例】JMP BXJMP BX 解:若该指令执行前BXBX4500H4500H;则指令执行时,将当前IPIP修改成4500H4500H;程序转向段内偏移地址为4500H4500H处执行。【例】JMP WORD PTR 5BXJMP WORD PTR 5BX 解:设指令执行前,DSDS2000H2000H,BXBX100H100H,(201

18、05H)(20105H)04F0H04F0H;则指令执行后,IPIP(20000H+100H+5H)(20000H+100H+5H)(20105H)(20105H)04F0H04F0H;转到代码段内偏移地址为04F0H04F0H处执行。H H iiJMP无条件转移指令段间直接(远)转移指令格式 JMP FARJMP FAR 标号特点 用远标号直接给出了转向的段地址和偏移量,即 IPIP 标号的段内偏移量 CSCS 标号所在段的段地址H H ii段间直接(远)转移指令【例】JMP FAR PTR PROG_FJMP FAR PTR PROG_F 解:设标号PROG_FPROG_F所在段的基地址3

19、500H3500H,偏移地址080AH080AH;则指令执行后,IPIP080AH080AH,CSCS3500H3500H;程序转到35003500:080AH080AH处执行。H H iiJMP无条件转移指令段间间接转移指令格式 JMP DWORD PTRJMP DWORD PTR存储单元特点 目的地址的段地址和偏移量放在存储器中的4 4个连续地址单元中:前两个字节为偏移量;后两个字节为段地址。指令中给出存放目标地址的存储单元的首字节地址值;H H ii段间间接转移指令【例】JMP DWORD PTR SI+0125HJMP DWORD PTR SI+0125H 设指令执行前:CSCS120

20、0H1200H,IPIP05H05H,DSDS2500H2500H,SISI1300H1300H;内存单元(26425H)(26425H)4500H4500H,(26427H)(26427H)32F0H32F0H。解:目的操作数地址DSDS1616SISIDISPDISP 25000H25000H1300H1300H0125H0125H 26425H26425H 从单元中取出转移地址,赋与IPIP和CSCS:IPIP4500H4500H,CSCS32F0H32F0H;程序转到32F032F0:4500H4500H处执行。H H ii过程调用及返回指令 过程:程序中能完成特定功能而又独立的模块,

21、也称子程序。过程嵌套:在过程运行中又去调用另一个过程。过程调用和返回指令的格式:CALLCALL 过程名 RETRET 近过程调用:调用指令CALLCALL和被调用的过程在同一代码段中。远过程调用:两者在不同代码段中。H H iiCALL过程调用指令CALLCALL过程调用指令(CallCall)格式 CallCall 过程名功能 将当前主程序的返回地址压入堆栈保存,转到子程序入口地址执行子程序。近调用时:IPIP入栈;远调用时,CSCS和IPIP入栈。H H iiRET过程返回指令RETRET过程返回指令(ReturnReturn)格式 RETRET。功能 从堆栈中弹出返回地址,使程序返回主

22、程序继续执行。l如果从近过程返回:从栈中弹出一个字 IPIP,并且使SP SP SP+2 SP+2。l如果从远过程返回:先从栈中弹出一个字 IPIP,并且使SP SP SP+2 SP+2;再从个字栈中弹出一个字CSCS,并使SP SP SP+2 SP+2。H H iiRET n过程返回指令RET nRET n过程返回指令(ReturnReturn)格式 RET nRET n。功能 n n称为弹出值,CPUCPU在弹出返回地址后,再从堆栈中弹出n n个字节的数据。其值可以是0000-0FFFFH0000-0FFFFH范围内的任何一个偶数。H H iiRET n过程返回指令用途 l 调用过程的主程

23、序通过堆栈向过程传递参数。l参数在调用过程前推入堆栈,过程运行中通过堆栈指针寻找;l过程返回时,用RET nRET n把它们从栈中弹出。H H ii过程调用与返回指令寻址方式l段内直接调用;l段内间接调用;l段间直接调用;l段间间接调用H H ii过程调用与返回指令段内直接调用【例例】CALL PROG_N CALL PROG_N ;PROG_NPROG_N是一个近标号 CS=2000HCS=2000H,IP=1050HIP=1050H,SS=5000HSS=5000H,此指令含3 3字节。SP=0100HSP=0100H,PROG_NPROG_N与与CALLCALL指令之间的距离等于1234

24、H(1234H(即即DISPDISP1234H)1234H)。CALLCALL(机器码E83412E83412)执行过程。SP SP SP-2SP-2,即新的,即新的SPSP0100H-20100H-200FEH00FEH;返回地址返回地址IPIP入栈。返回地址应该为入栈。返回地址应该为CALLCALL执行完后的执行完后的地址,即地址,即IP=IP+3=1053HIP=IP+3=1053H,将此数入栈;,将此数入栈;计算程序入口地址计算程序入口地址IP=IP+DISP=1053+1234=2287HIP=IP+DISP=1053+1234=2287H。H H iiH H:1053H:1053H

25、CALL段内直接调用 CS=2000H CS=2000H,IP=1050HIP=1050H,SS=5000HSS=5000HSP SP SP-2SP-2,即新的,即新的SPSP0100H-20100H-200FEH00FEH;返回地址返回地址IPIP入栈。返入栈。返回地址应该为回地址应该为CALLCALL执执行完后的地址,即行完后的地址,即IP=IP+3=1053HIP=IP+3=1053H,将,将此数入栈;此数入栈;计算程序入口地址计算程序入口地址IP=IP+DISP=1053+12IP=IP+DISP=1053+1234=2287H34=2287H。1010535312123434E8E8

26、5000:0100H5000:0100H2000:1050H2000:1050H:1053H:1053H:2287H:2287HSP=0100HSP=0100HSP=00FEHSP=00FEH iiTHANK YOUSUCCESS2024/5/8 周三周三35可编辑可编辑 ii过程调用与返回指令段内间接调用 操作步骤:SPSPSP-2SP-2,IPIP入栈,入栈,IP IP EA EA(从目的操作数计算)【例】CALL BXCALL BX DSDS1000H1000H,BXBX200H200H,SISI300H300H,(10500H)(10500H)3210H3210H,EAEA0200H0

27、200H。【例】CALL CALL WORD PTR BXWORD PTR BX+SISI EAEA(16(16DSDSBXBXSI)SI)(10000H(10000H0200H0200H0300H)=(10500H)0300H)=(10500H)3210H3210HH H ii过程调用与返回指令段间直接调用l计算返回IPIP;lSPSPSP-2SP-2,CSCS入栈;lSPSPSP-2SP-2,IPIP入栈;l 转子程序入口地址,执行子程序。RetRet时,出栈的顺序为IPIP,CSCS【例】CALL FAR PTR PROG_FCALL FAR PTR PROG_F;PROG_FPROG_

28、F是一个远标号。H H ii过程调用与返回指令段间间接调用 这类调用指令的操作数必须是存储单元,从该单元 开始存放的双字中,第一个字存放的是IPIP,后一个字存放的为CSCS。【例】CALL DWORD PTR BXCALL DWORD PTR BX解:设DSDS1000H1000H,BXBX200H200H,(10200H)(10200H)31F4H31F4H,(10202)(10202)5200H5200H。CALLCALL指令的执行过程:l SP SP SP SP-2 2,CSCS入栈l SP SP SP SP-2 2,IPIP入栈l IP IP (10200H)(10200H)31F4

29、H31F4H,CS CS(10202)(10202)5200H5200Hl 转子程序入口,CSCS:IP=5200HIP=5200H:31F4H31F4HH H ii条件转移指令条件转移指令(ConditionaI Transfer)(ConditionaI Transfer)根据上一条指令执行后的状态标志作为判别测试条件来决定是否转移。l条件转移均为段内短转移。l目的地址当前IPIP值8 8位相对位移量(-128127(-128127)。指令格式:条件操作符 标号条件转移指令共有1818条,分直接与间接标志转移指令H H iiH H直接标志转移指令 在指令助记符中直接给出标志状态的测试条件:

30、以标志的1010种状态为判断的条件。指令助记符指令助记符测试条件测试条件指令功能指令功能JCCF=1有进位转移JNCCF=0无进位转移JZ/JE ZF=1结果为零/相等转移JNZ/JNEZF=0不为零/相等转移JSSF=1符号为负转移JNSSF=0符号为正转移JOOF=1溢出转移JNOOF=0无溢出转移JP/JPEPF=1奇偶位为1/为偶转移JNP/JPOPF=0奇偶位为0/为奇转移 ii直接标志转移指令【例】求ALAL和BLBL寄存器中的两数之和,若有进位,则AHAH置1 1,否则AHAH清0 0解:可用如下程序段来实现该操作:ADD ALADD AL,BL BL;两数相加 JC NEXT

31、JC NEXT;若有进位,转NEXTNEXT MOV AH MOV AH,0 0;无进位,AH=0AH=0 JMP CONT JMP CONT;往下执行NEXTNEXT:MOV AHMOV AH,1 1;有进位,AHAH置1 1CONTCONT:;程序继续进行H H ii间接标志转移指令 指令的助记符中不直接给出标志状态位的测试条件,而是标志的状态组合作为测试的条件。指令应用:通常放在比较指令CMPCMP之后,以比较两个数的大小。l无符号数比较测试指令中 指令助记符中的“A A”AboveAbove,“B B”BelowBelow;l带符号数比较测试指令中,指令助记符中的 “G G”(Grea

32、t than)(Great than)表示大于,“L L”(Less than)(Less than)表示小于。H H ii间接标志转移指令类别类别指令助记符指令助记符测试条件测试条件指令功能指令功能无符号数比较测试JA/JNBECF ZF=0高于/不低于等于转移JAE/JNBCF=0高于等于/不低于转移JB/JNAECF=1低于/不高于等于转移JBE/JNACF ZF=1低于等于/不高于转移带符号数比较测试JG/JNLE(SF OF)ZF=0大于/不小于等于转移JGE/JNLSF OF=0大于等于/不小于转移JL/JNGESF OF=1小于/不大于等于转移JLE/JNG(SF OF)ZF=1

33、小于等于/不大于转移H H ii间接标志转移指令【例】设某个学生的英语成绩已存放在AL寄存器中,若低于6060分,则打印F(FAIL)F(FAIL);若高于或等于8080分,则打印G(GOOD)G(GOOD);当在6060分和8080分之间时,打印P(PASS)P(PASS)。程序:程序:CMP ALCMP AL,60 60;与;与6060分比较分比较 JB FAIL JB FAIL;6060,转,转FAILFAIL CMP ALCMP AL,8 80 0 ;6060,与,与8 80 0分比较分比较 JAE GOOD JAE GOOD;880 0,转,转GOODGOOD MOV ALMOV A

34、L,P P ;其它,将;其它,将ALALP P JMP PRINT JMP PRINT;转打印程序;转打印程序 FAILFAIL:MOV AL MOV AL,F F ;AL ALF F JMP PRINT JMP PRINT;转打印程序;转打印程序GOODGOOD:MOV ALMOV AL,G G ;AL ALG GPRINTPRINT:;打印存在;打印存在ALAL中的字符中的字符H H ii条件循环控制指令命令命令含义含义时钟数时钟数LOOPCX0循环17/5LOOPE/LOOPZCX0和ZF=1循环18/6LOOPNE/LOOPNZCX0和ZF=0循环19/5JCXZCX=0则转移18/6

35、H H ii条件循环控制指令特点:l是一组增强型的条件转移指令,控制程序段的重复执行,重复次数存于CXCX寄存器中。l指令的字节数均为2 2,第一字节是操作码,第二字节是 8 8 位偏移量,转移的目标都是短标号。l循环指令中的偏移量都是负值。l循环控制指令均不影响任何标志。H H iiLOOP循环指令LOOPLOOP循环指令(LoopLoop)格式 LoopLoop 短标号。循环次数先放在CXCX中。功能 控制重复执行一系列指令,重复次数放在CXCX寄存器中,每执行一次LOOPLOOP指令,CXCX自动减1 1。如果减1 1后CX0CX0,则转移到指令中所给定的标号处继续循环;若自动减1 1后

36、CXCX0 0,则结束循环。LOOPLOOP指令和以下两条指令可以相互替换。DEC CXDEC CX;JNZJNZ 标号。H H iiLOOPE/LOOPZ相等或结果为零时循环指令LOOPE/LOOPZLOOPE/LOOPZ指令(Loop if Equal/ZeroLoop if Equal/Zero)格式 LOOPE/LOOPZ LOOPE/LOOPZ 标号。功能lLOOPELOOPE是相等时循环;lLOOPZLOOPZ是结果为零时循环;l指令执行前,先将重复次数送到CXCX中,每执行一次指令,CXCX自动减1 1,若减1 1后后CX0CX0和ZFZF1 1,则转到指令所指定的标号处重复执行

37、;若CXCX0 0或或ZFZF0 0,便退出循环。H H iiLOOPNE/LOOPNZ不相等或结果为不零时循环指令LOOPNE/LOOPNZLOOPNE/LOOPNZ指令 Loop if not Equal/not ZeroLoop if not Equal/not Zero格式 LOOPNE/LOOPNZ LOOPNE/LOOPNZ 标号。标号。功能lLOOPNELOOPNE是不相等时循环;lLOOPNZLOOPNZ是结果不为零时循环;l指令执行前,先将重复次数送到CXCX中,每执行一次指令,CXCX自动减1 1,若减1 1后后CX0CX0和ZFZF0 0,则转到指令所指定的标号处重复执行

38、;若CXCX0 0或ZFZF1 1,便退出循环。H H iiJCXZ若CX为0跳转指令JCXZJCXZ若CXCX为0 0跳转指令 (Jump if CX ZeroJump if CX Zero)格式 JCXZ JCXZ 标号。标号。功能l若CXCX寄存器为零,则转移到指令中标号所指定的地址处,它不对CXCX寄存器进行自动减1 1的操作。l主要用在循环程序开始处,为跳过循环,把CXCX寄存器清零。H H ii中断指令命令命令含义含义时钟数时钟数INT中断5152INTO溢出中断52IRET中断返回24H H ii中断定义 计算机暂时中止当前程序的运行,执行中断服务程序去为临时发生的事件服务,执行

39、完毕后,返回正常程序继续运行,这个过程称为中断。中断源中断源外部中断外部中断内部中断内部中断引脚引脚NMI引入,需马上响应引入,需马上响应引脚引脚INTR引入,引入,IF=1,允许响应,允许响应意外情况出现的中断意外情况出现的中断中断指令中断指令INT nH H ii中断中断过程 执行中断前,必须做现场的保护工作,以确保中断执行完后能返回主程序继续执行,中断过程:l断点(CS,IPCS,IP值)、标志寄存器的值入栈保护l取入口地址(中断类型4 4,得到中断向量的地址)l执行中断服务程序l执行中断返回指令IRETIRET,从堆栈中恢复中断前CPUCPU的状态和断点。H H ii中断中断向量表 l

40、低2 2字节存放中断服务程序入口地址的偏移量IPIP;l高2 2字节存放中断服务程序入口地址的段地址CSCS;l中断服务程序入口地址中断类型4 4;类型0的中断服务程序入口地址类型1的中断服务程序入口地址类型2的中断服务程序入口地址类型255的中断服务程序入口地址00000H00000H00004H00004H00008H00008H003FCH003FCHH H ii专用中断5 5个专用中断除法错中断(类型0 0):除数为0 0;商超过范围单步中断(类型1 1):单步标志TFTF置1 1;不可屏蔽中断(类型2 2):NMINMI引脚上接收到由低变高的电平变化;断点中断(类型3 3):调试程序

41、时,程序执行到断点时便产生中断;溢出中断(类型4 4):溢出标志OFOF置l l,溢出中断指令INTOINTO产生;除单步中断外,都不能被屏蔽,不受中断允许标志IF的控制H H iiINT n软件中断指令INT nINT n软件中断指令 (InterruptInterrupt)格式 INT nINT n。N N为中断类型号,范围为02550255。CPUCPU执行INT nINT n的过程l标志寄存器的内容入栈;l当前断点的段基地址CSCS、偏移地址IPIP入栈;l清除中断标志IFIF、单步标志TFTF ;l将中断类型号n n乘以4 4,找到中断服务程序的入口地址表的表头地址,获得中断服务程序

42、的入口地址,置入CSCS和IPIP寄存器转到相应中断服务程序。H H iiINTO溢出中断指令INTOINTO溢出中断指令(Interrupt On overflowInterrupt On overflow)格式 INTOINTO。功能 当带符号数进行算术运算时,若溢出标志OFOF1 1,则溢出中断指令INTOINTO产生类型为4的中断,若OF=0OF=0,则INTOINTO指令不产生中断,CPUCPU继续执行主程序。在带符号加减法运算之后必须安排一条INTOINTO指令。以保证出现溢出时能及时向CPUCPU提出中断请求并进行处理,否则,即使出现溢出也不会向CPUCPU发中断申请。H H i

43、iIRET中断返回指令IRETIRET中断返回指令(Interrupt ReturnInterrupt Return)格式 IRETIRET。功能 实现中断返回,安排在中断服务程序的结束处。执行过程l首先从堆栈中依次弹出程序断点,送到IPIP和CSCS寄存器中;l接着弹出标志寄存器的内容,送回标志寄存器;lCPUCPU按CSCS:IPIP的值返回断点,继续执行原来被中断的程序。H H ii处理器控制指令标志控制指令 用于某些标志位的清零与设置。外部同步指令 与协处理器同步工作的指令,以便共享系统资源。停机指令和空操作指令 H H ii标志控制指令命令命令含义含义时钟数时钟数CLC进位标志位CF

44、清零2CMC进位标志位CF取反2STC进位标志位CF置12CLD方向标志位DF清零2STD方向标志位DF置12CLI中断标志位IF清零2STI中断标志位IF置12H H ii外部同步指令命令命令含义含义时钟数时钟数ESC换码指令8+EAWAIT等待指令3LOCK封锁总线指令2 使CPUCPU与其它协处理器同步工作的指令,用于多处理机;指令执行后均不影响标志位。共3 3条。H H iiESC换码指令ESCESC换码指令(EscapeEscape)格式 ESC ESC MENMEN。MenMen为操作数地址功能 用于实现80868086对80878087协处理器的控制。80878087只处理与自己

45、相关的ESCESC指令。执行指令时,80878087的BUSYBUSY引脚变成高电平并送到与之相连的8086的TEST#TEST#引脚上。指令执行时,把一个指定的存储单元的内容送到DBDB上,由协处理器获取后,完成相应的操作。H H iiWAIT等待指令WAITWAIT等待指令(WaitWait)格式 WAITWAIT。功能 循环测试TEST#TEST#直到变成低电平时退出waitwait状态。用途 waitwait通常跟在ESCESC指令之后,CPUCPU执行ESCESC指令后,表示80868086处于等待状态,测试TEST#直到低电平方退出waitwait状态执行下条指令。H H iiLO

46、CK封锁总线指令LOCKLOCK封锁总线指令(Lock BUSLock BUS)是一种前缀,加在指令的前端,用来维持80868086的总线封锁信号LOCK#LOCK#有效,带有LOCKLOCK前缀的指令在执行过程中,禁止其它协处理器使用总线。H H ii停机指令和空操作指令HLTHLT停机指令(HaltHalt)CPUCPU进入暂停状态,不进行任何操作。下列情况发生时,CPUCPU才脱离暂停状态:l在RESETRESET线上加复位信号;l在NMINMI引脚上出现中断请求信号;l在允许中断的情况下,在INTRINTR引脚上出现中断请求信号;H H ii停机指令和空操作指令NOPNOP空操作指令(

47、No OperationNo Operation)单字节指令,执行时需耗费3 3个时钟周期的时间,但不完成任何操作。常在循环等操作中增加延时,或在调试程序时使用空操作指令。H H iiTESTTEST设CS=1200HCS=1200H,IP=0100HIP=0100H,SS=5500HSS=5500H,SP=0400HSP=0400H,DS=2000HDS=2000H,SI=3000HSI=3000H,BX=0300HBX=0300H,(,(20300H20300H)=4800H=4800H,(20302H20302H)=00FFH=00FFH,PROG_NPROG_N标号的地址为120012

48、00:0278H0278H,PROG_FPROG_F标号的地址为3400:0ABCH3400:0ABCH。说明下面每条指令执行完后程序将分别转移到何处执行?JMP PROG_N JMP BXJMP PROG_N JMP BXJMP BX JMP FAR JMP BX JMP FAR PROG_FPROG_F JMP DWORD PTRBX JMP DWORD PTRBXH H ii小结串处理指令的分类及具体功能无条件转移指令的功能直接标志转移指令的功能(重点)其他指令的功能介绍H H ii本节作业本节作业P122-11P122-11H H iiTHANK YOUSUCCESS2024/5/8 周三周三70可编辑可编辑

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服