Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КНИГА_АСМ ассемблер.doc
Скачиваний:
61
Добавлен:
19.11.2019
Размер:
732.16 Кб
Скачать

2.11 Трансляция ассемблерной программы

Мы написали ассемблерную программу, которую назвали, например, temp.asm. Теперь эту программу нужно оттранслировать с помощью tasm.exe и получить из нее файл temp.obj. Затем, с помощью программы tlink.exe, файл temp.obj преобразуется в исполняемый файл temp.exe (или temp.com).

Для того, чтобы получить файл temp.obj надо набрать в командной строке:

tasm.exe temp. asm (можно и проще: tasm temp)

и нажать ENTER. Конечно при этом tasm.exe и temp.asm должны быть, допустим, в той директории, где мы сейчас работаем (доступны компьютеру). Транслятор может и не создать файл temp.obj, если он найдет в программе ошибки.

Далее надо получить исполняемый файл. Для создания EXE программы надо набрать в командной строке:

tlink.exe temp.obj (или tlink temp)

а для COM программы:

tlink.exe temp.obj /t (или tlink temp /t).

Вообще, очень удобно создать bat – файл, поскольку при отладке программу постоянно приходится транслировать заново. Работа tlink.exe также не всегда завершается созданием исполняемого файла. Это бывает, если tlink.exe нашел в программе ошибки.

Приведем пример трансляции.

code segment ; (строка 1)

assume cs:code, ds:code ; (строка 2)

; пропущена директива org 100h

start: ; (строка 4)

jmp begin ; (строка 5)

mad db 100, 99, 98, ; (строка 7) лишняя запятая после 98

db 97, 96 ; (строка 8)

nic dw 380 ; (строка 10)

begin ; (строка 12) пропущено двоеточие после begin

mov ah. 7 ; (строка 14) вместо точки нужна запятая

mov al, nic ; (строка 15) не согласована разрядность регистра и операнда

int21h ; (строка 16) пропущен пробел

mov si, offset madd ; (строка 17) неправильно написано имя массива

mov [si+3], 5 ; (строка 18) не определен формат записываемой информации

mov ah, 4ch

int 21h

code ends

end start

Мы написали эту программу (для COM формата) и назвали ее temp.asm. Эта программа не имеет никакого смысла, так как не выполняет никакой полезной и даже здравой работы. Зато в программе намеренно сделаны ошибки, каждая из которых описана в той же строке, где она находится.

Теперь мы создали файл temp.bat:

tasm temp

tlink temp /t

и запустили его. Вот что мы получим:

Assembling file: temp.ASM

**Error** temp.ASM(5) Undefined symbol: BEGIN

*Warning* temp.ASM(7) Missing operand - trailing ? assumed

**Error** temp.ASM(12) Illegal instruction

**Error** temp.ASM(14) Too few operands to instruction

**Error** temp.ASM(15) Operand types do not match

**Error** temp.ASM(16) Illegal instruction

**Error** temp.ASM(17) Undefined symbol: MADD

*Warning* temp.ASM(18) Argument needs type override

Error messages: 6

Warning messages: 2