实验二算术逻辑运算及移位操作一、实验目的1.熟悉算术逻辑运算指令和移位指令的功能。2.了解标志寄存器各标志位的意义和指令执行对它的影响。二、实验预习要求1.复习8086指令系统中的算术逻辑类指令和移位指令。2.按照题目要求在实验前编写好实验中的程序段。三、实验任务1.实验程序段及结果表格如表1.2:表1.2标志位CFZFSFOFPFAF程序段1:MOVAX,1018HMOVSI,230AHADDAX,SIADDAL,30HMOVDX,3FFHADDAX,BXMOV[20H],1000HADD[20H],AXPUSHAXPOPBX000000000000000000000011000000000000000000000000000000000000000000程序段2:MOVAX,0A0AHADDAX,0FFFFHMOVCX,0FF00HADCAX,CXSUBAX,AXINCAX000000000000100011100011100010010010000000ORCX,0FFHANDCX,0F0FHMOV[10H],CX001010000010000010程序段3:MOVBL,25HMOVBYTEPTR[10H],4MOVAL,[10H]MULBL000000000000000000000000000000程序段4:MOVWORDPTR[10H],80HMOVBL,4MOVAX,[10H]DIVBL000000000000000000000000000000程序段5:MOVAX,0DECAXADDAX,3FFFHADDAX,AXNOTAXSUBAX,3ORAX,0FBFDHANDAX,0AFCFHSHLAX,1RCLAX,10000000000000010111000010000110000110010000010000010001001100001102.用BX寄存器作为地址指针,从BX所指的内存单元(0010H)开始连续存入三个无符号数(10H、04H、30H),接着计算内存单元中的这三个数之和,和放在0013H单元中,再求出这三个数之积,积放0014单元中。写出完成此功能的程序段并上机验证结果。3.写出完成下述功能的程序段。上机验证你写出的程序段,程序运行的最后结果(AX)=?(1)传送15H到AL寄存器;2题答案MOVBX.10HMOVCX,BXINCBXMOVSI,BXINCBXMOVAX,[CX]ADDAX,[BX]ADDAX,[SI]MOV[13H],AXMOVAX,[CX]MULWORDPTR[BX]MULWORDPTR[SI]MOV[14H],AXF10H12H10H4H30H(2)再将AL的内容乘以2;(3)接着传送15H到BL寄存器;(4)最后把AL的内容乘以BL的内容。4.写出完成下述功能的程序段。上机验证你写出的程序段,程序运行后的商=?(1)传送数据2058H到DS:1000H单元中,数据12H到DS:1002H单元中;(2)把DS:1000H单元中的数据传送到AX寄存器;(3)把AX寄存器的内容算术右移二位;(4)再把AX寄存器的内容除以DS:1002H字节单元中的数;(5)最后把商存入字节单元DS:1003H中。5.下面的程序段用来清除数据段中从偏移地址0010H开始的12个字存储单元的内容(即将零送到这些存储单元中去)。(1)将第4条比较指令语句填写完整(划线处)。MOVSI,0010HNEXT:MOVWORDPTR[SI],0ADDSI,2CMPSI,答案22H(或者20H)JNENEXTHLT(2)假定要按高地址到低地址的顺序进行清除操作(高地址从0020H开始),则上述程序段应如何修改?上机验证以上两个程序段并检查存储单元的内容是否按要求进行了改变。6.输入并运行表1.3中的程序段,把结果填入表右边的空格中,并分析结果,说明本程序段的功能是什么。表1.3程序段字单元(1A00H)=字单元(1A02H)=3题答案MOVAL,15HMOVSI,2HMULSIMOVBL,15HMULBLAX=372H4题答案MOVWORDPTR[1000H],2058HMOVBYTEPTR[1002H],12HMOVAX,[1000H]MOVBX,[1002H]SARAX,1SARAX,1DIVBXMOV[1003H],AX最后结果为73H5.2题答案MOVSI,20HNEXTMOVWORDPTR[SI],0HSUBSI,2HCMPSI,8HJNZNEXTHLTMOV[1A00H],0AA55HMOV[1A02H],2AD5HSHLWORDPTR[1A02H],1CMP[1A00H],8000HCMCRCLWORDPTR[1A02H],1RCLWORDPTR[1A00H],1AA55H0HAA55H2AD5HAA55H55AAHAA55H55AAHAA55H55AAHAA55HAB55H54AAHAB55H四、实验报告要求1.整理出完整的实验程序段和运行结果。2.回答题目中的问题。3.简要说明ADD、SUB、AND、OR指令对标志位的影响。4.简要说明一般移位指令与循环移位指令之间的主要区别。6题答案程序通过逻辑左移进位取反循环左移最后使得两个数的为65535也就是16位二进制数的最大值