第3章_4逻辑移位及串操作_第1页
第3章_4逻辑移位及串操作_第2页
第3章_4逻辑移位及串操作_第3页
第3章_4逻辑移位及串操作_第4页
第3章_4逻辑移位及串操作_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、1231 数据传送指令数据传送指令 算术运算指令算术运算指令 逻辑运算与移位指令逻辑运算与移位指令 串操作指令串操作指令 控制转移指令控制转移指令 处理机控制指令处理机控制指令2 实现与、或、非、异或、测试等逻辑运算实现与、或、非、异或、测试等逻辑运算 操作数的搭配关系同算术运算操作数的搭配关系同算术运算 除逻辑除逻辑“非非”指令不影响标志外,其他逻辑运算指令均影响标志指令不影响标志外,其他逻辑运算指令均影响标志SF、ZF和和PF,而而OF和和CF一定被置一定被置0,AF不确定不确定31、逻辑、逻辑“与与”指令指令 AND 格式格式:AND d,s 功能功能: (d) (d) (s) 说明说明

2、:将目的操作数:将目的操作数d与源操作数与源操作数s按位相按位相“与与”结结果送回果送回d中,常用于使某些位清中,常用于使某些位清0lOFCF0,其它标志位受影响,其它标志位受影响ld、s必须具有相同的字长必须具有相同的字长 AND AX, BLld、s不能为段寄存器不能为段寄存器 AND DS, 2000Hld不能是立即数不能是立即数 AND 10H, AX452、逻辑、逻辑“或或”指令指令 OR 格式格式:OR d,s 功能功能: (d) (d) (s) 说明说明:将目的操作数:将目的操作数d与源操作数与源操作数s按位相按位相“或或”结结果送回果送回d中,常用于使某些位置位(置中,常用于使

3、某些位置位(置1)lOFCF0,其它标志位受影响,其它标志位受影响ld、s必须具有相同的字长必须具有相同的字长 OR AX, BLld、s不能为段寄存器不能为段寄存器 OR DS, 2000Hld不能是立即数不能是立即数 OR 10H, AX673、逻辑、逻辑“异或异或”指令指令 OR 格式格式:OR d,s 功能功能: (d) (d) (s) 说明说明:将目的操作数:将目的操作数d与源操作数与源操作数s按位相按位相“异或异或”结果送回结果送回d中,常用于使某些位取反中,常用于使某些位取反lOFCF0,其它标志位受影响,其它标志位受影响ld、s必须具有相同的字长必须具有相同的字长 XOR AX

4、, BLld、s不能为段寄存器不能为段寄存器 XOR DS, 2000Hld不能是立即数不能是立即数 XOR 10H, AX8ABBABABA1AA0AAA1AA0A 9l不影响标志位不影响标志位ld不能是不能是段寄存器段寄存器、立即数立即数 NOT DS NOT 10H4、逻辑、逻辑“非非”指令指令 NOT 格式格式:NOT d 功能功能: (d) (d) 说明说明:将目的操作数:将目的操作数d取反后结果送回取反后结果送回d中中105、测试指令、测试指令 TEST 格式格式:TEST d,s 功能功能:(d) (s) 说明说明:将目的操作数:将目的操作数d与源操作数与源操作数s按位相按位相“

5、与与”,只影响标志位不回送结果,常用于测试某些位是只影响标志位不回送结果,常用于测试某些位是0或或1lOFCF0,其它标志位受影响,其它标志位受影响ld、s必须具有相同的字长必须具有相同的字长 TEST AX, BLld、s不能为段寄存器不能为段寄存器 TEST DS, 2000Hld不能是立即数不能是立即数 TEST 10H, AX1112对对8位或位或16位的通用寄存器或存储器内容进行移位,移位次数可以为位的通用寄存器或存储器内容进行移位,移位次数可以为1255若移位次数为若移位次数为1则可直接写在指令中,若次数为则可直接写在指令中,若次数为2255则不能直接写在指令中,则不能直接写在指令

6、中,必须先将次数放在寄存器必须先将次数放在寄存器CL中,指令中只能写中,指令中只能写CL,移位结束后,移位结束后CL的值不变的值不变 影响标志影响标志OF、SF、ZF、PF、CF,但,但AF不确定。当移位次数为不确定。当移位次数为1时,若移位结时,若移位结果使最高位符号位发生变化,则溢出标志果使最高位符号位发生变化,则溢出标志OF1,否则,否则OF0;当移位次数超过;当移位次数超过1时,时,OF无效无效136、逻辑左移指令、逻辑左移指令 SHL(SHift Left) 格式格式:SHL d,count 功能功能:逻辑左移:逻辑左移 说明说明:将目的操作数:将目的操作数d左移左移count位,右

7、边补位,右边补0,左边入,左边入CFlSF、ZF、PF 根据移位结果设置根据移位结果设置lCF = 移入的数值移入的数值lAF无定义无定义lOFld不能是不能是段寄存器和段寄存器和立即数立即数1 count=1时,最高位的值改变时,最高位的值改变0 count=1时,最高位的值不变时,最高位的值不变14157、逻辑右移指令、逻辑右移指令 SHR(SHift Right) 格式格式:SHR d,count 功能功能:逻辑右移:逻辑右移 说明说明:将目的操作数:将目的操作数d右移右移count位,左边补位,左边补0,右边入,右边入CFlSF、ZF、PF 根据移位结果设置根据移位结果设置lCF =

8、移入的数值移入的数值lAF无定义无定义lOFld不能是不能是段寄存器和段寄存器和立即数立即数1 count=1时,最高位的值改变时,最高位的值改变0 count=1时,最高位的值不变时,最高位的值不变168、算术左移指令、算术左移指令 SAL(Arithmetic) 格式格式:SAL d,count 功能功能:同逻辑左移完全相同:同逻辑左移完全相同179、算术右移指令、算术右移指令 SAR(Arithmetic) 格式格式:SAR d,count 功能功能:算术右移:算术右移 说明说明:将操作数:将操作数d的内容右移,左边不变,右边移入的内容右移,左边不变,右边移入CF中中lSF不变不变,ZF

9、、PF 根据移位结果设置根据移位结果设置lCF = 移入的数值移入的数值lAF无定义无定义lOFld不能是不能是段寄存器和段寄存器和立即数立即数1 count=1时,最高位的值改变时,最高位的值改变0 count=1时,最高位的值不变时,最高位的值不变1810、循环左移指令、循环左移指令 ROL(ROtate/ROund Left) 格式格式:ROL d,count 功能功能:循环左移:循环左移 说明说明:将操作数:将操作数d的内容左移,最高位循环移入最低位,同时移入的内容左移,最高位循环移入最低位,同时移入CFlSF、ZF、PF 、AF不受影响不受影响lCF = 移入的数值移入的数值lOFl

10、d不能是不能是段寄存器和段寄存器和立即数立即数1 count=1时,最高位的值改变时,最高位的值改变0 count=1时,最高位的值不变时,最高位的值不变1911、循环右移指令、循环右移指令 ROR(ROtate/ROund Right) 格式格式:ROR d,count 功能功能:循环右移:循环右移 说明说明:将操作数:将操作数d的内容右移,最低位循环移入最高位,同时移入的内容右移,最低位循环移入最高位,同时移入CFlSF、ZF、PF 、AF不受影响不受影响lCF = 移入的数值移入的数值lOFld不能是不能是段寄存器和段寄存器和立即数立即数1 count=1时,最高位的值改变时,最高位的值

11、改变0 count=1时,最高位的值不变时,最高位的值不变2012、带进位循环左移指令、带进位循环左移指令 RCL(ROtate/ROund Carry Left) 格式格式:RCL d,count 功能功能:带进位循环左移:带进位循环左移 说明说明:将操作数:将操作数d的内容左移,最高位循环移入的内容左移,最高位循环移入CF,而,而CF循环移入最低位循环移入最低位lSF、ZF、PF 、AF不受影响不受影响lCF = 移入的数值移入的数值lOFld不能是不能是段寄存器和段寄存器和立即数立即数1 count=1时,最高位的值改变时,最高位的值改变0 count=1时,最高位的值不变时,最高位的值

12、不变2113、带进位循环右移指令、带进位循环右移指令 RCR(ROtate/ROund Carry Right) 格式格式:RCR d,count 功能功能:带进位循环右移:带进位循环右移 说明说明:将操作数:将操作数d的内容左移,最低位循环移入的内容左移,最低位循环移入CF,而,而CF循环移入最高位循环移入最高位lSF、ZF、PF 、AF不受影响不受影响lCF = 移入的数值移入的数值lOFld不能是不能是段寄存器和段寄存器和立即数立即数1 count=1时,最高位的值改变时,最高位的值改变0 count=1时,最高位的值不变时,最高位的值不变22 数据串是存储器中一块字节或字的存储区域,其

13、长度可以是数据串是存储器中一块字节或字的存储区域,其长度可以是1字节字节64K字节字节 串操作就是对数据串中每个元素所进行的操作,这种操作通常是组合操作,能完串操作就是对数据串中每个元素所进行的操作,这种操作通常是组合操作,能完成几条指令的功能成几条指令的功能 用作源操作数的串称为源串,源串默认放在数据段中(段地址在用作源操作数的串称为源串,源串默认放在数据段中(段地址在DS中),但可中),但可以段超越到其他段,源串的偏移地址指针必须放在以段超越到其他段,源串的偏移地址指针必须放在SI中中 用作目的操作数的串称为目的串,目的串必须放在附加段中(段地址在用作目的操作数的串称为目的串,目的串必须放

14、在附加段中(段地址在ES中),中),目的串的偏移地址指针必须放在目的串的偏移地址指针必须放在DI中中 串的长度(字节数或字数)必须放在串的长度(字节数或字数)必须放在CX中中23 串操作可以按字节操作(助记符末尾字母加串操作可以按字节操作(助记符末尾字母加B),也可以按字操作(助记符末尾),也可以按字操作(助记符末尾字母加字母加W)。按字节操作时,地址指针加或减)。按字节操作时,地址指针加或减1,按字操作时,地址指针加或减,按字操作时,地址指针加或减2 若方向标志若方向标志DF0,则按增址操作,地址指针加,则按增址操作,地址指针加1或加或加2;若方向标志;若方向标志DF1,则,则按减址操作,地

15、址指针减按减址操作,地址指针减1或减或减28086共有共有5种基本的串操作指令,有的指令涉及到种基本的串操作指令,有的指令涉及到2个串,而有的只涉及到个串,而有的只涉及到1个串个串 有些串操作是在数据串与寄存器之间进行,则规定寄存器只能用累加器,字节操有些串操作是在数据串与寄存器之间进行,则规定寄存器只能用累加器,字节操作时用作时用AL,字操作时用,字操作时用AX 串操作指令每次只处理一个元素的数据,为了能重复执行最多达串操作指令每次只处理一个元素的数据,为了能重复执行最多达64KB的串操作,的串操作,8086还提供了还提供了3种重复前缀指令,使用这些指令可以使串操作指令重复执行由寄存种重复前

16、缀指令,使用这些指令可以使串操作指令重复执行由寄存器器CX指定的次数指定的次数除串比较和串搜索指令影响全部除串比较和串搜索指令影响全部6个状态标志外,其它指令均不影响标志位个状态标志外,其它指令均不影响标志位2425(1)重复)重复 REP(REPeat) 格式格式:REP 串操作指令串操作指令 功能功能:使串操作指令重复执行:使串操作指令重复执行CX指定的次数指定的次数 说明说明:若:若CX0则重复执行串指令,并置则重复执行串指令,并置CXCX1,直到,直到CX0为止。为止。REP指指令主要用于令主要用于串传送串传送和和串写入串写入指令前指令前26(2)相等则重复)相等则重复 REPE/RE

17、PZ(REPeat when Equal/Zero) 格式格式:REPE/REPZ 串操作指令串操作指令 功能功能:若串操作指令执行结果相等,且:若串操作指令执行结果相等,且CX指定次数未到,则重复执行串操作指令,指定次数未到,则重复执行串操作指令,直到结果不相等,或直到结果不相等,或CX指定次数已到则停止指定次数已到则停止 说明说明:若:若ZF1且且CX1CX0则重复执行串指令,直到则重复执行串指令,直到ZF0或或CX1CX0为止。为止。REPE指令主要用于指令主要用于串比较串比较和和串搜索串搜索指令前指令前27(3)不相等则重复)不相等则重复 REPNE/REPNZ(REPeat when

18、 Not Equal/Zero) 格式格式:REPNE/REPNZ 串操作指令串操作指令 功能功能:若串操作指令执行结果不相等,且:若串操作指令执行结果不相等,且CX指定次数未到,则重复执行串操作指指定次数未到,则重复执行串操作指令,直到结果相等,或令,直到结果相等,或CX指定次数已到则停止指定次数已到则停止 说明说明:若:若ZF0且且CX1CX0则重复执行串指令,直到则重复执行串指令,直到ZF1或或CX1CX0为止。为止。REPNE指令主要用于指令主要用于串比较串比较和和串搜索串搜索指令前指令前2814、串传送指令、串传送指令 MOVSB/MOVSW(MOVe String of Byte/

19、Word) 格式格式:MOVSB/MOVSW 功能功能:将源串指针:将源串指针SI所指单元的一个数据(字节或字)传送到目的串指针所指单元的一个数据(字节或字)传送到目的串指针DI所指单所指单元中,指针作相应变化元中,指针作相应变化(1)ES:DI DS:SI(2)MOVSB(字节操作):(字节操作):(SI)(SI)1, (DI)(DI)1 MOVSW (字操作)(字操作) : (SI)(SI)2, (DI)(DI)2(3)方向标志:)方向标志: DF=0 时地址时地址“ ”,DF=1时地址时地址“ ”(4)使用重复前缀)使用重复前缀REP相配合,一次完成数据串的传送操作相配合,一次完成数据串

20、的传送操作数据段数据段DS附加段附加段ES(SI) (DI)DF=0(SI)(DI)DF=129程序段如下:程序段如下: LDS SI,源串首地址源串首地址 LES DI,目的串首地址目的串首地址 MOV CX,串长度串长度 CLD REP MOVSB;将数据段中的整串数据传送到附加段中;将数据段中的整串数据传送到附加段中执行执行REP MOVS之前,应先做好如下准备:之前,应先做好如下准备:(1)源串首地址(末地址)源串首地址(末地址) SI,置好,置好DS的值的值(2)目的串首地址(末地址)目的串首地址(末地址) DI,置好,置好ES的值的值(3)串长度)串长度 CX(4)设置方向标志()

21、设置方向标志(CLD使使DF=0,STD使使DF=1)(SI)数据段数据段DS附加段附加段ES(SI) (DI)(DI)DF=0地址增量地址增量3015、串比较指令、串比较指令 CMPSB/CMPSW(CoMPare String of Byte/Word) 格式格式:CMPSB/CMPSW 功能功能:将源串指针:将源串指针SI所指单元的一个数据(字节或字)与目的串指针所指单元的一个数据(字节或字)与目的串指针DI所指单元的所指单元的一个数据(字节或字)相减,但结果不回送,只影响标志位,指针作相应变化一个数据(字节或字)相减,但结果不回送,只影响标志位,指针作相应变化(1)DS:SI ES:D

22、I,不保存结果,影响标志位同,不保存结果,影响标志位同CMP指令指令(2)CMPSB(字节操作):(字节操作):(SI)(SI)1, (DI)(DI)1 CMPSW (字操作)(字操作) : (SI)(SI)2, (DI)(DI)2(3)方向标志:)方向标志: DF=0 时地址时地址“ ”,DF=1时地址时地址“ ”(4)使用重复前缀)使用重复前缀REPZ / REPE、REPNZ / REPNE相配合相配合(SI)(DI)DF=1数据段数据段DS附加段附加段ES(SI) (DI)DF=03116、串搜索指令、串搜索指令 SCASB/SCASW(SCAn String of Byte/Word

23、) 格式格式:SCASB/SCASW 功能功能:将累加器(:将累加器(AL或或AX)内容与目的串指针)内容与目的串指针DI所指单元的一个数据(字节或字)所指单元的一个数据(字节或字)相减,但结果不回送,只影响标志位,指针作相应变化相减,但结果不回送,只影响标志位,指针作相应变化(1)AL(AX) ES:DI,不保存结果,影响标志位,不保存结果,影响标志位(2)SCASB(字节操作):(字节操作):(SI)(SI)1, (DI)(DI)1 SCASW (字操作)(字操作) : (SI)(SI)2, (DI)(DI)2(3)方向标志:)方向标志: DF=0 时地址时地址“ ”,DF=1时地址时地址“ ”(4)使用重复前缀)使用重复前缀REPZ / REPE、REPNZ / REPNE相配合相配合(DI)DF=1附加段附加段ES(DI)DF=0搜索数据串中搜索数据串中与与AL/AX相同相同/(不相同)的数据(不相同)的数据3217、串写入指令、串写入指令 STOSB/ST

温馨提示

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

评论

0/150

提交评论