Общий формат команды Ассемблера

Общий формат команды Ассемблера

[Метка:] Код_операции [Операнд1 [,Операнд2] ] [;Комментарий ]

Адреса памяти в командах м.б. записаны так:

· А

· А[М]

· А[М1] [М2]

Где А – адрес, М – регистр ВХ, ВР, M2 - регистр SI или DI. В случае 2 и 3 компонента А может отсутствовать (т.е. А=0).

Примеры:

Mov Ax, Si

Mov Bh, 5

Mov Di, Size X

Mov X, Ah

Mov X[Bx][Di], 5

Mov [Bx], Cl

Mov Ah, 5

Mov Ax, 5

Mov [Bx], 300

Mov Ds, Ax

Mov Cx, Bh

Mov Dl, 300

Mov [Bx], 5 - Не Определён Тип Операнда

Mov Byte Ptr [Bx], 5

Mov Word Ptr [Bx], 5

X Dw 999

Mov Ah, X

Mov Ah, Byte Ptr X

Mov Ax, 80h

Mov Ax, -128 ;0ff80h

Mov Ax, 128 ;0080h

Mov Ax, 80h ;0080h

Структура простейшего программного модуля. Сегментирование

Модуль программы на языке ассемблера состоит из сегментов следующих типов:

- сегмент кода

- сегмент данных

- сегмент стека

- расширенный сегмент

Assume CS: Code, DS: Data

Code SEGMENT

org 100h

Start: … ;точка входа в программу

Code ENDS

Data Segment

….

Data ENDS

END Start

Dt1 Segment

A Db 0

B Dw ?

Dt1 Ends

;

Dt2 Segment

C Db ‘Hallo’

Dt2 Ends

;

Code Segment

Assume Cs:Code, Ds:Dt1, Es:Dt2

Beg: Mov Ax, Dt2

Mov Ds,Ax

Mov Bh, C

Code Ends

End Beg

В простейшей программе может быть всего один сегмент - кодовый, тогда необходимо в директиве Assume указать его использование и для адресации данных, а также загрузить в регистр ds его фактический адрес.

Assume CS: Code, DS: Code

Code SEGMENT

org 100h

Start: mov ax,cs

mov ds,ax

Функции BIOS

Функции BIOS – это функции, вызываемые по команде INT с номерами в диапазоне от 0 до 20h для обработки различных событий в ЭВМ. Детализация вызываемого сервиса обычно вводится в регистре АН.

Int 10H: Видео сервис

Ниже приведен перечень функций видеосервиса, предоставляемых подпрограммами BIOS. Номер функции определяется значением регистра ah при вызове int 10.

  Функция
00h Установить видеорежим
01h Установить размер и форму курсора
02h Установить позицию курсора
03h Читать позицию курсора
04h Читать световое перо
05h Выбрать активную страницу дисплея
06h Скроллинг окна вверх (или очистка его)
07h Скроллинг окна вниз (или очистка его)
08h Читать символ/атрибут
09h Вывести символ/атрибут
0ah Вывести символ
0bh Выбрать палитру/цвет рамки
0ch Вывести графическую точку
0dh Читать графическую точку
0fh Вывести символ в режиме TTY
10h Читать видео режим
   

Здесь детализированы функции INT 10H стандартного видеосервиса ROM-BIOS.

AH = 00H Установка видеорежима.

Вход: AL = видеорежим

AL Тип Формат Цветов
текст 40 х 25 16/8
текст 40 х 25 16/8
текст 80 х 25 16/8
текст 80 х 25 16/8
графика 320 х 200
графика 320 х 200
графика 640 х 200
текст 80 х 25
0dh графика 320 х 200
0eh графика 640 х 200
0fh графика 640 х 350


Функции OS

Функции OS - это функции, выполняемые при вызове прерывания int 21h с обозначением функции в регистре AH и подфункции (если это необходимо) в регистре AL.

Ввод-вывод текстовых данных

Функция 01h: Ввод с клавиатуры

Вход AH = 01h

Выход AL = символ, полученный из устройства стандартного ввода

Описание: Считывает (ожидает) символ со стандартного устройства ввода. Отображает этот символ на стандартное устройство вывода (эхо). При распознавании Ctrl-Break выполняется int 23h.

Замечание: Ввод расширенных клавиш ASCII (F1-F12, PgUp, курсор и т. п.) требует двух обращений к этой функции. Первый вызов возвращает AL = 0. Второй вызов возвращает в AL расширенный код ASCII.

Функция 02h: Вывод на дисплей

Вход AH = 02h

DL = символ, выводимый на устройство стандартного вывода

Описание: Посылает символ из DL на устройство стандартного вывода. Обрабатывает символ Backspace (ASCII 8), перемещая курсор влево на одну позицию и оставляя его в новой позиции. При обнаружении Ctrl-Break выполняется int 23h.

Функция 09h: Вывести строку на дисплей

Вход AH = 09h

DS:DX = адрес строки, заканчивающейся символом '$' (ASCII 24h)

Описание: Строка, исключая завершающий ее символ '$', посылается на устройство стандартного вывода. Символы Backspace обрабатываются как в функции 02h. Обычно, чтобы перейти на новую строку, включают в текст пару CR/LF (ASCII 13h и ASCII 0ah).

Завершение программы

Функция 4dh: Дать код возврата программы (WAIT)

Вход AH = 4dh

Выход AL = код возврата последнего завершившегося процесса

AH = 0 - нормальное завершение

АН = 1 - завершение через Ctrl-Break int 23h

АН = 2 - завершение по критической ошибке устройства int 24h

АН = 3 - завершение через функцию 31h KEEP

Описание: Возвращает код возврата последнего из завершившихся процессов. Эта функция возвращает правильную информацию только однажды для каждого завершившегося процесса.

Работа с файлами

Лабораторная работа 1

Лабораторная работа 2

Общий формат команды Ассемблера

[Метка:] Код_операции [Операнд1 [,Операнд2] ] [;Комментарий ]

Адреса памяти в командах м.б. записаны так:

· А

· А[М]

· А[М1] [М2]

Где А – адрес, М – регистр ВХ, ВР, M2 - регистр SI или DI. В случае 2 и 3 компонента А может отсутствовать (т.е. А=0).

Примеры:

Mov Ax, Si

Mov Bh, 5

Mov Di, Size X

Mov X, Ah

Mov X[Bx][Di], 5

Mov [Bx], Cl

Mov Ah, 5

Mov Ax, 5

Mov [Bx], 300

Mov Ds, Ax

Mov Cx, Bh

Mov Dl, 300

Mov [Bx], 5 - Не Определён Тип Операнда

Mov Byte Ptr [Bx], 5

Mov Word Ptr [Bx], 5

X Dw 999

Mov Ah, X

Mov Ah, Byte Ptr X

Mov Ax, 80h

Mov Ax, -128 ;0ff80h

Mov Ax, 128 ;0080h

Mov Ax, 80h ;0080h


Наши рекомендации