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...