Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лр№6 Команды пересылки.doc
Скачиваний:
45
Добавлен:
01.03.2025
Размер:
109 Кб
Скачать
☆

«Изучение формирования адресов с помощью отладчика afd»

. Система команд

Систему или набор (и даже репертуар команд МП К1810 образуют 113 базовых команд, многие из которых допускают использование разнообразных режимов адресации. В изучении системы команд МП помогает группирование команд по функциональному назначению. Кроме того, значительную помощь читателю окажут и подробные примеры выполнения команд.

. Команды передачи данных

Как любой современный процессор, МП К1810 имеет обширный набор команд, предназначенных для пересылок данных между регистрами, а также между регистрами и памятью. Команды передачи данных удобно разделить на четыре группы:

общие команды передачи данных;

команды передачи данных с привлечением стека (стековые команды);

команды ввода-вывода;

команды передачи цепочек байтов и слов.

В данном параграфе сравнительно подробно рассмотрены команды первых трех подгрупп, а команды манипуляций цепочками рассмотрены в другой методической разработке.

Относительной особенностью команд передач данных является то, что они не модифицируют состояние флажков. Исключение составляют только команды POPF и SAHF, которые прямо воздействуют на регистр флажков.

Общие команды передачи данных. Данная подгруппа включает в себя команды, осуществляющие передачи регистр-регистр, регистр-память и память-регистр. Наиболее мощной среди них является команда MOV (передать, переслать).

Команда MOV. Эта команда имеет следующее представление: MOV dst, src dst:=(src)

И осуществляет передачу содержимого источника src в получатель dst. Команда MOV имеет несколько форматов, показанных на рис. 1.1.

Самой гибкой и универсальной является команда MOV mem/reg1, mem/reg2. Она содержит постбайт режима адресации, с помощь, которого можно задавать любой допустимый режим адресации. Наличие бита w показывает возможность передачи байт и слов, а бит d определяет направление передачи. Таким образом, с помощью одной этой команды осуществляются передачи регистр-регистр/память и память-регистр, при чем регистром может быть любой общий регистр. Длина команды составляет 2, 3 или 4 байта, а время выполнения равно двум тактам в формате регистр-регистр, (8+EA) тактам в формате память-регистр и (9+ЕА) тактам синхронизации в формате регистр-память.

Пример 1.

(SI)=3456 MOV CX,[SI] (CX)=3AAD

(DS)=ABCD

([AF126])=3AAD

Пример 2.

(BX)=789A MOV DL,BX (DI)=789A

Команда MOV mem/reg1, mem/reg2 выполняет функцию команды MOV r1, r2 микропроцессора К580, но является более универсальной.

Примеры записи команды на языке ассемблера приведены ниже.

MOV DX,CX ;Слово, регистр-регистр

MOV BP, GAMMA ;Слово, память-регистр

MOV TEMP, BL ;Байт, регистр-память

МOV [DI], BX ;Слово, регистр-память

MOV DX, [BP][SI] ;Слово, память-регистр

Примечание. Для лучшего усвоения кодирования команд рекомендуется самостоятельно построить машинные команды, реализующие приведенные выше операторы языка ассемблера. Символическим именам, например, GAMMA, TEMP, можно присваивать произвольные 16-битные значения. Такие же упражнения целесообразно выполнять для всех ассемблерных операторов, которые приводятся в качестве примеров.

Команда MOV mem/reg, data позволяет передать в регистр или ячейку памяти непосредственные данные. Она также допускает большинство режимов адресации и передачу байт или слов.

Длина команды в зависимости от режима адресации варьирует от 3 до 6 байт, а выполняется за (10+.ЕА) тактов синхронизации.

Пример 3.

(DI)=1000 MOV [DI], 8400H ([A4450])=8400

(DS)=A345

Примеры записи на языке ассемблера приведены ниже.

MOV [BX], 3450H ;Слово в память

MOV [BP][SI], 2CH ;Байт (или слово) в память

MOV CX, 1000H ;Слово и регистр

В этой команде нельзя определять сегментные регистры. Отсутствие команды загрузки непосредственных данных в сегментные регистры считается недостатком системы команд МП К1810, т. к. при инициализации системы в сегментные регистры приходится загружать константы. Решение этой проблемы приведено ниже.

Команда MOV reg, data представляет собой более короткий вариант предыдущей команды и осуществляет загрузку констант в общие регистры МП. Длина этой команды составляет 2 или 3 байта, а время выполнения равно 4 тактам синхронизации. Она эквивалентна командам MVI r, data и LXI rp, МП К580.

Примечание. Выше в примерах записи команды MOV mem/reg, data, на языке ассемблера была приведена команда MOV CX, 1000H. Возможно, естественно, закодировать ее 4 байтами в формате команды MOV mem/reg, data, однако программа-ассемблер выберет более короткий 3-байтный вариант команды и формате MOV reg, data.

Команды MOV ac, mem и MOV MEM, ac предназначены для загрузки и запоминания содержимого аккумуляторов. Например, команда MOVAL, BETA передаст и аккумулятор AL байт с адресом BETA, а команда MOV ALPHA, AX запоминает содержимое аккумулятора AX в слове памяти с адресом ALPHA. При выполнении последней команды содержимое регистра AL оказывается в байте с адресом ALPHA, а содержимое регистра AH – в байте с адресом ALPHA+1. Напомним, что оба байта находятся в текущем сегменте данных (если специально не определен другой сегмент) и указанные адреса представляют собой смещения в этом сегменте. Обе команды имеют длину 3 байта и выполняются за десять тактов синхронизации.

Команды MOV sreg, mem/reg и MOV mem/rrg, sreg осуществляют передачи между сегментными регистрами и регистрами/памятью. В них передаются только слова, а ячейка памяти может быть определена с помощью любого допустимого режима адресации. Отметим, что в команде MOV sreg, mem/reg нельзя указывать сегментный регистр кода CS, т. к. при этом результат операции не определен.

Обе команды имеют длину 2-4 байта в зависимости от режима адресации. Время выполнения в формате регистр-регистр составляет два такта синхронизации: при задании памяти первая команда выполняется за (84-EA), а вторая – за (9+EA) тактов синхронизации.

Команда MOV sreg, mem/reg применяется для инициализации сегментных регистров, т.е. для определения сегментов. Если, например, в сегментный регистр DS необходимо загрузить F000, то потребуются команды

MOV AX, 0F000H ; Инициализация

MOV DS, AX ; регистра DS на F000

При такой инициализации почти всегда как промежуточный используется регистр AX, т.к. команда MOV ac, data короче более общей команды MOV mem/reg, data.

Первый формат позволяет обменять содержимое любого общего регистра и ячейки памяти, а также любой пары общих регистров. Память адресуется в любом допустимом режиме адресации. Однобайтная команда XCHG предназначена для обмена любого общего регистра и аккумулятора AX. Первая команда имеет длину 2-4 байта и выполняется за четыре (регистр-регистр) или (17+EA) (регистр-память) тактов синхронизации.

Примеры использования команд обмена в ассемблерных операторах приведены ниже.