 |
::
Меню :: |
 |
|
|
 |
::
Друзі :: |
 |
|
|
 |
::
Лічильники :: |
 |
|
|
|
ADC Цілочисельне складання з перенесенням
Команда adc здійснює складання першого і другого операндів, прібаатяя
до результату значення прапора перенесення CF. Початкове значення першого операнда
(приймача) втрачається, заміщаючись результатом складання. Другий операнд не змінюється. Як
перший операнд команди adc можна указувати регістр (окрім сегментного) або
елемент пам'яті, як другий - регістр (окрім сегментного), елемент пам'яті або
безпосереднє значення, проте не допускається визначати обидва операнди одночасно
як елементи пам'яті. Операнди можуть бути байтами або словами і представляти числа
із знаком або без знаку. Команда adc (спільно з командою
add) зазвичай використовується
для складання 32-розрядних чисел. Команда впливає на прапори
OF, SF, ZF, AF,
PF і CF.
Приклад 1
mov Ax,1125h
adc Ax,2c25h ;AX=3D4Bh, якщо CF був = 1
;Ax=3d4ah, якщо CF був= 0
Приклад 2
; У полях даних:
numlow dw 0ffffh ;Младшая частина 2-го доданку
numhigh dw 000sh ;Старшая частина 2-го доданку
;Число 0005FFFFh=393215
;В програмному сегменті:
mov Ax,000sh ;Младшая частина 1-го доданку
mov Bx,0002h ;Старшая частина 1-го доданку
;Число 00020005h=131077
add Ах,numlow ;Сложение молодших частин. Ах=4, Cf=1
adc BX, numhigh ;Сложение старших частин з
;перенесенням.ВХ:АХ=0008:0004h.
;Число 00080004h=524292
Допустиме використання 32-бітових операндів і додаткових
режимів адресації 32-розрядних процесорів. Команда adc з 32-розрядними
операндами може використовуватися для складання 64-розрядних цілих чисел.
Приклад
; У
полях даних
mem321 dd 0ffffffffh ;Младшая частина 1-го доданку
mem32h dd 98765432h ;Старшая частина 1-го доданку
; У програмному сегменті
mov Eax,1 ;Младшая частина 2-го доданку
mov Ebx,0 ;Старшая частина 2-го доданку
add Eax,mem321 ;Складываем молодші половини
;Сумма=100000000ь>32 битий
;Eax=000000h, перенесення
adc Ebx,mem32h ;Складываем старші половини
;і перенесення. Ebx=90000001h ;Сумма: 9876543300000000h
ADD
Цілочисельне складання
Команда add здійснює складання першого і другого операндів.
Початкове значення першого операнда (приймача) втрачається, заміщаючись результатом
складання. Другий операнд не змінюється. Як перший операнд команди add можна
указувати регістр (окрім сегментного) або елемент пам'яті, як другий - регістр
(окрім сегментного), ячей-ку пам'яті або безпосереднє значення, проте не
допускається опре-делять обидва операнди одночасні як елементи пам'яті. Операнди
можуть бути байтами або словами і представляти числа із знаком або без знаку.
Команду add можна використовувати для складання як звичайних цілих чи-сел, так і
двійково-десяткових (з використанням регістра АХ для хра-ненія результату).
Якщо складаються неупаковані двоїчно- десятіч-ниє
(BCD) числа, після команди
add слід використовувати команду ааа; якщо складаються упаковані числа, то
команду daa. Команда впливає на прапори OF,
SF, ZF, AF, PF і CF.
Приклад 1
mov Bx,lffeh
mov Cx,3
add Bx,cx ;BX=2001h, Cx=0003h
Приклад 2
mov Ax,25h
add Ax,12h ;AX=0037h
Приклад 3
; У полях даних:
mem dw 128
;B програмному сегменті:
add mem,100 ;mem=228
Приклад 4
mov Ax,0507h ;BCD розпаковане 57
add Al,05h ;BCD 5, Ax=050ch
aaa
;AX=0602h,
BCD 62
Приклад 5
mov Al,57h ;BCD упаковане 57
add Al,05h ;BCD 5, Al=5ch
daa ;AL=62h, BCD 62
Допустиме використання
32-бітових операндів і додаткових режимів адресації 32-розрядних процесорів.
Приклад
mov Eax,98765432h
add Eax,11111111h ; Eax=a9876543h
AND Логічне І
Команда and здійснює логічне (побітове) множення першого
операнда на другій. Початкове значення першого операнда (приймача) втрачається,
заміщаючись результатом множення. Як перший операнд команди and можна указувати регістр
(окрім сегментного) або елемент пам'яті, як другий - регістр (окрім сегментного),
елемент пам'яті або безпосереднє значення, проте не допускається визначати
обидва операнди одночасно як елементи пам'яті. Операнди можуть бути байтами або
словами. Команда впливає на прапори SF, ZF і
PF.
Правила побітового множення:
Перший операнд-біт 0101 Другий операнд-біт 0011
Біт результату 0001
Приклад 1
mov Ax,0ffeh
and Ax,5555h ;AX=0554h
Приклад 2
; У полях даних:
mem dw 0с003h
;В програмному сегменті:
mov Ax,700eh
and Ax,mem ;AX=4002h
Допустиме використання 32-бітових операндів і додаткових режимів
адресації 32-розрядних процесорів.
Приклад mov EDX, 0FA8 8 0 0 4 lh
and Edx,0ff00000fh ; EDX = Fa000001h
386p+
ARPL
Корекція запрошуваного рівня привілеїв селектора
Команда aprl
порівнює селектор із зразком, що містить максимально допустимий рівень
привілеїв (зазвичай використовується селектор CS)
і встановлює значення, що
перевіряється, відповідно до меншого з двох рівнів привілеїв. Якщо зміну рівня
не було потрібно, прапор ZF скидається, якщо було потрібно -
встановлюється. Як перший операнд команди aprl може використовуватися 16-розрядний регістр
або слово пам'яті з селектором, що перевіряється; як другий операнд - 16-розрядний
регістр з селектором-зразком.
386+
BOUND
Перевірка індексу масиву на вихід за межі масиву
Команда
bound перевіряє, чи лежить вказаний індекс, що розглядається, як число
із знаком, усередині заданих другим операндом меж.
Якщо індекс виходить
за межі масиву знизу або зверху, генерується переривання з вектором 5.
Перший операнд має бути регістром, що містить індекс, що перевіряється, другий,
- адресою поля пам'яті з двома межами масиву, що перевіряється. У команді
bound допустиме використання як 16-бітових, так і 32-бітових операндів (але
і перший, і другий операнди мають бути одного типу).
-
|
 |
::
Наша кнопка :: |
 |
|
 |
Отримати код:
|
Підтримайте наш сайт і розмістіть нашу
кнопку на своєму ресурсі. |
|
|
 |
::
Популярне :: |
 |
|
|
 |
:: Посилання :: |
 |
|
|
|