我有一道彙編題執行時出現了死迴圈,不知道怎麼解決,希望高手能幫我修改一下

2022-12-08 06:50:12 字數 1018 閱讀 5579

1樓:

迴圈體中沒有修改al的值的指令,所以會構成死迴圈。

增加dec al後,還是死迴圈。這是因為2號功能會修改al中的內容,將al中的值變成2號功能顯示的字元的ascii碼21h,這樣就會把剛才輸入的資料覆蓋掉,從而變成死迴圈。要把輸入的值放另一個暫存器中存放。

但是這樣修改之後還是得不到正確的結果。這是因為1號功能讀入的是字元的ascii碼,按「5」的話,得到的是35h。所以要在cmp之前,將al中的內容變成數值。

所以程式這麼修改:

code segment

assume cs:code

start: mov ah,01h

int 21h

and al,0fh

mov cl,al

again: mov dl,21h

mov ah,02h

int 21h

dec cl

cmp cl,0

jnz again

mov ax,4c00h

int 21h

code ends

end start

這樣修改之後,能夠實現從鍵盤輸入一位1~9的數,輸出相應個數的「!」。但是如果是0,就會輸出256個「!

」。如果想實現從鍵盤輸入一位0~9的數,輸出相應個數的「!」,就應該再增加一個比較:

code segment

assume cs:code

start: mov ah,01h

int 21h

and al,0fh

mov cl,al

again:

cmp cl,0

je stop

mov dl,21h

mov ah,02h

int 21h

dec cl

cmp cl,0

jnz again

stop:

mov ax,4c00h

int 21h

code ends

end start

有一道數學題我不會做有一道數學題我不會做

各位天才 復,不用複雜的計算的 由於總制容量都沒有 bai變化,只是甲杯中du摻雜了一 zhi些椰汁,dao乙杯中摻雜了一些橙汁,它們的數量是相同的。如果需要計算實際交換了多少的話,計算一個即可。乙杯中橙汁含量 也就是甲杯中椰汁的含量 是 400 50 400 50 400 9克 50 400 50...

c 有一道題困擾了我好久,求解釋

答案是c a和b一樣 d需要初始化因為沒給陣列長度 選ca是指標陣列 含兩個元素 不能令p a int a 類比int m 5 不能令m 5 此時p,m為常量,代表地址只能被引用 b,錯誤 c是指向 含兩個元素 陣列的指標,即行指標,只能令q a int a 任意 2 必須為2 q b int b ...

我有一道數學題不會怎麼辦,我有一道數學題不會做怎麼辦

設三班植樹x,可以列方程 x 2x x 20 180 得出x等於40,所以三班植樹40棵,一班80,二班20 三元一次方程 每個班各植樹x,y,z 依題意,則 x 2z y 20 z x y z 180 求x,y,z就行了 二班的加20棵後 跟三班一樣 一班是個2個三班 三班是一個三班 也就是說 1...