組合語言檢測點9 2,9 3

2021-10-11 03:19:54 字數 1134 閱讀 1932

補全程式設計,利用jcxz指令,實現在記憶體2000h段中找查第乙個值為為0的位元組,找到後,將它的偏移位址儲存在dx中。

assume cs:code

code segment

start: mov ax,2000h

mov ds,ax

mov bx,0

s: ____

____

____

____

jmp short s

ok: mov dx,bx

mov ax,4c00h

int 21h

code ends

end start

解答:jcxz指令是當cx就跳轉到指定標號的位置,cx不等於0就什麼都不做。該題中,應該從記憶體中的第一位開始找,將值賦給cx,若找到第乙個值為0的位元組,cx就等於0,就會執行jcxz指令,jcxz ok轉移到ok**段。

答案:mov cl,[bx]

mov ch,0

jcxz ok

inc bx

補全程式,利用loop指令,實現在記憶體2000h段中查詢第乙個值為0的位元組,找到後,將它的偏移位址儲存在dx中。

assume cs:code

code segment

start: mov ax,2000h

mov ds,ax

mov bx,0

s: mov cl,[bx]

mov ch,0

____

inc bx

loop s

ok: dec bx

mov dx,bx

mov ax,4c00h

int 21h

code ends

end start

解答:因為從記憶體2000h第乙個位置開始掃瞄,將掃瞄結果存放在cx,若掃瞄到第乙個為0的數,則cx=0,同時會執行loop s操作,如果在loop指令之前不做任何操作,cx將會cx=cx-1,即cx=-1,永遠跳不出迴圈,因此要在執行loop指令前,將cx加1,才能跳出迴圈。

(執行loop指令時,要進行兩步操作: ①cx=cx-1判斷cx中的值 ②不為0則跳轉到標誌號中執行,若為零則跳出迴圈,執行下一條指令。)

答案: inc cx

組合語言檢測點10 4

建議先自己思考問題的答案,不懂則返回看書 這兒用到了bp,除了之前這樣用過bp外 bx bp 還會在棧中用到。比如說,堆疊中壓入了很多資料或者位址,你肯定想通過sp來訪問這些資料或者位址,但sp是要指向棧頂的,是不能隨便亂改的,這時候你就需要使用bp,把sp的值傳遞給bp,通過bp來尋找堆疊裡資料或...

組合語言檢測點11 3

建議先自己思考問題的答案,不懂則返回看書 這兩道題太簡單了,但為了完整的系列,還是寫寫,沒必要分析。a,b 表示此範圍包含a,b a,b 表示此範圍不包含a,b 1 補全下面的程式,f000 0處的32個位元組中,大小在 32,128 的資料的個數。mov ax,0f000h mov ds,ax m...

《組合語言》檢測點9 2

補全程式,利用jcxz指令,實現在記憶體2000h段中查詢第乙個值為0的位元組,找到後,將它的偏移位址儲存在dx中。assume cs code code segment start mov ax,2000h mov ds,ax mov bx,0 s jmp short s ok mov dx,bx...