Язык ассемблера для МП ВМ80. Программа подсчета числа единиц в байте, содержащемся в аккумуляторе

Страницы работы

3 страницы (Word-файл)

Содержание работы

Курс : Микропроцессорная техника .

Вопрос  4.

 “Язык ассемблера для МП ВМ80”

Представляет собой машинно-ориентированный язык. (Для каждого МП свой язык  ассемблера).

Язык ассемблера – это язык символического кодирования .

Вместо двоичных кодов операций и адресов используются символические имена то есть последовательности букв и цифр обязательно начинающиеся с буквы. Длина данной последовательности в принципе не ограничена , но транслятор различает только определенное количество символов в имени. (старые-от 5 до 8 ; современные- до 30).

Все имена делятся на два типа :        

1).Постоянные;

2).Определяемые пользователем ;

-Постоянные имена не нуждаются в дополнительных определениях в программе.

К ним относятся:

1)  Мнемокоды команд МП (mov,mvi …);

2)  Псевдокоманды ассемблера (оrg,end,equ…);

3)  Наименования регистров МП (A,B,…,SP,PC);

4)  Условное обозначение арифметических и логических операций выполняемых транслятором (NOT,AND,+,-,/,…);

5)  Апострофы ('А','С') – обозначает что буква или символ берется в коде КОИ-7 или ASCII.

-Символические имена пользователя должны быть определены в программе.В процессе трансляции  (перевода в машинные коды) транслятор вместо символических имен записывает их двоичный код.

Программа состоит из предложений (длина не более 80 символов).

В общем случае предложение содержит  4 поля.

Метка             операция            операнды            комментарий   

Они не являются обязательными (пустое предложение).Для разделения полей используется пробел.

1.метка – это символическое имя ячейки памяти ,в которой хранится отмеченная команда или операнд. В процессе трансляции ассемблер заменяет метку действительным адресом. Метка всегда используется с двоеточием (: -признак метки).

2.В поле операции помещается мнемоника команды МП или псевдокоманды.

3.В поле операндов размещаются операнды учавствующие в команде.(Имена регистров,символические имена констант или адресов,цифровые значения констант).

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

Adi   not(C+D)/E ;

Mvi  MEM,MEM1+2 ;

4.Поле комментариев. Содержит описание действий выполняемых командой.Отделяется от других полей  “;” 

Для того чтобы корректно осуществлялась трансляция программы необходимо определить исходные данные (с какой ячейки памяти размещается программа,какие значения присваивать символическим именам пользователя и т.д.).Для этого используются псевдокоманды – директивы транслятора .(ORG,END,EQU,SET,DB,DW,DS).

1) ORG(origin)

<МЕТКА> : ORG   <ВЫРАЖЕНИЕ>

ORG 0800H – с какой ячейки памяти транслятор должен размещать программу.Если    отсутствует , то по умолчанию с нулевой ячейки.

2) END

<МЕТКА>: END   <ВЫРАЖЕНИЕ>

Ставится END в конце программы  - указание транслятору закончить трансляцию программы.

3) EQU (equel) – присваивание

<ИМЯ>: EQU  <ВЫРАЖЕНИЕ> - присваивает символическому имени определенное значение.

Имена определяемые EQU  не должны переопределяться в данной программе .

4) SET – используется для присвоения значений именам ,которые могут переопределяться в программе.

Пример : TRAP SET 10H ;

MOV A,B;

…….

TRAP SET 11H ;

MOV A,C;

5) DB (define byte)  

<МЕТКА>:  DB  <СПИСОК> - формирует в оперативной памяти массив 8-битных констант , значения которых задаются в списке – последовательности выражений языка ассемблера , разделенных запятыми. 

6)  DW (define word) – определить слово.

<МЕТКА>: DW  <ВЫРАЖЕНИЯ> - формирует в ОЗУ массив 16-битных констант.

Пример : М: DW   1000H,2000H;

7)  DS – определить память ;

<МЕТКА>: DS   <ВЫРАЖЕНИЕ>

Резервируется определенное количество ячеек памяти . Никаких значений в резервируемые ячейки не заносится .

Пример :    TABLE: DS 100  - МП резервирует 100 ячеек памяти.

Пример :

0100н                    org 100h ;начальный адрес программы пр1:                     

;****************************************************************

;Программа подсчета числа единиц в байте, содержащемся в аккумуляторе

;****************************************************************

0100h                   mvi C,0 ;очистка счетчика единиц

0101h                   mvi B,8 ;загрузка счетчиков сдвигов

0102h         M2:   rlc          ;сдвиг влево

0103h                   jnc M1  ;переход на М1, если (CY=0)

0104h                   inr  C     ;

0105h         M1:   dcr B     ;

0106h                   jnz  M2 ;переход на М2, если (В)  не равен нулю

0107h                   hlt     ;остановка МП

0108h                   end   ;конец трансляции  

Похожие материалы

Информация о работе