Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБ_РАБ АРХ_ЭВМ.DOC
Скачиваний:
47
Добавлен:
15.04.2015
Размер:
627 Кб
Скачать
☆

В таблице 3.1 приведены примеры записи директив ассемблера tasm.

Таблица 3.1. Примеры записи директив ассемблера tasm

Директива

П р и м е р з а п и с и

ORG EQU DB DW PROC ENDP .CODE .DATA .STACK .MODEL END

ALFA K X BUF TABL TUR TUR .STACK .MODEL

ORG EQU DB DW DW DB PROC ENDP 100H tiny END

100H 13H 60H 160H 8 DUP(?) ‘Диск’

;Программа начинается с адреса 100H;Константе с именемALFA;присвоено значение13H;Для переменной с именемK;резервируется ячейка (байт) памяти, ;в которую заносится 60H;Для переменной с именем X;резервируются 2 ячейки (слово) ;памяти, в которые заносятся 60H;и 01H;Для переменнойBUFрезервируется ;8 слов памяти ;Для переменнойTABL;резервируются ячейки памяти, в ;которые заносится последователь-ностьASCII-символов «Диск» ;Начало ;и конец процедуры с именемTUR;Упрощенные сегментные директивы ;сегмента кодов, ;сегмента данных, ;сегмента стека размером 100Hбайт ;Модель памяти размером 64Kбайт ;Конец текста программы

3.3. Примеры программ на языке ассемблера мп х86

для генерирования исполняемых модулей типа .СОМ

Далее приведены примеры программ на языке ассемблера микропроцессора Х86 для генерирования на их основе исполняемых модулей с расширением .СОМ.

В приведенных программах директива .MODEL tiny задает модель памяти как один сегмент размером 64 Кбайт. Для задания сегмента кодов используется упрощенная сегментная директива .CODE. При генерации исполняемого модуля типа .СОМ все данные в памяти задаются в кодовом сегменте. Для указания начального адреса данных используется директива ORG. Так, директива ORG 500h размещает данные с адреса 500h. Операнды-байты или слова задаются после ORG с помощью директив DB или DW.

Директива END указывает на конец программы.

Пример 3.1

;Программа вычисления выражения M=K+N–R +120

;для исполняемого модуля типа .COM.

;Операнды-слова k, r, m размещены в памяти с адреса 500h

;n – в регистре DX

.MODEL

.CODE

tiny

;Программа и данные размещены

;в сегменте кодов размером 64 Kбайт

;Начало кодового сегмента

;Размещение данных с адреса 500h

k

r

m

org

dw

dw

dw

500h

+60h

-10h

0

;Команды программы с адреса 100h

org

begin:

sub

add

add

mov

mov

int

END

100h

dx,r

dx,k

dx,120h

m,dx

ah,4ch

21h

begin

;Метка начала программы

;Вычисление

;выражения

;m=(n-r)+k+120

;Загрузить результат m в память

;Функция DOS выхода

;из программы

;Конец прогаммы

Пример 3.2

;Программа вычисления выражения M=K+N–R+120 для случая ;базовой адресации данных, когда K, R, N, M размещены в памяти ;с адреса 500h

.MODEL

.CODE

tiny

;Программа и данные размещены в

;сегменте кодов размером 64 Kбайт

;Начало кодового сегмента

;Размещение данных с адреса 500h

k

r

n

m

org

dw

dw

dw

dw

500h

+60h

-10h

+30h

0

;Команды программы с адреса 100h

org

begin:

mov

mov

sub

add

add

mov

mov

int

END

100h

bx,offset k

ax,[bx]

ax,[bx+2]

ax,[bx+4]

ax,120h

[bx+6],ax

ah,4ch

21h

begin

;Метка начала программы

;Загрузить в BX адрес операнда k

;Загрузить в AX операнд k

;Получить в AX разность k–r

;AXAX + n

;AXAX + 120h

;Загрузить результат m в память

;Функция DOS выхода

;из программы

;Конец программы

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