Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Организация ввода-вывода на ассемблере
Ввод-вывод данных в компьютер осуществляется посредством различных периферийных устройств. Общение процессора с различными периферийными происходит через систему прерываний. Для ввода-вывода данных служит прерывание int 21h. Основная последовательность действий при использовании прерываний 2lh (DOS): 1. Поместить номер функции в регистр ah. 2. Поместить передаваемые функции параметры в определенные регистры (они приведены при описании каждой функции). 3. Вызвать прерывание 2lh (DOS) командой int 21h 4. Извлечь результаты работы функций из определенных регистров. Какие именно регистры и что они содержат после возврата управления из функции программе пользователя, указывается при описании каждой функции. Прерывание DOS 2lh предназначено для предоставления программисту различных услуг со стороны операционной системы. Этими услугами является набор функций. Какая именно функция должна быть вызвана, указывается числом в регистре ah.
Некоторые функции DOS (int 21 h)
Пример 2. Программа ввода символа с клавиатуры model small.stack 100h.data.code start:;занесение в сегментный регистр адреса сегмента данных mov ax, @data mov ds, ax;помещаем в регистр ah номер функции, которая вводит символ mov ah, 01h int 21h ;вводим символ с клавиатуры;символ введенный с клавиатуры находится в регистре al mov ax,4 c 00 h int 21 h;выход из программыEnd start
Пример 3. Программа вывода символа на экран model small. stack 100 h.data f 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.data f 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.data x1 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.
|
||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2021-01-08; просмотров: 685; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.182.179 (0.007 с.) |