- •Некоторые понятия языка Ассемблер
- •Поля ассемблерной строки
- •Директивы ассемблера
- •Директива end.
- •2.2 Директива org (начало, origin).
- •Директива equ (equal, приравнять, присвоить)
- •Директива set (установить).
- •Директива db (определить байт, define)
- •Директива dw (определить слово)
- •2.7. Директива ds (define spice, определить память)
Директива equ (equal, приравнять, присвоить)
Директива имеет следующий формат. |
||||
Метка |
Код |
Операнд |
Комментарий |
|
;Формат директивы EQU |
||||
< имя> |
EQU |
<выражение> |
[; формат директивы] |
При ассемблировании компилятор присваивает значение вычисленного выражения символическому имени находящемуся в поле метки директивы.
Если символическое имя встречается в поле операнда одной или нескольких команд программы, то компилятор подставляет вместо него во все команды значение вычисленного выражения.
Пример. |
|||||
Метка |
Код |
Операнд |
Комментарий |
||
;Пример использования директивы EQU |
|||||
NIMBL0: |
EQU |
0Fh |
; маска старшей ; тетрады BCD–кода |
||
|
* * * |
|
|||
|
ANI |
NIMBL0 |
; младшую тетраду ; выделить |
При содержательных именах повышается читабельность программы.
Кроме того, если при отладке потребуется изменить значение символического имени во всей программе, это достаточно выполнить один раз при определении директивы EQU.
Особенностью этой директивы является то, что символические имена не должны повторяться, т.е. их значение не может быть переопределено в разных фрагментах программы.
Этот недостаток не характерен для директивы SET (установить).
Директива set (установить).
Эта директива имеет такой же формат, и выполняет те же функции, что и директива EQU. Однако, с её помощью значение символического имени может переопределяться для разных фрагментов программы.
Пример. |
|||||
Метка |
Код |
Операнд |
Комментарий |
||
;Пример использования директивы SET |
|||||
MY_NAME: |
SET |
0FB01h |
; MY_NAME=0FB01h |
||
|
LXI |
H, MY_NAME |
; HL=0FB01h |
||
|
* * * |
|
|||
MY_NAME: |
SET |
0Fh |
; MY_NAME=0Fh |
||
|
MVI |
B,MY_NAME |
; B=0Fh |
||
|
* * * |
|
Директива db (определить байт, define)
Директива DB имеет следующий формат. |
|||||
Метка |
Код |
Операнд |
Комментарий |
||
;Формат директивы DB |
|||||
[ метка:] |
DB |
<список> |
[; формат директивы] |
Операнды директивы DB а) последовательность выражений, разделённых запятыми; б) цепочки символов, заключённых в апострофы.
При вычислении выражений должно формироваться восьми битное значение. При преобразовании символов формируется ASCII–код.
Пример 1 |
||||||||||
Метка |
Код |
Операнд |
Комментарий |
|||||||
;Пример использования директивы DB |
||||||||||
|
ORG |
0FC00h |
|
|||||||
MASSIV: |
DB |
0Fh, B0h, BCh |
; массив MASSIV ; с адреса 0FC00h |
|||||||
|
* * * |
|
||||||||
|
LXI |
H, MASSIV+2 |
; HL=0FC02h |
|||||||
|
* * * |
|
||||||||
|
MOV |
B, M |
; B=0Fh |
|||||||
Пример 2 |
* * * |
|
||||||||
Метка |
Код |
Операнд |
Комментарий |
|||||||
;Пример использования директивы DB |
||||||||||
|
ORG |
0FC00h |
|
|||||||
SOOB: |
DB |
“WORD” |
; массив 57h, 4Fh, 52h, ; 44h начиная с 0FC00h |
|||||||
|
* * * |
|
||||||||
|
LXI |
H, SOOB+1 |
; HL=0FC01h |
|||||||
|
* * * |
|
||||||||
|
MOV |
B, M |
; B=4Fh |
|||||||
|
* * * |
|
При преобразовании символов формируется ASCII–код.
При вычислении выражения в поле операнда директивы DB, можно получить дополнительный код числа.
Пример. |
||||||
Метка |
Код |
Операнд |
Комментарий |
|||
;Пример использования директивы DB |
||||||
|
ORG |
4571h |
|
|||
COMPL: |
DB |
-37 |
; дополнительный код ; числа –37 |
|||
|
* * * |
|
||||
|
LDA |
COMPL |
; A = DBh |
|||
|
* * * |
|