IBM-PC汇编语言程序设计答案(第2版)..doc
文本预览下载声明
附录:《习 题
给定(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。
试根据以下要求写出相应的汇编语言指令
(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
写出把首地址为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]
现有(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
给定(IP)=2BC0H,(CS)=0200H,位移量D=5119H,(BX)=1200H,(DS)=212AH,(224A0H)=0600H,(275B9H)=098AH,试为以下的转移指令找出转移的偏移地址。
(1) 段内直接寻址
(2) 使用BX及寄存器间接寻址方式的段内间接寻址
(3) 使用BX及寄存器相对寻址方式的段内间接寻址
答:(1) JMP NEAR PTR 5119H ;(IP)=5119H+((IP)+03H)=7CDCH,物理地址PA=09CDCH
(IP)+03H是JMP NEAR PTR 5119H指令的下一条指令的首地址。
(2) JMP WORD PTR [BX] ;(IP)=((DS)*10H+(BX))=0600H,PA=02600H
(3) JMP D[BX] ;(IP)=((DS)*10H+(BX)+D)=098AH,PA=0298AH
设当前数据段寄存器的内容为1B00H,在数据段的偏移地址2000H单元内,含有一个内容为0FF10H和8000H的指针,它们是一个16位变量的偏移地址和段地址,试写出把该变量装入AX的指令序列,并画图表示出来。
答:MOV BX, [2000H] ;图示如上所示。
MOV AX, [2000H+2]
MOV ES, AX
MOV AX, ES:[BX]
显示全部