《《微型计算机》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《微型计算机》PPT课件.ppt(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三节第三节 80X86指令系统指令系统一、数据传送指令一、数据传送指令 1、通用数据传送指令(、通用数据传送指令(MOV、PUSH、POP、HCXG等)。等)。(1)最基本的传送指令:MOV DEST,SRC ;(SRC)(DEST)寄存器之间传送(除寄存器之间传送(除CS 和和 IP)MOV AL,BL MOV DL,CH MOV DX,BX MOV AX,ES MOV DS,AX8位数据传送16位数据传送通用REG 通用REG段REG 通用REGMOV CL,4MOV AX,03FFHMOV WORD PTR 100H,5678HMOV MEM,5 ;MEM是以定义的变量(符号地址)是以
2、定义的变量(符号地址)注意的问题:注意的问题:1、不能在两个存储单元之间传送。MOV 1000H,2000H2、立即数不能送段寄存器。MOV DS,300H 3、段寄存器之间不能传送。MOV DS,ES4、CS不能做目的但可做源操作数。MOV CS,AXMOV AX,CS 立即数送通用立即数送通用REG或存储器或存储器存储器与通用寄存器存储器与段寄存器寄存器(除寄存器(除CS、IP)与存储器之间传送)与存储器之间传送MOV AX,SIMOV DI,CXMOV 1000H,ALMOV DS,DATASI+BXMOV DESTBP+DI,ES5、操作数类型要匹配,字对字,字节对字节传送 MOV A
3、X,BL6、MOV指令不影响标志寄存器的值。200BUFFER1BUFFER2.MOV SI,OFFSET BUFFER1 MOV DI,OFFEST BUFFER2 MOV CX,200NEXT:MOV AL,SI MOV DI,AL INC SI INC DI DEC CX JNZ NEXT HLTBUFFER1、BUFFER2是符号地址(变量)先定义后使用。在这是字节是符号地址(变量)先定义后使用。在这是字节传送定义字节变量传送定义字节变量例题:将例题:将buffer1开始的开始的200个字节的数据移动到由个字节的数据移动到由buffer2指示的位置。指示的位置。扩展传送指令扩展传送指令
4、格式:格式:MOV SX DEST,SRC MOV ZX DEST,SRC功能:将源操作数由功能:将源操作数由8位扩展到位扩展到16位,送目的操作数;或将源操作位,送目的操作数;或将源操作数由数由16位扩展到位扩展到32位,送目的操作数。其中位,送目的操作数。其中SX表示带符号扩展,表示带符号扩展,ZX表示无符号扩展。表示无符号扩展。见见p76 例题和例题和 例题例题2、堆栈指令、堆栈指令PUSH SRC (源操作数可(源操作数可REG、M、立即数,目的隐含、立即数,目的隐含SP)PUSH AX ;通用REG PUSH DS ;段REG PUSH 1000H ;直接寻址,字单元。PUSH DA
5、TA ;直接寻侄(字变量)PUSH EBX PUSH DWORD PTR DI PUSHW 0A123H ;立即数入栈(16位)PUSHD 20H ;立即数入栈(立即数入栈(32位)位)PUSHA;将将16位通用寄存器圧入堆栈位通用寄存器圧入堆栈PUSHAD ;将将32位通用寄存器圧入堆栈位通用寄存器圧入堆栈POP DEST (目的可(目的可REG、M,源隐含,源隐含SP)关系与入栈对应注意:目的操作数不允许位注意:目的操作数不允许位CS以及立即数。以及立即数。3、交换指令、交换指令 XCHG、BSWAPXCHG DEST ,SRC 通用REG 通用REG ;将源操作数与目的操作数的 M M
6、内容互换。没有段REG和立即数,存储器之间不能交换。XCHG AL,BL XCHG BX,CX XCHG 2530H ;(CX)和2530H,2531H两单元内容交换。BSWAP REG 功能:将功能:将32位位通用寄存器中的第1个字节和第4个字节交换,第2个字节和第3个字节交换。见见p77 例题例题 4、累加器专用传送指令(查表指令)累加器专用传送指令(查表指令)1、换码指令、换码指令 XLAT XLAT (无操作数指令,隐含)(无操作数指令,隐含)功能:功能:(BX)+(AL)A L)源源 目的目的5、地址传送指令、地址传送指令LEA、LDS、LES 1)、取有效地址指令 LEA LEA
7、DEST,SRC;EA(M寻址)寻址)16位通用位通用REG LEA BX,2728H;将(相对于DS)偏移地址2728H送BX。LEA DX,BETABXSI;LEA BX,VAR;2)、取指示器到DS的指令LDS LDSEST,SRC ;(SRC是 32 位的逻辑地址指针,低字节的地址DEST是 16 位的通用REG)高 16 位 DS(隐含)低 16 位 DEST的REGSRC (32位,4字节)3)、取指示器到ES的指令LES6、标志传送指令、标志传送指令读取标志读取标志 LAHF ;(FR)低)低 8 位位 AH设置标志设置标志 SAHF ;AH (FR)低)低 8 位位标志进栈标志
8、进栈 PUSHF ;(FR 16位)位)(SP)标志出栈标志出栈 POPF ;(SP)(FR 16位)位)标志进栈标志进栈 PUSHFD ;(EFR 32位)位)SP)标志出栈标志出栈 POPFD ;(SP)(EFR 32位)位)例:例:将标志寄存器的将标志寄存器的 TF 置置 1。PUSHF POP AX OR AX,0100H PUSH AX POPF 二、输入二、输入/输出指令输出指令输入输入 IN AL/AX,OPRT 输出输出 OUT OPRT,AL/AX直接直接IN/OUT指令(口地址只能指令(口地址只能 8 位)位)IN AL,50H IN AX,80H OUT 44H,AL O
9、UT 70H,AX间接间接IN/OUT指令(口地址是指令(口地址是16 位,也可位,也可8 位。)位。)MOV DX,0FFF2H IN AL,DX MOV DX,87FEH MOV AL,40H OUT DX,ALCPU外设外设I/OI/OOUT DX,ALMOV DX,80H三、算术运算指令三、算术运算指令1、加法指令、加法指令不带进位的加法 ADD DEST,SRC ;DEST+SRC DEST带进位的加法 ADC DEST,SRC;DEST+SRC+CF DEST加 1 指令 INC DEST ;DEST+1 DEST(不影响不影响CF)SRC:n,通用REG,M三种寻址方式 DEST
10、:通用REG,M两种寻址方式 ADD CL,10 ;ADD AL,1000H ;ADD BX+DI,SI ADC AX,BX ;ADC BX+200H,CL ;ADC SI,2 INC SI ;INC WORT PTR BP+DI+500 立即数不能做目的操作数,立即数不能做目的操作数,DEST,SRC不能同为存储不能同为存储器寻址方式,类型要一致,段寄存器不能做操作数。器寻址方式,类型要一致,段寄存器不能做操作数。2、减法指令、减法指令不带借位减法不带借位减法 SUB DEST,SRC;DEST-SRC DEST带借位减法带借位减法 SBB DEST,SRC;DEST-SRC-CF DEST
11、减减 1 指令指令 DEC DEST;DEST-1 DEST求补指令求补指令 NEG DEST;0-DEST DEST比较指令比较指令 CMP DEST,SRC;DEST-SRC(不回送结果)(不回送结果)SRC与与DEST的要求同加法指令。的要求同加法指令。3、乘法指令(无符号、乘法指令(无符号MUL,带符号,带符号IMUL)MUL(IMUL)SRC;SRC字节:(字节:(AL)SRC AX SRC字:(字:(AX)SRC DX:AXSRC只能是通用只能是通用REG或或M寻址,不能是立即数。寻址,不能是立即数。只能是字节乘字节或字乘字只能是字节乘字节或字乘字存储器寻址时加类型说明,如存储器寻
12、址时加类型说明,如MUL BYTE PTR BX,MUL WORD PTR BX4、除法指令(无符号、除法指令(无符号DIV,带符号,带符号IDIV)DIV(IDIV)SRC;SRC字节:(字节:(AX)SRC AL(商)(商)AH(余数)(余数)SRC字:字:(DX:AX)SRC AX(商)(商)DX(余数)(余数)SRC不能是立即数不能是立即数若商超出字或字节表示的范围,自动产生若商超出字或字节表示的范围,自动产生 0 号中断号中断IDIV规定余数和被除数的符号相同规定余数和被除数的符号相同只能字除以字节,双字除以字,不满足需扩展。只能字除以字节,双字除以字,不满足需扩展。无符号扩展用无符
13、号扩展用 SUB AH,AH;字节字节 字字 SUB DX,DX;字字 双字双字带符号数扩展用带符号数扩展用 CBW ;字节(;字节(AL)字(字(AX)CWD ;字(;字(AX)双字(双字(DX:AX)CWDE ;AX EAXCDQ ;EAX EDX:EAX5、BCD码运算(十进制调整)指令码运算(十进制调整)指令BCD码的两种形式:压缩和非压缩码的两种形式:压缩和非压缩BCD码。码。压缩压缩BCD码指令:码指令:DAA(加法调整)、(加法调整)、DAS(减法调整)(减法调整)非压缩非压缩BCD码指令:码指令:AAA(加法调整)、(加法调整)、AAS(减法调整)(减法调整)AAM(乘法调整)
14、、(乘法调整)、AAD(除法调整)(除法调整)1、这类指令都是无操作数指令,隐含的源操作数是、这类指令都是无操作数指令,隐含的源操作数是AL(AX),目的是),目的是AL(AX),即对),即对AL的内容调整,调整的结果再放的内容调整,调整的结果再放AL。2、先执行二进制运算指令如、先执行二进制运算指令如ADD、SUB、MUL等(除法除外),并将结等(除法除外),并将结果放果放AL(AX),然后紧接着执行),然后紧接着执行BCD码指令。码指令。例:例:MOV AL,56H MOV AL,09H MOV AL,05 ADD AL,34H SUB AL,04H MOV BL,04 DAA AAS M
15、UL BL AAM四、逻辑运算和移位指令四、逻辑运算和移位指令1、逻辑运算指令、逻辑运算指令与与 AND DEST,SRC;两位都是两位都是 1,结果为,结果为 1,否则为,否则为 0。用于屏蔽。用于屏蔽。或或 OR DEST,SRC;两位都是两位都是 0,结果为,结果为 0,否则为,否则为 1。用于置位。用于置位。异或异或 XOR DEST,SRC;两位相同为;两位相同为 0,两位不同为,两位不同为 1。指定位取反,。指定位取反,或自身清或自身清 0。求反求反 NOT DEST;按位取反。;按位取反。測试測试 TEST DEST,SRC;执行与的操作,不回送结果。;执行与的操作,不回送结果。
16、DEST:通用:通用REG、M 按位计算(位操作指令)按位计算(位操作指令)SRC:通用:通用REG、M、n 可可 8 位或位或 16 位。位。2、移位指令、移位指令SAL (算术左移)(算术左移)SAR (算术右移)(算术右移)SHL (逻辑左移)(逻辑左移)SHR (逻辑右移)(逻辑右移)1、当、当 n=1时,时,1 写在指令中,如常写在指令中,如常SHL AL,1 当当 n大于大于 1 时,将计数值时,将计数值 n 写入写入CL,再把,再把CL写入指令,如写入指令,如 MOV CL,3 SHL BX,CL2、这类指令都把、这类指令都把CF看做第看做第 9 位或第位或第 17 位参加运算。
17、位参加运算。3、算术移位是对带符号数,逻辑移位是对无符号数而言。、算术移位是对带符号数,逻辑移位是对无符号数而言。SAL要判要判断断OF,OF=1结果无效(符号变),结果无效(符号变),SAR要保持符号位不变。要保持符号位不变。DEST,计数值 n移位指令操作过程移位指令操作过程CF000最低位最低位最低位最低位最高位最高位最高位最高位CFCFCFSALSHLSARSHR3、循环移位指令、循环移位指令CFCFCFCF不带进位的循环左移不带进位的循环右移带进位的循环左移带进位的循环右移ROLRORRCLRCR4 4、位操作指令、位操作指令1)位测试)位测试和位设置和位设置(bit test)BT
18、 DEST,SRC ;将将SRC指定的指定的DEST中的位值复制到中的位值复制到CF中中BTC DEST,SRC ;C代表将对应位代表将对应位CLEARBTR DEST,SRC ;R代表将对应位代表将对应位RESETBTS DEST,SRC ;S代表将对应位代表将对应位SET说明:说明:(1 1)目目标标操操作作数数DST是是16/3216/32位位的的通通用用寄寄存存器器或或存存储储器器,用用于于指指定定要要测测试试的的内内容容;源源操操作作数数SRC是是8 8位位立立即即数数或或与与目目标标操操作作数数位位数数相相等等的的通通用用寄寄存存器器,用于指定要测试的位。用于指定要测试的位。(简)
19、简)(2 2)如如果果源源操操作作数数是是立立即即数数,或或源源操操作作数数和和目目标标操操作作数数均均为为寄寄存存器器,则则源源操操作作数数除除以以目目标标操操作作数数的位数,其余数为的位数,其余数为i i(要测试的位)。(要测试的位)。(3 3)如如果果源源操操作作数数为为寄寄存存器器,目目标标操操作作数数为为存存储储器器,则则将将该该存存储储器器的的地地址址加加上上源源操操作作数数除除以以8 8的的商商,其其和和就就是是实实际际测测试试单单元元的的地地址址,源源操操作作数数除除以以8 8的的余余数数i i就就是是实实际际测测试试单单元元中中要要测测试试的的位位。寄寄存存器器中中的的源源操
20、作数是有符号整数。操作数是有符号整数。设设 SRC SRC 除除以以 DST DST 的的长长度度后后所所得得到到的的商商为为disp disp,所所得得余余数数为为offsetoffset。那那么么这这些些指指令令要要测测试试的的位位是是根据如下方法确定的:根据如下方法确定的:如如果果DSTDST是是寄寄存存器器,则则offsetoffset是是寄寄存存器器操操作作数数DSTDST中中要测试的位的位号。要测试的位的位号。如如果果DSTDST是是存存储储单单元元,存存储储器器操操作作数数DSTDST的的偏偏移移与与dispdisp相相加加之之和和是是实实际际测测试试存存储储单单元元的的偏偏移移
21、,则则offsetoffset是该是该存储单元中要测试位的位号。存储单元中要测试位的位号。操操作作数数SRCSRC取取符符号号整整数数值值,所所以以当当SRCSRC为为1616位位时时,可可访访问问(32K32K)至至(32K32K1 1)范范围围内内的的位位串串,当当SRCSRC是是3232位位时时,可可访访问问(2G2G)至至(2G2G1 1)范范围围内的位串。内的位串。2 2)位扫描指令组位扫描指令组 位位扫扫描描指指令令组组含含有有以以下下两两条条指指令令:前前向向扫扫描描指指令令BSFBSF和反向位扫描指令和反向位扫描指令BSRBSR。格式:格式:BSF BSF DST,SRC BS
22、R BSR DST,SRC 指令功能:指令功能:前前向向位位扫扫描描指指令令BSFBSF的的功功能能是是从从低低到到高高逐逐位位扫扫描描源源操操作作数数,并并将将遇遇到到的的第第一一个个含含1 1的的位位的的位位号号送送目目标标操作数;操作数;反反向向位位扫扫描描指指令令BSRBSR从从高高到到低低逐逐位位扫扫描描源源操操作作数数,将遇到的第一个含将遇到的第一个含1 1的位的位号送目标操作数。的位的位号送目标操作数。说明:说明:(1 1)目目标标操操作作数数和和源源操操作作数数可可以以是是16/3216/32位位的的寄寄存器或存储单元,两者的位数(长度)必须相等。存器或存储单元,两者的位数(长
23、度)必须相等。(2 2)如如果果源源操操作作数数为为0 0,则则指指令令执执行行后后零零标标志志ZFZF置置1 1,目标操作数的值不确定;否则零标志,目标操作数的值不确定;否则零标志ZFZF被清被清0 0。例例:下下列列程程序序段段处处理理AXAX中中的的信信息息,仅仅保保留留可可能能有有的的最最右右和和最左的各一位为最左的各一位为1 1的位。若,则程序段执行后。的位。若,则程序段执行后。XOR DX,DX;(;(DX)0000,0000,0000,0000 BSF CX,AX;(;(CX)0000,0000,0000,0001 JZ DONE;若位号为;若位号为0,则为最右边,则为最右边 B
24、TS DX,CX;(DX)0000,0000,0000,0010 BSR CX,AX;(CX)0000,0000,0000,1101 JZ DONE;BTS DX,CX;(DX)0010,0000,0000,0010DONE:MOV AX,DX3)进位标志指令)进位标志指令CLCSTCCMC4)条件设置字节指令)条件设置字节指令格式:格式:SETcond DEST或:或:SET SETXX OPR OPR 指令功能:若被测试条件指令功能:若被测试条件XX成立,将成立,将OPROPR置置1 1,否则清零。,否则清零。说明:说明:(1 1)“条条件件”XX是是指指令令助助记记符符的的一一部部分分,
25、是是SETSET指指令令所所测测试试的内容,该条件与转移指令的条件相同,即包括:的内容,该条件与转移指令的条件相同,即包括:SETZ/SETE SETZ/SETE 等于等于 SETNZ/SETNE SETNZ/SETNE 不等于不等于 SETS/SETNS SETS/SETNS 为负为负/为正为正 SETO/SETNO SETO/SETNO 有溢出有溢出/无溢出无溢出 SETP/SETPE SETP/SETPE 校验为偶校验为偶 SETNP/SETPO SETNP/SETPO 校验为奇校验为奇 SETC/SETNC SETC/SETNC 有进位有进位/无进位无进位 SETB/SETNAE SE
26、TB/SETNAE 低于低于/不高于等于不高于等于 STEBE/SETNA STEBE/SETNA 低于等于低于等于/不高于不高于 SETA/SETNBE SETA/SETNBE 高于高于/不低于等于不低于等于SETAE/SETNB SETAE/SETNB 高于等于高于等于/不低于不低于SETL/SETNGE SETL/SETNGE 小于小于/不大于等于不大于等于SETLE/SETNG SETLE/SETNG 小于等于小于等于/不大于不大于SETG/SETNLE SETG/SETNLE 大于大于/不小于等于不小于等于SETGE/SETNL SETGE/SETNL 大于等于大于等于/不小于不小于
27、SETCXZ/SETECXZ CX=0/ECX=0SETCXZ/SETECXZ CX=0/ECX=0(2 2)OPROPR只只能能是是8 8位位的的寄寄存存器器或或存存储储器器,用用于于存存放放测测试结果。试结果。(3 3)本本指指令令的的前前面面一一般般有有影影响响标标志志位位的的CMPCMP或或TESTTEST指令。指令。例例SETZ BLSETZ BL;若;若ZF=1ZF=1,则,则BL=1BL=1,否则,否则BL=0BL=0SETG DHSETG DH;若;若SFOF=0SFOF=0且且ZF=0 ZF=0,则,则DH=1DH=1,否则,否则DH=0DH=0五、控制转移指令五、控制转移指
28、令1、转移指令、转移指令 1)无条件转移指令)无条件转移指令 JMP DEST(目标地址)(目标地址)2)条件转移指令(段内直接短转移)条件转移指令(段内直接短转移)JCC DEST CC表示条件,目标地址常用标号表示。表示条件,目标地址常用标号表示。满足条件,转到目标地址执行,否则顺序执行。满足条件,转到目标地址执行,否则顺序执行。(1)条件转移指令都是以标志的状态作为判断条件。)条件转移指令都是以标志的状态作为判断条件。(2)是二字节指令。)是二字节指令。(3)可分三类)可分三类 (1)、简单的条件转移指令(单个标志做判断条件)、简单的条件转移指令(单个标志做判断条件)JC JNC JE/
29、JZ JNE/JNZJS JNS JO JNO JPJNP ZFSFOFPFJCXZ (CX=0 转)CF(2)、无符号数条件转移(测试标志)、无符号数条件转移(测试标志 CF、ZF)JB JNB JA JNA(3)带符号数条件转移(测试)带符号数条件转移(测试 SF、OF、ZF)JL JNL JG JNG 2、循环控制指令、循环控制指令 LOOP OPRD :CX 0 循环循环 LOOPNE OPRD :CX 0 且且 ZF=0 循环循环 LOOPE OPRD :CX 0 且且 ZF=1 循环循环 1)目的地址范围)目的地址范围-128 +127 2)先将循环次数送)先将循环次数送CX中中
30、3)指令执行时,先将)指令执行时,先将CX减减 1,直到,直到CX=0 循环结束。循环结束。ZF不受不受CX影影 响。响。4)后两条指令,两个条件只要一个条件不满足,循环结束。)后两条指令,两个条件只要一个条件不满足,循环结束。3、过程调用和返回指令、过程调用和返回指令调用指令调用指令 CALL 目标地址(标号)目标地址(标号)返回指令返回指令 RETCALL指令有将断点(返回地址)进栈操作,指令有将断点(返回地址)进栈操作,RET指令有将断点出栈指令有将断点出栈的操作。的操作。CALL A1RET返回地址返回地址过程入口A1.返回地址是CALL指令的下一条指令,CALL是三字节指令可段内直接
31、、间接段间直接、间接。4、中断指令和中断返回指令、中断指令和中断返回指令例:INT 21H (二字节指令)若该指令的地址是049E:1002H,则下一条指令的地址是049E:1004H CS SP=01FEHSP=01FCHSS:0。INT 21H 执行前堆栈情况执行前堆栈情况SP=01FCHSP=01FAH SP=01F8H。(FR)1004H SP=01F6H 094EH执行情况执行情况INT 21H后后SS:0。标志寄存器进栈标志寄存器进栈断点进栈断点进栈TF=0,IF=00:0002H0:0000HIPCS中断类型中断类型 00:03FFH 0:03FCHIPCS中断类型中断类型255
32、。0:0084H 0:0086H 中断类型中断类型 21H 21H*4=84H,85H 86H,87HIPCSFFF0HFE6EH中断向量表中断向量表主程序主程序。1002H1003H 1004H INT 21H的机器代码的机器代码 FFF0:FE6EH。IRET断断点点(断点)(断点)子子程程序序 8048680486串串操操作作的的基基本本单单位位在在字字节节和和字字的的基基础础上上增增加加了了双双字字。以以双双字字为为元元素素的的串串操操作作指指令令的的功功能能、使使用用方方法法、对对标标志志位位的的影影响响等等,和和以以字字节节和和字字为为元元素素的的串串操操作作指指令令相相同同。在在
33、双双字字基基本本串串操操作作后后源源串串指指针针和和目目的的串串指指针针加加4 4或或减减4 4。如如果果使使用用了了“重重复复前前缀缀”指令,则重复执行的次数由指令,则重复执行的次数由CX/ECXCX/ECX中的值来决定。中的值来决定。六、串操作指令六、串操作指令 五条基本串操作指令五条基本串操作指令MOVSB/MOVSW ;传送字节传送字节/字字 DS:SI ES:DICMPSB/CMPSW ;比较指令比较指令 ES:DI 与与 DS:SI 比较(相减)比较(相减)SCASB/SCASW ;扫描指令扫描指令 ES:DI 与与 AL/AX 比较比较LODSB/LODSW ;装入(读)指令装入
34、(读)指令 DS:SI AL/AXSTOSB/STOSW ;存入(写)指令存入(写)指令 AL/AX ES:DI 三条前缀指令三条前缀指令REP ;当当 CX 0 时重复,时重复,CX 1 CX,可加在,可加在 MOVS 和和 STOS 前前REPE/REPZ ;当当 ZF 1且且 CX 0 时重复时重复 (两数相等(两数相等/为零重复)为零重复)即即ZF=1 或或 CX=0 停止。停止。REPNE/REPNZ;当当ZF 1 且且 CX 0 时重复时重复(两数不等(两数不等/不为零重复)不为零重复)即即ZF=1或或CX=0停止。停止。REPE和和REPNE可加在可加在CMPS和和SCAS前。前
35、。REPNE用于找第一个相等的元素,用于找第一个相等的元素,REPE用于找第一个不相等的元素。用于找第一个不相等的元素。使用字串指令时:使用字串指令时:1、对、对 DS、SI、ES、DI 赋值(赋值(DS和和ES可隐含)可隐含)这类指令都是用这类指令都是用SI对源操作数进行间接寻址并在对源操作数进行间接寻址并在DS段,用段,用DI对对目的操作数进行间接寻址并在目的操作数进行间接寻址并在ES段。段。2、将字串长度送、将字串长度送 CX(计数值)(计数值)3、设置方向标志、设置方向标志DF的值:若的值:若SI、DI是起址,使是起址,使DF=0(CLD),),地址加地址加 1或加或加 2修改,若修改
36、,若SI、DI是末地址,使是末地址,使DF=1(STD)地址减地址减 1或减或减 2修改。修改。4、加重复前缀时,指令执行的顺序是:、加重复前缀时,指令执行的顺序是:(1)先判断)先判断 CX=0?CX=0 退出,退出,CX 0,CX-1 CX (2)执行字串指令)执行字串指令 (3)修改)修改SI、DI 的内容的内容 (4)回到()回到(1)七、处理器控制指令七、处理器控制指令(一)、对标志操作的指令(一)、对标志操作的指令 1、CLC ;使;使 CF=0 STC ;使使 CF=1 CMC;使;使 CF=CF 2、CLD;使;使 DF=0 STD ;使;使 DF=1 3、CLI;使使 IF=
37、0 STI ;使使 IF=1(二)外部同部指令(二)外部同部指令 1、HLT ;暂停;暂停 2、NOP ;空操作;空操作 3、WAIT;等待;等待 4、ESC;交权交权 5、LOOK ;封锁;封锁MOV SI,5000H MOV DI,5004HMOV AX,SISUB AX,DIMOV SI,AXINC SI INC SI ADD SI,2INC DI ADD DI,2INC DIMOV AX,SISBB AX,DIMOV SI,AXPUSHF ADD SI,2 ADD DI,2POPF例:将例:将5000H开始存放的双字与开始存放的双字与5004H开始存放的开始存放的双字相减,结果存放到双
38、字相减,结果存放到5000H开始存放的位置。开始存放的位置。八、中断指令与八、中断指令与DOS功能调用功能调用中断指令格式:中断指令格式:INT n功能:产生中断类型码位功能:产生中断类型码位n的软中断,指令中含操作码和中断类型的软中断,指令中含操作码和中断类型码,码,n为为8位。位。软中断执行过程:软中断执行过程:将将FLAGS(或或EFLAGS)圧入堆栈;圧入堆栈;清除清除TF和和IF标志位;标志位;CS,IP/EIP圧入堆栈;圧入堆栈;实地址模式下,实地址模式下,n4获取中断矢量表地址指针,获取中断矢量表地址指针,n8获取中获取中断描述符表地址指针;断描述符表地址指针;根据地址指针,从中
39、断矢量表或中断描述符表中取出中断服根据地址指针,从中断矢量表或中断描述符表中取出中断服务程序地址送务程序地址送IP/EIP和和CS,控制程序转移去执行中断服务程序。,控制程序转移去执行中断服务程序。遇到遇到中断返回指令中断返回指令,出栈,出栈CS,IP/EIP和和FLAGS(或或EFLAGS),返回原断点。,返回原断点。中断返回指令格式中断返回指令格式:IRET/IRETDIRET ;与;与IP,CS,FLAGS相关相关IRETD ;与;与EIP,CS,EFLAGS相关相关操作系统 MS-DOS 的结构用用户户程程序序 命令处理模块命令处理模块磁盘管理模块磁盘管理模块基本输入输出模块基本输入输
40、出模块软件中断和系统调用键盘命令ROM BIOSDOS功能调用主要学习系统功能调用中的主要学习系统功能调用中的 INT 21H中的五个。中的五个。使用方法:使用方法:传送入口参数到规定的寄存器传送入口参数到规定的寄存器把功能号送到把功能号送到AH寄存器寄存器用用INT 21H转入系统调用入口转入系统调用入口运行后可获取出口参数运行后可获取出口参数(二)、DOS系统功能调用(INT 21H)常用功能调用常用功能调用 1、键盘输入单字符并显示、键盘输入单字符并显示 调用号:调用号:01,无入口参数。,无入口参数。MOV AH,01 INT 21H 功能:等待键入,检查是否是功能:等待键入,检查是否
41、是Ctr-Break键,是,退键,是,退出。不是将键入的字符送出。不是将键入的字符送 AL 寄存器并显示。寄存器并显示。2、键盘输入字符串、键盘输入字符串调用号:调用号:0AH,入口参数:,入口参数:DS:DX=缓冲区首地址缓冲区首地址功能:将键盘键入的以功能:将键盘键入的以 ENTER(0DH)结尾的字符串写到)结尾的字符串写到DS:DX指定的内存区。为此,应先用程序设置一内存区。指定的内存区。为此,应先用程序设置一内存区。例例 BUF DB 20 ;设的最大长度;设的最大长度(含含0DH)DB?;空出;空出,由由DOS最后填实际长度最后填实际长度(不含不含0DH)DB 20 DUP (?)
42、;开始写字符;开始写字符 MOV DX,OFFSET BUF MOV AH,0AH INT 21H 注注:键入字符超出缓冲区范围键入字符超出缓冲区范围,超出的字符丢失且响铃警告超出的字符丢失且响铃警告,若小于设若小于设置范围置范围,保持原来内容。保持原来内容。14H?H41H0DH.BUF+0 1 222实际长度实际长度193、输出单字符、输出单字符 调用号:调用号:02,入口参数:入口参数:DL 功能:将功能:将DL的内容显示(的内容显示(DL=待输出字符的待输出字符的ASII码)码)MOV DL,A MOV AH,02 INT 21H 程序执行后,在显示器上显示字符程序执行后,在显示器上显
43、示字符 A4、输出字符串、输出字符串 调用号:调用号:09H,入口参数:入口参数:DS:DX(缓冲区首地址)(缓冲区首地址)功能:将缓冲区内以功能:将缓冲区内以&结尾的字串显示结尾的字串显示,&(24H)不显示。不显示。BUF DB ABCDEF&MOV DX,OFFSET BUF MOV AH,09H INT 21H执行结果在显示器上显示执行结果在显示器上显示 ABCDEF5、返回操作系统、返回操作系统 调用号:调用号:4CH ,无入口参数。无入口参数。MOV AH,4CH INT 21H 结束当前程序,返回操作系统。结束当前程序,返回操作系统。6、设置中断向量、设置中断向量 调用号:调用号:25H,入口参数:,入口参数:AL=中断类型号中断类型号 DS:DX=中断程序入口地址。中断程序入口地址。若中断类型号是若中断类型号是 40,中断程序入口地址,中断程序入口地址 300:2400H,装中断向量。,装中断向量。MOV AX,300H MOV DS,AX MOV DX,2400H MOV AH,25H MOV AL,40 INT 21H作业作业第三版第三版 P105 P105 习题与思考题习题与思考题1、3、4、7、10、11、15、22、2326、28、29、30、31
限制150内