1

dlに数値を格納していますが、3桁までの数値で機能するためにこれが必要ですか?0〜9の数字の作業コードは次のとおりです。

WriteNumber:
;; print out number in dl
push ax
push dx
add dl,"0"
mov ah,02h ; printing one char
int 21h
pop dx
pop ax
ret

たとえば、2桁の場合。私はdl/10を取ることができました。次に、結果と残りの文字を別の文字について出力します。しかし、番号がDIVのAXレジスタにある必要があるため、エラーが発生しました。

私はこれを行う必要があります:

mov ax、dl

しかし、それはうまくいきませんか?

4

2 に答える 2

1

私はあなたができるとは思わない

mov ax,dl

axとdlはサイズが異なるためです。あなたができるはずです

mov ax, dx

またはGJから:

movzx ax, dl

そして、最後のバイトだけが必要な場合は、dlとalを参照してください。

于 2009-10-28T17:08:48.647 に答える
0

私はこれを行う必要があります:

mov ax、dl

しかし、それはうまくいきませんか?

movレジスタが同じサイズ(8ビットまたは16ビットまたは32ビットの両方)の場合に機能します。

例:

mov EAX, EDX
; or
mov AX, DX
; or
mov AL, DL
于 2009-10-28T17:09:40.373 に答える