Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АААААААААААА.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
212.22 Кб
Скачать

Практическое задание №7 Начало работы на языке ассемблера Цель работы:

  • ознакомление с общими принципами построения программ на языке ассемблера;

  • обучение работе с программами Tasm.exe, Tlink.exe;

  • создание *.EXE файла первой программы

  • просмотр работы программы в Турбоотладчике (Td.exe);

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

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

Язык ассемблера — это символическое представление машинного языка. Все процессы, происходящие на вашем компьютере, так или иначе, команды (инструкции) машинного языка. Отсюда понятно, что, несмотря на общее название, язык ассемблера для каждого типа компьютера свой. По-настоящему решить проблемы, связанные с аппаратурой невозможно без знания языка ассемблера.

Для первоначального ознакомления с ассемблером традиционно используется в качестве примера программа, выводящая на экран сообщение "Hello!". В рамки данной работы не входит доскональное понимание структуры программы на языке ассемблера. 

В отличие от других языков программирования, язык ассемблера не имеет своей среды написания исходного кода. В качестве редактора можно использовать любой редактор, формирующий файлы в коде ASCII. Наиболее простой способ создания текстового файла это в оболочках DN или FarManager.

Примечание: если вы используете редактор Word, сохраняйте файлы под фильтром "Текст DOS". 

Задание:

  1. Откройте FarManager.

  2. Нажатие комбинацию клавиши Shift-F4, в появившемся окне запроса необходимо ввести имя нового файла (например, Lab7.asm) и после нажатия Enter начать писать программу.

  3. Введите программу:

.MODEL SMALL .STACK 100h .DATA

Message DB 'Hello!',13,10,'$' .CODE START: mov ax,@Data  mov ds,ax  mov ah,9h  mov dx,OFFSET Message  int 21h  mov ah,4ch  int 21h  END START

  1. После того, как вы введете эту программу, сохраните ее на диске желательно в каталоге C:\. (ее можно сохранить где угодно, но необходимо, чтобы файлы tasm.exe, tlink.exe были в той же папке, иначе придется прописывать полный путь до файлов при дальнейших действиях).

  2. Теперь прежде чем запустить программу надо произвести ассемблирование (трансляцию) и компоновку.

    1. Для ассемблирования файла Lab6.asm наберите команду: TASM Lab7и нажмите клавишу ENTER.

Если вы не задали другое имя, файл Lab7.asm будет ассемблирован в файл Lab7.obj. (расширение имени файла можно не вводить, ассемблер подразумевает в этом случае, что файл имеет расширение .asm) .

На экране вы увидите следующее:

Turbo Assembler Version 4.1 Copyright (C) 1988, 1996 by Borland International Inc (1) Assembling file:Lab7.asm (2)

Error messages: None (3) Warning messages: None (4) Remaining memory: 389K (5)

1-Турбоассемблер, версия 4.1;

Авторские права фирмы Borland, 1988, 1996 гг.;

2 – ассемблирован файлLab7.asm;

3 - сообщенияобошибках: нет;

4 - предупреждающиесообщения: нет;

5 - остаетсяпамяти: 389Кb

При получении сообщений об ошибках проверьте исходный код (текст) программы и убедитесь, что он выглядит точно так, как исходный код в нашем примере, а затем снова ассемблируйте программу.

5.2) Что бы произвести компоновку введите в командную строку:TLINK Lab7.

Здесь опять не требуется вводить расширение имени файла. Когда компоновка завершится, компоновщик автоматически присвоит файлу с расширением .exe. При успешной компоновке на экране появляется сообщение: Turbo Linker Version 3.0 Copyright (c) 1987, 1990 byby Borland International Inc.

  1. Запустите программу. Для этого перейдите в каталог 'C:\Tasm\' наберите в командной строке Lab7 и нажмите ENTER. На экран выведется сообщение:Hello!

Задание 2:

  1. Произведите трансляцию вашу исходную программу с ключом /L . Просмотрите созданный файл Lab7.lst. Протранслировать программу с ключом /LA и снова просмотреть содержимое файла Lab1.lst. Занести в отчет основные отличия. 

  2. Загрузить отладчик: Td, командой Td Lab7(Если файл Lab7 находится в том же каталоге, что и Турбоотладчик, иначе следует указать полный путь до него)

В появившемся окне Турбоотладчик сообщит о том, что загружена программа. Нажмите Enter, затем F5 и окно Турбоотладчика развернется во весь экран. 

На экране вы увидите код своей программы в немного измененном варианте. Нажимая клавиши F8 или F7, вы будете пошагово выполнять свою программу, при этом следите за содержанием окон Турбоотладчика.

На основе пройденных лекций и дополнительной литературы изучите самостоятельно Турбоотладчик, обратите особое внимание на окна CPU, DUMP, WATCHES, а также на окна флагов и регистров. С помощью клавиши F10 перейти в режим меню, выбрать позицию FILE, команду OPEN, установить указатель на нужный exe-файл и загрузить его.

  1. Клавишей F10 перейти в режим меню, выбрать позицию VIEW, открыть окно DUMP, затем CPU (при недостаточном объеме памяти закрыть окно с текстом исходного модуля).

Примечание. Закрыть текущее окно можно по Alt+F3.

4. Несколько раз нажать клавишу F6, посмотреть, как циклически меняется содержимое экрана (окна CPU,DUMP,CPU,...).

  1. В положении CPU клавишей F5 увеличить размеры окна, несколько раз нажать клавишу Tab, посмотреть, как меняются активные подокна окна CPU, каковы их локальные меню, вызываемые по Alt+F10 и сворачиваемые по Esc, вернуться в подокно кода (команд).

  2. Нажимая клавиши F7 или F8, выполнить по шагам команды, осуществляющие инициализацию сегментных регистров ds и es.

  3. Просмотреть содержимое сегментов, найти там свои данные.

  4. Записать в отчет значения адресов своих данных.

Контрольные вопросы.

  1. Из чего состоит процесс ассемблирования программы?

  2. Чем отличается трансляция от компоновки?

  3. Можно в процессе ассемблирования обойтись без ключей?

  4. Объясните назначение каждого из перечисленных файлов, получаемых при создании исполняемой программы на языке ассемблер *.asm, *.lst, *.map, *.exe, *.com. 

  5. Что такое "Турбоотладчик", расскажите основы пользования им?

  6. В чем особенность программы на языке ассемблера?

  7. Есть у ассемблера своя собственная среда программирования?