2016-03-29 12 views
0

num1,num2、および変数をDWORDと定義しました。私はnum1num2の2つの数字をユーザーから取得します。私はでnum1を分けようとしています。私が使用している番号はNUM1 = 37と商、余りないで、これは7をプリントアウト何らかの理由についてNUM2 = 5DIVの残りがEDXにありません

sub edx,edx ; Zero edx 
mov eax,num1 
mov ebx,num2 
div ebx 
mov remainder,edx 
mov edx, OFFSET remainder 
call WriteInt 

あります。私はここで間違って何をしていますか?

+4

これがIrvine32の場合、 'WriteInt'は印刷したい値を_EAX_に入れる必要があります。あなたのDIV命令が実行されたとき、_EAX_は商に設定されました。 'mov remainx、edx'を削除します。 ' mov edx、OFFSET remainders'を実行し、 'mov eax、edx'命令に入れます。残りの部分は_EAX_に移動し、WriteIntはそれを出力します。 –

+0

これは、デバッガを使用してレジスタ値を調べる理由です。あなたは 'edx'が正しかったことを知っていたでしょうし、それは問題を抱えていた印刷コードでした。 –

答えて

1

これを使用してください。

mov edx,0 ; Zero edx 
mov eax,num1 
mov ebx,num2 
div ebx  
mov eax,edx  ; EAX = reminder 
call WriteDec ; Display 2 
関連する問題