質問

2つの6桁の小数を取得してそれらの追加を表示するプログラムを作成しようとしていますが、16ビット8086では、数字をダブルワードとして定義し、Word 1にLOをワード2に定義します。次にやることを考えていませんが、次の操作のためのアルゴリズムを提案できますか? thnx

x dd(?)
    next_no:
    mov cl,2
    mov ch,4

two_bit:
getch

sub al,30h
mov bl,10
mul bl
mov di,ax
add word ptr x+2,di

dec cl
jnz two_bit
fourbit:
getch
sub al,30h
mov bl,10
mul bl
mov di,ax
add word ptr x,di
dec ch
jnz fourbit

このプログラムでは、diは、ユーザーが複数のdiを入力するとループを介して作成された数を保存する場所です。 2*10*+8 = 28

役に立ちましたか?

解決

メンタリングされていないコードに従うのではなく、独立した例を提示します。

DXに1つの32ビット数が1つ、CX:BXに1つの32ビット数があるとします(この表記は、たとえばDXに16の咬傷が保存され、AXで低い16ビットが保存されることを意味します)。これらの値を追加して結果をdx:axに残すには、次のようになります。

    add ax,bx
    adc dx,cx

add 命令は2つの値を追加します セット キャリーがあるかどうかに応じて、C(キャリー)ビットは1または0にビットします。 adc 命令は2つの値を追加します プラス キャリービットの値(そして、キャリービットを再度設定します)。このようにして、より多くのことを続けることにより、あらゆるサイズの値を追加できます adc 指示。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top