(2011.11.06)汇编语言第03章习题(数据传送指令)

时间:2021-01-31 01:17:35
 

汇编语言第03章习题(数据传送指令)

 

3.10  TABLE 是一个在数据段中0032上的符号, 它的内容是1234H, 下面指令有什么不同?执行指令后AX寄存器的内容是什么?

(1)MOV AX, TABLE

(2)LEA AX, TABLE

解: (1)mov指令是将内容放进目的操作数   (AX)=1234H

     (2)而LEA指令是将偏移地址放入目的操作数  (AX)=0032H

 

3.11    执行下列指令后AX 寄存器的内容是什么?

TABLE DW 10, 20, 30, 40, 50

ENTRY DW 3

      MOV BX, OFFSET TABLE

      ADD BX, ENTRY

      MOV AX, [BX]

解:

第一步: (BX)=0000H

第二步: (BX)=0003H

第三步: (AX)=3000H

 

3.13 给出SS 寄存器的内容是0FFA0H, 和SP 寄存器的内容是00B0H。首先执行两个PUSH 指令把8057H 和0F79H 压入栈中, 然后执行POP 指令. 请以图表的形式给出栈的变化和SP的值 (用下划线划出内存单元的物理地址).

解:

第一步:PUSH 8057H

第二步:PUSH 0F79H

第三步:POP

 

第一步:压栈前:SS:SP = 0FFA0H:00B0H, 压栈后:SS:SP = 0FFA0H:00AFH

第二步:压栈前:SS:SP = 0FFA0H:00AFH, 压栈后:SS:SP = 0FFA0H:00ADH

第三步:出栈前:SS:SP = 0FFA0H:00ADH, 出栈后:SS:SP = 0FFA0H:00AFH

 

7.8下列指令中,符号ABCD 是一个变量。说出两条指令的不同。

MOV AX, OFFSET ABCD

LEA AX, ABCD

答:两条指令都是取ABCD的偏移地址,但MOV指令能以更少的时间完成同样的功能。

 

3. 回答执行指令后的问题:

A DW 1234H

B DW 5678H

……

PUSH A

PUSH B

POP A

POP B

解:

① 执行之后(A)=5678H ,  ( B)= 1234H

② 执行程序之前SP=200H,  执行之后SP= 200H

 

4. 读程序题:

DATA SEGMENT

A DB 12H,’12’

B DW 34H,45H

C DW B

DATA ENDS

…………

在下列的指令完成之后,排列主存储器中的数据段。

MOV  AX, A+1;  AX=3231H

LEA  BX, B;    BX=0003H

MOV  CX, C;    CX=0003H

 

解:

  00H_______高地址处_DATA+8

  03H__C

  00H

  45H

  00H

  34H__B

  32H

  31H

  12H_A_____低地址处_DATA+0

 

1. 程序分析:

MOV AX,6540H

MOV DX,3210H

MOV CL,04

SHL DX,CL

MOV BL,AH

SHL AX,CL

SHR BL,CL

OR DL,BL

解:执行指令后:(AX)=5400H,(BL)=06H,(DX)=2106H

 

2. 程序分析:

MOV AL,200

SAR AL,1

MOV BL,AL

MOV CL,2

SAR AL,CL

ADD AL,BL

解:执行指令之后(BL)=0E4H,(AL)=0DDH

 

3. 当在串指令之前使用REPE立即前缀时, 当 ( ),串指令将会停止。  C

A.   CX = 0 AND ZF = 0                             

B.   CX = 0 AND ZF = 1

C.   CX = 0 OR ZF = 0           

D.   CX = 0 OR ZF = 1

 

1.当在串指令之前使用REPE 立即前缀时,当 (  ),串指令将会停止。 C

A.   CX=0 and ZF=0   B. CX=0 and ZF=1  C.   CX=0  or  ZF=0         D. CX=0  or  ZF=1

 

2. 下列哪条指令有合理和充分的意义?   D

A.   REP LODSB                   B.  REP SCASB   C.   REP CMPSB      D.  REP MOVSB

 

3. 英特尔 8086 CPU中的每一个寄存器都是为在执行指令时的一些特定的功能而设计的. 描述使用或者修改下列寄存器的两条特别的指令。

•       (i) SP,

•   (ii) SI,                      

•       (iii) DX.

解:

PUSH  DX;

POP    SI ;

 

3.47指令填空:      (1) LOOP  L20    (2)LOOPE  L20      (3)LOOPNE  L20

尝试指出在3个不同情况下,程序执行之后AX,BX,CX,DX 寄存器的内容 ?

TITLE         EXLOOP.COM

CODESG       SEGMENT

ASSUME CS: CODESG, DS: CODESG,SS:CODESG

             OGR     100H

BEGIN:        MOV   AX, 01

              MOV   BX, 02

              MOV   DX, 03

             MOV   CX, 04

L20:           INC     AX

              ADD    BX, AX

              SHR     DX, 1

                    (   )

              RET

CODESG       ENDS

END     BEGIN

解:

 (1) LOOP  L20 :  AX=05H ; BX=10H ; CX=00H ; DX= 00H    

   (2) LOOPNE  L20: AX=03H; BX=7H; CX=2H ; DX=00H

   (3)LOOPE L20:没有进行循环  AX=02H; BX=4H; CX=3H; DX=1H