Некоторые функции DOS ( int 21 h )
Пример 2. Программа ввода символа с клавиатуры model small .stack 100h .data .code start: ;занесение в сегментный регистр адреса сегмента данных mov ax, @data mov ds, ax ;помещаем в регистр ah номер функции, которая вводит символ mov ah, 01h int 21h ;вводим символ с клавиатуры;символ введенный с клавиатуры находится в регистре almov ax ,4 c 00 h int 21 h ;выход из программыEnd start Пример 3. Программа вывода символа на экран model small . stack 100 h .dataf db 'ф' ;помещаем в переменную f выводимый символ. code start : ;занесение в сегментный регистр адреса сегмента данныхmov ax, @data mov ds, ax ;помещаем в регистр ah номер функции, которая выводит символmov ah, 02h mov dl, f ; помещаем в dl символint 21h ;выводим символ на экранmov ax ,4 c 00 h int 21 h ;выход из программыEnd start
Пример 4. Вывод строки на экран model small .stack 100h .dataf db 'строка вывода$';f – строковая переменная, которая обязательно заканчивается знаком $. code start : ;занесение в сегментный регистр адреса сегмента данныхmov ax, @data mov ds, ax ;помещаем в регистр ah номер функции, которая выводит строку на экранmov ah, 09h mov dx, offset f ; помещаем в dx адрес строки, которую выводимint 21h ;выводим строкуmov ax ,4 c 00 h int 21 h ;выход из программыEnd start
Организация вычислений Логические команды Система команд микропроцессора содержит пять логических команд. Эти команды выполняют логические операции над битами операндов. Размерность операндов должна быть одинакова. В качестве операндов могут использоваться, регистры, ячейки памяти (переменные) и непосредственные операнды (числа). Любая логическая команда меняет значение следующих флагов of, sf,zf,pf,cf (переполнение, знак, нуля, паритет, перенос)
andоперанд_1,операнд_2 — операция логического умножения (И - конъюнкция). and ah, 0a1h; ah:=ah٧0ah and bx, cx; bx:=bx٧cx and dx, x1; dx:=dx٧x1 Команда and может применяться для сброса определенных битов в 0 или для определения значения некоторых битов. Например, необходимо 5й бит числа находящегося в bl установить в 0, остальные биты не трогать.and bl, 11011111b или and bl, 0cfh Если необходимо определить чему равен 5й бит, тоand bl, 00100000b или and bl, 20hВ результате если в регистре bl в 5м бите был 0, то после выполнения этой команды мы получим нулевой результат, обнулим весь регистр. Если же в регистре bl в 5м бите была 1, то мы получим не нулевой результат.orоперанд_1,операнд_2 — операция логического сложения (ИЛИ - дизъюнкцию) or al, x1; al:=al & x1 or eax,edx; eax:=eax & edx or dx, 0fa11h; dx:=dx & 0fa11h
Команда or может применяться для установки определенных бит в 1. Например, необходимо установить в единицу 4й и 7й биты регистра ah. or ah, 10010000b или or ah, 90h
xor операнд_1,операнд_2 — операция логического исключающего сложения (исключающего ИЛИ ИЛИ-НЕ). Команда может применятся для выяснения того какие биты в операндах различаются ил для инвертирования состояния заданных бит в операнде_1. Например, необходимо определить совпадает ли содержимое регистров ax и dx xor ax, dx ;если содержимое совпадает то в регистре ах мы получим ;нулевой результат, иначе не нулевой результат. xor bh,10b ; инвертировали 1й бит в регистре bh
testоперанд_1,операнд_2 — операция “проверить” (способом логического умножения). Команда выполняет поразрядно логическую операцию И над битами операндов операнд_1 и операнд_2. Состояние операндов остается прежним, изменяются только флаги zf, sf, и pf, что дает возможность анализировать состояние отдельных битов операнда без изменения их состояния. not операнд — операция логического отрицания. Команда выполняет поразрядное инвертирование (замену значения на обратное) каждого бита операнда. Результат записывается на место операнда. not ax ;ax:=
Пример 5. Логическое сложение двух однобайтных чисел. model small .stack 100h .datax1 db 0c2h ;первое слагаемоеx2 db 022h ;второе слагаемоеy db ? ;переменная результата . code start : mov ax ,@ data mov ds , ax mov al, x1 ;в al помещаем первое слагаемоеor al, x2 ;осуществляем логическое сложение, результат в almov y, al ;помещаем результат на местоmov ax,4c00h int 21hEnd start
Следующие две команды позволяют осуществить поиск первого установленного в 1 бита операнда. Они появились в 486 процессоре. bsf операнд_1, операнд_2 – сканирование бит операнда_2 от младшего к старшему в поисках первого бита установленного в 1. Если такой обнаружится, то в операнд_1 заноситься номер этого бита в целочисленном формате. Пример: mov al,02h bsf bx,al ; bx:=1, т.к. 1й бит регистра al=1
bsr операнд_1, операнд_2 – сканирование бит операнда_2 от старшего к младшему в поисках первого бита установленного в 1. Если такой обнаружится, то в операнд_1 заноситься номер этого бита в целочисленном формате. Пример: mov al,82h bsr bx,al ; bx:=6, т.к. 6й бит регистра al=1 Если операнд_2 равен 0 то вышеописанные две команды устанавливают флаг нуля zf в 1, иначе в 0.
Популярное: Почему стероиды повышают давление?: Основных причин три... Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (197)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |