微型计算机原理指令系统(8讲)_第1页
微型计算机原理指令系统(8讲)_第2页
微型计算机原理指令系统(8讲)_第3页
微型计算机原理指令系统(8讲)_第4页
微型计算机原理指令系统(8讲)_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、 逻辑运算指令逻辑运算指令 运算规则:按位操作,无进运算规则:按位操作,无进/ /借位借位 对标志位的影响对标志位的影响( (除除NOTNOT指令外指令外) ): CF OF SF ZF PF AF 0 0 * * * 无定义无定义 根据运算结果设置根据运算结果设置(1) 逻辑逻辑”与与” AND对两个操作数进行按位逻辑对两个操作数进行按位逻辑“与与”操作。操作。格式:格式:AND dest, src用途:保留操作数的某几位,清零其他位。用途:保留操作数的某几位,清零其他位。例例1:保留:保留AL中低中低4位,高位,高4位清位清0。 AND AL, 0FH例例2:测试:测试AL的的bit7,b

2、it5,bit2是否都是是否都是1。AND AL, 10100100BCMP AL, 10100100B JZ YES ; if match, go to YES ; if not match YES: ; goes here if all 1 对两个操作数进行按位逻辑对两个操作数进行按位逻辑”或或”操作。操作。格式:格式:OR dest, src用途用途:(1)对操作数的某几位置对操作数的某几位置1,其它位不变,其它位不变;(2)对两操作数进行组合。对两操作数进行组合。例例1:把:把AL的的D5位置为位置为1,其它位不变。其它位不变。 解:解: OR AL, 00100000B(2) 逻辑逻

3、辑”或或” OR例例2:把把AL中的非压缩中的非压缩BCD码变成相应十进制码变成相应十进制 数的数的ASCII码。码。 解解: OR AL, 30H例例3:把:把AH和和AL中的非压缩中的非压缩BCD码组合成压码组合成压 缩的缩的BCD码码, 放到放到AL中。中。 解:解: MOV CL, 4 SHL AH, CL ;/将将AH寄存器内容左移寄存器内容左移4位位 OR AL, AH对操作数进行按位逻辑对操作数进行按位逻辑”非非”操作。操作。格式格式:NOT dest ;该指令只有一个操作数该指令只有一个操作数 mem/reg例例:NOT CX NOT BYTE PTRDI(3) 逻辑逻辑“非非

4、”(取反取反) NOT对两个操作数按位进行对两个操作数按位进行”异或异或”操作。操作。 格式:格式:XOR dest, src用途用途:(1 1)对对 dest清零清零( (自身异或自身异或) ); (2 2)把把 dest的某几位变反的某几位变反( (与与11异或异或) ) 例例1 1:把:把AXAX寄存器清零。寄存器清零。 例例2 2:把:把DHDH的的bit4,3bit4,3变反变反。解解: MOV AX,0 MOV AX,0 解解: XOR DH,18H XOR DH,18H XOR AX,AX XOR AX,AX AND AX,0 AND AX,0 SUB AX,AX SUB AX,

5、AX (4) 逻辑逻辑”异或异或” XOR 格式:格式: TEST dest , scr TEST dest , scr操作与操作与ANDAND指令类似指令类似, ,但不将但不将”与与”的结果送回的结果送回, ,只影响标志位。只影响标志位。TESTTEST指令常用于位测试指令常用于位测试, ,与条件转移指令一起用。与条件转移指令一起用。例:测试例:测试ALAL的内容是否为负数。的内容是否为负数。 TEST AL,80H TEST AL,80H ;检查;检查ALAL中中D D7 7=1=1? JNZ MINUS JNZ MINUS ;是;是1(1(负数负数) ),转,转MINUS MINUS ;

6、否则;否则( (正数正数) )不转移不转移MINUS: MINUS: (5) 测试指令测试指令TEST 2. 2.移位指令移位指令(1)(1)非循环移位指令非循环移位指令 算术左移指令算术左移指令 SAL(SAL(Shift Arithmetic LeftShift Arithmetic Left) ) 算术右移指令算术右移指令 SAR(SAR(Shift Arithmetic RightShift Arithmetic Right) ) 逻辑左移指令逻辑左移指令 SHL(SHL(Shift LeftShift Left) ) 逻辑右移指令逻辑右移指令 SHR(SHR(Shift RightS

7、hift Right) )这这4 4条指令的格式相同条指令的格式相同, ,以以SALSAL为例:为例: SAL SAL dest,CL/1 ,CL/1 说明:说明:(1) dest 为mem/reg, scr为移位次数,若大于为移位次数,若大于1,需预,需预先放入先放入CL寄存器。寄存器。例:例: MOV CL,4 SHR AL,CL ;AL中的内容右移中的内容右移4位,位,影响影响CF,PF,SF,ZF,OF标志。标志。(2 2)若结果未溢出,移位指令操作本质意义为:若结果未溢出,移位指令操作本质意义为: 左移左移1位位操作数操作数*2 右移右移1位位操作数操作数/2(3 3)算术移位)算术

8、移位把操作数看做有符号数;把操作数看做有符号数; 逻辑移位逻辑移位把操作数看做无符号数。把操作数看做无符号数。移位指令执行的操作如下图所示:移位指令执行的操作如下图所示:最低位最高位CF0(a)算术/逻辑左移 SAL/SHL最低位最高位CF(b)算术右移 SAR最低位最高位CF(c)逻辑右移 SHR0非循环移位指令功能示意图非循环移位指令功能示意图例:把例:把AL中的数中的数x乘乘10因为因为10 =8+2=23+21,所以可用移位实现乘,所以可用移位实现乘10操作。操作。程序如下:程序如下:SAL AL,1 ; 2xMOV AH,AL SAL AL,1 ; 4x SAL AL,1 ; 8x

9、ADD AL,AH ; 8x+2x = 10 xl用移位操作代替乘除法可提高运算速度用移位操作代替乘除法可提高运算速度例:前例中计算例:前例中计算 x1010。( (设设x 预先赋值给预先赋值给AL) (1)(1)采用乘法指令采用乘法指令: : MOV MOV BL,10BL,10 MUL MUL BLBL 共需共需70707777个个T T周期。周期。(2)(2)采用移位和加法指令采用移位和加法指令: : SAL SAL AL,1 AL,1 ; 2T2T MOV MOV AH,AL AH,AL ; 2T 2T SAL SAL AL,1 AL,1 ; 2T2T SAL SAL AL,1 AL,

10、1 ; 2T2T ADD ADD AL,AH AL,AH ; 3T3T 只需只需1111个个T T周期周期, ,仅相当于乘法的仅相当于乘法的1/71/7。 不含进位位的循环左移指令不含进位位的循环左移指令 ROL ROL dest,CL/1 不含进位位的循环右移指令不含进位位的循环右移指令 ROR ROR dest,CL/1 含进位位的循环左移指令含进位位的循环左移指令 RCLRCL dest,CL/1 含进位位的循环右移指令含进位位的循环右移指令 RCR RCR dest,CL/1 说明:说明:(1 1)格式同非循环移位指令。格式同非循环移位指令。(2 2) 移位位数放在移位位数放在CLCL

11、寄存器中,如果只移寄存器中,如果只移1 1位位, ,也也 可以直接写在指令中。可以直接写在指令中。(3 3)循环移位指令只影响标志位循环移位指令只影响标志位CFCF和和OFOF。这这4 4条指令的功能如下图示:条指令的功能如下图示:最低位最高位CF(a) ROL最低位最高位CF(c) RCL最低位最高位CF(b) ROR最低位最高位CF(d) RCR循环移位指令功能示意图循环移位指令功能示意图串:顺序放在内存中的一组相同类型的数据。串:顺序放在内存中的一组相同类型的数据。串操作:串操作:对串中的元素进行相同的操作。对串中的元素进行相同的操作。串操作指令共有特点:串操作指令共有特点:(1)串操串

12、操作作数类型数类型:存储器。存储器。(2)串操作的寻址方式:串操作的寻址方式: 源源串串操作数指针操作数指针DS:SI(DS可超越可超越) 目的目的串串操作数指针操作数指针ES:DI(3 3)每次串操作后每次串操作后: 串操作指令自动修改串操作指令自动修改SI和和DI字节字节串串操作,操作,1;字字串操作,串操作,2。DF标志决定。标志决定。DF=0,取取”+”修正修正;DF=1,取取”-”修正修正。(注意:退出串操注意:退出串操作后,指针指向最后操作作后,指针指向最后操作单元单元的下一个的下一个单元单元)(4 4)重复串操作)重复串操作 有的串操作指令前面可加上有的串操作指令前面可加上重复前

13、缀重复前缀REP。当使用当使用REP前缀前缀时,时,该指令重复执行,该指令重复执行,重复执行次数由重复执行次数由CX决定(带有决定(带有REP前缀的前缀的串操作指令每执行一次,串操作指令每执行一次,CX自动减自动减1)。)。重复前缀重复前缀包括:包括:lREP CX0 时重复执行时重复执行lREPE/REPZ CX0ZF=1时重复执行时重复执行lREPNE/REPNZ CX0ZF=0时重复执行时重复执行串指令使用的一般方法串指令使用的一般方法MOV SI, 源串首地址源串首地址(或(或LEA SI, 源串)源串)MOV DI, 目的串首地址目的串首地址(或(或LEA DI, 目的串)目的串)M

14、OV CX, 串长度串长度CLD(或(或STD)串指令串指令设置源串地址设置源串地址设置目标串地址设置目标串地址设置串长度设置串长度设置操作方向设置操作方向DF串指令串指令 MOVSBMOVSB指令执行的操作为:指令执行的操作为: BYTE PTRBYTE PTR ES:DIDIDS:SISI; SI SI1, DI1 MOVSWMOVSW指令执行的操作为:指令执行的操作为: WORD PTR ES:DIDI WORD PTR DS:SISI; ; SISI2, DI2 MOVS dest,srcMOVS dest,src srcsrc用用DS:SIDS:SI寻址寻址( (可段超越可段超越)

15、), ,destdest用用ES:DIES:DI寻址寻址 传送是字节还是字传送是字节还是字, ,由操作数的类型决定由操作数的类型决定。l用串传送指令实现用串传送指令实现200个字节的数据传个字节的数据传送:送: LEA SI,MEM1 LEA DI,MEM2 MOV CX,200 CLD REP MOVSB HLT(1 1)格式:)格式:CMPSBCMPSB 指令执行的操作为:指令执行的操作为: BYTE PTRBYTE PTR DS:SI-SI-ES:DIDI; (2 2)格式:)格式: CMPSW CMPSW 指令执行的操作为:指令执行的操作为: WORD PTR WORD PTR DS:

16、 (SI+1)(SI)- (SI+1)(SI)-ES:DIDI; ; ; 进行连续比较:进行连续比较:REPZ,表示,表示比较结果相等比较结果相等(ZF=1)(ZF=1)且串未且串未结束结束(CX0),(CX0),则继续比较。则继续比较。REPNE/REPNZ,REPNE/REPNZ,表示表示比较结果比较结果不不相等相等(ZF=0)(ZF=0)且串未结束且串未结束(CX0),(CX0),则继续比较。则继续比较。例:例: 在内存同一数据段有两组分别为在内存同一数据段有两组分别为100字节字节的字符串,逐字节对应比较,若完全相同,的字符串,逐字节对应比较,若完全相同,BL寄存器置零,若发现不等,退

17、出比较,同寄存器置零,若发现不等,退出比较,同时将不等处的源串地和目的串地址分别存于时将不等处的源串地和目的串地址分别存于SI和和DI 。(1)格式)格式 SCASB 执行的操作:执行的操作: (AL)(ES):(DI); DI1;(2)格式)格式 SCASW 执行的操作:执行的操作: (AX)(ES):(DI1)(DI); DI2; 说明:说明:(1)本指令用于在串中查找指定的信息。要搜索的关键字放在)本指令用于在串中查找指定的信息。要搜索的关键字放在AL(字节字节)或或AX(字字)中。中。(2)搜索指令执行的仍是比较)搜索指令执行的仍是比较(减法减法)操作操作,结果只影响标志位。结果只影响

18、标志位。REPNZ,则表示扫描比较未找到,则表示扫描比较未找到 ( (即即ZF=0)ZF=0)且串未结束且串未结束(CX0)(CX0)就继续扫描。就继续扫描。 REPNZ SCASB 执行的操作:执行的操作: (AL)(ES):(DI); DIDI1;CX-1; ZF=0且且CX0则继续下一次扫描,否则退出。则继续下一次扫描,否则退出。 l(1 1)格式)格式l LODSB LODSB 执行执行读字节串读字节串操作:操作: (AL)(DS):(SI)(AL)(DS):(SI) SI SI1(2) 格式格式 LODSW 执行读字串操作执行读字串操作:(AX)(DS):(SI+1)(SI)(AX)(DS):(SI+1)(SI) SI SI2 读串指令通常不加重复前缀。读串指令通常

温馨提示

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

评论

0/150

提交评论