Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Как процессор выполняет вычитание из маленького чи


Автор: GQU 27.4.2012, 05:08
Код

model small
stack 256
.data
.code
main:
    mov ax,@data
    mov ds,ax
    
    xor ax,ax
    mov al,5
    sub al,8
    jnc m1
    neg ax
m1:
    mov ax,4c00h
    int 21h
end main

Почему поднимается флан С?
Как процессор выполняет вычитание 5-8?(на примере 4-х разрядных чисел)

Автор: Evjeny 27.4.2012, 07:08
При вычитании чисел без знака, если уменьшаемое число меньше вычитаемого, процессор "занимает" 1 из разряда, следующего за старшим разрядом операнда. При таком заеме процессор устанавливает флаг cf. Результат вычитания получается в дополнительном коде.

Например:
Код

5 - 8

в двоичной системе
Код

00000101 - 00001000


занимаем 1:
Код

00000001 00000101 - 00001000 = 11111101


в десятичной системе
Код

(256 + 5) - 8 = 253


т.е. 253 это -3 в дополнительном коде.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)