您好,欢迎访问三七文档
汇编语言期末习题第二章8086计算机组织(主要是寻址方式以及地址存储方式)2.2有两个16位字1EE5H和2A3CH分别存放在80x86微机的存储器的000B0H和000B3H单元中,请用图表示出它们在存储器里的存放情况。答:存储器里的存放情况如右下图所示:000B0HE5H000B1H1EH000B2H000B3H3CH000B4H2AH2.3在IBMPC机的存储器中存放信息如右下图所示。试读出30022H和30024H字节单元的内容,以及30021H和30022H字单元的内容。如图:答案:30020H:12H30021H:34H30022H:ABH30023H:CDH30024H:EFH2.4在实模式下,段地址和偏移地址为3017:000A的存储单元的物理地址是什么?如果段地址和偏移地址是3015:002A和3010:007A呢?答:3017:000A、3015:002A和3010:007A的存储单元的物理地址都是3017AH。2.5如果在一个程序开始执行以前(CS)=0A7F0H,(如16进制数的最高位为字母,则应在其前加一个0)(IP)=2B40H,试问该程序的第一个字的物理地址是多少?答:该程序的第一个字的物理地址是0AAA40H。第三章8086的指令系统和寻址方式3.1给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?3002012H3002134H30022ABH30023CDH30024EFH(1)立即寻址(2)直接寻址(3)使用BX的寄存器寻址(4)使用BX的简接寻址(5)使用BX的寄存器相对寻址(6)基址变址寻址(7)相对基址变址寻址答:(1)操作数在指令中,即立即数;(2)EA=D=7237H;(3)无EA,操作数为(BX)=637DH;(4)EA=(BX)=637DH;(5)EA=(BX)+D=0D5B4H;(6)EA=(BX)+(SI)=8E18H;(7)EA=(BX)+(SI)+D=1004FH;超过了段的边界,最高进位位丢失,因此EA=004FH。3.2试根据以下要求写出相应的汇编语言指令(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。(2)用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。(3)用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器中。(4)用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回存储单元中。(5)把数0B5H与(AL)相加,并把结果送回AL中。答:(1)ADDDX,BX(2)ADDAL,[BX][SI](3)ADD[BX+0B2H],CX(4)ADDWORDPTR[0524H],2A59H(5)ADDAL,0B5H3.3写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。要求使用以下几种寻址方式:(1)寄存器间接寻址(2)寄存器相对寻址(3)基址变址寻址答:(1)MOVBX,OFFSETBLOCKADDBX,(6–1)*2MOVDX,[BX](2)MOVBX,OFFSETBLOCK改为:MOVBX,(6-1)*2MOVDX,[BX+(6–1)*2]也可MOVDX,BLOCK[BX](3)MOVBX,OFFSETBLOCKMOVSI,(6–1)*2MOVDX,[BX][SI]3.4现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。(1)MOVAX,1200H(1)(AX)=1200H(2)MOVAX,BX(2)(AX)=0100H(3)MOVAX,[1200H](3)(AX)=4C2AH(4)MOVAX,[BX](4)(AX)=3412H(5)MOVAX,1100[BX](5)(AX)=4C2AH(6)MOVAX,[BX][SI](6)(AX)=7856H(7)MOVAX,1100[BX][SI](7)(AX)=65B7H3.8假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中变量名VAL的偏移地址为0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?(1)MOVAX,0ABH(2)MOVAX,BX(3)MOVAX,[100H](4)MOVAX,VAL(5)MOVAX,[BX](6)MOVAX,ES:[BX](7)MOVAX,[BP](8)MOVAX,[SI](9)MOVAX,[BX+10](10)MOVAX,VAL[BX](11)MOVAX,[BX][SI](12)MOVAX,VAL[BX][SI]答:(1)立即方式;操作数在本条指令中(2)寄存器寻址方式;操作数为(BX)=0100H(3)直接寻址方式;PA=20100H(4)直接寻址方式;PA=20050H(5)BX寄存器间接寻址方式;PA=20100H(6)附加段BX寄存器间接寻址方式;PA=21100H(7)BP寄存器间接寻址方式;PA=15010H(8)SI寄存器间接寻址方式;PA=200A0H(9)BX寄存器相对寻址方式;PA=20110H(10)BX寄存器相对寻址方式;PA=20150H(11)BX和SI寄存器基址变址寻址方式;PA=201A0H(12)BX和SI寄存器相对基址变址寻址方式;PA=201F0H3.9在ARRAY数组中依次存储了七个字数据,紧接着是名为ZERO的字单元,表示如下:ARRAYDW23,36,2,100,32000,54,0ZERODW?(1)如果BX包含数组ARRAY的初始地址,请编写指令将数据0传送给ZERO单元。(2)如果BX包含数据0在数组中的位移量,请编写指令将数据0传送给ZERO单元。答:(1)MOVAX,[BX+(7-1)*2]MOV[BX+(7)*2],AX(2)MOVAX,ARRAY[BX]MOVARRAY[BX+2],AX3.10如TABLE为数据段中0032单元的符号名,其中存放的内容为1234H,试问以下两条指令有什么区别?指令执行完后AX寄存器的内容是什么?MOVAX,TABLELEAAX,TABLE答:MOVAX,TABLE是将TABLE单元的内容送到AX,(AX)=1234HLEAAX,TABLE是将TABLE单元的有效地址送到AX,(AX)=0032H3.11执行下列指令后AX寄存器中的内容是什么?TABLEDW10,20,30,40,50;000AH,0014H,001EH,0028H,0032HENTRYDW3┇MOVBX,OFFSETTABLEADDBX,ENTRYMOVAX,[BX]答:(AX)=1E00H(TABLE的存储方式如右图所示)3.12下列ASCII码串(包括空格符)依次存储在起始地址为CSTRING的字节单元中:CSTRINGDB‘BASEDADDRESSING’请编写指令将字符串中的第1个和第7个字符传送给DX寄存器。答:MOVDH,CSTRINGMOVDL,CSTRING+7-13.13已知堆栈段寄存器SS的内容是0FFA0H,堆栈指针寄存器SP的内容是00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令。试画出堆栈区和SP的内容变化过程示意图(标出存储单元的物理地址)。答:堆栈区和SP的内容变化过程示意图如下左图所示。3.15求出以下各十六进制数与十六进制数62A0H之和,并根据结果设置标志位SF、ZF、CF和OF的值。(1)1234H(2)4321H(3)CFA0H(4)9D60H答:(1)和为74D4H;SF=0,ZF=0,CF=0,OF=0(2)和为A5C1H;SF=1,ZF=0,CF=0,OF=1(3)和为3240H;SF=0,ZF=0,CF=1,OF=0(4)和为0000H;SF=0,ZF=1,CF=1,OF=03.16求出以下各十六进制数与十六进制数4AE0H的差值,并根据结果设置标志位SF、ZF、CF和OF的值。(1)1234H(2)5D90H(3)9090H(4)EA04H答:(1)差为C754H;SF=1,ZF=0,CF=1,OF=0(2)差为12B0H;SF=0,ZF=0,CF=0,OF=0(3)差为45B0H;SF=0,ZF=0,CF=0,OF=1(4)差为9F24H;SF=1,ZF=0,CF=0,OF=03.17写出执行以下计算的指令序列,其中X、Y、Z、R、W均为存放16位带符号数单元的地址。(1)Z←W+(Z-X)(2)Z←W-(X+6)-(R+9)(1)MOVAX,ZSUBAX,XADDAX,W(2)MOVBX,XADDBX,6MOVCX,R(3)ADDY,6MOVAX,WIMULX(4)MOVAX,WSUBAX,XCWD(3)Z←(W*X)/(Y+6),R←余数(4)Z←((W-X)/5*Y)*2答:以下程序都未考虑带符号数的溢出3.18已知程序段如下:MOVAX,1234H;(AX)=1234H,标志位不变MOVCL,4;(AX)和标志位都不变ROLAX,CL;(AX)=2341H,CF=1,SF和ZF不变DECAX;(AX)=2340H,CF=1不变,SF=0,ZF=0MOVCX,4;(AX)和标志位都不变MULCX;(AX)=8D00H,CF=OF=0,其它标志无定义INT20H试问:(1)每条指令执行完后,AX寄存器的内容是什么?(2)每条指令执行完后,进位、符号和零标志的值是什么?(3)程序结束时,AX和DX的内容是什么?答:(1)见注释;(2)见注释;(3)(AX)=8D00H,(DX)=03.19下列程序段中的每条指令执行完后,AX寄存器及CF、SF、ZF和OF的内容是什么?MOVAX,0;(AX)=0,标志位不变DECAX;(AX)=0FFFFH,CF不变,SF=1,ZF=0,OF=0ADDAX,7FFFH;(AX)=7FFEH,CF=1,SF=0,ZF=0,OF=0ADDAX,2;(AX)=8000H,CF=0,SF=1,ZF=0,OF=1NOTAX;(AX)=7FFFH,标志位不变SUBAX,0FFFFH;(AX)=8000H,CF=1,SF=1,ZF=0,OF=1ADDAX,8000H;(AX)=0,CF=1,SF=0,ZF=1,OF=1SUBAX,1;(AX)=0FFFFH,CF=1,SF=1,ZF=0,OF=0ANDAX,58D1H;(AX)=58D1H,CF=0,SF=0,ZF=0,OF=0SALAX,1;(AX)=0B1A2H,CF=0,SF=1,ZF=0,OF=1SARAX,1;(AX)=0D8D1H,CF=0,SF=1,ZF=0,OF=0NEGAX;(AX)=272FH,CF=1,SF=0,ZF=0,OF=0RORAX,1;(AX)=9397H,CF=1,SF和ZF不变,OF=1答:见注释。3.20变量DATAX和变量DATAY的定义如下:DATAXDW0148HDW2316HDATAYDW0237HDW4052H请按下列要求写出指令序列:(1)DATAX和DATAY两个字数据相加,和存放在DATAY中。(2)DATAX和DATAY两个双字数据相加,和存放在从DATAY开始的双字单元中。(3)解释下列指令的作用:STCMOVBX,DATAXADCBX,DATAY(4)DATAX和DATAY两个字数据相乘(用MUL)。(5)DATAX和DATAY两个双字数据相乘(用MUL)。(6)DATAX除以23(用DIV)。(7)DATAX双字除以字DATAY(用DIV)。答:(3)DATAX和DATAY两个字数
本文标题:汇编语言期末习题
链接地址:https://www.777doc.com/doc-2279429 .html