算术运算类操作实验1、对于两组无符号数,087H和034H,0C2H和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态寄存器的影响:计算状态标志表达式结果CFAFZFOFSFPF087H+034H0BBH000011087H-034H53H000101087H*034H1B6C100100087H/034H1F(02)0100000C2H+5FH21H1100010C2H-5FH63H0101010C2H*5FH47FE1001000C2H/5FH04(02)010000程序代码:087H±034HDATASSEGMENTBUF1DB087HBUF2DB034HDATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXMOVAL,BUF1MOVBL,BUF2ADDAL,BL;(SBBAL,BL)MOVAH,4CHINT21HCODESENDSENDSTART;087H*/034HDATASSEGMENTBUF1DB087HBUF2DB034HDATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXMOVAL,BUF1MOVBL,BUF2MULBL;(DIVBL)MOVAH,4CHINT21HCODESENDSENDSTART另一组同理状态标志位加法减法乘法除法01010101CF最高有效位向高位无进位最高有效位向高位有进位二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况)二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况)CFOF=00乘积的高一半为0(字节操作的(AH)或字操作的(DX))CFOF=11乘积的高一半不为0不确定AF无影响无影响ZF结果不为零结果为零无影响无影响OF两个不同符号数相加,或同符号数相加,结果符号与其相同。两个同符号数相加(正数+正数或负数+负数),结果符号与其相反。同符号数相减时,或不同符号数相减,其结果符号与减数不同。两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。CFOF=00乘积的高一半为0(字节操作的(AH)或字操作的(DX))CFOF=11乘积的高一半不为0SF结果不为负结果为负无影响无影响PF无影响无影响2、在数据段定义了两个多精度的有符号16进制数,FIRST和SECOND,1)求两数的和与差,并将结果存放在THIRD为首地址的缓冲区;2)如果把两组数据当做十进制数据来处理,再次求两数的和与差,并将结果存放在FORTH为首地址的缓冲区中。试编程实现上述运算。FIRSTDW45H,82H,96H,57HSECONDDW12H,46H,83H,45H十六进制结果十进制结果FIRST+SECOND57,C8,19,9D57,28,80,03FIRST-SECOND33,3C,13,1233,36,13,12DATASSEGMENTFIRSTDB45H,82H,96H,57HSECONDDB12H,46H,83H,45HTHIRDDB10DUP(?)FORTHDB10DUP(?)DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXMOVDI,0MOVSI,0MOVCX,4L:MOVAL,[FIRST+DI]MOVBL,ALMOVAL,[SECOND+DI]ADCAL,BLMOV[THIRD+SI],ALINCDIINCSIDECCXJNZLCLCMOVDI,0MOVCX,4M:MOVAL,[FIRST+DI]MOVBL,ALMOVAL,[SECOND+DI]XCHGAL,BLSBBAL,BLMOV[THIRD+SI],ALINCDIINCSIDECCXJNZMCLCMOVDI,0MOVSI,0MOVCX,4N:MOVAL,[FIRST+DI]MOVBL,ALMOVAL,[SECOND+DI]ADCAL,BLDAAMOV[FORTH+SI],ALINCDIINCSIDECCXJNZNCLCMOVDI,0MOVCX,4O:MOVAL,[FIRST+DI]MOVBL,ALMOVAL,[SECOND+DI]XCHGAL,BLSBBAL,BLDASMOV[FORTH+SI],ALINCDIINCSIDECCXJNZOMOVAH,4CHINT21HCODESENDSENDSTART3、编程计算(Z+X*Y-328)-V)/Y,其中X、Y、Z、V均为16位带符号数,假设初始数据分别装入X、Y、Z、V单元,要求上式计算结果的商存入AX,余数存入DX寄存器。DATASSEGMENTXDW0AAHYDW05CHZDW22HVDW33H;RESULTDW2DUP(?);此处输入数据段代码DATASENDSSTACKSSEGMENT;此处输入堆栈段代码STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AXMOVAX,XIMULYMOVCX,AXMOVBX,DXMOVAX,ZCWDADDCX,AXADCBX,DXSUBCX,328SBBBX,0MOVAX,VCWDSUBCX,AXSBBDX,BXIDIVYMOVRESULT,AXMOVRESULT+2,DX;此处输入代码据段代码MOVAH,4CHINT21HCODESENDSENDSTART运行结果:A1