次の問題があります: 小さな数値を大きな数値に分割しようとすると商が非常に高くなり、なぜ理解できません。ここで私は1から5までを分割しようとしているプログラムがあり、結果は256です(変数 'a'と 'b'はdb型でなければなりません) 誰かが私を助けることができますか?事前にありがとうは大きな数値に小さな数値を割り算すると商が得られません0
.model small
afisareanr macro nr
local m11
local m
xor ax, ax
mov ax, nr
push ax
mov si, 10
mov di, 5
mov dx, 0
cmp ax, 0
jge m
neg ax
m:div si
add dl, 30h
mov s[di],dl
xor dx,dx
dec di
cmp ax, 0
jne m
pop ax
cmp ax, 0
jge m11
mov s[di], '-'
m11:
mov ah, 9
lea dx, s
int 21h
endm
.stack
.data
a db 5
b db 1
s db 6 dup(" "), '$'
.code
mov ax, @data
mov ds, ax
xor ax, ax
xor bx, bx
mov al, b
idiv a
mov bx, ax
afisareanr bx
mov ax, 4c00h
int 21h
end
どうもありがとう、私は何が起こっているかを理解し、どのように256が表示され、そうあなたは私が初心者だと右が、私たちは大学でのasmを学ぶために始めています。 –
除算のための正規のdup-targetsを見つけるには、[x86タグwiki](https://stackoverflow.com/tags/x86/info)で 'idiv'を検索してください。それが私がFAQセクションを追加した理由の一部です。 (ここで問題となっているのは、残余が配当の上半分をクリアできないのではなく、残りがAHになることを認識していないからです。しかし、マイケルの答えは8ビット別の質問と同じ答えです。)とにかく、この回答を削除することはお勧めできません。 –