8086CPU指令系统(3)

2019-04-23 09:00

? 两操作数不能同时为存储器操作数。

? 参加运算的数可以是带符号数或无符号数。OF位用来表示带符号数的

溢出,CF位用来表示无符号数的溢出。 ⑷例:

ADD AX,BX ADD AL,CL ADD CX,34 ADD DL,DA_BYTE

2.带进位加法指令。 格式:ADC DST ,SRC 功能:DST←(DST)+(SRC)+CF

用于双精度加法,即低16位向高16位有进位的情况,其余同ADD指令。 3.加“1”指令(Increment) ⑴格式: INC DST ⑵功能: DST←(DST)+1 ⑶说明:

? 操作数可以是8位或16位通用寄存器或存储单元,但不能是立即数。 ? FR:影响PF、AF、ZF、SF、OF;不影响CF

? 这条指令一般用在循环程序中修改指针和循环次数(即用于计数器)。 4.减法指令

⑴格式:SUB DST ,SRC ⑵功能;DST←(DST)-(SRC) ⑶说明:

? DST:通用寄存器,存储器 ? SRC:通用寄存器,存储器,立即数 ? FR:影响CF、DF、AF、ZF、SF、OF ? 两操作数不能同时为存储器操作数。

? 参加运算的数可以是带符号数或无符号数。OF位用来表示带符号数的

溢出,CF位用来表示无符号数的溢出。 ⑷例: SUB BX,CX ; BX←(BX)-(CX) 5.带借位减法

⑴格式: SBB DST,SRC

⑵功能: DST←(DST)-(SRC)-CF ⑶说明:同SUB指令。 6.减“1”指令 ⑴格式: DEC DST ⑵功能: DST←(DST)-1 ⑶说明:

? 操作数可以是8位或16位通用寄存器或存储单元,但不能是立即数。 ? FR:影响PF、AF、ZF、SF、OF;不影响CF。 ? 这条指令一般用在循环程序中修改指针和循环次数。 7.求负数指令(Negative) ⑴格式: NEG DST ⑵功能: DST←0-(DST) ⑶说明:也称取补指令。

? 影响:CF,PF,AF,ZF,SF,OF 8.乘法指令

⑴无符号数乘法指令:MUL SRC 功能:AX←AL*(SRC)(字节乘法) DXAX←AX*(SRC)(字乘法) 说明:

? 操作数可以是通用寄存器、存储器,不能是立即数。 ? 字节乘:若乘积高8位AH≠0,则CF=1,OF=1;

若乘积高8位AH=0,则CF=0,OF=0。 ? 字乘:若乘积高16位DX≠0,则CF=1,OF=1;

若乘积高16位DX=0,则CF=0,OF=0。 ? 例:MUL BX ;DXAX←AX*BX

MUL BYTE PTR [SI];AX←AL*(DS:[SI])

⑵带符号数乘法指令:IMUL SRC 功能:同MUL指令

说明:同MUL指令,但若乘法结果AH或DX(高位部分)只是低(8或16)位部分的符号扩展,则OF=0,CF=0。

9.除法指令

⑴无符号数除法指令: DIV SRC

功能:AL←AX/(SRC),余数在AH中,(字节除) AX←DXAX/(SRC),余数在DX中(字除)

说明:若商超过AL(字节除)或AX(字除)的范围(FFH或FFFFH)时,系统会自动产生0类中断,且商和余数都不确定。其他与乘法指令同。对FR无定义。

⑵带符号数除法指令: IDIV SRC 功能:同上

说明:余数符号和被除数符号相同。 三、 位操作类指令。 1.逻辑运算指令。

⑴格式:逻辑“与”:AND DST,SRC 逻辑“或”:OR DST,SRC

逻辑“异或”:XOR DST, SRC 逻辑“非”:NOT DST

⑵功能:对字节或字进行逻辑运算。主要用于字节或字中某些位的组合,分离或位设置。例:

AND AND OR

⑶说明:

? SRC可以是寄存器,存储器或立即数。而DST只能是通用寄存器或存

储器。且二者不能同为存储器。 ? 运算结果均送回目的操作数。

? FR:NOT指令对FR各位无影响;其它三条指令影响相同,SF、ZF、

PF,另外,CF和OF总是置“0”,AF不确定。 2.测试指令(TEST) 格式:TEST DST,SRC

功能:与AND指令相同,但运算结果不送回DST,只根据运算结果设置FR。该指令主要用来测试一个操作数的某一位或某几位的状态。

AL, 0FH;

分离AL低4位

AL, F0H; 分离AL高4位 AL, 04H; AL第4位置“1”

? 通常将被测试数置于DST,测试用的位模式置于SRC。 例:TEST AL,01H ;测试AL最低位是否为“1” 若AL最低位为“0”,则ZF=1; 若AL最低位为“1, 则ZF=0; 3.移位/循环,移位指令 ⑴ 算术左移 逻辑左移

SAL SHL

DST, COUNT DST, COUNT

CF 功能: ← ←0

SAL指令相当于乘以2n,n为左移位数。

说明:COUNT为移位次数,可以是1,若COUNT大于1时,必须放在CL中,移位结束后,CL值不变。因此移位位数可以是0~255,一般选0~16即可。

⑵算术右移 SAR DST, COUNT 功能: → CF ? 等效于除以2n,n为右移次数。 ⑶逻辑右移

SHR

dst,count

CF 功能: 0→ →

⑷循环左移 功能: CF ← ⑸循环右移

ROL dst ,count

ROR dst, count

CF 功能: → ⑹带进位循环左移 功能: CF ← ⑺带进位循环右移

RCL dst, count

RCT dst count

CF 功能: → △说明:

? 每条指令只需一个操作数,可以是字或字节,也可以是寄存器或存储器

操作数。

? 影响AF以外的各标志位,而AF不定;当Count= 1时,OF才有意义,

当移位前操作数的最高两位相同时,移位后OF=0;当最高两位不同时,OF=1。

四、 串操作指令

串操作指令中源操作数地址由DS:[SI]提供,目的串操作数地址由ES:[DI]提供。每条串操作数指令每次仅对串中一个字或一个字节单元进行查找,且根据DF标志自动修改SI/DI。

为了便于对串中多个字或字节单元进行串操作,指令系统设置有重复前缀,重复次数由CX中的内容确定,每执行一次,CX内容减1,而对CX的检测是在执行指令前进行的,最多64K。 1.重复前缀(Repeat) ⑴REP

功能:若CX≠0,重复执行后缀的串指令,CX←CX-1

若CX=0,重复执行结束。

REP

MOVSB

当相等/为零时重复串操作。

例:

⑵REPE/REPZ

功能:若CX≠0,且ZF=1,重复执行后缀的串指令,CX←CX- 1

若CX=0,或ZF=0,重复停止。

⑶REPNE/REPNZ 当不相等/不为零时重复串操作。

功能:若CX≠0,且ZF=0,重复执行后缀的串指令,CX←CX- 1

若CX=0或ZF=1,重复停止。

△说明;

? LODS、STOS、MOVS不影响FR,所以使用REP。

? CMPS、SCAS,结果要反映在FR上,所以常使用REPE/REPZ和

REPNE/REPNZ。

2.串传送:不影响FR ⑴MOVSB

功能:ES:[DI]←DS:[SI],DI←DI±1,SI←SI±1 ⑵MOVSW

功能:ES:[DI]←DS:[SI],但DI←DI±2,SI←SI±2


8086CPU指令系统(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:科林专题(电视广告专题片) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: