8088的指令系统(位运算或逻辑运算).ppt

上传人:scccc 文档编号:13930876 上传时间:2022-01-26 格式:PPT 页数:60 大小:184.50KB
返回 下载 相关 举报
8088的指令系统(位运算或逻辑运算).ppt_第1页
第1页 / 共60页
8088的指令系统(位运算或逻辑运算).ppt_第2页
第2页 / 共60页
8088的指令系统(位运算或逻辑运算).ppt_第3页
第3页 / 共60页
8088的指令系统(位运算或逻辑运算).ppt_第4页
第4页 / 共60页
8088的指令系统(位运算或逻辑运算).ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《8088的指令系统(位运算或逻辑运算).ppt》由会员分享,可在线阅读,更多相关《8088的指令系统(位运算或逻辑运算).ppt(60页珍藏版)》请在三一文库上搜索。

1、位运算指令,逻辑运算指令移位与循环指令,位运算指令,类型,指令,指令功能,表三位运算指令列表,逻辑运算,AND d, s,OR d, s,XOR d, s,NOT d,TEST d, s,算术左移,CF,0,算术右移,CF,逻辑左移,CF,0,逻辑右移,CF,0,SAL d, count,SAR d, count,SHL d, count,SHR d, count,移位,d d s,d d s,d d s,d d,d s,不送结果,位运算指令,指令类型,指令,指令功能,表三位运算指令列表 ( 续 ),ROL d, count,ROR d, count,RCR d, count,RCL d, c

2、ount,循环左移,CF,循环右移,CF,带进位循环左移,CF,CF,循环,带进位循环右移,逻辑运算指令,共有5条:AND 按位逻辑与OR 按位逻辑或XOR 按位逻辑异或TEST 按位逻辑与, 但不保存结果NOT 按位取反,逻辑运算指令,AND, OR和 XOR指令 基本格式和功能指令格式: AND (OR / XOR / TEST) d, s执行的操作: AND (d) (d) OR (s) XOR,逻辑运算指令,AND, OR和 XOR指令 基本格式和功能常见逻辑运算的规则如下列表格所示: 与(AND): 全 1 才 1,有 0 就 0或(OR): 有 1 就 1,全 0 才 0异或(XO

3、R):相同为 0,相异为 1,逻辑运算指令,AND, OR和 XOR指令 说明寻址方式: AND (OR, XOR, TEST ) reg/mem, reg/mem AND (OR, XOR, TEST ) reg/mem, data说明:源S可以是通用寄存器、存储器或立即数;但d只能是通用寄存器或存储器,不能为立即数;而且d和s不能同时为存储器操作数。,逻辑运算指令,AND, OR和 XOR指令 说明测试指令TEST不将结果送回d,它只影响F寄存器;这4条指令均影响标志位:SF、ZF、PF根据运算结果设置相应位;CF、OF总是置零;AF不确定。,逻辑运算指令,NOT指令 基本格式和功能指令格

4、式: NOT d寻址方式: NOT reg/mem,逻辑运算指令,NOT指令 功能&说明功能&说明: 单操作数指令,对d进行按位取反(0变1,1变0)操作;d可以是通用寄存器或存储器操作数;NOT指令对标志寄存器各位均无影响;,逻辑运算指令 说明,小结:逻辑运算指令都是按位进行逻辑运算的,可以对字节或字进行逻辑运算;逻辑运算指令可用于组合、分离、屏蔽或设置某些位。,逻辑运算指令 例子,例1:请分别写出实现下列要求的指令: 使AL中高4位清零,低4位不变; 使AL中低4位清零,高4位不变; 使AL中最高位置1,其他位不变; AL中低4位求反,其余各位不变。,解: AND AL,0FH AND A

5、L,0F0H OR AL,80H XOR AL,0FH,逻辑运算指令 例子,例2:请编制一程序段,将F寄存器中溢出位OF变反。,解:程序如下: PUSHF POP AX XOR AX,0800H PUSH AX POPF,逻辑运算指令 例子,例3:将AL清零,至少有以下几种方法,它们有何不同? MOV AL,00H AND AL,00H XOR AL,AL,移位 & 循环指令,共有以下8条:SAL (shift arithmetic left) 算术左移 SAR (shift arithmetic right) 算术右移SHL (shift logical left) 逻辑左移 SHR (sh

6、ift logical right) 逻辑右移ROL (Rotate left) 循环左移 ROR (Rotate right) 循环右移 RCL (Rotate left through carry) 带进位循环左移 RCR (Rotate right through carry)带进位循环右移,移位 & 循环指令,移位类指令的格式(详见表三) 移位指令 d, Count移位类指令的寻址方式移位指令 reg/mem, 1/CL,移位 & 循环指令,移位指令执行的操作 (参见表三)SHL , SAL和 SHR (d)左(右)移Count位,移出的位进入CF, 移位造成的空位补 SAR (d)

7、最高位不变,(d)右移Count位,移出的位进入CF, 移位造成的空位用最高位值填补。 左右移位使乘,除2运算变得简单,算术右移可用于有符号数的除2运算。,移位 & 循环指令,循环指令执行的操作(详见表三) ROL 和 ROR (小循环) (d) 循环左(右)移Count位,每移1位,移出的位从另一端进入,同时进入CF。 RCL 和 RCR (大循环) (d) 循环左(右)移Count位,每移1位, CF从另一端进入, 移出的位进入CF。,移位 & 循环指令,说明:各移位指令中的d可以是字或字节,可以是寄存器或存储器单元,但不能是立即数。 指令中的Count指明移位的位数,只能用两种形式之一:

8、1 或 CL带进位循环移位指令常用于多字节或多字的数据移位。,移位 & 循环指令,影响标志位情况:移位指令根据移位结束后的结果修改CF、PF、ZF、SF和OF,而AF不确定;循环移位指令根据移位结束后结果仅修改CF和OF;如果移位/循环移位仅移一位,且移位前后操作数的最高位发生变化,那么OF置1,否则置0;如果移位/循环移位的位数大于1,则OF不确定。,移位 & 循环指令,例题例1:在AX中有符号数不大的情况下,利用算术移指令进行简单的(AX) 5 / 2 运算,可以用下述程序段: MOV DX,AX SAL AX,1 ;(AX)*2 SAL AX,1 ;(AX)*4 ADD AX,DX ;(

9、AX)*5 SAR AX,1 ;(AX)*5/2,移位 & 循环指令,例题 例2:由(DX):(AX)构成的2个字数据要左移 2 位,写出实现此要求的指令序列。,解:指令序列如下: SAL AX,1 RCL DX,1 SAL AX,1 RCL DX,1,思考:用下列方法如何? MOV CL,2 SAL AX,CL RCL DX,CL,移位 & 循环指令,例题例3:将AX的高低8位换位,写出指令序列。,解:方法之一如下: MOV CL,08H ROL AX,CL,方法二如下: MOV CL,AH MOV AH,AL MOV AL,CL,移位 & 循环指令,例题 例4:将BL的低4位与AL的低4位

10、组成一个新的数据(BL低4位为新数据的高4位),放回AL中。,解:方法之一如下: MOV CL,04H SAL BL,CL AND AL,0FH OR AL,BL,串操作指令,表五串操作指令,类别,指令格式,指令功能,MOVS d, sMOVSB/MOVSW,字节串/字串传送,CMPS d, sCMPSB/CMPSW,字节串/字串比较,SCAS dSCASB/SCASW,字节串/字串搜索(扫描),LODS sLODSB/LODSW,STOS dSTOSB/STOSW,读(载入)字节串/字串,写(存储)字节串/字串,基本串操作指令,串操作指令,表五串操作指令(续),类别,指令格式,指令功能,RE

11、P,无条件重复,当相等/为零时重复,当不等/不为零时重复,重复前缀,REPE / REPZ,REPNE /REPNZ,串操作指令,串操作指令用于存储单元的成批数据处理,包括串传送、串加载、串存储、串比较、串扫描等指令。每一个串操作指令还会涉及以下问题:重复前缀类型后缀串处理方向段超越问题,串操作指令 重复前缀,重复前缀专用于串操作,使用时加在串操作指令前面,能使串操作连续进行。分两种:无条件重复REP有条件重复REPZ /REPE, REPNZ/REPNE,串操作指令 重复前缀,REP 格式如下: REP 串操作指令说明:无条件重复前缀,可用于任何串操作指令例如:REP MOVSB REP S

12、CASW 等执行重复串操作时,每重复一次,(CX)自动减,一旦归零,则停止重复。注意,执行重复串操作之前应该为 CX 赋初值。,串操作指令 重复前缀,REPZ, REPNZ说明:与REP一样专用于串操作,格式相同但有附加条件,条件满足且(CX)不为零才重复。REPZ 的条件是:ZF=0REPNZ 的条件是:ZF0有条件重复前缀一般用于有比较含义的串操作,即CMPS 和 SCAS,串操作指令 类型后缀,串操作指令一般会带有类型后缀,有两种:后缀 B 表示字节串后缀 W 表示字串字节串操作:相关的变址寄存器改变量为,如果涉及累加器,则为AL。字串操作:相关的变址寄存器改变量为,如果涉及累加器,则为

13、AX。,串操作指令 串处理方向,串处理过程中,地址变化的方向取决于标志 DF 的设置DF =0时为地址增加方向,每执行一条串操作指令,相关变址寄存器的内容增加。DF =1时为地址减少加方向,每执行一条串操作指令,相关变址寄存器的内容减少。DF的缺省值为0。,串操作指令 段超越问题,串操作指令的操作数一般可以缺省,缺省情形以 DS:SI 指向源串,以 ES:DI指向目的串。目的串的段址必须为ES,源串允许段超越。采用段超越时,操作数必须显式写明(格式1)。,串操作指令,共有5条MOVS 串传送指令STOS 串存储指令LODS 串加载指令CMPS 串比较指令SCAS 串扫描指令,串操作指令,MOV

14、S指令 格式&格式说明格式1: MOVS dest, src格式2: MOVSB 或 MOVSW说明:格式1用于需要段超越的时候,格式2是常用格式格式2中MOVSB一次传送一字节,MOVSW一次传送一个字。B和W称为类型后缀。,串操作指令,MOVS指令 功能说明指令说明:指令执行前须让ES:DI 指向目的串,DS:SI指向源串。本指令将源串中的内容传送到目的串中。具体操作如下:第一步:将源串中当前单元(字或字节)的内容传送到目的串当前单元(字或字节) ,即 (DI) (SI),串操作指令,MOVS指令 功能说明指令说明:执行的操作: 第二步:修改串指针(SI) (SI) 1 / 2 , (DI

15、) (DI) 1 / 2,加或减取决于串处理方向,由标志DF决定1或2取决于串的类型,是字串还是字节串,由指令后缀W / B 决定,串操作指令,MOVS指令 功能说明执行的操作:第三步:如果指令使用了重复前缀,则计数器CX减1 (CX) (CX)-1第四步:如有重复前缀,重复前三步,直至CX为0。MOVS指令不影响标志位 ,但受DF影响,串操作指令,MOVS指令 例子例: MOVSB MOVSW REP MOVSB,8088的指令系统(位运算或逻辑运算),例子:,将数据段中以SRC_MESS 为偏移地址的一串字符“HELLO!”,传送到附件段中以NEW_LOC开始的单元中。,DATA SEGM

16、ENT SRC_MESS DB HELLO!DATA ENDS EXTRA SEGMENT NEW_LOC DB 6 DUP(?)EXTRA ENDS,8088的指令系统(位运算或逻辑运算),CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:EXTRASTART: MOV AX,DATA MOV DS,AX MOV AX,EXTRA MOV ES,AX, LEA SI,SRC_MESS LEA DI,NEW_LOC MOV CX ,6 CLD REP MOVSB MOV AH,4CH INT 21HCODE ENDS END START,串操作指令,CMPS指令 格

17、式格式1: CMPSdest,src格式2: CMPSB 或CMPSW说明:串比较指令,一般用于比较两个字符串是否相等。格式2是常用格式。,串操作指令,CMPS指令 说明说明:执行的操作:第一步:源串当前单元的内容与目的串当前单元内容比较(相减),即 (DI) -(SI),但不保存结果,结果反映在标志ZF第二步:修改串指针 第三步:计数器减1 ,若不为0,回到第一步,串操作指令,CMPS指令 说明说明:执行前受DF影响,执行后影响所有6个状态标志位(与减法指令相同) ,此指令一般要与REPZ或REPNZ相配合使用。,串操作指令,CMPS指令 例子例1:指令 REPZCMPS若相等则重复比较,不

18、等时停止。用于找出不相等的数。例2:指令 REPNZCMPS不相等则重复比较,用于找出相等的数。,串操作指令,STOS指令 格式格式1: STOS dest格式2: STOSB 或 STOSW说明:串存储指令,累加器内容存入目的串,ES:DI指向目的串。,串操作指令,STOS指令 说明说明:本指令不影响标志位,但受DF影响指令将AX或AL寄存器中内容存入目标串中。执行的操作: 第一步:累加器内容存入目的串当前单元第二步:修改串指针第三步:如有重复前缀,计数器减1,不为0时回到第一步,串操作指令,LODS指令 格式格式1: LODS src格式2: LODSB 或 LODSW说明:串加载指令,源

19、串内容存入累加器,指令功能与STOS指令相反,DS:SI指向源串。,串操作指令,LODS指令 格式说明:本指令不影响标志位,但受DF影响执行的操作: 第一步:源串内容存入累加器第一单元第二步:修改串指针本指令一般不带重复前缀,串操作指令,SCAS 指令 格式格式1: SCAS dest格式2: SCASB 或 SCASW说明:串扫描指令,ES:DI 指向目的串用于从目标串中搜索某个数据,串操作指令,SCAS 指令 格式说明:执行的操作:第一步:将AL或AX与目的串当前单元进行内容比较,即 (DI) -(累加器),但不保存结果,结果反映在标志ZF第二步:修改串指针第三步:如有重复前缀,计数器CX

20、减1,不为0时回到第一步,串操作指令,SCAS 指令 格式说明:此指令执行前受DF影响,执行后影响6个状态标志(与减法指令一样)通常,要在SCAS前加重复前缀REPNZ,用来从目标串中寻找关键字,操作一直进行到ZF1(查到了关键字)或CX0(终未查找到)为止。,8088的指令系统(位运算或逻辑运算),例子: 在每个字符串中搜索是否与字符A,若有,则把搜索次数记录下来,送到BX中,若没有查到,bx清0.,DATA SEGMENT SRC_MESS DB 100 dup(?)DATA ENDS EXTRA SEGMENT STRING DB 100 DUP(?) COUNT EQU LEGTHEN

21、 STRINGEXTRA ENDS,8088的指令系统(位运算或逻辑运算),MOV DI,OFFSET STRINGMOV CX,COUNT MOV AL,A CLDREPNE SCASBJZ FIND MOV DI,0FIND : MOV BX,DI HLT,8088的指令系统(位运算或逻辑运算),处理器控制指令,通过这些指令,可以在程序中控制CPU的状态,指令可分为三类:标志位操作指令同步控制指令其他处理器控制指令,8088的指令系统(位运算或逻辑运算),处理机控制指令,表四 处理器控制指令,类型,指令格式,指令功能,标志位操作,CLC,STC,CMC,CLD,STD,CLI,STI,CL

22、C,清除进位标志 置CF=0进位标志置位 置CF=1进位标志取反 CF取反清除方向标志 置DF=0方向标志置位 置DF=1清除中断标志 置IF=0中断标志置位 置IF=1,8088的指令系统(位运算或逻辑运算),处理机控制指令,表四 处理器控制指令(续),类型,指令格式,指令功能,同步控制,等待,WAITESCLOCK,交权,封锁总线,其它,HLTNOP,CPU暂停执行程序执行一次空操作,8088的指令系统(位运算或逻辑运算),标志位操作指令,CLD, STD 清/置方向标志CLI, STI 清/置中断标志CLC, STC 清/置进位标志 CMC 进位标志取反,8088的指令系统(位运算或逻辑运算),其它处理器控制指令,NOP指令格式: NOP 功能&说明:使CPU执行一次空操作,不影响任何寄存器、存储单元和标志位。NOP指令仅占据CPU的3个时钟周期,在软件延时程序中,可用NOP指令作少量延时调整。,8088的指令系统(位运算或逻辑运算),其它处理器控制指令,其它指令简介HLT 停机指令,等待中断,中断返回后向下继续执行。WAIT 等待指令,等待中断,中断返回后继续等待。ESC 换码指令,指令格式为: ESC data, mem 该指令把指定存储单元的内容送到数据总线。LOCK 是指令前缀,与其它指令配合使用,产生总线封锁信号,直至指令执行完毕。,

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1