Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Директивы транслятора для описания моделей памяти

2017-11-17 336
Директивы транслятора для описания моделей памяти 0.00 из 5.00 0 оценок
Заказать работу

Вверх
Содержание
Поиск

Современные трансляторы допускают использование директив, упрощающих оформление программы. Так, для создания простой модели памяти типа .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 программу в виде .сом –программы, используя операнды-байты. Отладить программу.

 

Отчет должен содержать листинги программ и окна отладки программ на момент окончания их выполнения.

 


Поделиться с друзьями:

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

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

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...



© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.012 с.