1、汇编语言期末习题汇编语言期末习题第二章8086计算机组织(主要是寻址方式以及地址存储方式)2.2 有两个16位字1EE5H和2A3CH分别存放在80x86微机的存储器的000B0H和000B3H单元中,请用图表示出它们在存储器里的存放情况。答:存储器里的存放情况如右下图所示:000B0HE5H000B1H1EH000B2H000B3H3CH000B4H2AH2.3在IBM PC机的存储器中存放信息如右下图所示。试读出30022H和30024H字节单元的内容,以及30021H和30022H字单元的内容。 如图: 3002012H3002134H30022ABH30023CDH30024EFH答案
2、:30020H:12H 30021H:34H 30022H: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、寻址方式3.1 给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?(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;超过了段
4、的边界,最高进位位丢失,因此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) ADD DX, BX(2) ADD AL, B
5、XSI(3) ADD BX+0B2H, CX(4) ADD WORD PTR 0524H, 2A59H(5) ADD AL, 0B5H3.3 写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。要求使用以下几种寻址方式:(1) 寄存器间接寻址(2) 寄存器相对寻址(3) 基址变址寻址答:(1) MOV BX, OFFSET BLOCKADD BX, (61)*2MOV DX, BX(2) MOV BX, OFFSET BLOCK 改为: MOV BX, (6-1)*2MOV DX, BX+(61)*2 也可 MOV DX, BLOCKBX(3) MOV BX, OFFSET BLO
6、CKMOV SI, (61)*2MOV DX, BXSI3.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) MOV AX, 1200H (1) (AX)=1200H(2) MOV AX, BX (2) (AX)=0100H(3) MOV AX, 1200H (3) (AX)=4C2AH(4) MOV AX, BX
7、 (4) (AX)=3412H(5) MOV AX, 1100BX (5) (AX)=4C2AH(6) MOV AX, BXSI (6) (AX)=7856H(7) MOV AX, 1100BXSI (7) (AX)=65B7H3.8 假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中变量名VAL的偏移地址为0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?(1) MOV AX, 0ABH (2) MOV AX, BX(3) MOV AX, 100H (4) MOV AX, VA
8、L(5) MOV AX, BX (6) MOV AX, ES:BX(7) MOV AX, BP (8) MOV AX, SI(9) MOV AX, BX+10 (10) MOV AX, VALBX(11) MOV AX, BXSI (12) MOV AX, VALBXSI答:(1) 立即方式; 操作数在本条指令中(2) 寄存器寻址方式; 操作数为 (BX)=0100H(3) 直接寻址方式; PA=20100H(4) 直接寻址方式; PA=20050H(5) BX寄存器间接寻址方式; PA=20100H(6) 附加段BX寄存器间接寻址方式; PA=21100H(7) BP寄存器间接寻址方式; P
9、A=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的字单元,表示如下:ARRAY DW 23, 36, 2, 100, 32000, 54, 0ZERO DW ?(1) 如果BX包含数组ARRAY的初始地址,请编写指令将数据0传送给ZERO单元。(2) 如果BX包含数据0在数
10、组中的位移量,请编写指令将数据0传送给ZERO单元。答:(1) MOV AX, BX+(7-1)*2 MOV BX+(7)*2, AX (2) MOV AX, ARRAYBX MOV ARRAYBX+2, AX3.10 如TABLE为数据段中0032单元的符号名,其中存放的内容为1234H,试问以下两条指令有什么区别?指令执行完后AX寄存器的内容是什么?MOV AX, TABLELEA AX, TABLE答:MOV AX, TABLE是将TABLE单元的内容送到AX,(AX)=1234HLEA AX,TABLE是将TABLE单元的有效地址送到AX,(AX)=0032H3.11 执行下列指令后A
11、X寄存器中的内容是什么?TABLE DW 10, 20, 30, 40, 50 ;000AH, 0014H, 001EH, 0028H, 0032HENTRY DW 3MOV BX, OFFSET TABLEADD BX, ENTRYMOV AX, BX答:(AX)=1E00H (TABLE的存储方式如右图所示)3.12 下列ASCII码串(包括空格符)依次存储在起始地址为CSTRING的字节单元中:CSTRING DB BASED ADDRESSING请编写指令将字符串中的第1个和第7个字符传送给DX寄存器。答:MOV DH, CSTRINGMOV DL, CSTRING+7-13.13 已
12、知堆栈段寄存器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) 和为
13、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、
14、Z、R、W均为存放16位带符号数单元的地址。(1) ZW+(Z-X) (2) ZW-(X+6)-(R+9)(3) Z(W*X)/(Y+6),R余数 (4) Z(W-X)/5*Y)*2答: 以下程序都未考虑带符号数的溢出 3.18 已知程序段如下:MOV AX, 1234H ;(AX)=1234H,标志位不变MOV CL, 4 ;(AX)和标志位都不变ROL AX, CL ;(AX)=2341H,CF=1,SF和ZF不变DEC AX ;(AX)=2340H,CF=1不变,SF=0,ZF=0MOV CX, 4 ;(AX)和标志位都不变MUL CX ;(AX)=8D00H,CF=OF=0,其它标志无
15、定义INT 20H试问:(1) 每条指令执行完后,AX寄存器的内容是什么?(2) 每条指令执行完后,进位、符号和零标志的值是什么?(3) 程序结束时,AX和DX的内容是什么?答:(1) 见注释;(2) 见注释;(3) (AX)=8D00H,(DX)=03.19 下列程序段中的每条指令执行完后,AX寄存器及CF、SF、ZF和OF的内容是什么?MOV AX, 0 ;(AX)=0, 标志位不变DEC AX ;(AX)=0FFFFH, CF不变,SF=1,ZF=0,OF=0ADD AX, 7FFFH ;(AX)=7FFEH, CF=1,SF=0,ZF=0,OF=0ADD AX, 2 ;(AX)=800
16、0H, CF=0,SF=1,ZF=0,OF=1NOT AX ;(AX)=7FFFH, 标志位不变SUB AX, 0FFFFH ;(AX)=8000H, CF=1,SF=1,ZF=0,OF=1ADD AX, 8000H ;(AX)=0, CF=1,SF=0,ZF=1,OF=1SUB AX, 1 ;(AX)=0FFFFH, CF=1,SF=1,ZF=0,OF=0AND AX, 58D1H ;(AX)=58D1H, CF=0,SF=0,ZF=0,OF=0SAL AX, 1 ;(AX)=0B1A2H, CF=0,SF=1,ZF=0,OF=1SAR AX, 1 ;(AX)=0D8D1H, CF=0,SF
17、=1,ZF=0,OF=0NEG AX ;(AX)= 272FH, CF=1,SF=0,ZF=0,OF=0ROR AX, 1 ;(AX)= 9397H, CF=1,SF和ZF不变,OF=1 答:见注释。3.20 变量DATAX和变量DATAY的定义如下:DATAX DW 0148H DW 2316HDATAY DW 0237H DW 4052H请按下列要求写出指令序列:(1) DATAX和DATAY两个字数据相加,和存放在DATAY中。(2) DATAX和DATAY两个双字数据相加,和存放在从DATAY开始的双字单元中。(3) 解释下列指令的作用:STCMOV BX, DATAXADC BX,
18、DATAY(4) DATAX和DATAY两个字数据相乘(用MUL)。(5) DATAX和DATAY两个双字数据相乘(用MUL)。(6) DATAX除以23(用DIV)。 (7) DATAX双字除以字DATAY (用DIV)。答:(3) DATAX和DATAY两个字数据之和加1,结果存入BX寄存器。3.22 试编写一程序求出双字长数的绝对值。双字长数在A和A+2单元中,结果存放在B和B+2单元中。答:程序段如下:MOV AX, AMOV DX, A+2CMP DX, 0JNS ZHENSHU ;不是负数则转走NEG DXNEG AXSBB DX, 0ZHENSHU: MOV B, AXMOV B
19、+2, DXINT 20H3.23 假设(BX)=0E3H,变量VALUE中存放的内容为79H,确定下列各条指令单独执行后的结果。(1) XOR BX, VALUE ;(BX)=9AH,CF、OF都为0,AF无定义,SF=1,ZF=0,PF=1(2) AND BX, VALUE ;(BX)=61H,CF、OF都为0,AF无定义,SF=0,ZF=0,PF=0(3) OR BX, VALUE ;(BX)=0FBH,CF、OF都为0,AF无定义,SF=1,ZF=0,PF=0(4) XOR BX, 0FFH ;(BX)=1CH,CF、OF都为0,AF无定义,SF=0,ZF=0,PF=0(5) AND
20、BX, 0 ;(BX)=00H,CF、OF都为0,AF无定义,SF=0,ZF=1,PF=1(6) TEST BX, 01H ;(BX)=0E3H,CF、OF都为0,AF无定义,SF=1,ZF=0,PF=0答:见注释。3.24 试写出执行下列指令序列后BX寄存器的内容。执行前(BX)=6D16H。MOV CL, 7SHR BX, CL答:(BX)=00DAH。3.26 试分析下面的程序段完成什么功能?MOV CL, 04SHL DX, CLMOV BL, AHSHL AX, CLSHR BL, CLOR DL, BL答:本程序段将 (DX),(AX) 的双字同时左移4位,即将此双字乘以10H (
21、16)。3.27 假定(DX)=0B9H,(CL)=3,(CF)=1,确定下列各条指令单独执行后DX中的值。(1) SHR DX, 1 ;(DX)=05CH(2) SAR DX, CL ;(DX)=17H(3) SHL DX, CL ;(DX)=5C8H(4) SHL DL, 1 ;(DX)=72H(5) ROR DX, CL ;(DX)=2017H(6) ROL DL, CL ;(DX)=0CDH(7) SAL DH, 1 ;(DX)=0B9H(8) RCL DX, CL ;(DX)=2CCH(4) RCR DL, 1 ;(DX)=0DCH答:见注释。3.28 下列程序段执行完后,BX寄存器
22、的内容是什么?MOV CL, 3MOV BX, 0B7HROL BX,1ROR BX, CL答:(BX)=0C02DH。3.29 假设数据段定义如下:CONAME DB SPACE EXPLORERS INC.PRLINE DB 20 DUP ()用串指令编写程序段分别完成以下功能:(1) 从左到右把CONAME中的字符串传送到PRLINE。(2) 从右到左把CONAME中的字符串传送到PRLINE。(3) 把CONAME中的第3和第4个字节装入AX。(4) 把AX寄存器的内容存入从PRLINE+5开始的字节中。(5) 检查CONAME字符串中有无空格字符,如有则把第一个空格字符的地址传送给B
23、X寄存器。答:(3) MOV AX, WORD PTR CONAME+3-1(4) MOV WORD PTR PRLINE +5, AX3.33 假定AX和BX中的内容为带符号数,CX和DX中的内容为无符号数,请用比较指令和条件转移指令实现以下判断:(1) 若DX的内容超过CX的内容,则转去执行EXCEED。(2) 若BX的内容大于AX的内容,则转去执行EXCEED。(3) 若CX的内容等于0,则转去执行ZERO。(4) BX与AX的内容相比较是否产生溢出?若溢出则转OVERFLOW。(5) 若BX的内容小于等于AX的内容,则转EQ_SMA。(6) 若DX的内容低于等于CX的内容,则转EQ_S
24、MA。答:(1) CMP DX, CXJA EXCEED(2) CMP BX, AXJG EXCEED(3) JCXZ ZERO(4) CMP BX, AXJO OVERFLOW(5) CMP BX, AXJLE EQ_SMA(6) CMP DX, CXJBE EQ_SMA3.35 指令CMP AX, BX后面跟着一条格式为J L1的条件转移指令,其中可以是B、NB、BE、NBE、L、NL、LE、NLE中的任意一个。如果AX和BX的内容给定如下: AX BX(1) 1F52H 1F52H(2) 88C9H 88C9H(3) FF82H 007EH (4) 58BAH 020EH(5) FFC5
25、H FF8BH(6) 09A0H 1E97H(7) 8AEAH FC29H(8) D367H 32A6H问以上8条转移指令中的哪几条将引起转移到L1?答:(1) JNB、JBE、JNL、JLE(2) JNB、JBE、JNL、JLE(3) JNB、JNBE、JL、JLE(4) JNB、JNBE、JNL、JNLE(5) JNB、JNBE、JL、JLE(6) JB、JBE、JL、JLE(7) JB、JBE、JNL、JNLE(8) JNB、JNBE、JL、JLE3.39 考虑以下的调用序列:(1) MAIN调用NEAR的SUBA过程(返回的偏移地址为0400);(2) SUBA调用NEAR的SUBB过
26、程(返回的偏移地址为0A00);(3) SUBB调用FAR的SUBC过程(返回的段地址为B200,返回的偏移地址为0100);(4) 从SUBC返回SUBB;(5) SUBB调用NEAR的SUBD过程(返回的偏移地址为0C00);(6) 从SUBD返回SUBB;(7) 从SUBB返回SUBA;(8) 从SUBA返回MAIN;(9) 从MAIN调用SUBC(返回的段地址为1000,返回的偏移地址为0600);请画出每次调用及返回时的堆栈状态。答:每次调用及返回时的堆栈状态图如下所示:3.40 假设(EAX)=00001000H,(EBX)=00002000H,(DS)=0010H,试问下列指令访
27、问内存的物理地址是什么?(1) MOV ECX,EAX+EBX(2) MOV EAX+2*EBX,CL(3) MOV DH,EBX+4*EAX+1000H答:(1) PA=(DS)*10H+EA=00100H+00001000H+00002000H=00003100H(2) PA=(DS)*10H+EA=00100H+00001000H+2*00002000H=00005100H(3) PA=(DS)*10H+EA=00100H+00002000H+4*00001000H+1000H=00007100H3.41 假设(EAX)=9823F456H,(ECX)=1F23491H,(BX)=348
28、CH,(SI)=2000H,(DI)=4044H。在DS段中从偏移地址4044H单元开始的4个字节单元中,依次存放的内容为92H,6DH,0A2H和4CH,试问下列各条指令执行完后的目的地址及其中的内容是什么?(1) MOV SI,EAX(2) MOV BX,ECX(3) MOV EBX,DI答:(1) 目的地址为DS:2000H,内容依次为:56H,0F4H,23H和98H(2) 目的地址为DS:348CH,内容依次为:91H,34H,0F2H和01H(3) 目的操作数为EBX寄存器,(EBX)=4CA26D92H3.43 请给出下列各指令序列执行完后目的寄存器的内容。(1) MOV EAX
29、,299FF94HADD EAX,34FFFFH ;(EAX)= 2CEFF93H(2) MOV EBX,40000000SUB EBX,1500000 ;(EBX)= 3EB00000H(3) MOV EAX,39393834HAND EAX,0F0F0F0FH ;(EAX)= 09090804H(4) MOV EDX,9FE35DHXOR EDX,0F0F0F0H ;(EDX)= 6F13ADH答:见注释。3.44 请给出下列各指令序列执行完后目的寄存器的内容。(1) MOV BX,-12MOVSX EBX,BX ;(EBX)= 0FFFF FFF4H(2) MOV CL,-8MOVSX EDX,CL ;(EDX)= 0FFFF FFF8H(3) MOV AH,7MOVZX ECX,AH ;(ECX)= 0000 0007H(4) MOV AX,99HMOVZX EBX,AX ;(EBX)= 0000 0099H答:见注释。3.45 请给出下列指令序列执行完后EAX和EBX的内容。MOV ECX,307F455HBSF EAX,ECX ;(EAX)= 0DBSR EBX,ECX ;(EBX)= 25D答:见注释。3.46 请给出下列指令序列执行完后AX和DX的内容。MOV BX,98HBSF AX,BX
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1