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



Download 12,06 Mb.
Pdf ko'rish
bet83/357
Sana22.02.2022
Hajmi12,06 Mb.
#115195
TuriДиплом
1   ...   79   80   81   82   83   84   85   86   ...   357
Bog'liq
assembler uchebnik dlya vuzov 2-e izd YuRXUW1

Пересылка данных
К группе команд пересылки данных относятся следующие команды:
mov <операнд
MOV — это основная команда пересылки данных. Она реализует самые разнооб-
разные варианты пересылки. Отметим особенности применения этой команды.
Командой MOV нельзя осуществить пересылку из одной области памяти в дру-
гую. Если такая необходимость возникает, то нужно использовать в качестве
промежуточного буфера любой доступный в данный момент регистр общего
К примеру, рассмотрим фрагмент программы для пересылки бай-
та из ячейки
в ячейку
model
fls db
db
start:
mov
mov
small
5
1
end s t a r t
Нельзя- загрузить в сегментный регистр значение непосредственно из памяти.
Для такой загрузки требуется промежуточный объект. Это может быть регистр
общего назначения или стек. Если вы посмотрите на листинг
то увидите
в начале сегмента кода две команды MOV, выполняющие настройку сегментного
регистра DS. При этом из-за невозможности напрямую загрузить в сегментный


 Глава 7. Команды обмена данными
регистр значение адреса сегмента, содержащееся в предопределенной перемен-
ной
приходится использовать регистр общего назначения АХ.
II Нельзя переслать содержимое одного сегментного регистра в другой сегмент-
ный регистр. Это объясняется тем, что в системе команд нет соответствующего
кода операции. Но необходимость в таком действии часто возникает. Выпол-
нить такую пересылку можно, используя в качестве промежуточных все те же
регистры общего назначения. Вот пример инициализации регистра ES значени-
ем из регистра DS:
Но есть и другой, более «красивый» способ выполнения данной операции —
использование стека и команд PUSH и POP:
push
значение регистра ds в стек
pop es ;записать в es число из стека
• Нельзя использовать сегментный регистр CS в качестве операнда назначения.
Причина здесь простая. Дело в том, что в архитектуре процессора IA-32 пара
CS:IP содержит адрес команды, которая должна выполняться следующей. Из-
менение командой MOV содержимого регистра CS фактически означало бы опе-
рацию перехода, а не пересылки, что недопустимо.
В связи с командой
отметим один тонкий момент. Пусть в регистре ВХ со-
держится адрес некоторого поля (то есть мы используем косвенную базовую адре-
сацию). Его содержимое нужно переслать в регистр АХ. Очевидно, что нужно при-
менить команду MOV в форме
mov
Транслятор задает себе вопрос: что адресует регистр ВХ в памяти —
или
байт? Обычно в этом случае он принимает решение сам, по размеру большего опе-
ранда, но может и выдать предупреждающее сообщение о возможном несовпаде-
нии типов операндов.
Или другой случай — возможно, более показательный. Рассмотрим команды
инкремента INC (увеличения операнда на 1) и декремента DEC (уменьшения опе-
ранда на
inc [Ьх]
dec
[bx]
Что адресуется регистром ВХ в памяти — байт, слово или двойное слово?
Допустим также, что требуется инициализировать поле, адресуемое регистром
ВХ, значением 0. Очевидно, что одно из решений — применение команды
mov [bx] ,0
И опять у транслятора вопрос: какую машинную команду ему конструировать?
Для инициализации байта? Для инициализации слова? Для инициализации двой-
ного слова?
Во всех этих случаях необходимо уточнять тип используемых операндов. Для
этого существует специальный оператор ассемблера PTR (см. приложение). Пра-
вильно записать приведенные ранее команды можно следующим образом:
mov
ptr[bx] ;если [bx] адресует слово в памяти
inc byte ptr[bx] ;если [bx] адресует байт в памяти


Ввод из порта и вывод в порт
dec
ptr[bx] ;если [Ьх] адресует двойное слово в памяти
word
;если
адресует слово в памяти
Можно рекомендовать использовать оператор PTR во всех сомнительных отно-
сительно согласования размеров операндов случаях. Также этот оператор нужно
применять, когда требуется принудительно поменять размерность операндов.
К примеру, требуется переслать значение
во второй байт поля
model small
0
start:
mov byte ptr
end start
Несмотря на то что поле flp имеет тип WORD, мы сообщаем ассемблеру, что поле
нужно трактовать как байтовое, и заставляем вычислить значение эффективного
адреса второго операнда как смещение flp плюс единица. Тем самым мы получаем
доступ ко второму байту поля flp.
Для двунаправленной пересылки данных применяют команду XCHG. Для этой
операции можно, конечно, применить последовательность из нескольких команд
MOV, но из-за
что операция обмена используется довольно часто, разработчи-
ки системы команд процессора посчитали нужным ввести отдельную команду об-
мена — XCHG. Естественно, что операнды должны иметь один тип. Не допускается
(как и для всех команд ассемблера) напрямую обменивать между собой содержи-
мое двух ячеек памяти. К примеру,
xchg
;обменять содержимое регистров ах и
содержимое регистра ах и слова в памяти по адресу в
xchg
ptr [si]

Download 12,06 Mb.

Do'stlaringiz bilan baham:
1   ...   79   80   81   82   83   84   85   86   ...   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