指令系统3(算术运算指令)(楼俊君

指令系统3(算术运算指令)(楼俊君

ID:46634858

大小:2.28 MB

页数:47页

时间:2019-11-26

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

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

1、4.3.2算术运算指令涉及两种类型数据:无符号数和有符号数。对加减法指令,无符号和有符号数可采用同一套指令,但应注意:参加的操作数必须都是无符号数或都是有符号数。需使用不同的标志位(CF,OF)来检查无符号数和有符号数的运算结果是否溢出。这类指令一般都影响标志寄存器FLAGS。1表4-2算术运算类指令表2两个8位数相加时有4种情况:①无符号数和有符号数均不溢出二进制相加无符号数加有符号数加000010008+8+00011110+30+(+30)0010011038+38结果38CF=0OF=0无符号数范围0~255带符号数范

2、围-128~1273②无符号数溢出无符号数有符号数000010008+8+11111101+253+(-3)100000101261+5结果5CF=1OF=0③有符号数溢出000010008+8+01111101+125+(+125)10000101133+133结果-123CF=0OF=1(补码表示)4④无符号数和有符号数均溢出无符号数有符号数10001000136-120+11110111+247+(-9)101111111383-129结果127CF=1OF=1上面四种情况说明,CF标志可用来表示无符号数的溢出,OF标志

3、可用来表示有符号数的溢出。有符号数的溢出是一种出错状态,在运算过程中应当避免。5所有的算术运算指令,都会影响FLAGS标志寄存器的6个状态标志CF/OF/ZF/SF/AF/PF(3个控制标志IF/DF/TF不受影响)。总的讲,有这样一些规则:当无符号数运算产生溢出(即最高位向前有进位或借位)时,CF=1,否则为0;当有符号数运算产生溢出时,OF=1(即OF=CF⊕CF-1),否则为0;当运算结果为0时,ZF=1,否则为0;当运算结果为负数时,SF=1,否则为0;当运算一半位置有进位或借位时,AF=1,否则为0;当运算结果中有偶

4、数个1时,PF=1,否则为0。6共有5条:(1)不带进位的加法指令ADD格式:ADDacc,dataADDmem/reg,dataADDmem/reg1,mem/reg2注:1.源和目的操作数不能同时为存储器操作数2.不能把段寄存器作为操作数例:ADDAL,30HADDAX,[BX+20H]ADDCX,SIADD[DI],200HADD指令对标志位(指6个状态标志)都有影响。1.加法指令7例:MOVAL,7EHADDAL,5BH两条指令执行后,标志位(指6个状态标志)都有影响。AF=1表示bit3向bit4有进位CF=0表示最

5、高位向前无进位OF=1表示若为有符号数加法,其运算结果产生溢出PF=0表示8位的运算结果中,1的个数为奇数SF=1表示运算结果的最高位为1ZF=0表示运算结果不为0不带进位的加法指令ADD8(2)带进位位的加法指令ADCADC指令在形式上和功能上都有与ADD类似,只是相加时还要包括进位标志CF的内容。例如:ADCAL,68H;AL←(AL)+68H+(CF)ADCAX,CX;AX←(AX)+(CX)+(CF)ADCBX,[DI];BX←(BX)+[DI+1][DI]+(CF)9例:有两个4字节的无符号数相加:2C56F8AC+

6、309E47BE=?设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,结果放回BUFFER1存储区,如下页图所示。因CPU只能进行8位或16位的加法运算,为此可将加法分4次进行。ADC指令主要用于多字节加法运算中1056H2CHBEH47HBUFFER1BUFFER2ACHF8H9EH30H被加数加数数据段多字节加法示意图......11程序段如下:MOVCX,4;置循环次数MOVSI,0;置SI初值为零CLC;清进位标志CFLL:MOVAL,BUFFER2[SI]ADCBUFFER1[SI],AL;带

7、进位加INCSI;(SI)+1DECCX;(CX)-1JNZLL;若(CX)0,则转LL12ADD/ADC指令对条件标志位(CF/OF/ZF/SF)的影响:CF位表示无符号数相加的溢出。OF位表示带符号数相加的溢出。1结果为负0否则SF=1结果为00否则ZF=1和的最高有效位有向高位的进位0否则CF=1两个操作数符号相同,而结果符号与之相反0否则OF=13格式:INCreg/mem功能:类似于C语言中的++操作:对指定的操作数加1例:INCALINCSIINCBYTEPTR[BX+4]注意:本指令不影响CF标志,但对AF/O

8、F/PF/SF/ZF会产生影响。3)加1指令INC(单操作数指令)14(1)不考虑借位的减法指令SUB格式:SUBdest,src操作:dest←(dest)-(src)注:1.源和目的操作数不能同时为存储器操作数2.不能把段寄存器作为操作数指令例子:SUBAL,60HSUB

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

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

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