Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции по МПС / МПС лек / Понятие о языке Ассемблер

.doc
Скачиваний:
22
Добавлен:
28.03.2015
Размер:
38.91 Кб
Скачать

Понятие о языке Ассемблер

Система команд современных ЭВМ насчитывает от нескольких десятков до сотен различных команд. Запомнить числовые коды всех операций очень трудно. Не менее трудно пользоваться таблицей кодов операций.

Написанные программы на машинном языке требует постоянного внимания и большого терпения. Не меньшей работы требует и размещение исходных чисел, и самой программы в ячейках памяти. Такая длительная и монотонная работа приводит к появлению большого количества ошибок в программе. Чтобы обеспечить процесс написания программы были созданы и создаются различные языки программирования.

Для обозначения операции используют обычно 3-4 буквы из ее названия. К сожалению, принята не русская в большинстве случаев, а английская мнемоника, что затрудняет пользование этим языком, особенно для тех, кто не изучал английский язык.

Например, мнемоническое обозначение команды ПЕРЕСЛАТЬ ДАННЫЕ может иметь вид: ПСД. В международном выражении это команда обозначается MOV (move – переслать), команда сложить СЛЖ (addition – ADD).

Символами обозначают и регистры, участвующие в операции. Это второе преимущество языка Ассемблер.

Чтобы сложить два числа, находящихся в аккумуляторе и в регистре общего назначения, достаточно записать СЛЖ В, А.

Так же можно облегчить работу с адресами, заменить их символическими именами. Так, чтобы переслать данные из массива, в памяти, в аккумулятор, можно записать: ПСД ООЕ, А, где ОЕЕ – ­­­­­адрес массива.

При программировании на машинном языке используется бланки, содержащие четыре колонки со следующим содержанием: адрес ПЗУ, КОП, содержимое второго байта, содержимое третьего байта.

При программировании на ассемблере бланки содержат следующие колонки: метка, код, операнд.

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

Наименование команд в языке ассемблера представляют собой слова или сокращение слов и выражений, написанных на английском языке. При работе МП серии К580 используется около 80 команд, которые по функциональному признаку можно распределить в 10 групп. Для описания системы команд введем следующие обозначения:

R, R1 – содержимое регистров А, B, C, D, E, H, L, или ячейки памяти M(HL), адрес которой находится в регистровой паре HL.

YZ – содержимое регистровой пары BC, DE, HL или регистра SP.

SP – содержимое указателя стека перед выполнением команды.

D8 – восьмиразрядный операнд, содержащийся во втором байте команды.

N, (N) – номер порта ввода и его содержимое.

ADR – 16-разрядный адрес в трехбайтной команде.

Х – одно число из ряда 0 1 ... 7.

М (-) – содержимое ячейки памяти (адрес ячейки указан в скобках).

,  – знаки логического умножения и сложения.

Типовые команды в отдельных группах

(запись после двоеточия поясняет действия при выполнении команды)

  1. Однобайтовые пересылки

MOU R, R1: R1 → R

MUI R, D8: D8 → R

LDAX YZ: M(YZ) → A

LDA ADR: M(ADR) → A

  1. Двухбайтовые пересылки

LHLD ADR M(ADR)M(ADR+1) → HL

PUSH YZ YZ → M(SP–1)M(SP–2)

POP YZ M(SP)M(SP+1) → YZ

  1. Команды ввода вывода

IN N (N) → A

OUT N A → (N)

  1. Обмен байтами

XCNG HL ↔ DE

  1. Арифметические и логические операции с 1 операндом

INP R R+1 → R

DEC R R–1 → R

  1. Арифметические и логические операции с двумя операндом:

ADD R A+R → A

ADI D8 A+D8 → A

ORA R AR → A

ANI D8 AD8 → A

SUB R A–R → A

  1. Команды сдвига содержимого RAк:

RLS – сдвиг влево

RRS – сдвиг вправо

  1. Команды передачи управления:

YMP ADR ADR → PC (безусловный переход)

YNZ ADR ADR → PC (условный переход при Z=0, т.е. переход к подпрограмме, начинаемое с адреса ADR при Z=0)

YM ADR ADR → PC (условный переход при S=0, т.е. переход к подпрограмме, начинаемое с адреса ADR при S=0)

RST X PC → M(SP–2) (adr → PC, где при увеличении Х от 0 до 7 соответственно имеет значение 0Н, 8Н, 10Н, 18Н, 20Н, 30Н, 38Н, переход к подпрограмме, начальный адрес которой задается периферийным устройством. Эта команда вводится не из памяти в регистр, а из устройства ввода-вывода, после запроса на прерывание.

  1. Команды вызова подпрограммы и возврата программу

CALL ADR PS → M(SP–1)M(SP–2)

RET M(SP)M(SP+1) → PC

  1. Специальные команды

EI разрешение прерывания

HLT останов

3