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;超过了段的边界,最高进位位丢失,因此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, [BX][SI] (3) ADD [BX+0B2H], CX (4) ADD WORD PTR [0524H], 2A59H (5) ADD AL, 0B5H 3.3 写出把首地址为BLOCK 的字数组的第6 个字送到DX 寄存器的指令。要求使用以下几种寻址方式: (1) 寄存器间接寻址 (2) 寄存器相对寻址 (3) 基址变址寻址 答:(1) MOV BX, OFFSET BLOCK ADD BX, (6–1)*2 MOV DX, [BX] (2) MOV BX, OFFSET BLOCK 改为: MOV BX, (6-1)*2 MOV DX, [BX+(6–1)*2] 也可 MOV DX, BLOCK[BX] (3) MOV BX, OFFSET BLOCK MOV SI, (6–1)*2 MOV DX, [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) MOV AX, 1200H (2) MOV AX, BX (3) MOV AX, [1200H] (4) MOV AX, [BX] (5) MOV AX, 1100[BX] (6) MOV AX, [BX][SI] (7) MOV AX, 1100[BX][SI] 答:(1) (AX)=1200H (2) (AX)=0100H (3) (AX)=4C2AH (4) (AX)=3412H (5) (AX)=4C2AH (6) (AX)=7856H (7) (AX)=65B7H...