8088的指令系统(位运算或逻辑运算)_第1页
8088的指令系统(位运算或逻辑运算)_第2页
8088的指令系统(位运算或逻辑运算)_第3页
8088的指令系统(位运算或逻辑运算)_第4页
8088的指令系统(位运算或逻辑运算)_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、8088的指令系统(位运算或逻辑运 算) 逻辑运算指令 移位与循环指令 8088的指令系统(位运算或逻辑运 算) 类型类型指令指令指令功能指令功能 表三位运算指令列表表三位运算指令列表 逻辑 运算 AND d, s OR d, s XOR d, s NOT d TEST d, s 算术左移 CF 0 算术右移 CF 逻辑左移 CF 0 逻辑右移 CF0 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,不送结果 8088的指令系统(位运算或逻辑运 算) 指令指令 类型类型 指令指令指

2、令功能指令功能 表三位运算指令列表表三位运算指令列表 ( 续续 ) ROL d, count ROR d, count RCR d, count RCL d, count 循环左移 CF 循环右移 CF 带进位循环左移 CF CF 循环 带进位循环右移 8088的指令系统(位运算或逻辑运 算) 共有共有5条条: AND 按位逻辑与与 OR 按位逻辑或或 XOR 按位逻辑异或异或 TEST 按位逻辑与与, 但不保存结果不保存结果 NOT 按位取反取反 8088的指令系统(位运算或逻辑运 算) AND, OR和和 XOR指令指令 基本格式和功能 指令格式: AND (OR / XOR / TEST

3、) d, s 执行的操作: AND (d) (d) OR (s) XOR 8088的指令系统(位运算或逻辑运 算) AND, OR和和 XOR指令指令 基本格式和功能 常见逻辑运算的规则如下列表格所示: 与(AND): 全全 1 才才 1,有,有 0 就就 0 或(OR): 有有 1 就就 1,全,全 0 才才 0 异或(XOR):相同为相同为 0,相异为,相异为 1 1 0 1 0 0 0 1 0 AND 1 1 1 1 0 0 1 0 OR 0 1 1 1 0 0 1 0 XOR 8088的指令系统(位运算或逻辑运 算) AND, OR和和 XOR指令指令 说明 寻址方式寻址方式: AND

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

5、格式和功能 指令格式:指令格式: NOT d 寻址方式寻址方式: NOT reg/mem 8088的指令系统(位运算或逻辑运 算) NOT指令指令 功能&说明 功能功能&说明:说明: 单操作数指令,对d进行按位取反(0变1,1 变0)操作; d可以是通用寄存器或存储器操作数; NOT指令对标志寄存器各位均无影响无影响; 8088的指令系统(位运算或逻辑运 算) 小结:小结: 逻辑运算指令都是按位进行按位进行逻辑运算的,可 以对字节字节或字字进行逻辑运算; 逻辑运算指令可用于组合组合、分离分离、屏蔽屏蔽或设设 置置某些位。 8088的指令系统(位运算或逻辑运 算) 例例1:请分别写出实现下列要求

6、的指令:请分别写出实现下列要求的指令: 使AL中高4位清零,低4位不变; 使AL中低4位清零,高4位不变; 使AL中最高位置1,其他位不变; AL中低4位求反,其余各位不变。 解:解: AND AL,0FH AND AL,0F0H OR AL,80H XOR AL,0FH 8088的指令系统(位运算或逻辑运 算) 例例2:请编制一程序段,将F寄存器中溢出 位OF变反。 解:程序如下:解:程序如下: PUSHF POP AX XOR AX,0800H PUSH AX POPF 8088的指令系统(位运算或逻辑运 算) 例例3:将AL清零,至少有以下几种方法, 它们有何不同? MOV AL,00H

7、 AND AL,00H XOR AL,AL 8088的指令系统(位运算或逻辑运 算) 共有以下共有以下8条条: SAL (shift arithmetic left) 算术左移算术左移 SAR (shift arithmetic right) 算术右移算术右移 SHL (shift logical left) 逻辑左移逻辑左移 SHR (shift logical right) 逻辑右移逻辑右移 ROL (Rotate left) 循环左移循环左移 ROR (Rotate right) 循环右移循环右移 RCL (Rotate left through carry) 带进位循环左移带进位循环左

8、移 RCR (Rotate right through carry)带进位循环右移带进位循环右移 8088的指令系统(位运算或逻辑运 算) 移位类指令的格式格式(详见表三) 移位指令移位指令 d, Count 移位类指令的寻址方式寻址方式 移位指令移位指令 reg/mem, 1/CL 8088的指令系统(位运算或逻辑运 算) 移位指令执行的操作执行的操作 (参见表三) SHL , SAL和和 SHR (d)左(右)移Count位,移出的位进入CF, 移位造成的空位补 SAR (d) 最高位不变,(d)右移Count位,移出的 位进入CF, 移位造成的空位用最高位值填补。 左右移位使乘,除乘,除

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

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

11、: MOV DX,AX SAL AX,1 ;(AX)*2 SAL AX,1 ;(AX)*4 ADD AX,DX ;(AX)*5 SAR AX,1 ;(AX)*5/2 8088的指令系统(位运算或逻辑运 算) 例题例题 例例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 8088的指令系统(位运算或逻辑运 算) 例题例题 例例3:将AX的高低8位换位,写出指令序列。 解:方法之一如

12、下: MOV CL,08H ROL AX,CL 方法二如下: MOV CL,AH MOV AH,AL MOV AL,CL 8088的指令系统(位运算或逻辑运 算) 例题例题 例例4:将BL的低4位与AL的低4位组成一个新的 数据(BL低4位为新数据的高4位),放回AL 中。 解:方法之一如下: MOV CL,04H SAL BL,CL AND AL,0FH OR AL,BL 8088的指令系统(位运算或逻辑运 算) 表五串操作指令表五串操作指令 类别类别指令格式指令格式指令功能指令功能 MOVS d, s MOVSB/MOVSW 字节串/字串传送 CMPS d, s CMPSB/CMPSW 字

13、节串/字串比较 SCAS d SCASB/SCASW 字节串/字串搜索(扫描) LODS s LODSB/LODSW STOS d STOSB/STOSW 读(载入)字节串/字串 写(存储)字节串/字串 基 本 串 操 作 指 令 8088的指令系统(位运算或逻辑运 算) 表五串操作指令(续)表五串操作指令(续) 类别类别指令格式指令格式指令功能指令功能 REP 无条件重复 当相等/为零时重复 当不等/不为零时重复 重 复 前 缀 REPE / REPZ REPNE /REPNZ 8088的指令系统(位运算或逻辑运 算) 串操作指令用于存储单元的成批数据处 理,包括串传送、串加载、串存储、串

14、比较、串扫描等指令。 每一个串操作指令还会涉及以下问题: 重复前缀 类型后缀 串处理方向 段超越问题 8088的指令系统(位运算或逻辑运 算) 重复前缀专用于串操作,使用时加在串操 作指令前面,能使串操作连续进行。 分两种: 无条件重复 REP 有条件重复 REPZ /REPE, REPNZ/REPNE 8088的指令系统(位运算或逻辑运 算) REP 格式如下: REP 串操作指令串操作指令 说明: 无条件重复前缀,可用于任何串操作指令 例如:REP MOVSB REP SCASW 等 执行重复串操作时,每重复一次,(CX)自动减, 一旦归零,则停止重复归零,则停止重复。注意,执行重复串操作

15、之 前应该为应该为 CX 赋初值赋初值。 8088的指令系统(位运算或逻辑运 算) REPZ, REPNZ 说明: 与REP一样专用于串操作,格式相同 但有附加条件,条件满足且(CX)不为零才重 复。 REPZ 的条件是:ZF=0 REPNZ 的条件是:ZF0 有条件重复前缀一般用于有比较含义的串操 作,即CMPS 和 SCAS 8088的指令系统(位运算或逻辑运 算) 串操作指令一般会带有类型后缀,有两 种: 后缀 B 表示字节串 后缀 W 表示字串 字节串操作:相关的变址寄存器改变量 为,如果涉及累加器,则为AL。 字串操作:相关的变址寄存器改变量为 ,如果涉及累加器,则为AX。 8088

16、的指令系统(位运算或逻辑运 算) 串处理过程中,地址变化的方向取决于 标志 DF 的设置 DF =0时为地址增加方向,每执行一条串操 作指令,相关变址寄存器的内容增加。 DF =1时为地址减少加方向,每执行一条串 操作指令,相关变址寄存器的内容减少。 DF的缺省值为0。 8088的指令系统(位运算或逻辑运 算) 串操作指令的操作数一般可以缺省,缺 省情形以 DS:SI 指向源串,以 ES:DI指 向目的串。 目的串的段址必须为ES,源串允许段超 越。采用段超越时,操作数必须显式写 明(格式1)。 8088的指令系统(位运算或逻辑运 算) 共有5条 MOVS 串传送指令 STOS 串存储指令 L

17、ODS 串加载指令 CMPS 串比较指令 SCAS 串扫描指令 8088的指令系统(位运算或逻辑运 算) MOVS指令指令 格式&格式说明 格式格式1: MOVS dest, src 格式格式2: MOVSB 或或 MOVSW 说明:说明: 格式1用于需要段超越的时候,格式2是常用格式 格式2中MOVSB一次传送一字节,MOVSW一次传 送一个字。B和W称为类型后缀。 8088的指令系统(位运算或逻辑运 算) MOVS指令指令 功能说明 指令说明: 指令执行前须让ES:DI 指向目的串,DS:SI指 向源串。 本指令将源串中的内容传送到目的串中。具体 操作操作如下: 第一步第一步:将源串中当前

18、单元(字或字节字或字节)的内 容传送到目的串当前单元(字或字节字或字节) ,即 (DI) (SI) 8088的指令系统(位运算或逻辑运 算) MOVS指令指令 功能说明 指令说明: 执行的操作:执行的操作: 第二步第二步:修改串指针 (SI) (SI) 1 / 2 , (DI) (DI) 1 / 2 加或减取决于串处理方向串处理方向,由标志DF决定 1或2取决于串的类型类型,是字串还是字节串,由指 令后缀W / B 决定 8088的指令系统(位运算或逻辑运 算) MOVS指令指令 功能说明 执行的操作:执行的操作: 第三步第三步:如果指令使用了重复前缀,则计 数器CX减1 (CX) (CX)-

19、1 第四步第四步:如有重复前缀,重复前三步,直 至CX为0。 MOVS指令不影响标志位 ,但受DF影响 8088的指令系统(位运算或逻辑运 算) MOVS指令指令 例子 例: MOVSB MOVSW REP MOVSB 8088的指令系统(位运算或逻辑运 算) 例子: 将数据段中以SRC_MESS 为偏移地址的一串字符 “HELLO!”,传送到附件段中以NEW_LOC开始的单元中。 DATA SEGMENT SRC_MESS DB HELLO! DATA ENDS EXTRA SEGMENT NEW_LOC DB 6 DUP(?) EXTRA ENDS 8088的指令系统(位运算或逻辑运 算)

20、 CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:EXTRA START: 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 21H CODE ENDS END START AGAIN: MOVS NEW_LOC,SRC_MES DEC CX JNZ AGAIN 8088的指令系统(位运算或逻辑运 算) CMPS指令指令 格式 格式格式1: CMPSdest,src 格式格式2: CM

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

22、合使用。 8088的指令系统(位运算或逻辑运 算) CMPS指令指令 例子 例例1:指令 REPZCMPS 若相等则重复比较,不等时停止。用于找出不 相等的数。 例例2:指令 REPNZCMPS 不相等则重复比较,用于找出相等的数。 8088的指令系统(位运算或逻辑运 算) STOS指令指令 格式 格式格式1: STOS dest 格式格式2: STOSB 或或 STOSW 说明:说明: 串存储指令,累加器内容存入目的串, ES:DI指向目的串。 8088的指令系统(位运算或逻辑运 算) STOS指令指令 说明 说明:说明: 本指令不影响标志位,但受DF影响 指令将AX或AL寄存器中内容存入目

23、标串中。 执行的操作: 第一步:累加器内容存入目的串当前单元 第二步:修改串指针 第三步:如有重复前缀,计数器减1,不 为0时回到第一步 8088的指令系统(位运算或逻辑运 算) LODS指令指令 格式 格式格式1: LODS src 格式格式2: LODSB 或或 LODSW 说明:说明: 串加载指令,源串内容存入累加器,指令功 能与STOS指令相反,DS:SI指向源串。 8088的指令系统(位运算或逻辑运 算) LODS指令指令 格式 说明:说明: 本指令不影响标志位,但受DF影响 执行的操作: 第一步:源串内容存入累加器第一单元 第二步:修改串指针 本指令一般不带重复前缀 8088的指令

24、系统(位运算或逻辑运 算) SCAS 指令指令 格式 格式格式1: SCAS dest 格式格式2: SCASB 或或 SCASW 说明:说明: 串扫描指令,ES:DI 指向目的串 用于从目标串中搜索某个数据 8088的指令系统(位运算或逻辑运 算) SCAS 指令指令 格式 说明: 执行的操作:执行的操作: 第一步:第一步:将AL或AX与目的串当前单元进 行内容比较,即 (DI) -(累加器),但 不保存结果,结果反映在标志ZF 第二步:第二步:修改串指针 第三步:第三步:如有重复前缀,计数器CX减1, 不为0时回到第一步 8088的指令系统(位运算或逻辑运 算) SCAS 指令指令 格式

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论