Анимация
JavaScript
|
Главная Библионтека Десятичная коррекция AL после сложения (Decimal adjust for adj Команда обычно используется после выполнения команды сложения, которая ocia ляет результат сложения двух упакованных десятичных чисел в AL. Команда коррекц рует результат, приводя его к десятичному упакованному виду. Флаги AF и CF устанзб ливаются, если в ходе коррекции возникает перенос из первого или второго десятичны), разрядов соответственно. Десятичная коррекция AL после вычитания (Decimal adjust for subtract) Команда обычно используется после выполнения команды вычитания, которая оставляет результат вычитания двух упакованных десятичных чисел в AL. Команда корректирует результат, приводя его к десятичному упакованному виду. Флаги AF и CF устанавливаются, если в ходе коррекции возникает заем в первый или второй десятичный разряа соответственно. Примеры ;==== Команды ------------------=========== mov add ааа raov sub aas mov mov mul aam raov mov ax, 0502h ; Двоично-десятичное число 52 al, 09h ; AL = OBh ; AX = 0601h ax, 0308h ; Двоично-десятичное число 38 al, 09h ; AL = OFh ; AX = 0209h al, 03h ; Двоично-десятичное число 3 cl, 08h ; Двоично-десятичное число 8 cl ; AX = 24 = 18h ; AX = 0204h ax, 0205h ; Двоично-десятичное число 25 cl, 07h ; Двоично-десятичное число 7 ; AX = 25 = 19h cl ; AH = 04h (остаток), Al = 03h (частное) al, 29h al ; AL = 2Ah ; AL = 30h al, 50h al ; AL = 4Fh ; Al = 49h Логические команды - AND, NOT, OR, TEST, XOR дРу1Р 1-й операнд, 2-й операнд Логическое И Команда выполняет побитовое логическое умножение первого операнда на второй, ультат операции записывается по адресу первого операнда. В качестве первого опе-яда можно использовать регистр (кроме сегментного) или ячейку памяти, в качестве второго - регистр (кроме сегментного), ячейку памяти или непосредственное значение, при этом не допускается оба операнда одновременно определять как ячейки памяти- 0R 1-й операнд, 2-й операнд Логическое ИЛИ Команда выполняет побитовое логическое сложение первого и второго операндов, результат операции записывается по адресу первого операнда. В качестве первого операнда можно использовать регистр (кроме сегментного) или ячейку памяти, в качестве второго - регистр (кроме сегментного), ячейку памяти или непосредственное значение, при этом не допускается оба операнда одновременно определять как ячейки памяти. XOR 1-й операнд, 2-й операнд Исключающее ИЛИ* Команда выполняет операцию побитового исключающего ИЛИ (сложения по модулю два) над своими операндами, результат операции записывается по адресу первого операнда. В качестве первого операнда можно использовать регистр (кроме сегментного) или ячейку памяти, в качестве второго - регистр (кроме сегментного), ячейку памяти или непосредственное значение, при этом не допускается оба операнда одновременно определять как ячейки памяти. JfT 1-й операнд, 2-й операнд Логическое сравнение Команда выполняет побитовое логическое умножение первого операнда на Btopoji при этом в зависимости от результата устанавливаются флаги SF, hPF Ф™ иСР сбрасываются. В качестве первого операнда можно «"«"«Г сегментного) или ячейку памяти, в качестве второго - регистр (Р";/;™;™; "йку памяти или непосредственное значение, при этом не допускается оба операнда одновременно определять как ячейки памяти. 1 Основы программирования на Ассемблере IBM PC NOT операнд Инверсия (дополнение до Команда выполняет инверсию битов операнда, заменяя О на 1 и наоборот. В качестве операнда можно использовать регистр (кроме сегментного) или ячейку памяти. Примеры ;==== Данные = ---------=================================== Byte DB ;==== Команды хог and or хог test test al, ah, al, ax, cx OCh 03h -1 1 test al, al CX = 0 Сброс двух младших разрядов регистра AL Установка двух младших ; разрядов регистра AL ; Инверсия всех разрядов AL ; Проверка 0-го разряда АХ, ; если ZF = О, разряд равен 1; ; если ZF = 1, разряд равен О Byte ; Проверка 7-го, 3-го, 2-го и 0-го разрядов ; К1,ест PF = О, свертка по модулю два ; этих битов равна 0; если PF = 1, свертка ; по модулю два этих битов равна 1 ; Проверка содержимого AL, если ZF = О, ; содержимое AL не равно 0; если ZF = 1, ; содержимое AL равно О Команды сдвига - RCL, RCR, ROL, ROR, SAR, SAL, SHL, SHR SAiySHL операнд, счетчик Арифметический сдвиг влево/логический сдвиг влев« Команда сдвигает биты операнда влево, при этом выдвигаемый (старший) бит посппая в CF, младший бит обнуляется. В качестве операнда можно использовать регистр (кроме с ментного) или ячейку памяти. В качестве счетчика можно указывать 1 или CL. Каждый с# эквивалентен умножению операнда на 2. SAR операнд, счетчик Арифметический сдвиг впр" Команда сдвигает биты операнда вправо, при этом выдвигаемый (младший) бит ступает в CF, старший бит сохраняет свое значение. В качестве операнда можно исп зовать регистр (кроме сегментного) или ячейку памяти. В качестве счетчика моЖо j зывать 1 или CL. Каждый сдвиг эквивалентен делению операнда (числа со знаком) SHR операнд, счетчик ............... Логический сдвиг вправо {команда сдвигает биты операнда вправо, при этом выдвигаемый (младший) бит посту-С¥ старший бит обнуляется. В качестве операнда можно использовать регистр "ме сегментного) или ячейку памяти. В качестве счетчика можно указывать 1 или CL. RCL операнд, счетчик ............. Циклический сдвиг влево через CF Команда сдвигает биты операнда влево, при этом значение CF загружается младший разряд операнда, выдвигаемый (старший) бит поступает в CF. В качестве операнда можно использовать регистр (кроме сегментного) или ячейку памяти. В качестве счетчика можно указывать 1 или CL. RCR операнд, счетчик Циклический сдвиг вправо через CF Команда сдвигает биты операнда вправо, при этом значение CF загружается в старший разряд операнда, выдвигаемый (младший) бит поступает в CF. В качестве операнда можно использовать регистр (кроме сегментного) или ячейку памяти. В качестве счетчика можно указывать 1 или CL. ROL операнд, счетчик Циклический сдвиг влево Команда сдвигает биты операнда влево, при этом старший бит операнда загружается в его младший разряд. В качестве операнда можно использовать регистр (кроме сегментного) или ячейку памяти. В качестве счетчика можно указывать 1 или CL. ROR операнд, счетчик Циклический сдвиг вправо Команда сдвигает биты операнда вправо, при этом младший бит операнда загружает-его старший разряд. В качестве операнда можно использовать регистр (кроме сег-ного) или ячейку памяти. В качестве счетчика можно указывать 1 или CL. Команды работы со стеком - POP, POPF, PUSH, PUSHF PUSH операнд команд Запись операнда в стек тек. g Уменьшает на 2 содержимое указателя стека и заносит содержимое операнда РРядная яч ™ °пранда может использоваться либо 16-разрядный регистр, либо 16-ика памяти. Основы программирования на Ассемблере IBM PC 27 Глав ;;.......................................................................................................................... STD...................................................................................................................... ......... Установка флага направления (Set direction) Команда устанавливает в 1 значение флага CF в регистре флагов, задавая движе-е от старших адресов к младшим при работе строковых команд. си........................................................................................................... Сброс флага прерываний (Clear interrupt) Команда сбрасывает в О значение флага IF в регистре флагов, запрещая внешние аппаратные прерывания (прерывания от УВВ). STI ......................................................................................................................... Установка флага прерываний (Set interrupt) Команда устанавливает в 1 значение флага IF в регистре флагов, разрешая внешние аппаратные прерывания (прерывания от УВВ). Команды передачи управления - CALL, INT, INTO, INT3, IRET, J(COND), JMP, LOOP, LOOP(COND), RET JMP операнд Безусловный переход (Jump) Команда передает управление в указанную точку программы, не сохраняя при этом адрес возврата. Операндом может быть непосредственный адрес, регистр (кроме сегментного) или ячейка памяти, содержащие адрес. Различают три разновидности команды безусловного перехода: короткий переход (JMP SHORT) - переход в пределах -128-+I27 байт относительно команды JMP; ближний переход (JMP NEAR PTR) - переход в пределах текущего сегмента кода; дальний переход (JMP FAR PTR) - межсегментный переход. [(COND) метка Условный переход (Jump condition) Рес в "РЗДает управление в указанную точку программы, не сохраняя при этом случае яв выполняется условие перехода. Условием в каждом конкретном "полняе"* состояние определенных флагов (табл. 1.1.1). Если заданное условие не осуществ "Р-ние получает команда, следующая за командой J(COND). Переход ляется в пределах -128н-+127 байт. PUSHF Запись содержимого регистра флагов в е i Команда уменьшает на 2 содержимое указателя стека и заносит содержимое репк ipj флагов в стек. POP операнд Чтение операнда из стека Команда извлекает слово из стека и загружает его в операнд-приемник, после чщ увеличивает на 2 содержимое указателя стека. В качестве операнда может использовать-ся либо 16-разрядный регистр, либо 16-разрядная ячейка памяти. POPF Чтение слова из стека и запись в регистр флагов Команда извлекает слово из стека и загружает его в регистр флагов, после чего увеличивает на 2 содержимое указателя стека. Команды манипуляции флагами - CLC, CLD, CLI, CMC, STC, STD, STI Сброс признака переноса (Clear carrj) Команда сбрасывает в О значение флага CF в регистре флагов. Инверсия признака переноса (Complement carry) Команда инвертирует значение флага CF в регистре флагов. Установка признака переноса (Set сагг)) Команда устанавливает в I значение флага CF в регистре флагов. CLD .............................. Сброс флага направления (Clear directi"" Команда сбрасывает в О значение флага CF в регистре флагов, задавая движч от младших адресов к старшим при работе строковых команд. 0 1 [ 2 ] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |