Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Топ:
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Интересное:
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Дисциплины:
2017-11-17 | 303 |
5.00
из
|
Заказать работу |
|
|
Современные трансляторы допускают использование директив, упрощающих оформление программы. Так, для создания простой модели памяти типа .exe, содержащей один сегмент кода, достаточно указать имя модели small в директиве .model.
Основные типы возможных моделей памяти приведены в таблице 1.
Название | Код | Данные | Определение | Описание |
tiny | near | near | cs = dgroup ds =ss = dgroup | Код, данные и стек содержатся в одном сегменте 64 Кбайт. Используется только для COM – программ. |
small | near | near | cs = _text ds =ss = dgroup | Код и данные содержатся в различных сегментах размером до 64 Кбайт. |
medium | far | near | cs = <module>_text ds =ss = dgroup | Неограниченный размер кода. Под данные отводится один сегмент 64 Кбайт. |
compact | near | far | cs = _text ds =ss = dgroup | Размер кода ограничен одним сегментом 64 Кбайт. Размер данных не ограничен. |
large | far | far | cs = <module>_text ds =ss = dgroup | Размер кода и данных не ограничен. Размер переменной не может превышать 64 Кбайт. |
huge | far | far | cs = <module>_text ds =ss = dgroup | Размер кода и данных не ограничен. Аналогична большой модели памяти (введена для совместимости с языками высокого уровня). |
Таблица 1
Оформление программы типа .exe с использованием модели памяти:
title lab1
.model small; модель памяти
.stack 100h; подстек выделяется 256 ячеек памяти
.data; начало сегмента данных
a dw 10
b dw 20
c dw 30
d dw 30
y dw?;результат (2 байта)
ost dw?;остаток от деления
.code; начало сегмента кода
Lab1:
mov ax,dgroup; загрузка регистра
mov ds,ax; сегмента данных
mov ax,a; (a)
add ax,b; (a+b)
imul c; (a+b)*c
idiv d;(a+b)*c
mov y,ax; запись результата в память
mov ost,dx; запись остатка в память
Ret
mov ah,4ch; завершение выполнения программы
Int 21h
end lab1
Оформление программы типа .com с использованием модели памяти:
.model tiny;модель памяти для.com-программы
|
.code; начало сегмента
org 100h; под нужды ОС выделяется 256 байтов в
; начале сегмента
lab1 proc far
mov ax,a
sub ax,b
imul c
idiv d
mov y,ax
mov ost,dx
Ret
a dw 10
b dw 20
c dw 30
d dw 30
y dw?
ost dw?
lab1 endp
end lab1
Пример отладки программы в отладчике AFDPro:
AX 0009 SI 0000 CS 2C8D IP 001A Stack +0 0000 Flags 3284 BX 0000 DI 0000 DS 2C8C +2 2C7A CX FFF6 BP 0000 ES 2C7A HS 2C7A +4 0003 OF DF IF SF ZF AF PF CF DX FFFF SP 001C SS 2C8A FS 2C7A +6 0002 0 0 1 1 0 0 1 0 +------------------------------------------------------------------------------- ¦CMD > ¦ 1 0 1 2 3 4 5 6 7 +------------------------------------------02-¦ DS:0000 0A 00 14 00 1E 00 1E 00 0017 A10600 MOV AX,[0000] ¦ DS:0008 00 00 00 00 00 00 00 00 001A F63E0800 ADD AX,[0002] ¦ DS:0010 1E B8 00 00 50 B8 8C 2C 001E 03C1 IMUL W/[0004] ¦ DS:0018 8E D8 A1 00 00 03 06 02 0020 A30900 IDIV W/[0006] ¦ DS:0020 00 F7 2E 04 00 8B C8 A1 0023 89160B00 MOV [0008],AX ¦ DS:0028 06 00 F6 3E 08 00 03 C1 0027 CB MOV [000A],DX ¦ DS:0030 A3 09 00 89 16 0B 00 CB 0028 0000 RET Far ¦ DS:0038 00 00 00 00 8F 4E 00 00 002A 0000 ADD [BX+SI],AL ¦ DS:0040 00 20 00 00 00 00 00 00 002C 8F ADD [BX+SI],AL ¦ DS:0048 00 00 00 00 00 00 00 00 -------------------------------------------------------------------------------- 2 0 1 2 3 4 5 6 7 8 9 A B C D E F ¦ DS:0000 03 00 02 00 FE FF 09 00 02 00 00 00 00 00 00 00 ¦....__.......... DS:0010 1E B8 00 00 50 B8 8C 2C 8E D8 A1 00 00 03 06 02 ¦.+..P+М, О+б..... DS:0020 00 F7 2E 04 00 8B C8 A1 06 00 F6 3E 08 00 03 C1 ¦.ў...Л+б..Ў>...- DS:0030 A3 09 00 89 16 0B 00 CB 00 00 00 00 8F 4E 00 00 ¦г..Й...-....ПN.. DS:0040 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ¦............... -------------------------------------------------------------------------------- 1 Step 2ProcStep 3Retrieve 4Help ON 5BRK Menu 6 7 up 8 dn 9 le 10 ri |
Лабораторное задание
Задание 1. Разработать программу вычисления функции y=f(a,b,c,d). Формат данных – байт, слово. Данные задаются в программе с помощью директив DB и DW. Результат записать в память. Правильность работы программы проверить с помощью отладчика.
Оформить программу в виде файлов типа .ехе для операндов-слов.
Программу следует набрать в любом текстовом редакторе, создающем файл в ASCII-кодах, (например, с помощью Блокнота) и сохранить с именем, например, Lab1.asm.
Пусть для работы с программой используются транслятор Tasm, редактор связей Tlink и отладчик AFD. Настройте в свойствах этих программ снятие флажка Закрывать окно по завершении работы на вкладке Программа. Для удобства работы можно разместить эти программы и программу Lab1.asm в одном каталоге.
|
Откомпилировать c получением листинга:
набрать в командной строке Total Commander:
Tasm.exe /l Lab1.asm
Если ошибок при компиляции не обнаружено, будут созданы файлы листинга Lab1.lst и объектного кода Lab1.obj.
Получить исполняемый файл, запустив Редактор связей:
Tlink.exe Lab1.obj
Запустить отладчик:
AFD.exe Lab1.exe
В процессе отладки использовать несколько тестовых наборов исходных данных: операнды должны быть как положительные, так и отрицательные. Результаты отладки зафиксировать в файле протокола. Для отчета представить листинг программы c комментариями и распечатку файла протокола отладки. Варианты заданий представлены в таблице1.
Таблица 1. Варианты заданий. | |||
Вариант | Функция | Вариант | Функция |
y=a+b-c/d*e | y=(a+b)*c-d/e | ||
y=a-b/c+d*e | y=a*b/c-d*e | ||
y=a*b+c/d-e | y=a+b-c+d/e | ||
y=a/b+c-d*e | y=(a+b)/c-d*e | ||
y=(a-b+c)/d*e | y=a-b/c*d+e | ||
y=a-b+c/d*e | y=(a-b)+c/d+e |
Задание 2. Настроить среду Asm Editor на работу с программами Tasm, Tlink и AFD.
Кнопку трансляции свяжите с.bat-файлом, который
· запускает Tasm с параметром, указывающим на исходную программу,
· если трансляция прошла успешно, запускает Tlink для создания объектного файла, в противном случае открывает Блокнот с листингом программы.
Оформить разработанную в соответствии с Заданием 1 программу в виде .сом –программы, используя операнды-байты. Отладить программу.
Отчет должен содержать листинги программ и окна отладки программ на момент окончания их выполнения.
|
|
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!