КАТЕГОРИИ: Архитектура-(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; Просмотров: 419; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |