超人氣 發問時間: 電腦與網際網路軟體 · 1 0 年前

組合語言問題:執行問題

不是功課~心理的疑惑

(D)1.若AL=65,執行下列程式後,其AX的執行結果為何?

A.0185H C.0112H

B.0145H D.0128H

MOV AH,0

MOV CL,3

SHL AL,CL(問一下AL左移3次,做完才做下一行嗎??)

JNC MM (這幾行作的順序不怎麼懂)

MOV AH,1

MM:NOP

(D)1.若AL=38H,執行下列程式後,其BX的執行結果為何?

A.0506H C.0056H

B.3800H D.0308H

MOV AH,AL

AND AL,08H

MOV BL,AL

MOV AL,4

SHR AH,CL

MOV BH,AH

NOP

我不懂的地方就是不知道程式是怎麼跑的 = =

已更新項目:

我一直在想第二題題目是不是錯了~!!

第四行 MOV AL,4

我覺得是 MOV CL,4

這樣才符合答案D= = 不知道各位高人意下如何~!!

1 個解答

評分
  • 1 0 年前
    最佳解答

    第一題

    --------------

    JNC MM是Jump if Not Carry

    它指的是進位旗標(CF)等於0時跳到MM

    65H SHIFT三次後~

    會從0110 0101變成011 0010 1000

    最後一個被SHIFT出去的BIT會被放到CF裡面

    所以進位旗標會等於1

    所以JNC MM不直接跳到MM去

    ----------------------

    MOV AH,AL

    這行會讓ah = 38h

    AND AL,08H

    這行執行AL = AL and 08h

    AL會變成30h

    MOV BL,AL

    BL = AL

    BL 會變成30h

    MOV AL,4

    AL會變成4

    SHR AH,CL

    沒有CL的初使值=="

    不過如果它預設0的話

    這行沒意義~它不會SHIFT

    AH還是等於38

    MOV BH,AH

    BH = AH

    BH變成38

    NOP

    什麼都不做

    最後BX等於3808

    --------------------

    不知道程式怎麼跑的話~可以到

    開始>執行>CMD

    打入DEBUG

    使用WINDOWS內建的DEBUG

    跟著程式一步一步走

    會對你有幫助的

    很好用的東西

    用法請參照我之前給你的網址

    參考資料: ms debug
還有問題?馬上發問,尋求解答。