您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 实验二--算术逻辑运算及移位操作
实验二算术逻辑运算及移位操作一.实验任务1.实验程序段及结果表格如表:标志位CFZFSFOFPFAF程序段1:MOVAX,1018HMOVSI,230AHADDAX,SIADDAL,30HMOVDX,3FFHADDAX,BXMOV[20H],1000HADD[20H],AXPUSHAXPOPBX000000000000000000000011000000000000000000000000000000000000000000程序段2:MOVAX,0A0AHADDAX,0FFFFHMOVCX,0FF00HADCAX,CXSUBAX,AXINCAXORCX,0FFHANDCX,0F0FHMOV[10H],CX000000000000100011100011100010010010000000001010000010000010程序段3:MOVBL,25HMOVBYTEPTR[10H],4MOVAL,[10H]MULBL000000000000000000000000000000程序段4:MOVWORDPTR[10H],80HMOVBL,4MOVAX,[10H]DIVBL0000000000000000000000000000000程序段5:MOVAX,0DECAXADDAX,3FFFHADDAX,AXNOTAXSUBAX,3ORAX,0FBFDHANDAX,0AFCFHSHLAX,1RCLAX,1000000000000101011000001000011000011001010001000001000100110000110分析:程序段1:MOVAX,1018H;AX1018HMOVSI,230AH;SI230AHADDAX,SI;AX=3322H,低8位为00100010B,1的个数;为偶数,PF=1,同时D3向D4有进位发生,AF=1ADDAL,30H;AX=3352H,低8位1个个数为奇数,PF=0MOVDX,3FFH;DX3FFHADDAX,BX;AX=3352H,MOV[20H],1000H;[20H]1000HADD[20H],AX;[20H]=4352HPUSHAX;POPBX;BX=3352H程序段2:MOVAX,0A0AH;AX0A0AHADDAX,0FFFFH;AX=0A09H,最高位进位CF=1,低8位1的;个数为偶数PF=1;D3向D4进位AF=1MOVCX,0FF00H;CX0FF00HADCAX,CX;AX=090AH,最高位进位CF=1,低8位1的个;数为偶数PF=1SUBAX,AX;AX=0,运算结果为零ZF=1INCAX;AX=1HORCX,0FFH;CX=0FFFFH,最高位为1,ZF=1,低8位1的;个数为偶数PF=1ANDCX,0F0FH;CX=0F0FH,低8位1的个数为偶数PF=1MOV[10H],CX;[10H]0F0FH程序段3:MOVBL,25H;BL25HMOVBYTEPTR[10H],4;[10H]04HMOVAL,[10H];AL04HMULBL;AL=94H程序段4:MOVWORDPTR[10H],80H;[10H]0080HMOVBL,4;BL04HMOVAX,[10H];AX0080HDIVBL;AX=0020H程序段5:MOVAX,0;AX0000HDECAX;AX=0FFFFH,最高位为1,SF=1,低8;位1的个数为偶数PF=1,最高位向前、;D3向D4有借位,CF=1,AF=1ADDAX,3FFFH;AX=3FFEH,D3向D4有进位,AF=1ADDAX,AX;AX=7FFCH,低8位1的个数为偶数,PF=1;D3向D4有进位,AF=1NOTAX;AX=8003HSUBAX,3;AX=8000H,低8位1的个数为偶数,PF=1;最高位为1,SF=1ORAX,0FBFDH;AX=0FBFDH,最高位为1,SF=1ANDAX,0AFCFH;AX=0ABCDH,最高位为1,SF=1SHLAX,1;AX=579AH,低8位1的个数为偶数,PF=1,;算数结果溢出OF=1,最高位进位CF=1RCLAX,1;AX=0AF35H,低8位1的个数为偶数,;PF=1,算数结果溢出OF=12.用BX寄存器作为地址指针,从BX所指的内存单元(0010H)开始连续存入三个无符号数(10H、04H、30H),接着计算内存单元中的这三个数之和,和放在0013H单元中,再求出这三个数之积,积放0014单元中。写出完成此功能的程序段并上机验证结果。程序段:LEABX,0010HMOV[BX],10HMOV[BX+1],04HMOV[BX+2],30HMOVAX,0000HADDAL,[BX]ADDAL,[BX+1]ADDAL,[BX+2]MOVDS:[0013H],ALMOVAL,[BX]MUL[BX+1]MUL[BX+2]MOVDS:[0014],AX上机验证:3.写出完成下述功能的程序段。上机验证你写出的程序段,程序运行的最后结果(AX)=?(1)传送15H到AL寄存器;(2)再将AL的内容乘以2;(3)接着传送15H到BL寄存器;(4)最后把AL的内容乘以BL的内容。程序段:MOVCL,02HMOVAL,15HMULCLMOVBL,15HMULBL结果AX=0372H4.写出完成下述功能的程序段。上机验证你写出的程序段,程序运行后的商=?(1)传送数据2058H到DS:1000H单元中,数据12H到DS:1002H单元中;(2)把DS:1000H单元中的数据传送到AX寄存器;(3)把AX寄存器的内容算术右移二位;(4)再把AX寄存器的内容除以DS:1002H字节单元中的数;(5)最后把商存入字节单元DS:1003H中。程序段:MOVDS:[1000H],2058HMOVDS:[1002H],12HMOVAX,DS:[1000H]SARAX,2MOVBL,DS:[1002H]DIVBLMOVDS:[1003H],AX最后商为73H5.下面的程序段用来清除数据段中从偏移地址0010H开始的12个字存储单元的内容(即将零送到这些存储单元中去)。(1)将第4条比较指令语句填写完整(划线处)。MOVSI,0010HNEXT:MOVWORDPTR[SI],0ADDSI,2CMPSI,001CHJNENEXTHLT(2)假定要按高地址到低地址的顺序进行清除操作(高地址从0020H开始),则上述程序段应如何修改?MOVSI,0020HNEXT:MOVBYTEPTR[SI],0SUBSI,1CMPSI,0014HJNENEXTHLT6.输入并运行表1.3中的程序段,把结果填入表右边的空格中,并分析结果,说明本程序段的功能是什么。程序段字单元(1A00H)=字单元(1A02H)=MOV[1A00H],0AA55HMOV[1A02H],2AD5HSHLWORDPTR[1A02H],1CMP[1A00H],8000HCMCRCLWORDPTR[1A02H],1RCLWORDPTR[1A00H],1AA550000AA552AD5AA5555AAAA5555AAAA5555AAAA55AB5554AAAB55说明:MOV[1A00H],0AA55H;[1A00H]0AA55HMOV[1A02H],2AD5H;[1A02H]2AD5HSHLWORDPTR[1A02H],1;[1A02H]=DATA*2CMP[1A00H],8000H;[1A00H]—8000H,结果不送回[1A00H]CMC;进位标志取反RCLWORDPTR[1A02H],1;将[1A02H]带CF的循环左移一位RCLWORDPTR[1A00H],1;将[1A00H]带CF的循环左移一位二.简答3.简要说明ADD,SUB,AND,OR对标志位的影响。答:4条指令满足以下条件时会对个标志位产生影响:CF:当进行加减运算时若最高位向前有进位或借位,则CF=1,否则CF=0。PF:当运算结果的低八位中1的个数为奇数时PF=1,否则PF=0。AF:在加减法操作中,D3向D4有进位或借位时AF=1,否则AF=0。ZF:当运算结果为零时ZF=1。SF:当运算结果最高位为1时SF=1,否则SF=0。OF:当运算结果溢出时OF=1。4.简要说明一般移位指令与循环移位指令之间的区别答:一般移位指令将最左(右)端移入CF,而另一端则会补0。循环移位指令同样将最左(右)端移入CF,但另一端会用CF或最左(右)端填充。
本文标题:实验二--算术逻辑运算及移位操作
链接地址:https://www.777doc.com/doc-4687717 .html