АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Порядок выполнения работы и методические указания

Читайте также:
  1. I период работы (сентябрь, октябрь, ноябрь)
  2. I. Задания для самостоятельной работы
  3. I. Задания для самостоятельной работы
  4. I. Задания для самостоятельной работы
  5. I. Задания для самостоятельной работы
  6. I. Порядок наследования восходящих
  7. I. Призвание к наследованию (основания и порядок)
  8. I. СУЩНОСТЬ, ЦЕЛЬ И ЗАДАЧИ КУРСОВОЙ РАБОТЫ
  9. II. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ДЛЯ СТУДЕНТОВ
  10. II. ОБЪЕМ ДИСЦИПЛИНЫ И ВИДЫ УЧЕБНОЙ РАБОТЫ (в часах)
  11. II. Основные направления работы с персоналом
  12. II. Порядок наследования нисходящих, в частности

Практическая работа

РАЗРАБОТКА ПРОГРАММ В ПАКЕТЕ TASM

СЕГМЕНТ ДАННЫХ ПРОГРАММЫ

Цели практической работы:

- научиться создавать программы на языке Assembler в пакете TASM

- изучить структуру программы на языке Assembler;

- научиться задавать (описывать) данные;

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

- разобраться с принципом формирования физического адреса

 

Напомним, что микропроцессоры Intel требуют следования данных в памяти по принципу: младший байт по младшему адресу.

 

Порядок выполнения работы и методические указания

 

1. Создайте свою рабочую папку, например, AsmWork

2. Поместите (скопируйте из папки Т:\TASM\BIN или D:\BP\BIN) в рабочую папку необходимые для получения исполняемого (загрузочного) модуля файлы из пакета TASM:

tasm.exe

tlink.exe

rtm.exe

dpmi16bi.ovl

dpmiload.ovl

dpmimem.dll

и отладчик Turbo Debugger - td.exe

 

3. Введите текст программы-примера (скопируйте) и сохраните в рабочей папке в файле с именем Primer1.asm

 

; Программа выводит на экран сообщение «Начало сегмента данных»

; Точкой с запятой обозначаются комментарии

masm

model small

.stack 100h

.data

stroka db 'Начало сегмента данных','$'

perem1 db 0ffh

perem2 dw 3a7fh

perem3 dd 0f54d567ah

mas db 10 dup (' ')

pole db 5 dup (?)

adr dw perem3

adr_full dd perem3

fin db 'Конец сегмента данных программы $'

.code

start:

; стандартное начало программы

mov ax,@data

mov ds,ax

; вывод строки с именем stroka на экран

mov ah,09h

mov dx,offset stroka

int 21h

; стандартное завершение программы

mov ax,4c00h

int 21h

end start

 

4. Запустите на трансляцию программу командной строкой

tasm /zi primer1.asm,,,

 

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

 

5. Создайте загрузочный модуль, запустив программу tlink командной строкой

tlink /v primer1.obj

 

В результате вы получите загрузочный модуль Primer1.exe

 

6. Запустите программу на выполнение.

Вы увидите сообщение «Начало сегмента данных». Вывод этого сообщения и есть результат работы программы.

 

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

 

8. Теперь следует посмотреть, как выглядит в памяти сегмент данных программы.

Для этого необходимо запустить программу в отладчике Turbo Debugger командной строкой

td primer1.exe

В результате откроется окно Module с исходным текстом программы.

Для того, чтобы просмотреть область памяти, необходимо открыть окно Dump (из меню выбрать режимы View / Dump).

Для просмотра области памяти, содержащей сегмент данных, необходимо настроить окно Dump на адрес начала сегмента данных.

Этот адрес должен содержаться в сегментном регистре DS. Но (!!!) перед началом выполнения программы адрес в DS не соответствует началу сегмента данных. Первые две команды программы производят загрузку физического адреса сегмента данных в регистр DS. Следовательно, для того, чтобы просмотреть содержимое сегмента данных, можно остановить выполнение программы после этих двух команд.

Итак, необходимо перевести отладчик в пошаговый режим работы с помощью клавишF7 или F8

и выполнить только две первые команды (два раза нажать F8). После этого курсор выполнения (в виде треугольника) должен указывать на третью команду.

Теперь можно смотреть дамп памяти (открыть окно Dump).

 

9. В дампе памяти для программы видны данные сегмента в двух представлениях: шестнадцатеричном и символьном. Видно, что по смещению 0000 расположены символы, входящие в строку stroka. После нее следует байт, имеющий в сегменте данных символическое имя perem1, содержимое этого байта offh.

Теперь обратите внимание на то, как размещены в памяти байты, входящие в слово, обозначенное символическим именем perem2. Сначала следует байт со значением 7fh, а затем со значением 3ah. Как видите, в памяти действительно сначала расположен младший байт значения, а затем старший.

 

Оставшуюся часть сегмента данных вы можете теперь проанализировать самостоятельно или с помощью преподавателя.

 

ЗАДАНИЯ

1. Проанализируйте размещение байтов для поля, обозначенного символическим именем perem3.

2. Разберитесь со значением байтов, соответствующих символическим именам adr и adr_full.

3. Проанализируйте остальную часть сегмента данных.

4. Измените программу так, чтобы на экран выводилась строка «Конец сегмента данных».

5. Опишите в сегменте данных переменные со значениями 10, 100, 1000, 10000. Задайте правильный размер символических имен (переменных). Символические имена adr и adr_fullоставьте без изменения.

6. Найдите значения Ваших переменных в дампе сегмента данных.

7. Определите смещение каждой переменной и ее полный физический адрес.

8. Проверьте себя, сравнив полученное значение для perem3 со значением переменной adr, записанным в сегменте данных.

9. Проверьте полный физический адрес переменных, сравнив значение адреса сегмента данных, записанного как значение соответствующего байта переменной adr_full, со значением регистра DS в окне Registry (из меню выбрать режимы View / R

 


Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)