Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


TLINK options, objects, exec, map, libraries



где options – набор опций, objects – множество имен файлов, содержащих результирующие модули, exec – имя файла, в который будет помещена выполняемая программа, map – имя файла, в который будет помещена карта компоновки, libraries – множество имен файлов, содержащих библиотеки результирующих модулей. Опции отделяются пробелами, имена файлов должны быть отделены пробелами или знаками + (плюс).

Порядок выполнения работы.

1. Введите в компьютер исходный ассемблерный текст программы с помощью любого текстового редактора. При использовании встроенного редактора NC:

F4 – редактирование выделенного курсором файла;

SHIFT+F4 – создание нового файла, не имеющегося на диске, нужно ввести имя файла;

ALT+F4 – внешний редактор.

Введите данную программу:

(Номера строк и угловые скобки не набирать! )

Data segment   < 1 >
string db db ‘Ваши фамилия и имя: ……. ‘, 13, 10 ’Ваш возраст: …..’, ’$’ < 2> < 3 >
data ends   < 4>
code segment   < 5>
  assume cs: code, ds: data < 6>
start:     < 7>
  mov ax, data < 8>
  mov ds, ax < 9>
  mov dx, offset string < 10>
  mov ah, 9h < 11>
  int 21h < 12>
  mov al, 0 < 13>
  mov ah, 4ch < 14>
  int 21h < 15>
code ends   < 16>
  end start < 17>

 

2. После выхода из редактирования убедитесь в наличии вашей программы в текущем каталоге – Name.ASM. Для получения.OBJ – модуля, необходимо в командную строку набрать имя транслятора и имя вашего файла – TASM.EXE NAME.ASM.

Быстрый способ:

- выделите на панели файл TASM.EXE, нажмите CTRL+ENTER

- выделите на панели файл NAME.ASM, нажмите CTRL+ENTER

Проверьте информацию в командной строке. Для выполнения трансляции нажмите ENTER.

Если Ассемблер выдаст сообщения об ошибках, то нужно исправить исходную программу с помощью редактора и заново ее оттранслировать.

3. Для получения выполняемой программы, необходимо в командную строку набрать имя компоновщика TLINK.EXE и имя вашего объектного файла NAME.OBJ - TLINK.EXE NAME.OBJ нажмите ENTER.

В текущем каталоге появится файл – NAME.EXE и файл, содержащий таблицу имен и размеров сегментов NAME.MAP.

4. Выделите курсором исполняемый файл и нажмите ENTER. Такое исполнение программы возможно при явных результатах или при полной уверенности в ее безошибочной работе.

 

Задания.

Написать программу.

1. Вывод сообщения на экран с начала строки.

2. Вывод сообщения на экран с середины экрана.

3. Вывод сообщения на экран с начала строки и в рамке, построенной из любых символов псевдографики.

4. Вывод сообщения в рамке на середину экрана.

5. Вывод на экран символа с помощью функции 2h, для этого запишите в сегменте кодов:

 

  mov ah, 2h ; функция вывода символа на экран
  mov dl, ‘A’ ; ASCII
  int 21h ; прерывание DOS

6. Вывод сообщения на экран. Перед выдачей сообщения очистить экран функцией 6 int 10h:

  mov ah, 6h ; функция очистки экрана
  mov al, 0 ; 0 - весь экран
  mov ch, 0 ; номер строки левого верхнего угла
  mov cl, 0 ; номер столбца левого верхнего угла
  mov dh, 24 ; номер строки правого нижнего угла
  mov dl, 79 ; номер столбца правого нижнего угла
  mov bh, 30h ; байт атрибут (на бирюзовом фоне черные символы)
  int 10h ; прерывание BIOS

Вставить эти 8 команд после 9-й строки.

7. Вывод сообщения на экран. Перед выдачей сообщения установить курсор функцией 2 int 10h:

  mov ah, 2h ; функция установки курсора
  mov bh, 0 ; текущая видеостраница
  mov dh, 5 ; номер строки –5
  mov dl, 10 ; номер столбца -10
  int 10h ; прерывание BIOS

Вставить эти команды перед выдачей символа или сообщения.

8. Вывод сообщения на экран. Перед выдачей сообщения нарисовать цветное окно функцией 6 int 10h и установить курсор функцией 2 int 10h.

 

Основная литература –3[12-18]

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

1. Структура программы на языке ассемблера.

2. Этапы выполнения программы.

3. Функции вывода 9h и 2h int 21h.

4. Как создается исходный файл?

5. Расширение исходного файла.

6. Имя транслятора.

7. Что делает транслятор?

8. Какие выходные файлы получаются в результате трансляции? (с какими расширениями)

9. Пример командной строки запуска транслятора.

10.Имя компоновщика.

11.Какие файлы являются входными при компоновке?

12.Какие файлы являются выходными при компоновке?

13.Какое расширение имеет исполняемый файл?

14.Пример командной строки запуска компоновщика.

15.Как можно посмотреть файл листинга?

ЛАБОРАТОРНАЯ РАБОТА 2 - Описание простых типов данных. Отладчик TURBO DEBUGGER (TD).

 

Цель работы: изучить правила описания простых типов данных и основные моменты работы с отладчиком TD.

 

Методические рекомендации по выполнению лабораторной работы

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

Существуют следующие поддерживаемые TASM директивы данных:

 

DB (Define Byte) резервирование памяти для данных размером 1 байт;
DW (Define Word) резервирование памяти для данных размером 2 байта;
DD (Define Double word) резервирование памяти для данных размером 4 байта;
DF (Define Far word) резервирование памяти для данных размером 6 байт;
DP(Define Pointer) резервирование памяти для данных размером 6 байт;
DQ(Define Quarter word) резервирование памяти для данных размером 8 байт;
DT(Define Ten Bytes) резервирование памяти для данных размером 10 байт.
       

 

Директивы данных имеют следующий формат:

[Имя ] мнемоника директивы [выражение] [; комментарий].

При определении переменной без присваивания ей начального значения надо указывать в поле выражения вопросительный знак (? ).Например:

А db? - неинициализированная переменная А (содержимое выделенного участка физической памяти в 1 байт изменяться не будет).

A db 10011011b - инициализированная переменная (транслятор выделяет 1 байт памяти переменной А и записывает указанное значение в память).

Порядок размещения данных в памяти напрямую связан с логикой работы микропроцессора с данными. Микропроцессоры INTEL требуют следования данных в памяти по принципу: младший байт по младшему адресу.

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

Основную часть экрана отладчика занимают одно или несколько окон. В каждый момент времени активным может быть только одно из них. Активизация любого окна производится щелчком мышью в любой видимой точке окна. Управление работой отладчика ведется с помощью системы меню. Имеется два типа таких меню:

- глобальное меню – находится в верхней части экрана и доступно постоянно, вызов клавишей F10;

- локальное меню - для каждого окна отладчика можно вызвать его собственное меню, которое учитывает осбенности этого окна, клавиши ALT-F10.

Из четырех режимов чаще всего вам придется работать в режиме пошагового выполнения программы. В этом режиме вы можете выполнить программу по командам, при этом можно наблюдать результат исполнения каждой команды. Для активизации этого режима нужно нажать клавиши F7 (процедуры также выполняются по шагам) или F8 (процедура отрабатывается как одна команда). В этом режиме полезно использовать окно CPU, которое можно вызвать через меню VIEW|CPU.

Это окно отражает состояние микропроцессора и состоит из 5 подокон:

- окна с исходной программой в дизассемблированном виде. Это та же программа, что и в окне MODULE, но уже в машинном коде. Пошаговую отладку можно производить прямо в этом окне;

- REGISTERS – окна регистров микропроцессора, отражающего текущее состояние регистров;

- окна флагов, которое отражает текущее состояние флагов микропроцессора;

- окна стека STACK, отражающего содержимое памяти, выделенной для стека;

- окна с дампом памяти DUMP, отражающего содержимое области памяти данных.

В окне отладчика под названием MODULE вы увидите исходный текст программы с курсором выполнения (в виде треугольника).

Исходный модуль должен быть оттранслирован с опцией /zi:

Tasm /zi имя_исходного_модуля

Компоновка модуля должна быть осуществлена с опцией / v:

Tlink /v имя_объектного_модуля

Запуск отладчика производить из командной строки с указанием исполняемого модуля программы:

Td имя_исполняемого_модуля.

 

Задания.

1. Наберите исходный текст программы согласно варианту:

 

Data segment  
Mess DB ‘ Директивы данных $’
Pa DB
Pb DW  
Pc DD данные из вариантов заданий
Mas DB  
Pole DB  
Adr DW  
Adr_full DD  
Data ends  
     
code segment  
  assume cs: code, ds: data
start:    
  mov AX, data
  mov DS, AX
  mov DX, offset mess
  mov AH, 9h
  int 21h
  mov AX, 4c00h
  int 21h
code ends  
  end start

 

Получив загрузочный модуль, запустите его в Турбо отладчике (TD). В окне DUMP просмотреть сегмент данных, найти все переменные, заданные в вашем варианте и объяснить местоположение и занимаемый объем этой переменной. Вы ответственны не только за описание переменной в сегменте данных, но и за каждый байт памяти.

2. Набрать в кодовом сегменте команды:

 

mov AL, Pa ; AL =?
mov BX, Pb ; BX =?
mov BL, byte ptr Pb ; BL =?
mov DX, word ptr Pc ; DX =?
mov CX, word ptr Pc+2 ; CX =?
mov DL, byte ptr Pc ; DL =? X
mov DH, byte ptr Pc+1 ; DH =?

 

В отладчике посмотреть результат выполнения этих команд

Варианты заданий:

 

1. Pa db 73H 11. Pa db 0BCH
  Pb dw 0AE21H   Pb dw 903FH
  Pc dd 38EC76A4H   Pc dd 6CAA3E41H
  Mas db 10 dup(1), 2, 3   Mas db 1, 2, 3, 4 dup(4)
  Pole db 5 dup(? )   Pole db 5 dup(? )
  Adr dw Pc   Adr dw Pc
  Adr_full dd Pc   Adr_full dd Pc
        12. Pa db 0FBH
2. Pa db 67H   Pb dw 54ADH
  Pb dw 4AEFH   Pc dd 0E04365FAH
  Pc dd 12DC4567H   Mas db 3 dup(0), 4 dup(1), 2, 3
  Mas db 5, 6, 7, 8   Pole db 5 dup(? )
  Pole db 6 dup(0)   Adr dw Pc
  Adr dw Pc   Adr_full dd Pc
  Adr_full dd Pc        
        13. Pa db 11H
3. Pa db 4DH   Pb dw 4D2DH
  Pb dw 0ED56H   Pc dd 98ADF156H
  Pc dd 32AF8DD7H   Mas db 5 dup(0), 1, 2, 3
  Mas db 4, 3, 5, 4 dup(0)   Pole db 3 dup(? )
  Pole db 6 dup(? )   Adr dw Pc
  Adr dw Pc   Adr_full dd Pc
  Adr_full dd Pc        
        14. Pa db 10H
4. Pa db 5DH   Pb dw 1A2DH
  Pb dw 0A1A3H   Pc dd 55AEF2C8H
  Pc dd 3 dup(4), 5, 6   Mas db 1, 2, 3, 4, 5, 6
  Mas db 4, 3, 5, 4 dup(0)   Pole db 5 dup(0)
  Pole db 5 dup(? )   Adr dw Pc
  Adr dw Pc   Adr_full dd Pc
  Adr_full dd Pc        
        15. Pa db 89H
5. Pa db 62h   Pb dw 91ADH
  Pb dw 7ED1H   Pc dd 0AFD43E55H
  Pc dd 0EE45DA31H   Mas db 5, 6, 3 dup(9)
  Mas db 1, 2, 6 dup(3), 0   Pole db 4 dup(? )
  Pole db 5 dup(0)   Adr dw Pc
  Adr dw Pc   Adr_full dd Pc
  Adr_full dd Pc        
               
6. Pa db 0FFH        
  Pb dw 4ADEH        
  Pc dd 0C23891F5H        
  Mas db 4 dup(0), 1, 2, 3        
  Pole db 3 dup(‘ ‘)        
  Adr dw Pc        
  Adr_full dd Pc        
               
7. Pa db 0AEH        
  Pb dw 63BCH        
  Pc dd 63BCDEF3H        
  Mas db 9, 8, 3 dup(0)        
  Pole db 5 dup(“ “)        
  Adr dw Pc        
  Adr_full dd Pc        
               
8. Pa db 5BH        
  Pb dw 0BA21H        
  Pc dd 0FA4A32BCH        
  Mas db 4, 5, 6, 5 dup(0)        
  Pole db 6 dup(? )        
  Adr dw Pc        
  Adr_full dd Pc        
               
9. Pa db 4AH        
  Pb dw 0DEFCH        
  Pc dd 81ADFF06H        
  Mas db 5 dup(1), 2, 3, 3 dup(4)        
  Pole db 6 dup(“ “)        
  Adr dw Pc        
  Adr_full dd Pc        
               
10. Pa db 7FH        
  Pb dw 0ACDEH        
  Pc dd 10B0A488H        
  Mas db 3 dup(0), 1, 2, 3, 4 dup(0)        
  Pole db 5 dup(32)        
  Adr dw Pc        
  Adr_full dd Pc        

 

Основная литература –3[690-691]

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


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-04-11; Просмотров: 563; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.028 с.)
Главная | Случайная страница | Обратная связь