2.2. Трансляция и сборка с помощью TASMB.COM

Программа 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) Затем находятся подпрограммы.

Подпись: TURBO ASSEMBLER	January 9,2002	04:52:43 p.m.	Page 1
add
	1		title add
	2	8000 EB 03	begin:	jmp short main
	3	8002 64	a   db 64h
	4	8003 40	b   db 40h
	5	8004 16	c   db 16h
	6	8005	main proc near
	7	8005 E8 800A	call padd
	8	8008 CD 20	int 20h
	9	800A	main endp
	10	800A	padd proc
	11	800A A0 8002	mov al, a
	12	800D 8A 1E 8003	mov bl, b
	13	8011 00 D8	add al,bl
	14	8013 C3	ret
	15	8014	padd endp
	16		;end   begin
	17

17 Source Line(s), No Assembly Error(s).
20 Object Byte(s), 54662 Byte(s) Free.
Пример 3. Напишем текст программы, состоящей из двух подпрограмм. Установив режим работы компилятора, в котором создается листинг, получаем после ассемблирования текста листинг, представленный на рис.2.1. В главной программе main вызывается подпрограмма padd, с помощью оператора CALL.

Рис. 2.1. Пример программы, состоящей из подпрограмм

Как видно из этого примера, главная программа и подпрограммы заключены между строками:

имя proc near

имя endp

В нашем случае имя имеет значение «main» и «padd». Директива proc обозначает подпрограмму, а слово near означает, что данная подпрограмма будет находиться в том же сегменте, что и вызывающая. На её адресацию выделяется два байта.