Assembler - язык неограниченных возможностей


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


Команды 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





Начало  Назад  Вперед