Лаба 1. Простейшая программа описывающая данные

Формат Директив и машинных команд. Язык А состоит из директив и машинных команд. Формат директив и машинных команд одинаков и в общем случае состоит из 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: СОЗДАНИЕ ЛИСТИНГА


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: