Программа TASMB.COM позволяет создавать программы, состоящие из одного сегмента. После ввода команды
TASMB
на экране появляется меню. В зависимости от выбранной пользователем опции производится редактирование текста программы, компиляция и сборка (компиляцией и сборкой называется подготовка программы для загрузки и выполнения), запуск программы в памяти, чтение файла, содержащего текст программы, сохранение файла, установка режима работы компилятора.
Меню содержит следующие опции:
Assem Source Edit Source Get Source Write Source
Run Codefile Hexdump File Kill File List File
Symbol List Xerfer List Directory New Drive-Directory
Подчеркнуты горячие клавиши: для того, чтобы выбрать, например, команду чтения файла, надо нажать клавишу G. Если текст уже набран, то читаем файл с помощью этой команды. Затем нажимаем клавишу A. Текст преобразуется в программу, имеющую расширение COM. Затем надо выйти в операционную систему, нажав клавишу Q. После этого можно запустить на выполнение созданную программу с расширением COM.
Пример 1. Напишем программу, выводящую на экран сообщение «Hello, world». С этой целью производятся следующие действия:
1) Запускаем программу tasmb.com.
2) Выбираем опцию Edit Source, появляется окно редактирования.
3) Набираем текст:
mov dx, OFFSET mes
mov ah, 9
int 21h
mov al, 0
mov ah, 4ch
int 21h
mes db ‘Hello, world’, 13, 10, ‘$’
4) Выходим из редактора, нажав клавишу <Esc>.
5) Вводим команду Write Source и на вопрос
Write Source File:
вводим имя текстового файла, имеющего расширение ASM и содержащего текст, набранный в режиме редактирования, например Hello.asm.
6) Вводим команду Asm Options и выбираем режим, при котором компилятор будет создавать листинг программы – текстовый файл, содержащий команды, их машинные коды и относительные адреса. Этот режим выбирается нажатием клавиши <F9>.
7) Возвращаемся в главное меню программы TASMB.COM и вводим команду Assembler Source. На вопрос, использовать ли для листинга файл с расширением ASM отвечаем No и вводим имя файла с расширением LST.
8) Можно посмотреть файл листинга, введя команду Get и на вопрос об имени файла, введя имя файла с расширением LST. Затем посмотреть прочитанный файл с помощью команды Edit. Выйти из редактора, нажав клавишу <Esc>.
9) Выйти из программы TASMB с помощью команды Quit.
Выполнить программу, имеющую указанное при сохранении имя (и расширение COM). Согласно 5, этой программой будет Hello.com.
6)
Пример 2. Программа TASMB.COM позволяет создавать программы, которые выполняются без выхода в MS DOS. Для этого в главном меню надо выбрать команду Asm Options и установить указанный режим, нажав клавишу <F5>.
Рассмотрим программу сложения двух чисел. Для её создания после загрузки программы TASMB.COM выполняются следующие действия:
1) Выбирает опцию Edit Source.
2) Набираем текст
mov ax, 10h ; первое слагаемое
mov bx, 40h ; второе слагаемое
add ax, bx ; ax=ax+bx
int 20h ; выход
3) Выходим из редактора, нажав клавишу <Esc>.
4) Нажимаем клавишу Write Source и на вопрос
Write Source File:
отвечаем, например add. В результате набранный в редакторе текст будет сохранен под именем add.asm.
5) Вводим команду Asm Options (нажав клавишу O) и выбираем режим Memory, нажав клавишу <F5>.
6) Вводим команду Assembler Source .
7) Если нет ошибок, то вводим команду Run Codefile.
8) На сообщение
Press <Return> to Run
нажимаем клавишу <Enter>. На экран будет выведено 16-ричное содержимое регистров, полученное в результате работы программы. В частности AX=0050, BX=0040 и т.д.
Список команд главного меню:
A – компиляция;
E – редактирование;
G – чтение файла из внешней памяти;
W – сохранение файла;
R – запуск программы на выполнение;
H – дамп памяти в 16-ричных кодах и кодах ASCII;
K – уничтожение файла;
L – вывод текста программы на экран;
S – таблица символических имен;
X – таблица перекрестных ссылок;
D – вывод текущего директория;
N – переход к новому директорию;
O – установить режим работы компилятора;
V – посмотреть значение переменной;
Q – выход.
Здесь под символическими именами подразумеваются переменные, участвующие в программе пользователя. В таблице перекрестных ссылок указываются имена и номера строк, в которых встречаются эти имена.
Компилятор TASMB.COM позволяет создавать загрузочные модули, состоящие из нескольких подпрограмм. Все подпрограммы и данные находятся в одном сегменте. Такой загрузочный модуль имеет обычно следующую структуру:
1) В первой строке ставится (необязательная) директива TITLE.
Во второй строке ставится команда безусловного перехода в главную подпрограмму.
1)
2) В следующих строках определяются данные – переменные и константы, участвующие в программе.
3) Далее расположена главная подпрограмма, вызывающая подпрограммы.
4) Затем находятся подпрограммы.
Пример 3. Напишем текст программы, состоящей из двух подпрограмм. Установив режим работы компилятора, в котором создается листинг, получаем после ассемблирования текста листинг, представленный на рис.2.1. В главной программе main вызывается подпрограмма padd, с помощью оператора CALL.
Рис. 2.1. Пример программы, состоящей из подпрограмм
Как видно из этого примера, главная программа и подпрограммы заключены между строками:
имя proc near
…
имя endp
В нашем случае имя имеет значение «main» и «padd». Директива proc обозначает подпрограмму, а слово near означает, что данная подпрограмма будет находиться в том же сегменте, что и вызывающая. На её адресацию выделяется два байта.