(2)移位指令
移位指令可将寄存器或存储单元的8位或16位的内容向左或向右移动1位或多位。
①SAL/SHL
格式: SAL/SHL OPRD m
功能:SAL(算述左移)和SHL(逻辑左移)指令将操作数OPRD左移m位,移位后空出的位填零。操作数可以是寄存器、存储器。m是移位次数,为1时取立即数,大于1时先将m赋予CL寄存器。
②SAR
格式: SAR OPRD m
功能:算术右移指令。将指定操作数右移m位,最低位进入标志位CF,其他位依次右移,但符号位(最高位)保持不变。m的规定与SHL相同。③SHR
格式: SHR OPRD m
功能:逻辑右移指令。与SAR类拟,最低位进入标志位CF,但移位后空位的最高位填0。
(3)循环移位指令
8086/8088有四条循环移位指令,它们是:
●ROL OPRD M ;左循环移位
●ROR OPRD M ;右循环移位
●RCL OPRD M ;带进位的左循环移位
●RCR OPRD M ;带进位的右循环移位
4.串操作指令
串可以是字节串(一组字节)或字串(一组字)。串指令有两类,每类有5种。一类是串操作命令,一类是控制操作重复执行的前缀命令。串操作时,下列寄存器及标志起着特定的作用,程序应根据操作的具体要求先赋予初值。SI寄存器 源串变址用DI寄存器 目的串变址用CX寄存器 重复次数寄存器AL/AX 扫描值(关键字)FLAGS中标志位:
DF 0表示重复操作中DI、SI应自动增量,1表示自动减量。 ZF 用于控制扫描或比较操作结果。
(1)基本串操作命令
①MOVS
格式: MOVS OPRD1,OPRD2
功能:将由SI作为偏移地址的源串中的一个字节或字,传送到由DI作为偏移地址的目的串,且相应修改偏移地址,以指向串中下一个元素。传送完一个字节或字后,则依据控制标志位DF和源、目的操作数的属性,修改偏移地址。在使用MOVS指令之前,必须将源、目的操作数的偏移地址分别送SI、DI,并设置DF。
②MOVSB/MOVSW
字节串/字串传送命令,不带操作数,地址修改MOVSB命令以±1形式修改偏移地址,MOVSW以±2形式修改偏移地址。其余与MOVS相同。
③CMPS
格式: CMPS OPRD1,OPRD2
功能:字节串或字串比较。从由SI作为偏移地址的源串中减去由DI为偏移地址的目标串(字或字节),减的结果不送至任何操作数,仅反映到标志位上。同时修改源、目的串的偏移地址,以指向串中的下一个元素。标志位AF、CF、OF、PF、SF和ZF反映两串元素之间的关系。
④CMPSB/CMPSW
字节串/字串比较,无操作数。
⑤LODS OPRD
读出字节串或字串。从由SI为偏移地址的源串中读出一个字节或一个字送AL或AX,同时修改偏移地址,指向串的下一个元素。此指令对标志位无影响。
⑥LODSB/LODSW
字节或字操作,无操作数。
⑦SCAS
格式: SCAS OPRD
功能:搜索(扫描)串元素命令。从AL(字节操作)或AX的内容中减去由DI作为偏移地址的目标串元素。结果不改变累加器的值,只改变标志位。利用SCAS指令可以进行搜索,此时将搜索关键字放在AL(字节)或AX(字)中,用于查找字符串中有无此关键字,记下查找次数。
⑧SCASB/SCASW
搜索串中字节或字元素,无操作数。
⑨STOS
格式:STOS OPRD
功能:存储字节或字串的指令。将AL(字节)或AX(字)中内容,存储到以DI为偏移地址的目的串中,同时修改偏移地址,指向串的下一个元素。
⑩STOSB/STOSW
存储字节串/字串,无操作数。
(2)重复前缀
①REP
可作为串传送、串比较、串存储、串搜索指令的前缀。最常用的是串传送指令,使用时数据长度必须放在CX中。
②REPE/REPZ
用于串传送、串搜索指令的前缀,使紧随其后的指令重复执行,直到CX=0或ZF=0为止。
③REPNE/REPNZ
用于串比较或串搜索指令的前缀,使其重复执行直到XC=1或ZF=1为止。
① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;
② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。