Дипломированных специалистов «Информатика и вычислительная техника»



Download 12,06 Mb.
Pdf ko'rish
bet89/357
Sana22.02.2022
Hajmi12,06 Mb.
#115195
TuriДиплом
1   ...   85   86   87   88   89   90   91   92   ...   357
Bog'liq
assembler uchebnik dlya vuzov 2-e izd YuRXUW1

Преобразование данных
К группе команд преобразования данных можно отнести множество команд про-
цессора, но большинство из них имеют те или иные особенности, которые требуют
отнести их к другим функциональным группам (см. рис 3.3). Поэтому из всей со-
вокупности команд процессора непосредственно к командам преобразования дан-
ных можно отнести только одну команду
Это очень интересная и полезная команда. Ее действие заключается в том, что
она замещает значение в регистре AL другим байтом из таблицы в памяти, располо-
женной по адресу, указанному операндом
Слово «таб-
лица» весьма условно; по сути, это просто строка байтов. Адрес байта в строке,
которым будет производиться замещение содержимого регистра AL, определяется
суммой (ВХ) + (AL), то есть содержимое AL играет роль индекса в байтовом массиве.
При работе с командой XLAT обратите внимание на следующий тонкий момент.
Хотя в команде указывается адрес строки байтов, из которой должно быть извле-
чено новое значение, этот адрес должен быть предварительно загружен (напри-
мер, с помощью команды LEA) в регистр ВХ. Таким образом, операнд


 данных
на самом деле не нужен (на это указывают квадратные скобки).
Что касается строки байтов (таблицы перекодировки), то она представляет собой
область памяти размером от 1 до 255 байт (диапазон числа без знака в 8-разрядном
регистре).
В качестве иллюстрации работы данной команды мы рассмотрим программу
из листинга
(см. главу 6). Вы помните, что эта программа преобразовывала дву-
значное шестнадцатеричное число, вводимое с клавиатуры (то есть в символьном
виде), в эквивалентное двоичное представление в регистре AL. В листинге 7.3 при-
веден вариант этой программы с использованием команды XLAT.
Листинг 7.3. Использование таблицы перекодировки
_ _
<2>
преобразования двузначного
числа
<3> ;в двоичное представление с использованием команды
<4> ;Вход: исходное шестнадцатеричное число; вводится с клавиатуры.
<5>
результат преобразования в регистре
<6>
<7> model small
<8>
данных
<9> message db "Введите две
db 48
7
(0)
db
26 dup (0)
<12> db
152 dup (0)
<13>
256
стека
<14>
<15> ;начало сегмента кода
<16> main proc
процедуры main
<17>
адрес сегмента данных в регистр ах
mov
;ax записываем в ds
<19> lea
;загрузка адреса строки байт в регистр Ьх
<20> mov
<21> mov
message
int 21h
приглашение к вводу
<23>
;очистить регистр ах
<24> mov
;значение lh в регистр ah
<25> int 21h
первую цифру в al
<26> xlat
первого введенного символа в al
<27> mov
<28>
влево для освобождения места для младшей цифры
<29> int 21h ;ввод второго символа в al
<30> xlat
второго введенного символа в al
<31> add
для получения результата
<32> mov
в регистр ах
<33> int
;завершение программы
<34> endp main ;конец процедуры main
<36> end main
программы с точкой входа main
Сама по себе программа проста; сложность вызывает обычно формирование
таблицы перекодировки. Обсудим этот вопрос подробнее. Прежде всего нужно
определиться со значениями тех байтов, которые вы будете изменять. В нашем
случае это символы
цифр. В главе 6 мы рассматривали их
ASCII-коды. Поэтому мы конструируем в сегменте данных таблицу, в которой на
места байтов, соответствующих символам шестнадцатеричных цифр, помещаем
их новые значения, то есть двоичные эквиваленты шестнадцатеричных цифр. Стро-
ки 10-12 листинга 7.3 демонстрируют, как это сделать. Байты этой таблицы, сме-
щения которых не совпадают со значением кодов шестнадцатеричных цифр, нуле-


 Глава 7. Команды обмена данными
вые. Таковыми являются первые 48 байт таблицы, промежуточные байты и часть
в конце таблицы. Желательно определить все 256 байт таблицы. Дело в том, что
если мы ошибочно поместим в AL код символа, отличный от символа шестнадцате-
ричной цифры, то после выполнения команды XLAT получим непредсказуемый ре-
зультат. В случае программы из листинга 7.3 это будет ноль, что не совсем коррект-
но, так как
что же в действительности было в AL: код символа 0 или
что-то другое. Поэтому, наверное, есть смысл здесь поставить «защиту от
поместив в неиспользуемые байты таблицы какой-нибудь определенный символ.
После каждого выполнения команды XLAT нужно будет просто контролировать
значение в AL на предмет совпадения с этим символом, и если оно имело место,
выдавать сообщение об ошибке.
После того как таблица составлена, с ней можно работать. В сегменте команд
строка
инициализирует регистр ВХ значением адреса таблицы
Далее все
очень просто. Поочередно вводятся символы
цифр и про-
изводится их перекодировка в соответствующие двоичные эквиваленты. В осталь-
ном программа аналогична программе из листинга
Для закрепления знаний и исследования трудных моментов запустите програм-
му из листинга 7.3 под управлением отладчика.

Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   85   86   87   88   89   90   91   92   ...   357




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish