[Назад] [Далее]

5.4.1. Сложение и вычитание

Команды ADC (сложение с учетом переноса) и SBB (вычитание с учетом займа) специально были введены для подобных операций. При сложении сначала складывают самые младшие байты, слова или двойные слова командой ADD, а затем складывают все остальное командами ADC, двигаясь от младшего конца числа к старшему. Команды SUB/SBB действуют полностью аналогично.

bigval_1           dw    0,0,0               ; 96-битное число
bigval_2           dw    0,0,0
bigval_3           dw    0,0,0

; сложение 96-битных чисел bigval_1 и bigval_2
        mov        eax,dword ptr bigval_1
        add        eax,dword ptr bigval_2    ; сложить младшие слова
        mov        dword ptr bigval_3,eax
        mov        eax,dword ptr bigval_1[4]
        adc        eax,dword ptr bigval_2[4] ; сложить средние слова
        mov        dword ptr bigval_3[4],eax
        mov        eax,dword ptr bigval_1[8]
        adc        eax,dword ptr bigval_2[8] ; сложить старшие слова
        mov        dword ptr bigval_3[8],eax

; вычитание 96-битных чисел bigval_1 и bigval_2
        mov        eax,dword ptr bigval_1
        sub        eax,dword ptr bigval_2    ; вычесть младшие слова
        mov        dword ptr bigval_3,eax
        mov        eax,dword ptr bigval_1[4]
        sbb        eax,dword ptr bigval_2[4] ; вычесть средние слова
        mov        dword ptr bigval_3[4],eax
        mov        eax,dword ptr bigval_1[8]
        sbb        eax,dword ptr bigval_2[8] ; вычесть старшие слова
        mov        dword ptr bigval_3[8],eax

п»ї
"target=_blank><\/a>") //-->