2016-05-12 4 views
0

私は、2つの数値を加算してそれらの平均を与える簡単なプログラムに取り組んでいます。私の問題は部門にある。私はbl = 2に設定し、正しい整数を持つaxレジスタに分割するために使用しますが、正しい答えを得ることができません。例えば、8を2で割ったとき、私はalレジスタに1cを得ます。アセンブリのトラブルで分割する

mov dl, bl  
add dx, 30h; two user entered numbers add together and converted 
mov ah, 2h 
int 21h 

;mov dx, 0h 
mov ax, dx ; 
mov bl, 2 
div bl ; al, ah for results 

答えて

7

あなたはdx30hを追加しましたので、あなたは38h、ない8を分割しています。そして38h/2 == 1Ch

2の累乗で除算する特別なケース(2,4,8,16など)では、log2(除数)ビットを代わりにその代わりに。この場合、(axを符号付き番号として扱う場合はsar ax, 1)となります。

関連する問題