Файл: Основные правила составления программ на ассемблере.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.12.2023

Просмотров: 33

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


Операнды команд могут храниться в программно-доступных регистрах микропроцессора или в памяти МПС. Для указания операнда в регистре используются: регистровая адресация и ре­гистровая неявная адресация.

При регистровой адресации в коде команды существует поле для указания регистра, содержащего операнд. При регистровой неявнойадресации специального поля в коде команды нет.

Для указания операнда в памяти используются адресации: непосредственная, прямая, косвенная и стековая.

При непосредственной адресации операнд задается в команде. При прямой адресации в команде указывается адрес операнда. При косвенной регистровой адресации адрес операнда указывается в регистровой паре или для команды XTHL — в регистре указа­теля стека.

 

1.3. Команды микропроцессора КР580ВМ80

 

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

 

Команды пересылки и загрузки  данных:

MOV R1,R2 – пересылка из регистра в регистр;

LDAX B(D) – пересылка из ячейки памяти, адрес которой записан в  регистровой паре ВС (DE), в аккумулятор;

STAX В(D) – пересылка из аккумулятора в ячейку памяти, адрес которой записан в регистровой паре BC (DE);

- LDA_B2_B3 – пересылка из ячейки памяти, адрес  которой записан во втором и третьем байтах команды, в аккумулятор;

- STA_B2_B3 – пересылка из аккумулятора в ячейку памяти, адрес которой указан во втором и третьем байтах команды;

SPHL – пересылка данных из регистровой пары HL в указатель стека;

PCHL – пересылка данных из регистровой пары HL в счетчик команд;

LHLD_B2_B3 – пересылка данных из ячеек памяти с адресами, записанным во втором и третьем байтах команды и на единицу большем, в регистровую пару HL;

SHLD_B2_B
3 – пересылка данных из регистровой пары HL в ячейки памяти с адресами, записанными во втором и третьем байтах команды и на единицу большем;

MVI R_B2 – загрузка  второго байта команды в регистр R;

LXI B (D,H)_B2_B3 – загрузка второго и третьего байтов команды в регистровую пару BС (DЕ,HL).

 

Команды обмена данными:

XCHG – обмен данными между парами регистров HL и DE;

- XTHL – обмен данными между парой регистров HL и вершиной стека (L)¬®[УC], (H)¬®[УC+1].

 

Группа арифметических команд.

Команды сложения :

ADD R – сложение содержимого аккумулятора с содержимым            регистра R  (A) ¬ (A) + (R);

ADI_B2 – сложение содержимого аккумулятора со вторым байтом команды    (A) ¬ (A) + B2;

ADC R – сложение содержимого аккумулятора с содержимым регистра R и признаком (С)  (А)¬ (A) + (R) + (С);

ACI_B2 – сложение содержимого аккумулятора со вторым байтом команды и признаком (С)  (A) ¬ (A) + B2 +(С);

DAD B (DHSP) – сложение содержимого пары регистров HL с содержимым пары регистров BC (DE или HL  или указателем стека) и запись результата в пару HL.

 

Команды вычитания :

SUB R – вычитание из содержимого  аккумулятора содержимого регистра R      (A) ¬ (A) – (R);

SUI_B2 – вычитание из содержимого аккумулятора  второго байта команды         (A) ¬ (A) – B2;

SBB R – вычитание из содержимого аккумулятора содержимого регистра R и признака (С)      (А)¬ (A) – (R) – (С);

SBI_B2 – вычитание из содержимого аккумулятора второго байта команды и признака (С)  (A) ¬ (A) – B2 – (С).

 

Операции инкремента и декремента:

INRR  –  увеличение   содержимого  регистра на 1      (R) +1 ® (R);

INX B (DHSP) – увеличение содержимого пары регистров BC (DE), (HL), (SP) на 1 ;

DCR R – уменьшение содержимого регистра R на 1     (R) -1 ® (R);

DCX B ( DHSP) – уменьшение содержимого пары регистров BC  (DE), (HL), (SP) на 1 .

 

Группа команд поразрядной обработки данных.

Логические команды :

ANA R – операция “И” между содержимым аккумулятора и содержимым регистра                                      (A) ¬ (A) L (R);

ANI_B2 – операция “И” между содержимым аккумулятора и вторым байтом команды                         (A) ¬ (A) L B2;



ORA R – операция “ИЛИ” между содержимым аккумулятора и содержимым регистра R            (A) ¬ (A) V (R);

ORI_B2 – операция  “ИЛИ” между содержимым аккумулятора и вторым байтом команды                         (A) ¬ (A) V B2;

XRA R – операция “ИЛИ-НЕ” между содержимым аккумулятора и содержимым регистра R            (A)  ¬ (A) " (R);

XRI_B2 – операция  “ИЛИ-НЕ” между содержимым аккумулятора и вторым байтом команды           (A) ¬ (A) " B2.

 

 

Команды сравнения:

CMP R   –  операция  (A) – (R); если (A) = (R), то Z = 1; если

     (А) <(R), то С=1;

CPI_B2  –   операция  (А) – B2; если (A) = B2, то Z = 1; если

     (A)< B2, то С=1.

 

Команды сдвига: 

RLC – сдвиг влево (каждый бит сдвигается на один разряд влево, а 7 бит переносится в 0 и одновременно записывается в признак (С)) Dm®Dm+1, D7®D0, D7®C;

RRC – сдвиг вправо (каждый бит сдвигается на один разряд вправо, а 0 бит переносится в 7 и одновременно записывается в признак (С)) Dm+1®Dm, D0® D7, D0®C;

RAL – сдвиг влево через перенос (каждый бит сдвигается на один разряд влево, 7 бит записывается в признак (С), а бит из (С) записывается в 0 бит) Dm®Dm+1, D7®C, C®D0;

RAR – сдвиг вправо через перенос (каждый бит сдвигается на один разряд вправо, 0 бит записывается в признак (С), а бит из (С) записывается в 7 бит) Dm+1®Dm, D0®C, C®D7.

 

Команда инверсии содержимого аккумулятора - СМА     (А) ¬ (Ā).

 

Команды безусловного перехода:

JMP_ В2_ В3 – записать информацию из второго и третьего байта команды в счетчик команд;

PCHL – записать содержимое пары регистров HL в счетчик команд.

 

Команды условного перехода:

JNC – если признак     c = 0

JC    – еслипризнак     c = 1

JNZ – если признак     z = 0

JZ    – если признак     z = 1

JPO – если признак     p = 0

JPE – если признак      p = 1

JP – если признак      s = 0

JM  – если признак      s = 1

то перейти по адресу, записанному во втором и третьем байтах команды,   

иначе перейти к следующей команде.

 

 

Команда безусловного вызова подпрограммы :

CALL_В2_ В3 – вызов подпрограммы с начальным адресом
, записанным во втором и третьем байтах команды.

 

 

 

 

 

Команды условного вызова подпрограммы:

-         CNZ – если     z = 0

-         CZ    – если     z = 1

-         CNC – если     c = 0

-         СС    – если     c = 1

-         СРО – если     p = 0

-         СРЕ – если     p = 1

-         СР   –  если     s = 0

-         CM  –  если    s = 1

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

иначе перейти к следующей команде

 

 

Команда безусловного возврата из подпрограммы – RET.

 

Команды условного возврата из подпрограмм:

-         RNZ – если      z = 0

-         RZ    – если      z = 1

-         RNC – если      c = 0

-         RС    – если     c = 1

-         RРО – если      p = 0

-         RРЕ – если      p = 1

-         RР  – если      s = 0

-         RM   – если     s = 1

то возвратиться к команде, следующей за командой вызова подпрограммы, 

иначе продолжить выполнение подпрограммы.

 

 

Команды операций со стеком:

PUSH B(D,H– запись содержимого регистровой пары BC (DE,HL) в стек              (B,D,H) ®[ УС-1 ], (C,E,L) ®[ УС-2 ], (УС)=(УС)-2;

PUSH PSW – запись слова состояния в стек                                                                     (A) ®[УС-1], (F) ®[ УС-2 ], (УС)=(УС)-2;

POP B(D,H– запись из стека в регистровую пару BC(DE,HL)

 [УС] ® (C,E,L), [УС+1] ®(B,D,H),  (УС)=(УС)+2; 

POP PSW –  запись слова состояния из стека

 [УС] ® (F), [УС+1] ®( A),  (УС)=(УС)+2. 

 

Команды управления микропроцессором:

-         CMC – инверсия признака (С) (С) ® (С);

-         STC   – запись 1 в признак (С) 1 ® (С);

-         EI – разрешение прерываний;

-         DI – запрет прерываний;

-         NOP  – команда «нет операции»;

-         НLТ  – останов.

Ввод-вывод через порты МПС осуществляется специальными командами микропроцессора: IN ADDR
 и OUT ADDR, где ADDR — адрес внешнего устройства. Так как адрес внешнего устройства указывается в одном байте, то микропроцессор может обмениваться информацией не более чем с 256 внешними устрой­ствами.

Число различных команд микропроцессора составляет 78, и для них зарезервировано 78 имен команд, перечисленных выше. Многие базовые команды из числа 78 порождают несколько раз­личных кодов операций, поэтому общее число кодов команд составляет 244 (см. табл. 1).

Время выполнения команды, оцениваемое числом тактов микро­процессора, составляет 4 – 18 тактов. Для подавляющего числа команд время выполнения команды (число тактов) есть величина постоянная, однако существуют команды, для которых это время может меняться. Такими командами являются команды условного вызова и возврата из подпрограмм. Время выполнения команды зависит от того, выполняется условие или нет.  Если условие выполняется, время выполнения команды  увеличивается.

Программирование на  Ассемблере можно осуществить, используя таблицу , приведенную в Приложении 2 . В этой таблице приведены команды по группам. Приведены мнемокод (см. также таблицу 1), двоичный код команды или двоичный код содержащий символы источника или приемника данных, число байтов в команде , число тактов, выполняемые действия, характер изменения битов регистра признаков.

 

2. КРОСС-СРЕДСТВА ОТЛАДКИ

2.1. Формат ассемблерной строки

 

Разработка и отладка микропроцессорных программ ведется с помощью различных отладочных средств: от оценочных учебных модулей до универсальных аппаратно-программных комплексов. Последнее время фирмами разработчиками МП поставляются аппаратно-программные комплексы, сопрягаемые с персональными компьютерами. Они содержат ряд программ и плату с МП, подключаемую к последовательному или параллельному порту ЭВМ (встречаются оба варианта). При этом реализуются следующие возможности:

- ассемблирование исходного файла;

- моделирование на программном уровне (симуляция) исходного файла;

- моделирование на аппаратном уровне (эмуляция) исходного файла.

В лабораторном практикуме плата с МП отсутствует, поэтому обучение проводится на программном уровне.

Исходный файл прикладной программы пишется в любом текстовом редакторе и ему присваивается расширение .asm