




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章习题答案3.1 给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?(1)立即寻址;答案:无。如:MOVAX,5(2)直接寻址;答案:7237H如:MOVAX,7237H(3)使用BX的寄存器寻址;答案:无。因不涉及内存如:MOVAX,BX(4)使用BX的间接寻址;答案:637DH如:MOVAX,BX(5)使用BX的寄存器相对寻址答案:D5B4H如:MOVAX,BX+7237H(6)基址变址寻址答案:8E18H如:MOVAX,BXSI(7)相对基址变址寻址;答案:无效,溢出 如:MOVAX,BXSI+7237H3.2 试根据以
2、下要求,写出相应的汇编语言指令:(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中;答案:ADD DX,BX(2)用寄存器BX 和SI 的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中; 答案:ADD AL,BXSI(3)用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回到存储器中;答案:ADD BX+0B2H,CX(4)用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回到该存储单元中;答案:ADDWORDPTR0524H,2A59H(5)把数0B5H与(AL)相加,
3、并把结果送回AL中。答案:ADDAL, 0B5H3.3 写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。要求使用以下几种寻址方式:(1)寄存器间接寻址答案:LEA BX,BLOCKADD BX, 5*2MOV DX, BX(2)寄存器相对寻址答案:LEA BX,BLOCKMOV DX, BX+5*2(3)基址变址寻址答案:LEA BX,BLOCKMOV SI,5*2MOV DX, BXSI3.4 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56,(20103)=78H,(21200)=2A
4、H,(21201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后AX寄存器的内容。(1)MOV AX,1200H答案:1200H(2)MOV AX,BX答案:0100H(3)MOV AX,1200H答案:4C2AH(4)MOV AX,BX答案:3412H(5)MOV AX,1100HBX答案:4C2AH(6)MOV AX,BXSI答案:7856H(7)MOV AX,1100HBXSI答案:65B7H3.5 给定(IP)=2BC7H,(CS)=0200H,位移量D=5119H,(BX)=1200H,(DS)=212AH,(224A0)=0600H,(275B
5、9)=098AH,试为以下转移指令找出转移的偏移地址。(1)段内直接寻址;答案:7CD9H如:JMP7CD9H(2)使用BX及寄存器间接寻址方式的段内间接寻址;答案:600H如JMP BX(3)使用BX及寄存器相对寻址方式的段内间接寻址;答案:98AH如JMP BX+5119H3.6 当前数据段寄存器的内容为1B00H,在数据段的偏移地址2000H单元内,含有一个内容为0FF10H和8000H的指针,它们是一个16位的偏移地址和段地址,试写出把该变量装入AX的指令序列,并画图表示出来。答案:LES BX,2000MOV AX,ES:BX3.7 在0624单元内有一条二字节JMP SHORT O
6、BJ指令,如其中的位移量为(1)27H,(2)6BH,(3)0C6H,试问转向地址的值是多少?答案:(1) 064DH (因为0624处有两字节指令,因此下一条指令在0626H处,而0626H+27H=064DH)(2)0691H(因为0624处有两字节指令,因此下一条指令在0626H处,而0626H+6BH =0691H)(3)05ECH(因为0624处有两字节指令,因此下一条指令在0626H处,而近跳转时,位移0H7FH为正,向前跳,即向地址增加的方向跳转,但080H0FFH为负值,从当前地址0C6H是负值,实际上为-3AH, 0626H-3AH =05ECH)3.8假定(DS)=2000
7、H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中变量名VAL的偏移地址为0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址是多少?(1)MOV AX,0ABH答案:立即,不涉及内存,无物理地址(2)MOV AX,BX答案:寄存器寻址,不涉及内存,无物理地址(3)MOV AX,100H答案:直接寻址,物理地址:20100H,(4)MOV AX,VAL 答案:直接寻址,物理地址:20050H,(5)MOV AX, BX 答案:寄存器间接寻址,物理地址:20100H,(6)MOV AX,ES:BX答案:寄存器间接寻
8、址,物理地址:21100H,(在ES段)(7)MOV AX,BP答案:寄存器间接寻址,物理地址:15010H(在SS段)(8)MOV AX,SI答案:寄存器间接寻址,物理地址:200A0H(9)MOV AX,BX+10答案:寄存器相对寻址,物理地址:20110H(10)MOV AX,VALBX答案:寄存器相对寻址,物理地址:20150H(11)MOV AX,BXSI答案:基址变址寻址,物理地址:201A0H(12)MOV AX,VALBXSI答案:相对基址变址寻址,物理地址:201F0H3.9 在ARRAY数组中依次存储了七个数字,紧接着是名为ZERO的字单元,表示如下:ARRAY DW 23
9、,36,2,100,32000,54,0ZERO DW ?(1)如果BX包含数组ARRAY的初始地址,请编写指令将数据0传送给ZERO单元答案:MOV AX,BX+(7-1)*2 MOV ZERO,AX(2)如果BX包含数据0在数组中的位移量,请编写指令将数据0传送给ZERO单元答案:MOV AX,ARRAY BX MOV ZERO,AX3.10 如TABEL为数据段中0032单元的符号名,其中存放1234H,试问以下两条指令有什么区别?指令执行完后AX寄存器的内容是什么?MOV AX,TABELLEA AX,TABEL答案:前一条指令是取地址为0032内存的值,结果AX=1234H,后一条指
10、令是取TABEL在内存中的地址,其结果为AX=0032H3.11 执行下列指令后AX寄存器中的内容是什么?TABEL DW 10,20,30,40,50ENTRY DW 3TABEL的第3字节,从这里以字取出则为1E00HMOV BX,OFFSET TABELADD BX,ENTRYMOV AX,BX分析:10D=0AH,20=14H,30=1EH,40=28H, 50=32H,TABEL内存块按字节写实际上为:0A,00,14,00,1E,00,28,00,32, 00答案:AX=1E00H (1EH=30 即十六进制1E为十进制的30)3.12 下列ASCII码串(包括空格符)依次存储在起
11、始地址为CSTRING的字节单元中:CSTRING DB BASED ADDRESSING请编写指令将字符串的第1个和第7个字符传送给DX寄存器。答案:MOV DL,CSTRING MOV DH,CSTRING+7-13.13 已知堆栈段寄存器SS的内容是0FFA0H,堆栈指针寄存器SP的内容是00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令。试画出堆栈区和SP的内容变化过程示意图(标出存储单元的物理地址)。答案:(1)原始状态à(2)经两次PUSHà(3)经一次POP3.14设(DS)=1B00,(ES)=2B00H,有关存储单元
12、的内容如图所示。请写出两条指令把字变量X装入AX寄存器。答案:LES BX,2000 MOV AX,ES:BX3.15 求出以下各十六进制数与十六进制数62A0之和,并根据结果设置标志位SF,ZF,CF,OF的值。答案序号被加数加数和SFZFCFOF解释1123462A074D4H0000常规2432162A0A5C1H1001正变负3CFA062A03240H0010溢出,进位49D6062A00000H0110溢出,进位,正零3.16求出以下各十六进制数与十六进制数4AE0的差值,并根据结果设置标志位SF,ZF,CF,OF的值。答案序号被减数减数差SFZFCFOF解释112344AE00C
13、754H1010正变负,借位25D904AE012B0H0000常规390904AE045B0H0001变号4EA044AE09F24H1000保持负号不变3.17写出执行以下计算的指令序列,其中X,Y,Z,R和W均为存放16位带符号数的单元的地址。(1)ZßW+(Z-X)答案:MOV AX,Z SUB AX,XADD AX,WMOV Z,AX注意:不许化简,只能按题目要求的顺序做!(2)ZßW-(X+6)-(R+9)答案:MOV BX,6 ADD BX,X MOV DX,9 ADD DX,R MOV AX,W SUB AX,BX SUB AX,DX MOV Z,AX(3)
14、Zß(W*X)/(Y+6),Rß余数答案:MOV AX,W IMUL X MOV BX,Y ADD BX,6 IDIV BX MOV Z,AX MOV R,DX(4)Zß(W-X)/5*Y)*2答案:MOV AX,W SUB AX,X MOV BX,5 CWD;符号扩展到双字 IDIV BX IMUL Y MOV BL,2 IMUL BL MOV Z,AX3.18 已知程序段如下:MOV AX,1234MOV CL,4ROL AX,CLDEC AXMOV CX,4MUL CXINT 20H试问:(1)每条指令执行完后,AX寄存器的内容是什么?(2)每条指令执行完后
15、,进位、符号和零标志的值是什么?(3)程序结束时AX与DX的寄存器的内容是什么?答案:以表格方式说明如下:指令序列AX的内容进位标志CF符号标志SF零标志ZF说明MOV AX,1234H1234H000MOV CL,41234H000ROL AX,CL2341H100DEC AX2340H100MOV CX,42340H100MUL CX8D00H000DX=0INT 20H操作控制权已经转交操作系统,不受控制,AX及其他标志状态不明。3.19 下列程序段中的每条指令执行完后,AX寄存器及CF,SF,ZF和OF的内容是什么?指令序列按题目要求的答案部分说明AX的内容进位CF符号SF零ZF溢出O
16、FMOVAX,00000H0000不影响标志位DECAX0FFFFH0100自减不出现借位ADDAX,7FFFH7FFEH1000ADDAX,28000H0101NOTAX7FFFH0101按位取反,不影响标志SUBAX,0FFFFH8000H1101ADDAX,8000H0000H1011SUBAX,10FFFFH1100ANDAX,58D1H58D1H0000SALAX,10B1A2H0101SARAX,10D8D1H0100NEGAX272FH1000求补产生溢出RORAX,19397H1001注意:图中蓝色单元格为要求的答案。3.20 变量DATAX与变量DATAY的定义如下:DATA
17、X DW 0148HDW 2316HDATAY DW 0237HDW 4052H(注意:在汇编语言源程序中可以在1个变量名下定义多个值,既可以当单变量又可以当数组使用。比如: “HEllo!”,0DH,0AH,$还可以写为:STRING DB H DB Ello! DB 0DH,0AH,”$”)请按下列要求写出指令序列:(1) DATAX和DATAY两个字数据相加,和存放在DATAY中。答案:MOV AX,DATAX ADD DATAY,AXMOV AX,DATAX+2 ADD DATAY+2,AX(注意:不可以直接写 ADD DATAY, DATAX,源操作数与目的操作数不可以同时为内存)(
18、2) DATAX和DATAY两个双字数据相加,和存放在DATAY开始的字单元中。答案:MOV AX,DATAX ADD DATAY,AX MOV AX,DATAX+1 ADC DATAY+1,AX(注意:前面1次加可能产生进位,但后续的MOV指令不影响标志,第2次加的时候带进位加!)(3) 解释下列指令的作用:STCMOV BX,DATAXADC BX,DATAY答案:结果是BXßDATAX+DATAY+1(4) DATAX和DATAY两个字数据相乘(用MUL)。答案:MOV AX,DATAX MUL DATAY(注意:结果是32位积,存放在DX及AX中。 DX:AXßDA
19、TAX* DATAY,DX存放积的高16位,AX存放低16位积)(5) DATAX和DATAY两个双字数据相乘(用MUL)。答案:MOV EAX,DATAX;必须使用32位CPU的指令 MUL DWORD PTR DATAY(注意:结果是64位积,存放在EDX及EAX中。 EDX:EAXßDATAX* DATAY,EDX存放积的高32位,EAX存放低32位积)(6) DATAX除以23(用DIV)。答案:MOV AX,DATAX MOV BL,23DIV BL(注意:不可以直接除以立即数23,必须借助于一个寄存器。)(7) DATAX双字除以字DATAY(用DIV)。答案:MOV R
20、AX,0;只有动用64位CPU才可以完成这个除法 MOV EAX,DWORD PTR DATAX MOV BX,DATAYDIV BX(注意:在32位机上理论上可以这样写,结果会出错!对于这类的除法要从原始的二进制除着手,而不应该借助于DIV指令。使用64位可以完成。)3.21写出对存放在DX和AX中的双字长数求补的指令序列。答案:NOT AX NOT DXADD AX,1 ADC DX,0(注意:借助于32位指令可以一次性完成,可以尝试之。)3.22 试编写一个程序求出双字长数的绝对值。双字长数在A和A+2单元中,结果存放在B及B+2单元中。答案:;前期预处理略MOV AX,A MOV DX
21、,A+2 TEST DH,80HJZ PUT_TO_B ;如果是正数,则DX的最高位为0,绝对值为自己,直接放入SUB AX,1;根据补码求原码的方法是先减1,SBB DX,0;带借位减1次0,因为AX-1时可能借位,此借位必须落实到DXNOT DXNOT AX;再按位取反PUT_TO_B:MOV B,AXMOV B+2,DX3.23 假设(BX)=0E3H,变量VALUE中存放的内容为79H,确定下列各条指令单独执行后的结果。(1) XOR BX,VALUE答案:BXß9AH(2) AND BX,VALUE答案:BXß61H(3) OR BX,VALUE答案:BX
22、3;FBH(4) XOR BX,0FFH答案:BXß1CH(5) AND BX,0答案:BXß0(2) TEST BX,01H答案:BX不变,但标志位ZF=0表示第0位03.24 试写出执行以下指令序列后BX寄存器的内容。执行前(BX)=6D16H。MOV CL,7SHR BX,CL答案:(BX)=0DAH3.25 试用移位指令把十进制+53和-49分别乘以2。它们应该用什么指令?得到的结果是什么?如果要除以2呢?答案:SAL 及 SAR (不改变符号地移位!)3.26 试分析下面的程序段完成什么功能?MOV CL,4SHR DX,CLMOV BL,AHSHL AX,CLS
23、HR BL,CLOR DL,BL答案:长字DX:AX整体左移4位。3.27 假定(DX)=0B9H,(CL)=3,(CF)=1,确定下列各条指令单独执行后DX中的值。(1) SHR DX,1答案:5CH(2) SAR DX,CL答案:17H(3) SHL DX,CL答案:5C8H(4) SHL DL,1答案:72H(5) ROR DX,CL答案:2017H(6) ROL DL,CL答案:0CDH(7) SAL DH,1答案:0B9H(8) RCL DX,CL答案:5CCH(9) RCR DL,1答案:0DCH3.28 下列程序段执行完后,BX寄存器中的内容是什么?MOV CL,3MOV BX,
24、0B7HROL BX,1ROR BC,CL答案:(BX)=0C02DH3.29 假设数据定义如下:CONAME DB 'SPACE EXPLORES INC.'PLINE DB 20 DUP(' ')(注意:PLINE是20个空格的位置空间)用串指令编写程序段分别完成以下功能:(1)从左到右把CONAME中的字符串传送到PLINE。答案:LEASI,CONAMELEADI,PLINECLD;正向传送即从左向右传送MOVCX,PLINE-CONAME;这样得到字符串CONAME的长度REPMOVSB(注意:PLINE- CONAME是字符串的长度是由编译程序MAS
25、M.EXE求出的,不是汇编指令,实际上是伪指令!)(2)从右到左把CONAME中的字符串传送到PLINE。答案:LEASI,CONAMELEADI,PLINEMOVCX,PLINE-CONAMEADDDI,CXADDSI,CXDECDIDECSI;DI,SI移到各自的尾部STD;反向传送,即从右到左。REPMOVSB(注意:PLINE- CONAME是字符串的长度是由编译程序MASM.EXE求出的,不是汇编指令,实际上是伪指令!)(3) 把CONAME听第3和第4个字节装入AX。答案: MOV AX,WORD PTR CONAME+3-1(注意1:.WORD PTR 是强调字属性,因为是在字节
26、缓存区中取数。注意2.第3个字节的写法.)(4) 把AX寄存器的内容存入从PLINE+5开始的字节中。答案: MOV WORD PTR PLINE+5,AX(注意1:.WORD PTR 是强调字属性,因为是在字节缓存区中存数.)(5) 检查CONAME字符串中有无空格字符,如有则把它传送给BH寄存器。答案: MOV AX,DATAS MOV DS,AXMOVES,AX;附加段指向正确的段地址 ;此处输入代码段代码LEADI,CONAMEMOVAL,' '待扫描的字符CLD;正向扫描MOVCX,PLINE-CONAME;重复次数=字符串长度REPNESCASB;当不相等时扫描下一
27、个,相等时立停,但DI指向了下一个位置JNE EXIT;扫描结束都没有相等的情况出现则跳到下一段执行!MOVBH,DI-1EXIT:;其他语句3.30 编写程序段,把字符串STRING中的&字符用空格答代替。STRING DB THEDATEIS FEB&03答案:首先在数据段DATAS中定义变量如下: STRING DB 'THEDATEIS FEB&03'STR_LEN EQU$-STRING;这样的写法得到字符串长度然后在代码段的程序段为: MOV AX,DATAS MOV DS,AXMOVES,AX;同样的附加段要指向正确的段LEADI,STRI
28、NGMOVCX,STR_LENMOVAL,'&'REPNESCASBJNEEXITMOVBYTE PTR DI-1,' 'EXIT:;其他的代码3.31假设程序中数据定义如下:STUDENT_NAME DB 30 DUP(?)STUDENT_ADDR DB 9 DUP(?)PRINT_LINE DB 132 DUP(?)分别编写下列程序段:(1) 用空格串清除PRINT_LINE域。答案:假定数据定义在DATAS段中(后面的几题同样作此假定),则 MOV AX,DATAS MOV DS,AX MOV ES,AXLEA DI,PRINT_LINE MOV
29、CX, 132 REP STOSB(2) 在STUDENT_ADDR中查找第一个“-”。答案:MOV AL,-LEA DI,STUDENT_ADDR MOV CX,9 CLD;从前向后查找 REPNE SCASB JNE EXIT;如果已经找到的处理语句EXIT: ;其他语句(3) 在STUDENT_ADDR中查找最后一个“-”。答案:MOV AL,-LEA DI,STUDENT_ADDR+9-1 MOV CX,9 STD;反向向前查找 REPNE SCASB JNE EXIT;如果已经找到的处理语句EXIT: ;其他语句(4) 如果STUDENT_NAME域中全是空格符时填入“*”。答案:L
30、EADI,STUDENT_NAME MOV AL,' 'MOV CX,STUDENT_ADDR-STUDENT_NAMEREPE SCASBJNEEXITLEADI,STUDENT_NAME MOV AL,'*' MOV CX,STUDENT_ADDR-STUDENT_NAMEREP STOSBEXIT:(5) 把STUDENT_NAME移到PRINT_LINE前30个字节中,把STUDENT_ADDR移到PRINT_LINE后9个字节中答案:MOV CX,30LEA DI,PRINT_LINELEA SI,STUDENT_NAME CLD;正向 REP MOV
31、SBMOV CX,9LEA DI,PRINT_LINELEA SI,STUDENT_ADDR ADD SI,9-1ADD DI,132-1STD;反向 REP MOVSB3.32编写一程序段,比较5字节的字符串,OLDS和NEWS,如果OLDS不同与NEWS则执行NEW_LESS,否则顺序执行程序。答案:MOV ES,AX;附加段指向正确位置LEASI,OLDSLEADI,NEWSMOV CX,5CLDREP CMPSBJNE NEW_LINENEW_LINE:3.33假定AX和BX的内容为带符号数,CX和DX的内容为无符号数,请用比较指令和条件转移指令实现以下判断:(1)若DX的内容超过CX
32、的内容则转去执行EXCEED;答案:CMP DX,CX JA EXCEED(2)若BX的内容超过AX的内容则转去执行EXCEED;答案:CMP BX,AX JG EXCEED(3)若CX的内容等于零,则转去执行ZERO;答案:OR CX,CX JZ ZERO(注意:这是另外一种是否为零的判断方法!试TEST如何?当然直接用CMP也可以。)(4)BX与AX的内容比较是否产生溢出?若溢出则转去执行OVERFLOW。答案:CMP BX,AX JO OVERFLOW(5)若BX的内容小于等于AX的内容,则转EQ_SMA。答案:CMP BX,AX JNG EQ_SMA(6)若DX的内容低于等于CX的内容
33、,则转EQ_SMA。答案:CMP DX,CX JBE EQ_SMA3.34试分析下列程序段:ADD AX,BXJNO L1JNC L2SUB AX,BXJNC L3JNO L4JMP SHORT L5如果AX和BX的内容给定如下: AX BX(1) 147B 80DC答案:L1(2) B568 54B7答案:L1(3) 42C8 608D答案:L2(4) D023 9FD0答案:L5(5) 94B7 B568答案:L5问程序执行完后,程序转向哪里?3.35 指令CMP AX,BX后面跟着一条格式为JL1的条件转移指令,其中可以是B,NB,BE,NBE,L,NL,LE,NLE中间的任一个,如果A
34、X和BX的内容给定如下: AX BX(1) 1F52 1F52(2) 88C9 88C9(3) FF82 007E(4) 58BA 020E(5) FFC5 FF8B(6)09A0 1E97(7) 8AEA FC29“B”表示JB L1,“NB” 表示JNB L1(8) D367 32A6问以上8条转移指令中哪几条将引起转移到L1?答案:序号AXBXJBJNBJBEJNBEJLJNLJLEJNLE11F52 1F52××××288C9 88C9××××3FF82 007E×××
35、5;458BA020E××××5FFC5F8B××××609A0 1E97××××78AEAFC29××××8D36732A6××××注意:表中“”表示会引起转移到L1,“×”表示不会转移到L13.36 假设X和X+2单元的内容为双精度数p,Y和Y+2单元的内容为了为双精度数q,X和Y为低位字,试说明下列程序段做什么工作?MOV DX,X+2MOV AX,XADD AX,XADC DX,
36、X+2;DX:AX=p+pCMP DX,Y+2;开始比较,p+p<q吗?先比较p+p的高16位与q的高16位JL L2;如果p+p的高16位为小则p+p<q成立JG L1;如果p+p的高16位为大则p+p>q成立;剩下来仅仅只有p+p的高16位与q的高16位相等的情形;此时只能通过低16位作进一步比较CMP AX,Y;比较p+p的低16位JBE L2;如果小于等于L1: MOV AX,1;返回值为1JMP SHORT EXITL2: MOV AX,2;返回值为2EXIT:INT 20H答案:若p+p>q带返回值1返回操作系统,否则带返回值2返回操作系统(题中的注释是后加
37、的)2*PQ,则带返回值2返回到操作系统,否则带返回值1返回到操作系统3.37 要求测试在STATUS中的一个字节,如果第1,3,5位均为1则转移到ROUTINE_1;如果其中有两位1则转移到ROUTINE_2;如果此三位中只有一位1则转移到ROUTINE_3;如果此三位全为0则转移到ROUTINE_4,试画出流程图并编制相应的程序段。答案:流程图:如右图所示相应的程序段:(完整的程序如下)DATAS SEGMENT STATUS DB 45;0010110145=2DH ;要测试的位为 00101010B42=2AH STR DB "ROUTINE_" STRN DB &
38、#39;0' STRT DB '$'DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码 DB 128 DUP(?)STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX MOV ES,AX MOV AX,STACKS MOV SS,AX MOV SP,128 ;此处输入代码段代码 MOV AH,STATUS MOV AL,00101010B AND AH,AL;先析出这可疑的3位CMP AH,AL JE ROUTINE_1;如果全
39、为1TESTAL,STATUS JPE ROUTINE_2;如果有两位为1 JZ ROUTINE_4;如果3位全为0 JMP ROUTINE_3;剩下来的是不到两位,又不全为0,因此仅仅有1位为1ROUTINE_1:ADD STRN,1JMP TO_DISPLAYROUTINE_2:ADD STRN,2JMP TO_DISPLAYROUTINE_3:ADD STRN,3JMP TO_DISPLAYROUTINE_4:ADD STRN,4JMP TO_DISPLAYROUTINE_5:ADD STRN,5TO_DISPLAY:LEA DX,STRMOV AH,9INT 21H MOV AH,4C
40、H INT 21HCODES ENDS END START3.38在下列程序的括号中分别填入如下指令:(1) LOOP L20(2) LOOPE L20(1) LOOPNE L20试说明在三种情况下,当程序执行完后,AX,BX,CX和DX四个寄存器的内容分别是什么?TITLE EXLOOP.COMCODESG SEGMENT ASSUME CS:CODESG,DS:CODESG,SS:CODESG ORG 100HBEGIN: MOV AX,1 MOV BX,2 MOV DX,3 MOV CX,4L20:INC AXADD BX,AXSHR DX,1( )RETCODESG ENDSEND B
41、EGIN答案:序号填入指令AX的内容BX的内容CX的内容DX的内容1LOOP L20510H002LOOPE L2024313LOOPNE L2037203.39考虑以下的调用序列:(1)MAIN调用NEAR的SUBA的过程(返回的偏移地址为0400);(2)SUBA调用NEAR的SUBB的过程(返回的偏移地址为0A00);(3)SUBB调用FAR的SUBC的过程(返回的偏移段地址为B200,偏移地址为0100);(4)从SUBC返回SUBB;(5)SUBB调用NEAR的SUBD的过程(返回的偏移地址为0C00);(6)从SUBD返回SUBB;(7)从SUBB返回SUBA;(8)从SUBA返回
42、MAIN;(9)从MAIN调用SUBC的过程(返回的段地址为1000,偏移地址为0600);请画出每次调用及返回时的堆栈状态。答案:3.40假设(EAX)=00001000H,(EBX)=00002000H,(DS)=0010H,试问下列指令访问内在的物理地址是什么?(1)MOV ECX,EAX+EBX答案:00003100H(2)MOV EAX+2*EBX,CL答案:00005100H(3)MOV DH,EBX+4*EAX+1000H答案:00007100H(注意:1. 物理地址DS*10+偏移EA; 2.EA=基址+(变量*比例因子)+位移量)3.41假设(EAX)=9823F456H,(
43、ECX)=1F23491H,(BX)=348CH,(SI)=2000H,(DI)=4044H。在DS段中从偏移地址4044H单元开始的4个字节单元中依次存放的内容为92H,6DH,0A2H和4CH,试问下列各条指令执行完后目的地址及其中的内容是什么?(1) MOV SI,EAX答案:目的地址是:DS:2000,其内容为:56H,0F4H,23H,98H(2) MOV BX,ECX答案:目的地址是:DS:348C,其内容为:91H,34H,0F2H,01H(3) MOV EBX,DI答案:无目的地址是,EBX内容为:4CA26D92H3.42说明下列指令的操作:(1) PUSH AX答案:AX压
44、栈,SPßSP-2(2) POP ESI答案:从栈中出一个双字到ESI,同时ESPßESP+4(3) PUSH BX答案:BX内存字单元压栈,ESPßESP-2(4) PUSHAD答案:EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX压栈,ESPßESP-32(5) POP DS答案:当前栈顶字数据出栈到DS中,SPßSP+2(6) PUSH 4答案:在8086系统下出错!但在32位机上可以把立即数入栈,ESPßESP-43.43请给出下列各指令序列执行完后目的寄存器的内容。(1) MOV EAX,299FF94HADD EAX,34FFFFH答案:(EAX)=2CEFF93H(2) MOV EBX,40000000SUB EBX,1500000答案:(EBX)=24B76A0H (十进制:38500000)(3) MOV EAX,39393834HAND EAX,0F0F0F0FH答案:(EAX)=9090804H(1) MOV EDX,9FF35DHXOR EDX, 0F0F0F0H答案:(EDX)=6F13ADH3.44请给出下列各指令序列执行完后目的寄存器的内容
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度不锈钢扶手专利授权许可合同
- 2025届湖南省长沙市地质中学高三一模语文试题及答案
- 二零二五年度特色门面出租合同终止与品牌合作引入协议
- 二零二五年度展会现场展台搭建与物料租赁合同
- 2025年度电子商务平台会员权益保护与合同法实施合同
- 2025年度汽车车位租赁与停车场租赁权租赁权买卖合同
- 古代文学作品分析方法试题及答案
- 数学建模培训案例
- 颅内脑动脉瘤的护理
- 建材样本审核协议
- 广州市海珠区六中鹭翔杯物理体验卷
- 国家职业技术技能标准 6-28-01-14 变配电运行值班员 人社厅发2019101号
- 肿瘤患者的康复与护理
- 电机学完整全套教学课件2
- 新版《铁道概论》考试复习试题库(含答案)
- 中国柠檬行业分析报告:进出口贸易、行业现状、前景研究(智研咨询发布)
- 【课件】人居与环境-诗意的栖居+课件高中美术人美版(2019)+必修+美术鉴赏
- 全国大学英语四级考试考试大纲(2023修订版)
- 抖音本地生活商家直播培训
- 鸢飞鱼跃:〈四书〉经典导读智慧树知到答案2024年四川大学
- 海洋声学基础-水声学原理
评论
0/150
提交评论