Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_i_otvety_MPT.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
3.94 Mб
Скачать

Примеры

MOV DPTR, #1234H ; Загрузить в регистр DPTR 16-ричное число 1234H

MOV A, #0AAH ; Загрузить в аккумулятор 16-ричное число AAH

Десятичные данные. Десятичное число в поле операндов заканчивается необязательной буквой D (Decimal). Число без буквы D по умолчанию считается десятичным.

Примеры

MOV P1, #10D ; Переслать в порт P1 десятичное число 10

ADD A, #55 ; Сложить с содержимым аккумулятора десятичное число 55

Двоичные данные. Двоичное число в поле операндов должно заканчиваться буквой B (Binary).

Примеры

MOV P1, #11110000B ; Переслать (вывести) в порт P1 двоичное число 11110000

ANL A, #01111111B ; Логическое И содержимого аккумулятора и числа 01111111.

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

Примеры

JMP DONE ; Переход на метку DONE

………………

CALL SWAP ; Вызов подпрограммы SWAP

………………

DONE: MOV A, #0F0H

………………

SWAP: MOV A, R2 ; Подпрограмма SWAP

………………

Любой символический адрес, фигурирующий в поле операндов команд передачи управления, должен 1 раз появиться в поле метки некоторого оператора исходной программы. Если он не появляется ни разу, программа-ассемблер выдает сообщение о неопределенной метке.

Поле комментария. Это поле может быть использовано программистом для текстового или символьного пояснения логической организации программы. Поле комментария полностью игнорируется программой-ассемблером, а потому в нем допустимо использовать любые символы. По правилам языка Ассемблер поле комментария должно начинаться после точки с запятой ().

Директивы Ассемблера

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

Современные программы-ассемблеры имеют несколько десятков директив. Мы рассмотрим только основные директивы Ассемблера для MCS-51 фирмы “2500 A.D.”. Можно выделить три класса директив Ассемблера

  1. управления трансляцией ORG, END;

  2. определения символических имен EQU, REG;

  3. выделения памяти для данных DB, DW, DS.

Директива ORG. Директива ORG (начало) имеет следующий формат

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

[метка] ORG < выражение> ; Формат директивы ORG

Здесь квадратные скобки обозначают необязательный элемент.

Значением выражения директивы ORG является допустимый 16-разрядный адрес, определяющий ячейку памяти программ, в которую будет загружаться первый байт следующей команды или байт данных. До новой директивы ORG команды и данные размещаются в смежных ячейках памяти программ. Если в самом начале программы директива ORG отсутствует, то по умолчанию подразумевается наличие директивы ORG с нулевым операндом.

Например, директива ORG 0010H задает ассемблеру адрес ячейки памяти программ 0010H, в которой должна быть расположена следующая за ней команда исходной программы.

Директива END. Формат директивы END выглядит следующим образом

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

[метка ] END ; Формат директивы END

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

Директива EQU. Директива EQU (приравнять, присвоить) имеет следующий формат

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]