文档详情

指令系统(算术运算类).ppt

发布:2025-04-04约3.53千字共10页下载文档
文本预览下载声明

算术运算指令●1.加法指令(1)不带进位加法指令ADD●指令格式:ADDDST,SRC;执行操作:DST←(SRC)+(DST)(2)带进位加法指令ADC●指令格式:ADCDST,SRC;执行操作:DST←(SRC)+(DST)+CF注意:(1)目的操作数不能为立即数。(2)不允许两个操作数都为存储器操作数。(3)段寄存器不能参与加法操作。(4)指令执行结果影响CF、OF、PF、SF、ZF和AF标志位。OF位可以用来表示带符号数的运算是否溢出,而CF位则可用来表示无符号的运算是否有进位。01ADDAL,[2000H[02ADD[BX],AL03ADDBL,6H04ADDBYTEPTR[SI],5H05ADCAX,BX06ADCAL,[2000H]07ADC[BX],AL08ADCBL,6H09ADCWORDPTR[DI],89H例:ADDAX,BX例:有两个4字节的无符号数相加:2C56F8AC+309E47BE=?设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,结果放回BUFFER1存储区,如下页图所示。因CPU只能进行8位或16位的加法运算,为此可将加法分4次进行。56H2CHBEH47HBUFFER1BUFFER2ACHF8H9EH30H被加数加数数据段多字节加法示意图......程序段如下:MOVCX,4;置循环次数MOVSI,0;置SI初值为零CLC;清进位标志CFLL:MOVAL,BUFFER2[SI] ADCBUFFER1[SI],AL;带进位加INCSI;(SI)+1DECCX;(CX)-1JNZLL;若(CX)?0,则转LL思考:若最高位有进位,如何改?1.加法指令(3)●指令格式:INCOPR执行操作:OPR←(OPR)+1加1指令INC例:INCAXINCBYTEPTR[BX]例:INCAL前:AL=7FH,AF=0,CF=1,OF=0,SF=1,PF=0,ZF=1后:AL=80H,AF=1,CF=1,OF=1,SF=1,PF=0,ZF=0使用INC指令应注意:(1)目的操作数不能为立即数和段寄存器。(2)目的操作数为存储器操作数时,应指明按字类型还是字节类型操作。(3)本指令影响标志OF、PF、SF、ZF和AF,但不影响CF标志位。(1)SUB指令●指令格式:SUBDST,SRC执行操作:DST←(DST)-(SRC)●2.减法指令(2)带借位减法指令SBB●指令格式:SBBDST,SRC执行操作:DST←(DST)-(SRC)-CF(3)减1指令DEC●指令格式:DECOPR执行操作:OPR←(OPR)-1以上三种减法运算影响各标志位,情况同对应加法运算注意●2.减法指令(4)求补指令NEG●指令格式:NEGOPR执行操作:OPR←0-(OPR)(1)目的操作数可以是通用寄存器寻址或存储器寻址方式,若是存储器操作数,应指明按字类型还是字节类型操作。(2)指令执行结果影响标志AF、OF、PF、SF、ZF和CF。仅当目的操作数为零时,CF=0;否则CF=1。(3)对一个操作数求补相当于用0减去此操作数,故利用NEG指令可得到负数的绝对值。例:若(AL)=0FCH,则执行NEGAL后,(AL)=04H,CF=1本例中,0FCH为-4的补码,执行求补指令后,即得到4(-4的绝对值)。注意●指令格式:CMPdest,src执行操作:(dest)-(src)(5)比较指令CMP(1)目的操作数减源操作数,结果只影响标志位,不送入目的地址。(2)根据ZF判断两个数是否相等。若ZF=1,则两数相等。若ZF=0,则两个数不相等,则分两种情况考虑:①比较的是两个无符号数若CF=0,则

显示全部
相似文档