Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Команды расширения знака




Использование прерываний при выводе численных результатов обработки на экран дисплея.

Вывод числовых значений на экран дисплея осуществляется с использованием функции 2 прерывания 21Н.

Чтобы воспользоваться этой функцией, необходимо учесть, что десятичная цифра отличается от символа этой цифры на 30h, в чем легко убедиться, изучив таблицу кодов ASCII. Например, если искомый максимальный элемент записан в переменную max, то фрагмент программы для его вывода на экран дисплея может быть следующим:

tcifra: mov dl, max

add dl, 30h

mov ah,02h

int 21h

Приведенный фрагмент программы применим в случае, если максимальное значение элемента (max) является однозначным. Если элементы массива двухзначные (лежат в диапазоне от 10 до 99), то сначала необходимо выделить отдельные цифры, а затем последовательно их распечатать:

dwe_tcifr: mov al, max

cbw;преобразуем байт в полное слово

div byte ptr c;константа с объявлена в сегменте данных как c db 10

mov r,ah;запоминаем младшую цифру в r, переменная r объявлена в сегменте данных как r db?

mov dl,al;старшую цифру помещаем в dl

add dl, 30h;преобразуем цифру в символ

mov ah,02h; и выводим ее на экран

int 21h

mov dl,r;младшую цифру помещаем в dl

add dl, 30h; и выводим ее на экран

int 21h

При реализации вывода следует учесть, что обращение к прерыванию int 21h изменяет содержание регистра АХ (“портит” регистр АХ), поэтому значения из этого регистра, которые будут обрабатываться далее в программе, необходимо сохранить в другом регистре или ячейке памяти.

Желательно включить в программу оба вышеприведенных фрагмента совместно с анализом результата, как показано ниже:

сmp max,c;сравниваем значение тах с 10

jl tcifr;если меньше, то одна цифра

dwe_tcifr: mov al, max;иначе две цифры

далее по тексту фрагмент программы для вывода двух цифр

.........

jmp kon_wyw

tcifra: mov dl, max

 

 

К группе арифметических команд относят команды расширения операнда, которые называются командами преобразования:

В Ассемблере существуют команды CBW –преобразовать байт в слово и CWD – преобразовать слово в двойное слово. Обе команды не имеют операндов. Команда CBW по умолчанию оперирует содержимым регистра AL, а результат помещает в регистр AX. Команда CWD по умолчанию выбирает слово из регистра AX и помещает результат в DX:AX. Преобразование заключается в заполнении битом знакового разряда старших регистров результата – для команды CBW – регистра АН, а для команды CWD – регистра DX.

CBW – преобразует байт в регистре AL в слово в регистре АХ путем распространения старшего бита AL на все биты регистра AH;

CWD –преобразует слово в регистре АХ в двойное слово в регистрах AX и DX, путем распространения старшего 15-ого бита регистра АХ на все биты регистра DX. Эти команды позволяют приводить разноформатные операнды к одному формату (большему).

Обе команды дают верный результат при работе со знаковыми данными, но могут давать ошибочные результат с беззнаковыми данными. Поэтому для беззнаковых данных при необходимости преобразования к большему формату следует заполнить нулями старшую часть операнда расширенного формата и оперировать в последующих командах расширенным операндом.

 




Поделиться с друзьями:


Дата добавления: 2015-04-24; Просмотров: 396; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.