Цель работы: изучение методики разработки программ на ассемблере с использованием пакета TASM, приобретение практических навыков работы с транслятором, компоновщиком и отладчиком
Теоретические сведения
Наиболее известными пакетами ассемблера для микропроцессоров фирмы Intel являются:
• «Макроассемблер» MASM фирмы Microsoft.
• Turbo Assembler TASM фирмы Borland.
У этих пакетов много общего. Пакет макроассемблера фирмы Microsoft (MASM) получил свое название потому, что он позволяет программисту задавать макроопределения (или макросы), представляющие собой именованные группы команд. Они обладают тем свойством, что их можно было вставлять в программу в любом месте, указав только имя группы в месте вставки. Пакет Turbo Assembler (TASM) интересен тем, что имеет два режима работы. Один из этих режимов называется MASM, поддерживает все основные возможности макроассемблера MASM. Другой режим называется IDEAL, предоставляет более удобный синтаксис написания программ, более эффективное использование памяти при трансляции программы и другие новшества, приближающие компилятор ассемблера к компиляторам языков высокого уровня.
Порядок выполнения работы
1. Наберите в одном из текстовых редакторов MS-DOS (Edit, Far и др.) приведенную ниже программу на языке Ассемблер.
;———Prg_2.asm———————————-
;Программа преобразования двузначного шестнадцатеричного числа
;в символьном виде в двоичное представление.
;Вход: исходное шестнадцатеричное число из двух цифр,
;вводится с клавиатуры.
;Выход: результат преобразования должен
;быть в регистре dl.
;——————————————————
data segment para public ‘data’ ;сегмент данных
message db ‘Введите две шестнадцатеричные цифры,$’
data ends
stk segment stack
db 256 dup (‘?’) ;сегмент стека
stk ends
code segment para public ‘code’ ;начало сегмента кода
main proc ;начало процедуры main
assume cs:code,ds:data,ss:stk
mov ax,data ;адрес сегмента данных в регистр ax
mov ds,ax ;ax в ds
mov ah,9
mov dx,offset message
int 21h
xor ax,ax ;очистить регистр ax
mov ah,1h ;1h в регистр ah
int 21h ;генерация прерывания с номером 21h
mov dl,al ;содержимое регистра al в регистр dl
M2: ;определение метки M2
add dl,al ;сложение: (dl)=(dl)+(al)
sub dl,30h ;вычитание: (dl)=(dl)-30h
cmp dl,9h ;сравнить (dl) с 9h
jle M1 ;перейти на метку M1 если dl
sub dl,7h ;вычитание: (dl)=(dl)-7h
M1: ;определение метки M1
mov cl,4h ;пересылка 4h в регистр cl
shl dl,cl ;сдвиг содержимого dl на 4 разряда влево
int 21h ;вызов прерывания с номером 21h
sub al,30h ;вычитание: (dl)=(dl)-30h
cmp al,9h ;сравнить (al) с 9h 28
jle M2 ;перейти на метку M2 если al
sub al,7h ;вычитание: (al)=(al)-7h
mov ax,4c00h ;пересылка 4c00h в регистр ax
int 21h ;вызов прерывания с номером 21h
main endp ;конец процедуры main
code ends ;конец сегмента кода
end main ;конец программы с точкой входа main
2. Сохраните программу на диске в файле Prg_2.asm в директории Work. В этой директории должны находиться файлы tasm.exe, tlink.exe, rtm.exe и td.exe из пакета TASM.
3. Осуществите трансляцию программы следующей командой MS-DOS
tasm.exe /zi prg_2.asm ,,,
Если в исходном тексте программы были синтаксические ошибки, то программа выдаст соответствующие сообщения. Пользуясь этими сообщениями, исправьте ошибки в тексте программы и повторите трансляцию. Эти операции повторяйте до тех пор, пока трансляция будет выполнена без ошибок.
4. Запустите процесс компоновки объектного файла:
tlink.exe /v prg_2.obj
5. Загрузите программу в отладчик командой:
td prg_1.exe
Если все было сделано правильно, то в отладчике откроется окно Module с исходным текстом программы.
6. Запустите программу в отладчике TD в режиме выполнения по шагам, начиная с первой команды до последней. Запишите в отчет содержимое регистров микропроцессора после выполнения первых N команд программы. Число N определяется по выражению:
N= n + 5,
где n – номер используемого компьютера.
7. Повторите операции пунктов 2-6, не используя опции /zi и /v притрансляции и компоновке программы Prg_2.asm. Сделайте вывод о том, как изменился процесс отладки. Вывод запишите в отчет по работе.
8. Установите в программе две точки прерывания на месте i-той и j-ой команды. Номера команд с точками прерывания определяйте по выражениям
i=n+2;
j=n+10,
где n – номер используемого компьютера.
9. Запустите программу на выполнение в режиме безусловного выполнения, записывая содержимое регистров микропроцессора в каждой точке прерывания.
10. Распечатайте и подшейте в отчет файл с листингом программы
Prg_2.lst и файл протокола Prg_2.log.