pentiun指令系统之算术运算指令.ppt
《pentiun指令系统之算术运算指令.ppt》由会员分享,可在线阅读,更多相关《pentiun指令系统之算术运算指令.ppt(60页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、内容:内容:提供加、减、乘、除、转换五种基本算术操作提供加、减、乘、除、转换五种基本算术操作提供加、减、乘、除、转换五种基本算术操作提供加、减、乘、除、转换五种基本算术操作;利用十进制调整指令和利用十进制调整指令和ASCIIASCII调整指令对调整指令对BCDBCD码表示的码表示的 十进制数进行算术运算;十进制数进行算术运算;对带符号数与无符号数进行乘、除运算。对带符号数与无符号数进行乘、除运算。对带符号数与无符号数进行乘、除运算。对带符号数与无符号数进行乘、除运算。(一)加法指令(一)加法指令(Addition)Addition)(二)减法指令(二)减法指令(Subtraction)Subt
2、raction)(三)乘法指令(三)乘法指令(Multiplication)Multiplication)(四)除法指令(四)除法指令(Division)Division)(五)类型转换指令(五)类型转换指令(Type TransType Trans)(六)(六)BCDBCD码运算指令码运算指令二二二二算术运算指令算术运算指令算术运算指令算术运算指令(Arithmetic)Arithmetic)特点:特点:特点:特点:大部分都影响标志位大部分都影响标志位大部分都影响标志位大部分都影响标志位,不同指令影响不同不同指令影响不同:(1)(1)加、减法指令影响加、减法指令影响加、减法指令影响加、减法指
3、令影响 SF,ZF,AF,PF,CF,OF;SF,ZF,AF,PF,CF,OF;SF,ZF,AF,PF,CF,OF;SF,ZF,AF,PF,CF,OF;(2)(2)(2)(2)加加加加1 1 1 1和减和减和减和减1 1 1 1指令不影响指令不影响指令不影响指令不影响CF;CF;CF;CF;(3)(3)(3)(3)乘法指令影响乘法指令影响乘法指令影响乘法指令影响CF,OF;CF,OF;CF,OF;CF,OF;(4)(4)(4)(4)除法指令使大部分标志位的状态不确定除法指令使大部分标志位的状态不确定除法指令使大部分标志位的状态不确定除法指令使大部分标志位的状态不确定;(5)(5)(5)(5)对
4、对对对BCDBCDBCDBCD码调整指令对标志位的影响不同码调整指令对标志位的影响不同码调整指令对标志位的影响不同码调整指令对标志位的影响不同;源操作数可以是立即数、通用寄存器或者是存储器中的源操作数可以是立即数、通用寄存器或者是存储器中的源操作数可以是立即数、通用寄存器或者是存储器中的源操作数可以是立即数、通用寄存器或者是存储器中的数,目的操作数可为通用寄存器或存储器中的数数,目的操作数可为通用寄存器或存储器中的数数,目的操作数可为通用寄存器或存储器中的数数,目的操作数可为通用寄存器或存储器中的数都可以用于字节、字、双字的运算都可以用于字节、字、双字的运算都可以用于字节、字、双字的运算都可以
5、用于字节、字、双字的运算;8位二进制数可以表示十进制数的范围:位二进制数可以表示十进制数的范围:8位无符号十进制数的范围:位无符号十进制数的范围:02558位带符号十进制数的范围:位带符号十进制数的范围:128127 16位二进制数可以表示十进制数的范围位二进制数可以表示十进制数的范围:16位无符号十进制数的范围:位无符号十进制数的范围:06553516位带符号十进制数的范围:位带符号十进制数的范围:3276832767字长为字长为字长为字长为 n n 位的位的位的位的带符号数,补码能表示范围为带符号数,补码能表示范围为:-2 n-1+2 n+1 1如果运算结果超出该范围,叫补码如果运算结果超
6、出该范围,叫补码溢出,简称溢出。溢出,简称溢出。溢出,简称溢出。溢出,简称溢出。算术运算指令涉及的一些问题:算术运算指令涉及的一些问题:以以8位二进制数为例位二进制数为例分析一下数的溢出与进位情况分析一下数的溢出与进位情况:下面分下面分4种情况加以讨论:种情况加以讨论:(1)带符号数和无符号数都不溢出带符号数和无符号数都不溢出(2)无符号数溢出无符号数溢出(3)带符号数溢出带符号数溢出(4)带符号数和无符号数都溢出带符号数和无符号数都溢出(1 1)带符号数和无符号数都不溢出带符号数和无符号数都不溢出带符号数和无符号数都不溢出带符号数和无符号数都不溢出。二进制数二进制数看作无符号数看作无符号数看
7、作带符号数看作带符号数0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 00 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1+0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 14 41111+1515+4+4+1 1+1 1+1 5+1 5相相加加标志标志CF=0,OF=0CF=0,OF=0CF=0CF=0OF=0OF=0溢出溢出不溢出不溢出不溢出不溢出同符号数相加,同符号数相加,结果符号与其相同结果符号与其相同(2 2)无符号数溢出无符号数溢出无符号数溢出无符号数溢出二进制数二进制数看作无符号数看作无符号数看作带符号数看作带符号数0 0 0 0 0 0 0
8、0 0 0 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1+0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 07 7251251+258258+7+7-5-5+2+2相相加加标志标志CF=1,OF=0CF=1,OF=0CF=1CF=1OF=0OF=0溢出溢出溢出溢出若考虑进位若考虑进位所代表的数值,所代表的数值,结果正确结果正确不溢出不溢出异号数相加异号数相加不可能有溢出不可能有溢出CF=1CF=1(3 3)带符号数溢出带符号数溢出带符号数溢出带符号数溢出二进制数二进制数看作无符号数看作无符号数看作带符号数看作带符号数0 0 0 0 0 0 0
9、 0 1 1 0 0 0 0 1 10 0 1 111 1 1 1 1 1 1 1 0 0 0 0+1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 19 9124124+133133+9+9+1 2 4+1 2 4+1 3 3+1 3 3相相加加标志标志CF=0,OF=1CF=0,OF=1CF=0CF=0溢出溢出不溢出不溢出溢出溢出正正相加,结果为负正正相加,结果为负结果错结果错 OF=1 OF=1(4 4)带符号数和无符号数都溢出带符号数和无符号数都溢出带符号数和无符号数都溢出带符号数和无符号数都溢出二进制数二进制数看作无符号数看作无符号数看作带符号数看作带符号数1 1 0 0
10、0 0 0 0 0 0 1 1 1 1 1 11 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1+0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0135135245245+380380121121-11-11+132132相相加加标志标志CF=1,OF=1CF=1,OF=1CF=1CF=1OF=1OF=1溢出溢出溢出溢出若考虑进位若考虑进位CF所代表的数值,所代表的数值,结果正确结果正确 溢出溢出负负相加,结果为正负负相加,结果为正结果错结果错CF=1CF=1结论结论:(1)带符号数)带符号数相加相加溢出溢出根据根据OF判断带符号数产生溢出?判断带符号数产生溢出?OF
11、=1 OF=1 OF=1 OF=1 同符号数相加,结果符号与其相反,同符号数相加,结果符号与其相反,同符号数相加,结果符号与其相反,同符号数相加,结果符号与其相反,产生溢出产生溢出产生溢出产生溢出;(结果是错误的)(结果是错误的)(结果是错误的)(结果是错误的)OF=0 OF=0 OF=0 OF=0 没有产生溢出没有产生溢出没有产生溢出没有产生溢出;(结果是正确的(结果是正确的(结果是正确的(结果是正确的)(2)无符号数)无符号数相加相加溢出溢出根据根据CF判断无符号数产生溢出?判断无符号数产生溢出?CF=1CF=1无符号数无符号数无符号数无符号数相加相加相加相加产生溢出产生溢出产生溢出产生溢
12、出,但考虑进位所代表的数但考虑进位所代表的数但考虑进位所代表的数但考虑进位所代表的数值后,结果并没有错。值后,结果并没有错。值后,结果并没有错。值后,结果并没有错。(一)加法指令(一)加法指令(Arithmetic)Arithmetic)1 1、ADD(Addition)ADD(Addition)加法指令加法指令2 2、ADC(Add with carry)ADC(Add with carry)带进位加法指令带进位加法指令3 3、XADD XADD(Exchange AddExchange Add)字节交换加法指令)字节交换加法指令 4 4、INC(Increment by 1)INC(Inc
13、rement by 1)加加 1 1指令指令 1 1、ADD(Addition)ADD(Addition)加法指令加法指令指令格式:指令格式:ADD dest,src ;(dest)ADD dest,src ;(dest)(dest)+(src)(dest)+(src)SrcSrcSrcSrc:立即数,寄存器,存储器。:立即数,寄存器,存储器。:立即数,寄存器,存储器。:立即数,寄存器,存储器。destdestdestdest:寄存器,存储器。:寄存器,存储器。:寄存器,存储器。:寄存器,存储器。例:例:ADD CX,1000H ADD CX,1000H ;寄存器寄存器+立即数立即数ADD D
14、X,SIADD DX,SI ;寄存器寄存器+寄存器寄存器ADD BX+DIADD BX+DI,AXAX;寄存器寄存器+存储器存储器ADD EAXADD EAX,BX+2000HBX+2000H;存储器存储器+寄存器寄存器ADD BYTE PTRDI,30H ;ADD BYTE PTRDI,30H ;存储器存储器+立即数立即数特点特点:可以进行可以进行可以进行可以进行8 8位、位、位、位、1616位的位的位的位的无符号数和带符号数无符号数和带符号数无符号数和带符号数无符号数和带符号数的加法运算;的加法运算;的加法运算;的加法运算;源操作数和目标操作数源操作数和目标操作数源操作数和目标操作数源操作
15、数和目标操作数不能同时为存储器不能同时为存储器不能同时为存储器不能同时为存储器,不能为段寄存器不能为段寄存器不能为段寄存器不能为段寄存器;指令影响标志位的情况指令影响标志位的情况指令影响标志位的情况指令影响标志位的情况:OF=1OF=1,8位带符号数相加,和超出范围(位带符号数相加,和超出范围(128127),16位带符号数相加,和超出范围位带符号数相加,和超出范围(-32768+32767);CF=1CF=1,8位无符号数相加,和超过位无符号数相加,和超过255,16位无符号数相加,和超过位无符号数相加,和超过65535。其他条件标志(其他条件标志(SF,AF,PF,ZF)根据定义设定。根据
16、定义设定。例例MOV AL,7EH;(AL)=7EHMOV BL,5BH;(BL)=5BHADD AL,BL;(AL)=7EH+5BH=D9H影响标志位的情况影响标志位的情况:SF=1,结果最高位结果最高位1ZF=0,结果不等于,结果不等于0AF=1,D3 位向位向D4 有进位有进位PF=0,”1”的个数为奇数的个数为奇数CF=0,无进位,无进位OF=1,和超过,和超过127(两个正数相加,结果为负;反之亦是)(两个正数相加,结果为负;反之亦是)(两个正数相加,结果为负;反之亦是)(两个正数相加,结果为负;反之亦是)2、ADC(Add with carry)带进位加法指令带进位加法指令格式:格
17、式:ADC dest,src ;(;(dest)(dest)+(src)+CFCF CF:CF:进位标志进位标志CF的现行值的现行值(上条指令上条指令上条指令上条指令CFCF值值值值)特点特点:与与ADD同。同。用途:主要用于多字节运算中。用途:主要用于多字节运算中。类型举例:类型举例:ADC CX,300;寄存器寄存器+立即数立即数+CFADC AL,BL;寄存器寄存器+寄存器寄存器+CFADC DX,COUNTSI;寄存器寄存器+存储器存储器CFADC BLOCKDI,BX;存储器存储器+寄存器寄存器+CFADC BYTE PTR MEM,6;存储器存储器+立即数立即数+CF用途举例:用途
18、举例:计算两个多字节数相加计算两个多字节数相加 3B74AC60F8H+20D59E36C1H=?两个多字节数存放在:两个多字节数存放在:DATA1,DATA2的开始单元。的开始单元。流程图流程图多字节数内存存放多字节数内存存放程序:程序:MOV CX,5MOV SI,0;清清SICLC;清;清CFLOOPER:MOV AL,SI+DATA2ADC SI+DATA1,ALINC SI;(SI)+1 (SI)DEC CX;(CX)-1(CX)JNZ LOOPER;(CX)0转转HLT;停机;停机3 3、XADD XADD(Exchange AddExchange Add)字节交换加法指令)字节交
19、换加法指令 格式:格式:XADD XADD dest dest,srcsrc;(;(B/W/DW)B/W/DW),(dest)(dest)(destdest)+(src+(src)dest:dest:寄存器、存储器。不能是段寄存器。寄存器、存储器。不能是段寄存器。寄存器、存储器。不能是段寄存器。寄存器、存储器。不能是段寄存器。功能:将目的操作数送源操作数,相加的结果送目的操功能:将目的操作数送源操作数,相加的结果送目的操 作数作数 注:注:XADDXADD指令的源操作数必须为寄存器,目的操作数可指令的源操作数必须为寄存器,目的操作数可 为寄存器或存储器为寄存器或存储器 XADD AX XADD
20、 AX,BXBX XADD 1000H XADD 1000H,EAXEAX标志位影响情况:影响标志位影响情况:影响SF,ZF,AF,PF,OFSF,ZF,AF,PF,OF。不影响不影响不影响不影响CFCFCFCF。4、INC (Increment by 1 )加加 1 指令指令格式:格式:INC dest;(;(B/W/DW),(dest)(dest)+1 dest:寄存器、存储器。不能是段寄存器。寄存器、存储器。不能是段寄存器。寄存器、存储器。不能是段寄存器。寄存器、存储器。不能是段寄存器。功能:对指定的目标操作数功能:对指定的目标操作数+1 操作数单元。操作数单元。用途:用于在循环程序中修
21、改地址指针和循环次数。用途:用于在循环程序中修改地址指针和循环次数。标志位影响情况:影响标志位影响情况:影响SF,ZF,AF,PF,OF。不影响不影响不影响不影响CFCF。操作数类型:可以是寄存器,存储器。不能是段寄存器。操作数类型:可以是寄存器,存储器。不能是段寄存器。操作数类型:可以是寄存器,存储器。不能是段寄存器。操作数类型:可以是寄存器,存储器。不能是段寄存器。例:例:INC DL;8位寄存器位寄存器1 INC SI;16位寄存器位寄存器1 INC BYTE PTR BXSI ;存储器;存储器1(字节操作)(字节操作)INC WORD PTR DI;存储器;存储器1(字操作)(字操作)
22、INC DS;错错(二)减法指令(二)减法指令(Subtraction)1、SUB(Subtraction)减法指令减法指令2、SBB(Subtraction with borrow)带进位减法指令带进位减法指令 3、DEC(Decrement by 1 )减减 1 指令指令4、NEG(Negate)求补指令求补指令5、CMP(Compare)比较指令比较指令6、CMPXCHGCMPXCHG(Compare&Exchange)Compare&Exchange)7 7、CMPXCHG8BCMPXCHG8B(Compare&Exchange 8byte)Compare&Exchange 8byte
23、)1、SUB(Subtraction)减法指令减法指令格式:格式:SUB dest,src;(;(dest)(dest)-(src)SrcSrc:立即数,寄存器,存储器。:立即数,寄存器,存储器。:立即数,寄存器,存储器。:立即数,寄存器,存储器。DestDest:寄存器,存储器。:寄存器,存储器。:寄存器,存储器。:寄存器,存储器。例:例:SUB AL,37H;寄存器寄存器-立即数立即数SUB EBX,EDX;寄存器寄存器-寄存器寄存器SUB CX,VAR1;寄存器寄存器-存储器存储器SUB ARRAYSI,AX;存储器存储器-寄存器寄存器SUB WORD PTRALPHABXDI,512H
24、;存储器减立即数存储器减立即数这种指令影响标志位这种指令影响标志位:AF、CF、OF、PF、SF、ZF标志。标志。2、SBB(Subtraction with borrow)带进位减法指令带进位减法指令 格式:格式:SBB dest,src;(;(dest)(dest)-(src)-CFCF:进位标志进位标志CF的现行值的现行值(上条指令上条指令CF值值)SrcSrc:立即数,寄存器,存储器。:立即数,寄存器,存储器。:立即数,寄存器,存储器。:立即数,寄存器,存储器。destdest:寄存器,存储器。:寄存器,存储器。:寄存器,存储器。:寄存器,存储器。指令影响标志位、指令影响标志位、B/W
25、数运算情况同数运算情况同SBB用途:用于多字节数相减用途:用于多字节数相减例:例:SBB BX,100H;寄存器寄存器-立即数立即数-CFSBB ECX,EDX;寄存器寄存器-寄存器寄存器-CFSBB AL,SI+DATA1;寄存器寄存器-存储器存储器-CFSBB BP+DISP,BL;存储器存储器-寄存器寄存器-CFSBB BYTE PTR SI+6,96H;存储器存储器-立即数立即数-CF多字节数的加减综合举例多字节数的加减综合举例例例:x、y、z均均为为32位位数数,分分别别存存放放在在地地址址为为X,X+2;Y,Y+2;Z,Z+2的的存存储储单单元元中中,用用指指令令序序列列实现实现w
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- pentiun 指令系统 算术 运算 指令
限制150内