私はアセンブリ言語に慣れていないので、次の質問をしたいと思います。
mov ax, y imul z; dx:ax = y*z mov bx, dx mov cx, ax ; bx:cx = y*z mov ax, x cwd ; dx:ax = x sub ax, cx sbb dx, bx ; dx:ax = x-y*z
最後のコード行を使用する必要があるのはなぜですか。私がやろうとしているのは、xy*z を計算することです...
前もって感謝します
私はアセンブリ言語に慣れていないので、次の質問をしたいと思います。
mov ax, y imul z; dx:ax = y*z mov bx, dx mov cx, ax ; bx:cx = y*z mov ax, x cwd ; dx:ax = x sub ax, cx sbb dx, bx ; dx:ax = x-y*z
最後のコード行を使用する必要があるのはなぜですか。私がやろうとしているのは、xy*z を計算することです...
前もって感謝します
私の 80386 アセンブリを思い出すと (そうです、それはとても長いことです)、最後の行は借用による減算です。これは、手で引き算をする場合と同じです。たとえば、24 から 16 を引く場合は、最初に 4 から 6 を引きます。しかし、それを行うには、10 の列から 1 を BORROW し、下位桁の 12-6=6 を取得します。上位の桁を計算するときは、借りたことを覚えて、それを考慮に入れる必要があります: 10-10 = 0 なので、答えは 6 です。
の場合sub ax,cx
、借用が必要な場合は借用フラグが設定され、 の場合はsbb dx, bx
、前の借用に合わせて調整されます。