3

整数を10で繰り返し除算し、余りを集めて印刷することで、複数桁の整数を印刷する方法に取り組んでいます。問題のあるコードセグメントは次のとおりです。

分ける:

    ; initial division
    mov ax, 111   ; number we want to print
    mov ch, 10    ; we divide by ten to siphon digits
    div ch        ; divide our number by 10

    ; al now has 11, ah has 1
    mov dh, ah ; save the remainder in dh
  1 mov bx, al ; these lines refill ax with the number to 
    mov ax, bx ; divide
    mov ch, 10 ; refill ch with the divisor
    div ch     ; al now has 1, ah now has 1

1でマークされた行に問題があります。8ビットレジスタALの値を16ビットレジスタAXに移動する必要があります。どうすればその値を取得して分割できますか?

4

1 に答える 1

3

ah代わりにレジスタをクリアしてください。レジスターは、そのax高い部分と低い部分で構成されています-ah:al

同じことがbx(bh、bl)cx(ch、cl)およびdx(dh、dl)レジスタにも当てはまります

于 2012-10-14T06:15:16.980 に答える