微机原理与接口技术8086指令系统.ppt

上传人:牧羊曲112 文档编号:6284430 上传时间:2023-10-13 格式:PPT 页数:75 大小:292.50KB
返回 下载 相关 举报
微机原理与接口技术8086指令系统.ppt_第1页
第1页 / 共75页
微机原理与接口技术8086指令系统.ppt_第2页
第2页 / 共75页
微机原理与接口技术8086指令系统.ppt_第3页
第3页 / 共75页
微机原理与接口技术8086指令系统.ppt_第4页
第4页 / 共75页
微机原理与接口技术8086指令系统.ppt_第5页
第5页 / 共75页
点击查看更多>>
资源描述

《微机原理与接口技术8086指令系统.ppt》由会员分享,可在线阅读,更多相关《微机原理与接口技术8086指令系统.ppt(75页珍藏版)》请在三一办公上搜索。

1、第三章 8086/8088指令系统,指令是计算机工作的指示和命令,它是一组代表一定意义的二进制编码信息,程序是按一系列按一定规则顺序排列的指令,而计算机(微型机)的整个工作过程就是执行程序的过程。,指令的含义包含指明该做什么?指明对谁做?指令由两部分构成操作码,操作数。操作码指明计算机做什么,操作数是参与操作的数。,在指令中操作码是不可缺少的,但操作数可以没有,也可以有一个操作数或两个操作数。,根据操作数的个数,指令格式可分为以下几种:1.零操作数指令指令格式中没有操作数或操作数是隐含约定的。2.一操作数指令指令格式中有一个操作数,或还有一个隐含的操作数(实际上是双操作数)。3.二操作数指令指

2、令中有两个操作数,其中一个为目的操作数,另一个为源操作数。,由此可见,操作数可分为源操作数和目的操作数。源操作数:只能读取的操作数。目的操作数:即可读取又可写入(存放操作结果)的操作数。操作数又可分为两大类:数据操作数和地址操作数。,3.1 8086/8088寻址方式,寻址方式找到实际参与操作的数的方式,从另一角度讲,也可以说是实际参与操作的数的存取方式,下面介绍有关操作数的寻址方式。一、立即寻址 操作码后紧跟着的数就是实际参与操作的数,该操作为指令代码存放在代码段中。,二、寄存器寻址 操作码紧跟着的是寄存器的编码,该寄存器中存放的是实际参与操作的数。,三、直接寻址 操作码后紧跟着的是一个存储

3、单元的有效地址(偏移地址),该单元存放的是实际参与操作的数。操作数物理地址=DS10H+EA,例:MOV AX,2000H若DS=3000H,则物理地址=3000H 10H+2000H,指令执行后:AH=30H,AL=50H,低字节在前高字节在后,四、寄存器间接寻址,EA表示有效地址,BP的段地址寄存器为SS,其余段地址寄存器为DS,操作数物理地址=DS10H+EA,执行指令:MOV AX,BP 执行后:(AX)=?,(BP)=?,(SS)=?,(20030H)=?图形表示如下:,【例1】寄存器和存储器内容分别为:(AX)=0,(BP)=0030H,(SS)=2000H,(20030H)=12

4、34H,【例2】,设执行前:(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。,有效地址可以由以下三种地址分量组成:位移量(Displacement):它是存放在指令中的一个8位或16位的数,但它不是立即数,而是一个地址。基址(Base Address):它是存放在基址寄存器BX或BP中的

5、内容。变址(Index Addess):它是存放在变址寄存器SI或DI中的内容。对于某条具体指令,这三个地址分量可有不同的组合。如果存在两个或两个以上的分量,那么就需要进行加法运算,求出操作数的有效地址(EA),进而求出物理地址(PA)。正是因为这三种地址分量有不同的组合,才使得对存储器操作数的寻址产生了若干种不同的方式。,五、基址变址寻址,EA表示有效地址,BP的段地址寄存器为SS,其余段地址寄存器为DS,操作数物理地址=DS10H+EA,3.2 8086/8088的指令系统 8086/8088指令系统有条指令,共组,功能较强数据传送指令串处理指令算术指令控制转移指令逻辑指令处理机控制指令,

6、为了更快的学习、领会指令系统,我们作如下约定:RR表示通用寄存器(AX,BX,CX,DX,BP,SP,SI,DI)SER表示段寄存器(CS,DS,ES,SS)MEM表示内存单元的有效地址,MEM表示该单元的内容AC表示AX或ALNN表示立即数F表示标志寄存器,一、数据传送指令1、基本传送指令 MOV X,Y;XY 该指令可进行的传送有:RRRR,SER;RR,SER,ACMEM;RR,MEMNN,16位,例:MOV AX,BX;将BX中的16位二进制数送AX MOV AL,CL;将CL中的8位二进制数送AL MOV ES,DX;将DX中的16位二进制数送ES MOV AX,BX;将BX中的16

7、位二进制数送AX。,ALBX,AHBX+1 MOV DI,AX;将AX中的16位二进制数送DI和 DI+1单元中 MOV CX,1000H;将1000H和1001H中的16位二进 制数送CX单元中 MOV BX,5040H;将5040H送BX MOV AL,E;将字符E送AL,即将E的ASCII码送AL MOV AX,30HBX+SI;将30H+BX+SI单元的内容送AX,注意:字符用ASCII码,形式上可写成E;BP的段地址为SS,其余均为DS。,2、堆栈操作指令 堆栈后进先出(LIFO)的存储区。向堆栈里存数我们称为“压入”,从堆栈里取数我们称为“弹出”。SP为堆栈指示器(或堆栈指针),它

8、存放的始终是栈顶的有效地址,段地址用SS。,a.PUCH Z;ZRR,MEM,SER。SPSP-2,SP+1SPZ。执行指令时,SPSP-1,然后SPZH,再SPSP-1,然后再SPZL。总结:“减1压入,减1压入,先高后低”,b.POP Z;Z同上定义。ZSP+1SP执行指令时,ZLSP,然后SPSP+1,再ZHSP,再然后SPSP+1L。总结:“弹出加1,弹出加1,先低后高”,例:CX=12FAH,SP=0008H,SS=0200H,请画出执行 PUCH CX,POP AX两条指令后的堆栈和SP的变化。,c.对标志寄存器进行堆栈操作 PUCHF POPF3、交换指令 XCHG X,Y;XY

9、,RRMEM,RR,4、表转换指令 XLAT;ALBX+AL,例如 DS=F000H,在偏移地址0040开始的存储区中存有09的平方表,现用XLAT求得AL中数的平方。假设AL中的数为09中之一。(如AL=3),XLAT指令是用来将一种字节代码转换成另一种字节代码。即将BX的内容(代码表格首址)和AL的内容(表格偏移量)相加作为有效地址。并从中读出此内存表格地址单元的内容传送到AL累加器中。,MOV AX,0F000HMOV DS,AXMOV BX,0040HMOV AL,03HXLAT,EA=0040H+03H=0043H物理地址=0F0000H+0043H程序段执行后:AL=09H,XLA

10、T实际上是查表指令,表的首址放在基址寄存器中,要查的数放 AL中,执行该指令后,AL即为查表结果。,5、LDS RR,MEM;RRMEM,DSMEM+2此指令的功能是将源操作数所对应的双字长的内存单元中的高字内容(一般为16位段基址)送入DS,低字内容(一般为偏移地址)送入指令所指定的寄存器中。例:DS=C000H,C0010H=0180H,C0012H=2000H LDS SI,0010H 将上指令执行后,SI=0180H,DS=2000H 6、LES RR,MEM;RRMEM,ESMEM+2,此指令的功能是将源操作数所对应的双字长的内存单元中的高字内容(一般为16位段基址)送入ES,低字内

11、容(一般为偏移地址)送入指令所指定的寄存器中。,7、LEA RR,MEM;RRMEM的有效地址。【例】主存偏移地址的获取。MOV BX,0100H;(BX)=0100HMOV SI,0210H;(SI)=0210HLEA BX,1234BX+SI;(BX)=1544H,8、LAHF;AHPSW的低字节,AHPSWL SAHF;PSWLAH,9、输入输出指令 输入指令 输出指令 IN AC,DX OUT DX,AC IN AC,PORT OUT PORT,AC,二、算术运算指令 1、加/减指令 a.不带进位位的加/减指令 ADD X,Y;XX+Y SUB X,Y;XX-Y X,Y可为:RR,RR

12、(或MEM,NN);MEM,RR(或NN);AC,NN。,该指令用来完成I/O端口与累加器之间的数据传送,PORT为端口地址,DX中存放端口地址。,b.带进位位的加/减指令 ADC X,Y;XX+Y+CF SBB X,Y;XX-Y-CFX,Y定义同上。,c.加1/减1指令 INC Z;ZZ+1 DEC Z;ZZ-1 ZRR,MEM,例1:ADD AL,50H;ALAL+50H ADD DI,SI;DIDI+SI SUB BX,CX;BXBX-CX SUB BP+2,CL;BP+2BP+2-CL,例2:两个32位的加法,被加数,加数,和的内存分配如下:,H+H,2、比较指令CMP X,Y;X-Y

13、,X,Y的定义与前相同 注意:X-Y的差不送回X,但影响标志位。,根据标志位来判断两数的大小,其规则如下:X,Y为无符号数,用CF来判断,,均为带符号正数(最高位为的无符号数)可用如上法来判断大小,亦可用来判断大小,,均为带符号数(补码),用,两位标志来判断大小,或,注:两数判断大小,要根据不同类型的数来进行,如两数为无符号数,则XY(用),OF无意义;如两数为带符号数(补码),则SF OF=0,XY(用),3、求补指令(求负)NEG Z;功能:将目的操作数的每一位求反(包括符号位)后加1,结果送目的地址。Z与前定义相同,。,【例】求补运算。MOVAX,0FF64HNEGAL;(AX)=0FF

14、9CHSUBAL,9DH;(AX)=0FFFFHNEGAX;(AX)=0001HDECAL;(AX)=0000HNEGAX;(AX)=0000H,4、乘法指令 MUL Z;无符号数乘法 IMUL Z;带符号数乘法 AXAL*Z,Z为单字节数,单字节乘法;DXAXAX*Z,Z为双字节数,双字节乘法 Z的定义同前,ZRR,MEM,【例1】无符号数0A3H与11H相乘。MOVAL,0A3H;(AL)=0A3HMOVBL,11H;(BL)=11HMULBL;(AX)=0AD3H,【例2】有符号数0B4H与11H相乘。MOVAL,0B4H;(AL)=B4HMOVBL,11H;(BL)=11HIMULBL

15、;(AX)=0FAF4H,5、除法指令 DIV Z;无符号数除法 IDIV Z;带符号数除法 AXZ,AH余数,AL商,16位8位 DXAXZ,DX余数,AX商,32位16位 Z的定义同前,ZRR,MEM,【例1】写出实现无符号数0400H/0B4H运算的程序段。MOVAX,0400H;(AX)=0400HMOVBL,0B4H;(BL)=0B4HDIVBL;商(AL)=05H,余数(AH)=7CH,【例2】写出实现有符号数0400H/0B4H运算的程序段。MOVAX,0400H;(AX)=0400HMOVBX,0B4H;(BX)=0B4HIDIVBX;(AL)=0F3H,(AH)=24H,6、

16、扩展指令CBW;把AL的符号位(D7)扩展到AH,字节扩展;CBD;把AX的符号位(D15)扩展到DX,使AX扩展扩展成双字。扩展指令多用于带符号数运算,被扩展数的符号位为0,则所扩展的寄存器每位为0,被扩展数的符号位为1,扩展寄存器的每位为1。,【例2】将字数据扩展成双字数据。MOVDX,0;(DX)=0MOVAX,0FFABH;(AX)=0FFABHCWD;(DX)=0FFFFH(AX)=0FFABH,【例1】将字节数据扩展成字数据。MOVAL,0A5H;(AL)=0A5HCBW;(AX)=0FFA5HADDAL,70H;(AL)=25HCBW;(AX)=0025H,7、十进制调整指令,注

17、:一个字节表示2位的BCD码,称为组合的BCD码,或压缩的BCD码;01010011(53)一个字节表示1位的BCD码,高4位全为0,称为非压缩的BCD,语句格式:DAA功能:如果AL寄存器中低4位大于9或辅助进位(AF)=1,则(AL)=(AL)+6且(AF)=1;同理,如果(AL)=0A0H或(CF)=1,则(AL)=(AL)+60H且(CF)=1。同时,SF、ZF、PF均有影响。【例】压缩BCD码的加法运算。MOV AL,68H;(AL)=68H,表示压缩BCD码68MOV BL,28H;(BL)=28H,表示压缩BCD码28ADD AL,BL;二进制加法:(AL)=68H+28H=90

18、HDAA;十进制调整:(AL)=96H;实现压缩BCD码加法:68+28=96,语句格式:DAS功能:如果(AF)=1或AL寄存器中低4位大于9,则(AL)=(AL)6且(AF)=1;如果(AL)=0A0H或(CF)=1,则(AL)=(AL)60H且(CF)=1。同时SF、ZF、PF均受影响。【例】压缩BCD码的减法运算。MOVAL,68H;(AL)=68H,表示压缩BCD码68MOVBL,28H;(BL)=28H,表示压缩BCD码28SUBAL,BL;二进制减法:(AL)=68H28H=40HDAS;十进制调整:(AL)=40H;实现压缩BCD码减法:6828=40,AAA;加法后,AL对A

19、L进行非压缩的BCD码,AHAH+调整产生的进位;AAS;减法后,AL对AL进行非压缩的BCD码,AHAH-调整产生的借位;AAM;对2个单字节的非组合BCD码进行相乘后,对 AL中的积进行非组合BCD码调整;【例】MOV AL,09H MOV BL,06H MUL BL;(AL)=36H AAM;调整后(AH)=05,(AL)=04。AAD;对AX中的2位非组合BCD码除以一位非组合BCD码,在DIV前必须用该指令把非组合BCD码转换成二进制数,并存于AL中,然后再除。如:0307H37H(03*10+07=37)25HAL AL10*AH+AL,AH0。,例:在22000H开始的存储区中存

20、有10个字节的压缩BCD码的被加数和加数,请将其和存入被加数存储区中。被加数、加数、和均为低字节在前,高字节在后。,分析:由于被加数、加数、和为压缩的BCD码,因此需用DAA对AL进行调整,加法应用字节加法。,注:Z这组调整指令对标志位均用影响。注意看书。,MAIN:MOV AX,2000H MOV DS,AX MOV SI,2000H MOV CX,0AH CLC L1:MOV AL,SI ADC AL,SI+0AH DAA MOV SI,AL INC SI LOOP L1 RET,三、逻辑运算指令1、逻辑运算指令 AND X,Y;XXY NOT Z;Z/Z OR X,Y;XX+Y XOR

21、X,Y;XXY X,Y,Z的定义同前。,【例】将AL中第3位和第7位清零。ANDAL,77H,2、测试指令 TEST X,Y;XY,只作与操作但不回 送结果,影响标志位。,【例】测试AX中的第12位是否为0,不为0则转向L。TESTAX,1000H JNEL,四、移位和循环移位指令,1算术左移和逻辑左移指令SAL(SHL)语句格式:SAL Z,1 或SHL Z,1 SAL Z,CL 或SHL Z,CL功能:将(Z)向左移动CL指定的次数,最低位补入相应的,的内容为最后移入位的值。即,只有最高位发生变化时,OF=1,否则OF=0。,2算术右移指令SAR语句格式:SAR Z,1或SAR Z,CLC

22、F功能:将(Z)向右移动CL指定的次数且最高位保持不变;CF的内容为最后移入位的值。,即实现对有符号数除2n的运算(n为移位次数)。,3逻辑右移指令SHR语句格式:SHR OPD,1或SHR OPD,CL功能:将(OPD)向右移动CL规定的次数,最高位补入相应个数的,CF的内容为最后移入位的值。,例1:MOV CL,5 SAR DI,CL指令执行前(DS)=OF800H,(DI)=180AH,F980A=64H指令执行后 F980AH=3H,CF=0相当于 100d/32d=3例2:MOV CL,5 SHR DI,CL执行前(DS)=F800H(DI)=180AH,F980A=64H执行后 F

23、980AH=03H CF=0,例3:MOV CL,5 SAR DI,CL执行前(DS)=F800H(DI)=180AH,F980AH=9CH(-100d)执行后 F980AH=FCH CF=1例4:MOV CL,5 SHR DI,CL执行前(DS)=F800H,(DI)=180AH,F980AH=9CH执行后 F980AH=04H,CF=1,4循环左移指令ROL语句格式:ROL Z,1或ROL Z,CL功能:将目的操作数的最高位与最低位连成一个环,将环中的所有位一起向左移动CL规定的次数。CF的内容为最后移入位的值。,5循环右移指令ROR语句格式:ROR Z,1或ROR Z,CL功能:将目的操

24、作数的最高位与最低位连成一个环,将环中的所有位一起向右移动CL规定的次数,CF的内容为最后移入位的值。,6带进位的循环左移指令RCL语句格式:RCL Z,1或RCL Z,CL功能:将目的操作数连同CF标志一起向左循环移动CL规定的次数。,7带进位的循环右移指令RCR语句格式:RCR Z,1或RCR Z,CL功能:将目的操作数连同CF标志一起向右循环移动所规定的次数。,五、串操作指令(数据块)对一串字符,一串数据进行操作 特点:这种指令对字节串,字串进行操作;所有串操作指令,源地址为DS:SI,目的地址ES:DI;DF=1,上行,串源地址,目的地址递 减;DF=0,下行,串源地址,目的地 址递增

25、;通过加前缀,将单条指令操作或重复 操作指令(循环操作)重复次数CX。,1、传送(串传送)语句格式:MOVSB;字节串传送 MOVSW;字串传送 功能:将以SI为指针的源串中的一个字节(或字)存储单元中的数据传送至以DI为指针的目的地址中去,并自动修改指针,使之指向下一个字节(或字)存储单元。即:(DS:SI)ES:DI。当DF=0时,(SI)和(DI)增量;当DF=1时,(SI)和(DI)减量。,2串比较指令CMPS 语句格式:CMPSB;字节串比较 CMPSW;字串比较 功能:将SI所指的源串中的一个字节(或字)存储单元中的数据与DI所指的目的串中的一个字节(或字)存储单元中的数据相减,并

26、根据相减的结果设置标志,但结果并不保存。即:(SI)(DI)。修改串指针,使之指向串中的下一个元素。当DF=0时,(SI)和(DI)增量;当DF=1时,(SI)和(DI)减量。,3串搜索指令SCAS语句格式:SCASB;字节串搜索 SCASW;字串搜索 功能:AL(字节)或AX(字)中的内容与DI所指的目的串中的一个字节(或字)存储单元中的数据相减,根据相减结果设置标志位,结果不保存,即:字节操作:(AL)(DI),字操作:(AX)(DI)。修改指针使之指向串中的下一个元素。当DF=0时,(DI)增量;当DF=1时,(DI)减量。,4从源串中取数指令LODS语句格式:LODSB;从字节串中取数

27、 LODSW;从字串中取数 功能:将SI所指的源串中的一个字节(或字)存储单元中的数据取出来送入AL(或AX)中。即:字节操作:(SI)AL,字操作:(SI)AX。修改指针SI,使它指向串中的下一个元素。当DF=0时,(SI)增量。当DF=1时,(SI)减量。,5往目的串中存数指令STOS语句格式:STOSB;往字节串中存数 STOSW;往字串中存数功能:将AL或AX中的数据送入DI所指的目的串中的字节(或字)存储单元中。即:字节操作:(AL)DI,字操作:(AX)DI。修改指针DI,使之指向串中的下一个元素。当DF=0时,(DI)增量)。当DF=1时,(DI)减量。,6重复前缀指令REP R

28、EPZ REPNZ(1)REP REP前缀用在MOVS、STOS、LODS指令前。功能:每执行一次串指令(CX)1,直到(CX)=0,重复执行结束。(2)REPZ 该指令一般用在CMP、SCAS指令前。功能:每执行一次串指令(CX)1,并判断ZF标志是否为0,只要(CX)=0或ZF=0,则重复执行结束。(3)REPNZ 该指令一般用在CMPS、SCAS 指令前。功能:每执行一次串指令(CX)1,并判断ZF标志是否为0,只要(CX)=0或ZF=1,则重复执行结束。,例:将22000H为首址的100个字节的数据送入首址为F3000H的存贮区中。分析:给出首地址,应采用下行,即 DF=0,MOV A

29、X,2000H MOV DS,AX MOV SI,2000H MOV AX,OF000H MOV ES,AX MOV DI,3000H MOV CX,0064H;100D=64H CLD;清OF REP MOVSB,六、控制转移指令 此类指令主要通过改变CS、IP的值达到改变程序运行顺序的目的。只改变IP,不改变CS,则为段内转移指令;CS与IP均改变则为段间转移,这两类指令的有直接转移和间接转移。,1、无条件转移指令JMP 段内直接短转移 JMP SHORT 标号;(IP)(IP)+Data8Data8是一个字节的补码数。范围:128+127,段内直接近转移 JMP NEAR PTR 标号;

30、(IP)(IP)+Data16Data16是两个字节的补码数。范围:32768+32767,段内间接转移 JMP WORD PTR opr;(IP)寄存器或存储器操作数例1:已知DS=2000H,BX=0100H,(20105H)=0450H,若执行:JMP BX;则IP=0100,即程序转向段内偏移地址为0100H处执行。JMP WORD PTR 5BX;则IP=(20000H+0100H+5H)=(20105H)=0450H,即程序转向段内偏移地址为0450H处执行。段间直接转移 JMP FAR PTR 远标号 指令中远标号用立即数的形式指出目标位置的段地址和偏移量,(CS)段地址,(IP

31、)偏移量。,段间间接转移 JMP DWORD PTR opr 将指令要转向的目标位置的段地址和偏移量保存在存储器的4个连续的地址单元中,其中前两个字节为偏移量,后两个字节为段地址。opr为存储器地址,DWORD PTR 表示存储器中储存的地址为双字。,2.条件转移 根据判断条件是否成立决定是否转移。按照判断条件的不同分为以下类型:单个标志、无符号数判断、有符号数判断、CX寄存器。条件转移都是段内直接短转移,即(IP)=(IP)+Data8类型的转移。,判断单个标志ZF:JZ(JE)ZF=1时转移,JNZ(JNE)ZF=0时转移SF:JS,JNSOF:JO,JNOPF:JP,JNPCF:JC,J

32、NC,判断无符号数的大小助记符中的意义:A:大于,B:小于,E:等于JB(JNAE),JNB(JAE)同JC,JNCJBE(JNA),JNBE(JA):判断CF and ZF,判断有符号数的大小助记符中的意义:G:大于,L:小于,E:等于JL(JNGE):SF xor OF=1JNL(JGE):SF xor OF=0JLE(JNG):(SF xor OF)and ZF=1JNLE(JG):(SF xor OF)and ZF=0,可见,使用比较大小的指令时,必须区分是有符号数还是无符号数。,判断CX寄存器JCXZ:CX=0,3.循环 循环指令的转移也都是段内直接短转移,即(IP)(IP)+Dat

33、a8类型的转移。LOOP判断CX是否等于零,不等于零则循环LOOPZ(LOOPE)判断CX是否等于零,不等于零且ZF=1则循环LOOPNZ(LOOPNE)判断CX是否等于零,不等于零且ZF=0则循环,注:由于循环计数器用CX,它为16位二进制数,因此循环次数范围1216(65536)。CX=1,循环1次,CX=0循环65536次。为了进入循环判断CX,当CX0则进入循环,当CX=0时不进入循环。,操作:CX CX1 根据判断结果确定是否循环 说明:循环指令不影响状态标志。如果目标位置的位移量超出Data8所能够表示的范围,则需要用JMP辅助来完成循环。,4、子程序调用指令子程序调用指令与前面无

34、条件转移的形式一样CALL D(disp16);IP堆栈,IPIP+D,段内直接调用CALL Z;IP堆栈,IPMEM,Z=RR WORD PRT MEM,段内间接调用CALL nn1,nn2;CS堆栈,IP堆栈,nn1CS,nn2IP,段间直接调用CALL DWORD PTR MEM;CS堆栈,IP堆栈,MEM IP,MEM+2 CS,段间间接调用,5、子程序返回指令RET;IP堆栈 出栈,段内返回RET M;IP堆栈,SPSP+M(16位),可修 改栈指令,带立即数的段内返回RET;IP堆栈,CS堆栈,段间返回RET M;IP堆栈,CS堆栈,SPSP+M(16 位),带立即数的段间返回,七

35、、中断指令(后面学)1中断调用指令INT 2中断返回指令IRET,八、标志位处理指令 CLC对CF清零,CF 0 STC对CF置位,CF 1 CMC 对CF取反,CF CF CLD对DF清零,DF 0 STD对DF置位,DF 1 CLI 对IF清零,IF 0 STI对IF置位,IF 1,九、处理机控制指令,HLT(Halt)停机 处理器停止工作,等到外部中断到来,中断结束后继续向下执行。WAIT(Wait)等待 处理器处于等待状态,等到外部的TEST引脚上的低电平到来。ESC(Escape)换码 该指令是一个交权的指令前缀,把指令给协处理处理。一般和WAIT指令一起使用,通过TEST引脚和协处

36、理器同步。,LOCK(Lock)封锁 该指令是一个前缀,使得使用此前缀的指令执行时一直维持总线封锁状态。,NOP(No Operation)空操作 一个字节的机器码,不执行任何操作,常用在调试程序时使用。,例:将F2000H单元中的十六进制数转换成ASC码,存于F3000H开始的单元中。,分析:09的ASCII码是3039H,AF的ASCII码是4146H,因此09的转换为+30H,AF的转换可为+30H+7。一个单元有两位十六进制数,因此一个单元的十六进制数应转换成两个单元的ASCII码。设计子程序SUBB,它将AL中的一位十六进制数转换成ASCII码结果仍在AL中。,开始,AL 2000H,AL 0FHAL,CALL SUBB,CALL SUBB,AL 2000H,AL 0F0H AL,INC SI,结束,AL右移四位,MAIN:MOV AX,0F000H,MOV DS,AX,MOV SI,3000H,MOV AL,2000H,AND AL,0FH,CALL SUBB,MOV SI,AL,INC SI,MOV AL,2000H,ANL AL,0F0H,CALL SUBB,MOV SI,AL,HLT,MOV CL,04H,ROL AL,CL;或 ROR AL,CL,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号