Формат Директив и машинных команд. Язык А состоит из директив и машинных команд. Формат директив и машинных команд одинаков и в общем случае состоит из 4х полей:
Имя | Мнемокод | Операнды | ;коментарии |
Между полями должен быть хотя бы один пробел (или ТАБ).
Обязательным полем является поле мнемокода остальные не обязательны.
Директива - что-то в программе описывают(объявляют). Команды - что-то в программе выполняют.
Используем TASM 2.0 (4.0)(Borland)
Этот компилятор поддерживает 2 синтаксических стандарта: MASM, Ideal.
Директивы ИНИЦИАЛИЗАЦИИ И ОПИСАНИЯ ДАННЫХ
Данные могут размещаться в областях памяти которые называются сегменты.
В общем случае таких сегментов 3:
1. Сегмент данных (.DATA)
2. Сегмент кода (.CODE)
3. Сегмент стека (.STACK)
Сегменты описывают с помощью специальной директивы SEGMENT.
Директива модели памяти (.MODEL).
Для инициализации простых типов данных используют директивы (D"x"). Эти директивы указывают компилятору какой размер памяти необходимо выделить.
Директивы Dx
Длина (бит) | Мнемо код директивы | Описание |
db,DB | BYTE | |
DW,dw | WORD | |
DD,dd | DOUBLE WORD (DWORD) | |
DQ,dq | QWORD | |
DT,dt | TBYTE |
Для директив Dx имя может быть а может и отсутсвовать.
|
|
Описание и инициализация данных - это распределение и инициализация памяти.
Пример
C/C++ | Assembler |
int N; | N DW? |
N DD? | |
float A; | A DD? |
double B=-898.6897; | B DQ -898.6897 |
long double Arr[100]; | Arr DT 100dup(?) |
ОБЩАЯ СТРУКТУРА ПРОГРАММЫ НА ASSEMBLER
Заголовок программы | Title Заголовок |
Модель памяти | .Model large |
.Model tiny | |
.Model small | |
.Model medium | |
.Model compact | |
.Model huge | |
Сегмент Стека | .Stack |
Dx | |
Сегмент дынных | .DATA |
Dx | |
Extrn | |
Сегмент Кода | .CODE |
Extrn | |
Proc1 | |
Proc2 | |
...ProcN | |
Конец программы | END |
Исходный код программы сохраняется в виде файла с расшщирением ASM
Компиляция:
tasm Имя.asm /L (win)
tasm -L Имя.asm (Unix) -> Имя.lst
СТРУКТУРА lst ФАЙЛА
Номер строки | Адрес смещения | Машинный код | Исходный код |
Поля 2 и 3 содержат 16-е коды.
Поле 3 называют результатом ассемблирования
Пример:
В программе объявляются данные которые размещаются только в сегменте данных.
:файл example.asm
title example
;-----------------------------------------
.model tiny
;-----------------------------------------
.DATA
;-------------byte-----------------------
i DB 0, 255
;------------WORD---------------------
iw DW 4000
DW 65535
;--------------Short int----------------
is DB -128,127
;-------------integer-------------------
ii DW -32768
DW -25536
DW 32767
DW -1607
;--------long int -----
il dd 42294965689
ill dd -1607
;------single----------
a dd -1.
b dd 1.
ai dd -0.5, 0.5
dd 0.703125
dd -0.703125
dd 117.25
dd -117.25
;----------double---------
ad dq -1.
bd dq 1.
aid dq -0.5, 0.5
dq 0.703125
dq -0.703125
dq 117.25
dq -117.25
;---------end--------------
END
НАЗВАНИЕ ЛАБ 1: СОЗДАНИЕ ЛИСТИНГА
|
|