《微机原理与接口技术(楼顺天)第3章ppt课件.ppt》由会员分享,可在线阅读,更多相关《微机原理与接口技术(楼顺天)第3章ppt课件.ppt(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、本教案内容本教案内容第第3章章 8086CPU指令系统指令系统1.汇编语言指令汇编语言指令2.8086指令分类指令分类3.数据与转移地址的数据与转移地址的寻址方式寻址方式4.数据传送类指令数据传送类指令5.算术运算类指令算术运算类指令6.逻辑运算类指令逻辑运算类指令7.移位类指令移位类指令8.标志位操作指令标志位操作指令9.转移指令转移指令10.循环控制指令循环控制指令11.子程序调用返回子程序调用返回指令指令12.中断调用返回指中断调用返回指令令13.字符串操作指令字符串操作指令14.I/O输入输出指令输入输出指令15.其它指令其它指令16.宏指令宏指令助记符格式助记符格式功功 能能 说说
2、明明与与 AND DST,SRC(DST) ( DST) ( SRC)或或 OR DST,SRC(DST) ( DST) ( SRC)异或异或 XOR DST,SRC(DST) ( DST) ( SRC)测试测试 TEST DST,SRC(DST) (SRC)置各标志位置各标志位非非 NOT DST(DST)中各位取反中各位取反5 5条逻辑运算类指令书写格式与完成的功能如条逻辑运算类指令书写格式与完成的功能如下表所示。下表所示。 3.6 3.6 逻辑运算类指令逻辑运算类指令 指令的运算都是按位进行的。指令的运算都是按位进行的。 NOTNOT指令是将操作数的各位取反,指令是将操作数的各位取反,其
3、它指令是两个操作数的对应位实其它指令是两个操作数的对应位实行相应的逻辑运算。指令可以有字行相应的逻辑运算。指令可以有字节操作,也可以有字操作。节操作,也可以有字操作。3.6 3.6 逻辑运算类指令逻辑运算类指令 指令执行后对标志位的影响情况:指令执行后对标志位的影响情况: 除除NOTNOT指令对标志位不产生影指令对标志位不产生影响外,其余指令将使响外,其余指令将使CFCF、OFOF置置0 0,并以正常规则设置并以正常规则设置SFSF、ZFZF和和PFPF的状的状态。态。3.6 3.6 逻辑运算类指令逻辑运算类指令3.6 3.6 逻辑运算类指令逻辑运算类指令1. 1. 逻辑与指令(逻辑与指令(A
4、NDAND)格式:格式: AND DST, SRC AND DST, SRC ;(DST)(DST)(SRC) (DST)(DST)(SRC) ,并置各标志位,并置各标志位ANDAND完成将完成将DSTDST、SRCSRC的内容进行相与操作,的内容进行相与操作,其结果保存在其结果保存在DSTDST中,并设置中,并设置PSWPSW中的标中的标志位。指令中的志位。指令中的DSTDST可以取通用寄存器、可以取通用寄存器、存储单元,存储单元,SRCSRC可以取通用寄存器、存可以取通用寄存器、存储单元和立即数,但储单元和立即数,但DSTDST和和RSCRSC不能同时不能同时为存储单元。为存储单元。 (“
5、And” byte or wordAnd” byte or word)3.6 3.6 逻辑运算类指令逻辑运算类指令 例例3.20 3.20 求两个操作数的逻辑与。求两个操作数的逻辑与。解:设解:设VAR1VAR1为字型变量,则有:为字型变量,则有:ANDAND AXAX,BXBX;(AX)(AX)(BX)(AX)(AX)(BX)ANDAND AL, 156AL, 156 ;(AL)(AL)1001 1100B (156=1001 1100B)(AL)(AL)1001 1100B (156=1001 1100B)ANDAND VAR1, 78AAHVAR1, 78AAH ;(VAR1)(VAR1
6、)78AAH(VAR1)(VAR1)78AAHANDAND CX, SICX, SI ;(CX)(CX)(CX)(CX)((SISI)) )3.6 3.6 逻辑运算类指令逻辑运算类指令 2.2.逻辑测试指令(逻辑测试指令(TESTTEST)格式:格式:TEST DST, SRC TEST DST, SRC ; (DST)(SRC) (DST)(SRC) ,并置各标志位,并置各标志位说明:说明:TESTTEST为逻辑测试指令,它与为逻辑测试指令,它与ANDAND指令非常指令非常类似,完成将类似,完成将DSTDST、SRCSRC的内容进行相与操的内容进行相与操作,其结果不保存,并设置作,其结果不保
7、存,并设置PSWPSW中的标志中的标志位。指令中的位。指令中的DSTDST和和SRCSRC的说明等同于的说明等同于ANDAND指令。指令。 (“Test” byte or wordTest” byte or word)3.6 3.6 逻辑运算类指令逻辑运算类指令 例例3.21 3.21 求两个操作数的逻辑测试。求两个操作数的逻辑测试。解:设解:设VAR1VAR1为字型变量,则有:为字型变量,则有:TESTTEST AL, 156AL, 156 ; (AL)1001 1100B (156=1001 1100B)(AL)1001 1100B (156=1001 1100B)TESTTEST VAR
8、1, 78AAHVAR1, 78AAH; (VAR1)78AAH(VAR1)78AAHTESTTEST AXAX,BXBX; (AX)(BX)(AX)(BX)TESTTEST CX, SICX, SI; (CX)(CX)((SISI)) ) 3.6 3.6 逻辑运算类指令逻辑运算类指令 3.3.逻辑或指令(逻辑或指令(OROR)格式:格式:OR DST, SRC OR DST, SRC ; (DST)(DST)(SRC) (DST)(DST)(SRC) ,并置各标志位,并置各标志位说明:说明:OROR为逻辑或指令,它完成将为逻辑或指令,它完成将DSTDST、SRCSRC的内的内容进行相或操作,
9、其结果保存在容进行相或操作,其结果保存在DSTDST中,并中,并设置设置PSWPSW中的标志位。指令中的中的标志位。指令中的DSTDST和和SRCSRC的的说明等同于说明等同于ANDAND指令。指令。 (“Inclusive or” byte or wordInclusive or” byte or word)3.6 3.6 逻辑运算类指令逻辑运算类指令 例例3.22 3.22 求两个操作数的逻辑或。求两个操作数的逻辑或。解:设解:设VAR2VAR2为字节型变量,则有:为字节型变量,则有:ORORAL, 0110 0001BAL, 0110 0001B ;(AL)(AL) 0110 0001B
10、(AL)(AL) 0110 0001B ORORVAR2, 0FHVAR2, 0FH ;(VAR2)(VAR2) 0FH(VAR2)(VAR2) 0FHORORAXAX,BXBX;(AX)(AX) (BX)(AX)(AX) (BX)ORORBX, DIBX, DI ;(BX)(BX) (BX)(BX) ((DIDI)) )3.6 3.6 逻辑运算类指令逻辑运算类指令 4.4.逻辑异或指令(逻辑异或指令(XORXOR)格式:格式:XOR DST, SRC XOR DST, SRC ;(DST)(DST)(SRC) (DST)(DST)(SRC) ,并置各标志位,并置各标志位说明:说明:XORXO
11、R为逻辑异或指令,它完成将为逻辑异或指令,它完成将DSTDST、SRCSRC的内容进行异或操作,其结果保存在的内容进行异或操作,其结果保存在DSTDST中,并设置中,并设置PSWPSW中的标志位。指令中的中的标志位。指令中的DSTDST和和SRCSRC的说明等同于的说明等同于ANDAND指令。指令。 “Exclusive or” byte or wordExclusive or” byte or word例例3.23 3.23 求两个操作数的逻辑异或。求两个操作数的逻辑异或。解:设解:设VAR2VAR2为字节型变量,则有:为字节型变量,则有:XORXOR AL, 0110 0001BAL, 0
12、110 0001B ;(AL)(AL) 0110 0001B(AL)(AL) 0110 0001B XORXOR VAR2, 0FHVAR2, 0FH ;(VAR2)(VAR2) 0FH(VAR2)(VAR2) 0FHXORXOR AXAX,BXBX;(AX)(AX) (BX)(AX)(AX) (BX)XORXOR BX, DIBX, DI ;(BX)(BX) (BX)(BX) ((DIDI)) )3.6 3.6 逻辑运算类指令逻辑运算类指令 3.6 3.6 逻辑运算类指令逻辑运算类指令 5.5.逻辑非指令(逻辑非指令(NOTNOT)格式:格式:NOT DSTNOT DST;(DST)(DST
13、)说明:说明:NOTNOT为逻辑非指令,它完成将为逻辑非指令,它完成将DSTDST的内容进的内容进行按位取反的操作,其结果保存在行按位取反的操作,其结果保存在DSTDST中,中,但但NOTNOT指令不影响指令不影响PSWPSW中的标志位。指令中的标志位。指令中的中的DSTDST可以取通用寄存器和存储单元。可以取通用寄存器和存储单元。 (“Not” byte or wordNot” byte or word)例例3.24 3.24 求操作数的逻辑非。求操作数的逻辑非。解:设解:设VAR1VAR1为字型变量,则有:为字型变量,则有:NOTNOT ALAL;(AL) (AL) NOTNOT VAR1
14、VAR1 ;(VAR1)(VAR1)3.6 3.6 逻辑运算类指令逻辑运算类指令 )AL()VAR1(3.6 3.6 逻辑运算类指令逻辑运算类指令 逻辑运算指令可以方便地对寄存器和存储逻辑运算指令可以方便地对寄存器和存储单元中的数据进行逻辑操作。利用逻辑运单元中的数据进行逻辑操作。利用逻辑运算指令可通过适当选用源操作数的代码,算指令可通过适当选用源操作数的代码,使目的操作数的某些位进行使目的操作数的某些位进行清零、置位及清零、置位及取反取反操作,例如:操作,例如: 3.6 3.6 逻辑运算类指令逻辑运算类指令 OR OL, 03H OR OL, 03H ;将;将CLCL的位的位0 0,1 1置
15、置1 1,其余位不变,其余位不变AND AL, 0F5HAND AL, 0F5H;将;将ALAL的位的位1 1,位,位3 3清零清零XOR AH, 0FH XOR AH, 0FH ;将;将AHAH的低的低4 4位取反,高位取反,高4 4位不变位不变TEST AL, 02H TEST AL, 02H ;测试;测试ALAL的位的位1 1是否为是否为0 0,JZ ZER1 ; JZ ZER1 ; 若为若为0 0则转移到则转移到ZER1ZER1XOR AX, AX XOR AX, AX ;AXAX清清0 0AND AL, 5FH AND AL, 5FH ;将;将ALAL中字母的中字母的ASCIIASC
16、II码变换成码变换成 “ “大写大写”字母的字母的ASCIIASCII码码OR AL, 20H OR AL, 20H ;将;将ALAL中字母的中字母的ASCIIASCII码变换成码变换成 “ “小写小写”字母的字母的ASCIIASCII码码3.6 3.6 逻辑运算类指令逻辑运算类指令 作业:作业:10 1310 133.7 3.7 移位类指令移位类指令在在80868086指令系统中,移位类指令有:指令系统中,移位类指令有:1.1. 逻辑右移逻辑右移SHRSHR2.2. 算术右移算术右移SARSAR3.3. 逻辑逻辑/ /算术左移算术左移SHL/SALSHL/SAL4.4. 循环右移循环右移RO
17、RROR5.5. 循环左移循环左移ROLROL6.6. 带进位循环右移带进位循环右移RCRRCR7.7. 带进位循环左移带进位循环左移RCLRCL3.7 3.7 移位类指令移位类指令 共同特点:共同特点:p正常影响正常影响PSWPSW的的SFSF、PFPF、ZFZF、CFCF和和OFOF标标志位,其中志位,其中CFCF表示指令所移出的一位,表示指令所移出的一位,OFOF1 1表示移位前后符号位发生了变化。表示移位前后符号位发生了变化。p移位类指令具有相同的指令格式移位类指令具有相同的指令格式 SHR DST, CNT SHR DST, CNT 3.7 3.7 移位类指令移位类指令 DSTDST
18、可以取通用寄存器和存储单元,可以取通用寄存器和存储单元,CNTCNT为移位次为移位次数,它只有两种取值:数,它只有两种取值:uCNT=1CNT=1,表示指令移,表示指令移1 1位;位;uCNT=CLCNT=CL,表示移位次数由,表示移位次数由CLCL的内容决定。的内容决定。在逻辑右移指令中,在最高位填入在逻辑右移指令中,在最高位填入0 0;在算术右;在算术右移指令中,在最高位填入符号位(即最高位);移指令中,在最高位填入符号位(即最高位);在逻辑在逻辑/ /算术左移指令中,在最低位填入算术左移指令中,在最低位填入0 0;在循;在循环右移指令中,在最高位填入其最低位的值,形环右移指令中,在最高位
19、填入其最低位的值,形成循环移位;在循环左移指令中,在最低位填入成循环移位;在循环左移指令中,在最低位填入其最高位的值;在带进位循环右移和左移指令中,其最高位的值;在带进位循环右移和左移指令中,将将DSTDST和和CFCF看成整体进行循环位操作。看成整体进行循环位操作。 1.1.移位指令移位指令逻辑移位逻辑移位左移左移 SHL DST, CNTSHL DST, CNT 右移右移 SHR DST, CNTSHR DST, CNT0CFD D7 7 D D1 1 D D0 0CF0D D7 7 D D1 1 D D0 0移位次数移位次数3.7 3.7 移位类指令移位类指令右移右移1 1位操作相当于将
20、位操作相当于将DSTDST除以除以2 2;左移左移1 1位操作相当于将位操作相当于将DSTDST乘以乘以2 2。例例. . SHR AX, 1SHR AX, 1 ; ;将将AXAX的内容右移的内容右移1 1位,最位,最 ; ;高位补高位补0 0SHL AL, CLSHL AL, CL; ;将将ALAL的内容左移的内容左移CLCL中指中指 ; ;定的次数,且每次移位定的次数,且每次移位 ; ;最低位补最低位补0 03.7 3.7 移位类指令移位类指令SHL DAT1SI,CLSHL DAT1SI,CL; ;将内存某单元的将内存某单元的 ; ;内容左移内容左移CLCL中所中所 ; ;中指定的次数中
21、指定的次数SHR BL, 2SHR BL, 2 当移位次数当移位次数11时,必时,必 须用须用CLCL提供移位次数提供移位次数 3.7 3.7 移位类指令移位类指令算术移位算术移位左移左移 SAL DST, CNTSAL DST, CNT 右移右移 SAR DST, CNTSAR DST, CNT0CFDSTDSTDSTDSTCF3.7 3.7 移位类指令移位类指令2.2.循环移位指令循环移位指令不带不带CFCF的循环移位的循环移位左移左移 ROL DST, CNTROL DST, CNT 右移右移 ROR DST, CNTROR DST, CNTCFDSTCFDST3.7 3.7 移位类指令
22、移位类指令带带CFCF的循环移位的循环移位左移左移 RCL DST, CNTRCL DST, CNT 右移右移 RCR DST, CNTRCR DST, CNTCFDSTCFDST3.7 3.7 移位类指令移位类指令例例1.1.若若(BL)=01110010B,(CL)=3,(BL)=01110010B,(CL)=3,CF=1,CF=1,则则CPUCPU执行:执行: RCR BL, CLRCR BL, CL 指令后,指令后,(BL)=10101110B=0AEH(BL)=10101110B=0AEH3.7 3.7 移位类指令移位类指令0 1 1 1 0 0 1 00 1 1 1 0 0 1 0
23、1D D7 7 D D6 6 D D5 5 D D4 4 D D3 3 D D2 2 D D1 1 D D0 01 0 1 1 1 0 0 11 0 1 1 1 0 0 10D D7 7 D D6 6 D D5 5 D D4 4 D D3 3 D D2 2 D D1 1 D D0 00 1 0 1 1 1 0 00 1 0 1 1 1 0 01D D7 7 D D6 6 D D5 5 D D4 4 D D3 3 D D2 2 D D1 1 D D0 01 0 1 0 1 1 1 01 0 1 0 1 1 1 00D D7 7 D D6 6 D D5 5 D D4 4 D D3 3 D D2 2
24、 D D1 1 D D0 0一次一次二次二次三次三次例例2.2.编程序实现编程序实现5 5* *1010运算。运算。 (不能用(不能用MULMUL指令)指令) 5 5* *1010 =5 =5* *(2+82+8) =5=5* *2+52+5* *8 8算法:算法:3.7 3.7 移位类指令移位类指令MOV AL, 05HMOV AL, 05HSHL AL, 1 ;(AL)=5SHL AL, 1 ;(AL)=5* *2 2MOV BL, AL ;(BL)=5MOV BL, AL ;(BL)=5* *2 2MOV CL, 2MOV CL, 2SHL AL, CL ;(AL)=5SHL AL, C
25、L ;(AL)=5* *8 8ADD AL, BL ;(AL)=5ADD AL, BL ;(AL)=5* *10103.7 3.7 移位类指令移位类指令3.7 3.7 移位类指令移位类指令 例例3.28 3.28 将一个字(将一个字(AXAX)的内容除)的内容除2 2,并,并进行进行四舍五入四舍五入操作。操作。解:对(解:对(AXAX)右移)右移1 1位等效于(位等效于(AXAX)2 2,四舍五入操作可以表述成:当原(四舍五入操作可以表述成:当原(AXAX)最)最低位(即移出的低位(即移出的1 1位)为位)为1 1时,在结果中加时,在结果中加1 1。因此可以编写出程序段:。因此可以编写出程序段
26、: SHR AX, 1SHR AX, 1 ADC AX, 0 ADC AX, 0 3.7 3.7 移位类指令移位类指令 另外,四舍五入操作还可以表述成:另外,四舍五入操作还可以表述成:其中方括号表示取整运算,这样可以在其中方括号表示取整运算,这样可以在移位之前的最低位加上移位之前的最低位加上1 1,然后进行右移,然后进行右移1 1位的操作。因此可以编写出程序段:位的操作。因此可以编写出程序段: INC AXINC AX SHR AX, 1 SHR AX, 1215 . 02xxy助记符格式助记符格式功能说明功能说明CLC0 CFSTC1 CFCMCCF CFCLD0 DFSTD1 DF助记符格式助记符格式功能说明功能说明CLI0 IFSTI1 IF3.8 3.8 标志位操作指令标志位操作指令作业:作业:12 14 16 1712 14 16 17