1 給定 (BX)=637DH ,(SI)=2A9BH ,位移量 D=7237H ,試確定在以下各種尋址方式下的有效地址是什么?(有效地址也是偏移量EA)
答:
(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 。
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 0B2H[BX], CX
(4) ADD WORD PTR [0524H], 2A59H (WORD PTR相當於指定一個字)
(5) ADD AL, 0B5H
3 寫出把首地址為BLOCK 的字數組的第 6 個字送到 DX 寄存器的指令。要求使用以下幾種尋址方式:
(1) 寄存器間接尋址
(2) 寄存器相對尋址
(3) 基址變址尋址
答:
(1) MOV BX, OFFSET BLOCK
ADD BX, (6 – 1)*2
MOV DX, [BX]
補充OFFSET的用法:
(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]
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
5. 給定 (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
6.設當前數據段寄存器的內容為 1B00H,在數據段的偏移地址 2000H 單元內,含有一個內容為 0FF10H 和 8000H 的指針,它們是一個 16 位變量的偏移地址和段地址,畫圖表示出來。
7.在 0624H 單元內有一條二字節 JMP SHORT OBJ 指令,如其中位移量為 (1) 27H,(2) 6BH,(3) 0C6H,試問轉向地址 OBJ 的值是多少?
答: (1) OBJ=0624H+02H+27H=064DH
(2) OBJ=0624H+02H+6BH=0691H
(3) OBJ=0624H+02H+0C6H=05ECH ;C6H 對應的負數為 -3AH (向上轉移,負位移量)
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, VAL
(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, VAL[BX]
(11) MOV AX, [BX][SI]
(12) MOV AX, VAL[BX][SI]
答: (1) 立即方式; 操作數在本條指令中
(2) 寄存器尋址方式; 操作數為 (BX)=0100H
(3) 直接尋址方式; PA=20100H
(4) 直接尋址方式; PA=20050H
(5) BX 寄存器間接尋址方式; PA=20100H
(6) 附加段 BX 寄存器間接尋址方式; PA=21100H
(7) BP 寄存器間接尋址方式; PA=15010H
(8) SI 寄存器間接尋址方式; PA=200A0H
(9) BX 寄存器相對尋址方式; PA=20110H
(10) BX 寄存器相對尋址方式; PA=20150H
(11) BX 和 SI 寄存器基址變址尋址方式; PA=201A0H
(12) BX 和 SI 寄存器相對基址變址尋址方式; PA=201F0H
9 在 ARRAY 數組中依次存儲了七個字數據,緊接着是名為 ZERO 的字單元,表示如下: ARRAY DW 23, 36, 2, 100, 32000, 54, 0 ZERO DW ?
(1) 如果 BX 包含數組 ARRAY 的初始地址,請編寫指令將數據 0 傳送給 ZERO 單元。
(2) 如果 BX 包含數據 0 在數組中的位移量,請編寫指令將數據 0 傳送給 ZERO 單元。
答: (1) MOV AX, [BX+(7-1)*2]
MOV [BX+(7)*2], AX
(2) MOV AX, ARRAY [BX]
MOV ARRAY [BX+2], AX
10.如 TABLE 為數據段中 0032 單元的符號名,其中存放的內容為 1234H,試問以下兩條指令有什么 區別?指令執行完后 AX 寄存器的內容是什么?
MOV AX, TABLE
LEA AX, TABLE
答:
MOV AX, TABLE 是將 TABLE 單元的內容送到 AX ,(AX)=1234H
LEA AX,TABLE 是將 TABLE 單元的有效地址送到 AX ,(AX)=0032H