Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1-50_1.docx
Скачиваний:
9
Добавлен:
02.08.2019
Размер:
707.62 Кб
Скачать
  1. Структура программы на Ассемблере с использованием стандартных директив сегментации.

Обычно программа на Ассемблере состоит из 3-х сегментов:

; сегмент стека Sseg Segment

………………………………

Sseg ends

; сегмент данных Dseg Segment

………………………………..

Dseg ends

; сегмент кода Cseg Segment

……………………………

Cseq ends

Каждый сегмент начинается директивой начала сегмента-segment и заканчивается директивой конца-Ends.

Существует специальная директива, устанавливающая соответствие между сегментными регистрами и именами в директиве сегмент.

ASSUME SS:Sseg,DS:Dseg,CS:Cseg,ES:Dseg.

Кодовый сегмент оформляется как процедура:

Cseq Segment

ASSUME SS:Sseg,DS:Dseq,CS:Cseg,CS:Dseg

Pr1 proc …./…..

Pr2 proc …./….

Pr2 endp …./….

Pr1 endp

Cseg ends.

В сегменте стека выделяется место под стек.

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

;Prim1.ASM

;сегмент стека Sseg Segment… DB256 DUP(?)

Sseg ends

;сегмент данных Dseg Segment… X DB ‘A’

Y DB ‘B’ Z DB ‘C’

Dseg Ends

Cseg Segment

ASSUME SS:Sseg, DS:Dseg. CS:Cseg

Start Proc FAR

Push DS/ Push AX / MOV DX,Dseg/ MOV DS,DX

Call MAIN

Ret

Start endp

MAIN Proc Near

ADD Al,X

MOV AX,Y

……../………..

Ret

Main endp

Cseg ends

End start

  1. Основные элементы языка Ассемблер: имена, константы, переменные, выражения.

Алфавит состоит из латинских букв, цифр и символов. Строчные и прописные не различаются. Цифра не может быть на первом месте в имени.

В программе на Ассемблере используются константы:

-целые двоичные- последовательности 0 и 1 со следующим за ними символом “b”: 1010101b.

-целые десятичные- обычные 10-ые числа м.б с буквой “d”: 128 или 78d

-целые 16-ые : должны начинаться с цифры и заканчиваться ‘h’ если первый символ A,B,C,D,E,F, то перед ним надо поставить 0.

-действительные с плавающей точкой(мантисса и порядок):34.567e+02

-символьные- послед-сти символов заключенные в апострофы или “”

Именованные константы- директива EQU: M EQU 27

Определение переменных V1 DB(байт); V2 DW(слово) или V3=100

Выражения состоят из операндов, операторов и ( ).

Операторы:

1)арифметические + - * / mod

2) логические or not and xor

3)операции отношений : LT(<) LE(<=) EQ(=) NE(!=) GT(>) GE(>=)

4)операции сдвига: влево-SHL, вправо-SHP.

5)специальные: offset<имя>- смещение операнда относительно начала, а операнд PTR-определяет тип операнда метка или переменная.

  1. Директивы определения данных и памяти, примеры.

Общий вид директивы определения:[<имя>]DX<операнды><;комменты>,

Где X-это B,W,D,F,Q или Т

В поле операндов м.б. ‘?’, 1 или несколько констант, разделенных запятой.

Имя(если есть) определяет адрес 1-ого байта выделенной области. Директива выделяет указанное кол-во байт и указанные операнды пересылаются в эти поля памяти. Если

Операнд ‘?’ то в поле ничего не заносится.

Примеры:

1)если операнд- символическое имя JM1, которое соответствует смещению в сегменте

O3AC1H, то после выполнения M DP JM1 будет выделено 4 байта памяти. Адрес М-значение O3AC1H

2) если надо выделить 100 байт памяти и заполнить 1.

D DB 100 DUP(1)

3)определение 1-мерного массива слов и адрес 1-ого элемента массива- имя MAS и значение его 1: MAS DW 1,7,35,75,84

4)определение 2-ух мерного массива: Arr DB 7,94,11,5

DB 5,0,1,2

DB 5,0,15,12

В директиве определения байта(слова) максимально допустимо 255.

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