彙編作業題2

2021-06-02 01:00:34 字數 3573 閱讀 3365

2-1下面的mov指令完成什麼操作?

(a)mov ax,bx;          把bx的內容移動到ax中

(c)mov bl,ch;      把ch的內容移動到bl中

2-2 列出暫存器定址使用的8位暫存器

答:ah、al、bh、bl、ch、cl、dh和dl

2-3列出暫存器定址使用的16位暫存器

答:ax、bx、cx、dx、si、di、sp、bp和段暫存器。

2-6 指令mov  bl,cx 錯在**?

答:bl和cx的位數不一致。

2-7 指令mov ds,ss 錯在**?

答:兩個暫存器之間是不能直接傳送資料的。

2-13 指令 mov [bx],[dl] 錯在**

答:目標運算元定址方式錯誤。

(a)mov [100h],dl;         12100h

(c)mov dl,[bx+100h];  12200h

(b) mov cl,list[bx+si];     11950h

(b) mov al,[bp+si+200h];     14800h

2-20 哪些基址暫存器可以定址堆疊段的資料?

答:sp ,ss

3.1 給出(bx)=637dh,(si)=2a9bh,偏移量d=7237h,嘗試指出下列每一種定址模式的有效位址。

(1) 立即定址;

(2) 直接定址

(3) 用bx的暫存器定址;

(4) 用bx的暫存器間接定址;

(5) 用bx的暫存器相對定址;

(6) 基址變址尋

(7)相對基址變址尋

答案:(1)無

(2)ea=7237h

(3)無

(4)ea=637dh

(5)ea=d+[bx]=7237h+637dh=0d5b4h

(6)ea=[bx]+[si]=637dh+2a9bh=8e18h

(7)ea=d+[bx]+[si]=7237h+637dh+2a9bh=1004fh

3.2  根據下列要求, 寫出相關的組合語言指令。

(1) 把bx 的內容和dx 的內容相加,結果放入dx 中。

(2) 把al的內容加上記憶體位址的內容,並把結果放到al中。記憶體位址由bx和si進行基址變址定址所得。

(3)把cx的內容加上記憶體位址的乙個字,並把結果放到記憶體位址中。記憶體位址由bx和偏移量0b2h進行暫存器相對定址所得。

(4) 把記憶體位址的內容與數2a59h相加,並把結果放入記憶體位址。記憶體位址由偏移量0524h進行直接定址所得。

(5) 把數值0b5h 與al 暫存器的內容相加, 結果放入al暫存器。

答案:

(1)add dx, bx

(2)add al, bx[si]

(3)add  word ptr 0b2h [bx], cx

(4)add word ptr [0524h], 2a59h

(5)add al,0b5h

3.3 寫出指令,把首址是block的字陣列中的第六個字移入dx暫存器。使用如下的定址方式。

(1) 暫存器間接定址

(2) 暫存器相對定址

(3) 基址變址定址

答案:            

(1) lea bx, block+10

mov  dx, word ptr [bx]

(2) lea si, block

mov dx, word ptr 0ah[si]  

(3)lea bx, block

mov  si, 0ah

mov  dx, word ptr [bx][si]

3.4 給出(ds)=2000h,(bx)=0100h,(si)=0002h,(20100)=12h, (20101)=34h,(20102)=56h, (20103)=78h, (21200)=2ah,(21201)=4ch,(21202)=b7h, (21203)=65h,

嘗試解釋:執行指令後,ax暫存器的內容。

(1)  mov  ax, 1200h

(3) mov ax, [1200h]

(5) mov ax, 1100[bx]

(7) mov ax, 1100[bx][si]

答案:

(1) (ax)=1200h

(3)(ax)=4c2ah

(5)(ax)=4c2ah

(7)(ax)=65b7h

3.8 給出(ds)=2000h,(es)=2100h,(ss)=00a0h,(bx)=0100h,(bp)=0010h,資料段中val 的偏移位址是0050h,指出源運算元段得定址方式和實體地址。

(2) mov ax, bx

(4) mov ax, val

(6) mov ax, es:[bx]

(8) mov ax, [si]

(10)mov ax, val[bx]

(12)mov ax, val[bx][si]

答案:

(2)暫存器定址

(4)直接定址,實體地址=20050h

(6)暫存器間接定址,實體地址=21100h

(8)暫存器間接定址,實體地址=200a0h

(10)暫存器相對定址,實體地址=20150h

(12)相對基址變址定址,實體地址=201f0h

問題: 單選

當執行pop [bx] 和尋找目標運算元時,段位址跟偏移位址是在( b )中。

a. 無段位址也無偏移位址

b.ds 和bx中

c.es 和 bx中

d.ss 和 sp中

2.下列指令中, 哪個是錯的?

a.  mov  ss:[bx+di],1000h

b.  mov  dx, 1000h

c.  mov  word ptr [bx],1000h

d.  mov  ds, 2000h

答案:

d. 錯誤:  立即數到段暫存器

簡答:1. 指出下列的錯誤:

mov ah, bx                  ;運算元大小不同

mov [bx], [si]                ;出錯:記憶體到記憶體

mov ax,[si] [di]              ;出錯: 把[si][di]放到一起

mov mydat [bx][si], es:ax   ; 與2同,

mov byte  ptr[bx], 1000     ; 與1同,

mov bx, offset mydat[si]   ;刪除[si]

mov cs, ax                   ;出錯: cs 是第一運算元

(i) mov al, [bp][si]   基址變址定址  72b40h

(ii) mov [bx + di + 4],

ax 相對基址變址定址   64bebh

(iii) mov beta, bl  直接定址  64202h

(iv) mov ah, [bp][di + beta]  

相對基址變址變址  710e6

(v) lodsb   暫存器定址 66100h

彙編作業(2006 5 3)

題目 從鍵盤讀入兩個一位十六進製制數,根據條件,以十六進製制輸出計算結果 a 計算x y b 計算 x y c 計算x y d 計算x y 源程式 data segment x db y db z db 2 dup 0 list db 0123456789abcdef 檢測輸入是否為有效數字的儲存列...

彙編作業(2006 5 9)

要求 鍵盤輸入1 9,根據輸入列印含有 的三角陣型,比如輸入為3,第一行列印乙個 第二行列印3個 第三行列印5個 要求每行中間的 在同一列上。依此類推。源程式 data segment str db input number of the lines from 1 to 9 endl db 0ah,...

彙編作業(2006 5 10)

題目 計算x的n次方,x與n為從鍵盤讀入的十進位制數,結果以十六進製制輸出 源程式 data segment str1 db input x 1 5 str2 db 0ah,0dh,input n 1 5 str3 db 0ah,0dh,the result is x db 0 n db 0 y d...