指令系统(算术运算类)

指令系统(算术运算类)

ID:38305188

大小:336.31 KB

页数:17页

时间:2019-06-08

指令系统(算术运算类)_第1页
指令系统(算术运算类)_第2页
指令系统(算术运算类)_第3页
指令系统(算术运算类)_第4页
指令系统(算术运算类)_第5页
资源描述:

《指令系统(算术运算类)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、算术运算指令●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位则可用来表示无符号的运算是否有进位。例:ADDAX,BXADDAL,[2000H[ADD[BX],ALADDBL,6HADDBYTEPTR[S

2、I],5HADCAX,BXADCAL,[2000H]ADC[BX],ALADCBL,6HADCWORDPTR[DI],89H例:有两个4字节的无符号数相加:2C56F8AC+309E47BE=?设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,结果放回BUFFER1存储区,如下页图所示。因CPU只能进行8位或16位的加法运算,为此可将加法分4次进行。56H2CHBEH47HBUFFER1BUFFER2ACHF8H9EH30H被加数加数数据段多字节加法示意图......程序段如下:MOVCX,4;置循环次数MOVSI,0;置SI初值为零CLC;清进位标志CFLL:MOV

3、AL,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)目的操作数为存储器操作数时,应指明按字类型还是

4、字节类型操作。(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)目的操作数可以是通用寄存器寻址或存储器寻址方式,若是存储器操作数,应指明按字类型还是

5、字节类型操作。(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,则两个数不相等,则分两种情

6、况考虑:①比较的是两个无符号数若CF=0,则dest>src;若CF=1,则dest<src。②比较的是两个有符号数若OF⊕SF=0,则dest>src;若OF⊕SF=1,则dest<src。注意例:在内存中有从BUF开始的10个无符号字数据,求出最大值存放到MAX单元中。MOVCX,9;9送CX,控制循环次数LEABX,BUF;取BUF的有效地址送BXMOVAX,[BX];从BX指向的一个字信息送AXADDBX,2;(BX)+2→BX,指向下一个字AGAIN:CMPAX,[BX];AX的内容与BX指向字比较JANEXT;若(AX)>((BX)),跳到NEXTMOVAX,[BX];否则,BX

7、指向字的内容送AXNEXT:ADDBX,2;(BX)+2→BX,指向下一个字DECCX;(CX)-1→CXJNZAGAIN;若(CX)≠0,跳到AGAINMOVMAX,AX;执行循环完后,把最大值送MAXHLT●3.(1)无符号数乘法指令MUL乘法指令●指令格式:MULSRC指令操作:AX←(AL)*(SRC);字节操作数DX,AX←(AX)*(SRC);字操作数例:MULBL前:AL=00000011B,B

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。