Prezent55.ppt
- Количество слайдов: 4
Команды сдвигов и циклических сдвигов перемещают все биты операнда влево или вправо на указанное число, определяемое вторым операндом. Формат: Мнемоника ор1, CNT , где CNT - либо 1, либо CL, либо 8 - битная константа. Команды сдвигов воздействуют на все флажки ( кроме AF ), а команды циклического сдвига влияют только на CF и OF. Во всех командах флажок OF содержит полезную информацию: если сдвиг производится на один разряд, то он устанавливается по правилу: если два старших бита операнда равны, OF = 0, в противном случае OF = 1, т. е. изменяется знаковый разряд операнда. Во всех командах CF содержит последний выдвинутый разряд. Мнемоника Описание SHL Сдвиг влево логический, последний выдвинутый разряд сохраняется в CF SAL Сдвиг влево арифметический ( аналогично SHL ) SHR Сдвиг вправо логический SAR Сдвиг вправо арифметический, знаковый разряд не меняется ROL Сдвиг циклический влево RCL Сдвиг циклический влево через перенос ( CF ) RОR Сдвиг циклический вправо RCR Сдвиг циклический вправо через CF
Пример: Подсчитать количество единиц в слове АМР. …………… MOV AX, AMP XOR BX, BX MOV CX, 16 M 1: SHL AX, 1 ; СДВИГ JNC M 2 INC BX M 2: LOOP M 1 CLC Команды сдвига двойного слова SHLD op 1, reg 2, CNT ; op 1 – регистр или память 16/32 бита Сдвиг двойного слова влево. Содержимое ор1 и регистра объединяются в рабочем регистре двойной длины и сдвигаются влево на CNT бит. После сдвига в ор1 помещаются соответствующие биты рабочего регистра. Содержимое reg 2 не изменяется. SHRD op 1, reg 2, CNT ; op 1 – регистр или память 16/32 бита Сдвиг двойного слова вправо. Содержимое регистра и ор1 объединяются в рабочем регистре двойной длины, причем ор1 в младших байтах, а reg 2 – в старших. После сдвига в ор1 помещаются соответствующие биты рабочего регистра. Содержимое reg 2 не изменяется. Пример: Пусть в ах хранится 0123 H, bx – FFFFh SHLD AX, BX, 4 ; AX = 123 Fh, BX = FFFFh SHRD AX, BX, 4 ; AX = F 012 h, BX = FFFFh
Вывод на экран (текстовый режим). Функции 21 h прерывания DOS. 02 h AH ; Вывод на экран в текущую позицию курсора символа, код которого в ASCII находится в регистре DL. Возвращает в AL код последнего выведенного символа. Функция обрабатывает при выводе и управляющие символы: BEL ( 07 h ) - звуковой сигнал; BS ( 08 h ) - возврат влево на 1 позицию курсора; LF ( 0 Ah ) - перевод курсора на следующую строку ( вниз на позицию ); CR ( 0 Dh ) - перевод курсора на начало текущей строки. При нажатии при работе этой функции клавиш Ctrl + Break вызывает прерывание 23 h, осуществляющее выход из программы. Пример: MOV DL, ‘$’ MOV AH , 02 h INT 21 h ; Вывод в текущую позицию курсора символа $ 09 h AH ; Вывод строки на экран. DS: DX указатель к началу символьной строки, которая должна заканчиваться ‘$’. Пример: str db ‘Exempl string’, 10, 13. ’$’ mov dx, offset str mov ah, 09 h int 21 h
Функции ввода с клавиатуры прерывания 21 Н 01 H AH ; Ввод с клавиатуры с эхом. Функция ожидает ввод с клавиатуры. Если получен символ ASCII, он записывается в AL. Если AL содержит 00 H, то получен расширенный ASCII код, второй байт которого будет прочитан при следующем выполнении функции (Home, Ins, Alt +(A-Z) и т. п). При выполнении функции проверяется наличие Ctrl + Break. 06 H AH ; Прямой ввод-вывод на консоль. (Общее для клавиатуры и экрана имя). DL FFh для ввода с клавиатуры; DL 00 h – FEh для вывода на экран символа ASCII из DL. Если DL =FFh выполняется ввод и AL готов принять символ. Если ZF=1 , нет входного символа и значение AL несущественно. Если ZF = 0 , имеется символ и он записывается в AL. Функция не ожидает появления символа, читает без эхо и не проверяет Ctrl + Break. 07 h AH ; Прямой ввод с клавиатуры без эхо. Аналогична 01 h, но читает без эхо и не проверяет Ctrl + Break. 08 h AH ; Ввод с клавиатуры без эхо. Аналогична 01 h, но читает без эхо. Символ в AL.
Prezent55.ppt