Задание 3
1.Привести физические адреса начальных элементов информации, содержащейся соответственно в сегментах данных, кода и стека, исходя из одинакового смещения 2451h и содержимого сегментных регистров: DS-4862h, CS-4357h, SS-1456h.
DS48620h+2451h=51071h;
CS43570h+2451h=67А8h;
SS1456h+2451h=38А7h.
2.Привести фрагменты программы на ассемблере с указанием её линии, определением и инициализацией всех сегментных регистров.
Для составления фрагмента программы, представленного на рис.3.1, инициализирующей все сегментные регистры необходимо учитывать, что часть ОЗУ, доступная при неизменном значении сегментного регистра, называется сегментом памяти. Поэтому программа на языке ассемблера обычно состоит из нескольких сегментов, соответствующих разным сегментным регистрам. Размер сегмента может быть любым, но не больше FFFFh (64 Кбайт). Сегмент начинается служебным словом ассемблера SEGMENT, перед которым стоит имя сегмента (например, Dat), выбранное программистом. Заканчивается сегмент словом ENDS с тем же именем.
Участок памяти размером 16 байтом имеет особое название-параграф, а адрес, кратный числу 16, называется началом параграфа. Начало сегмента может быть определено на границе страницы длиной в 256 байт с помощью служебного слова Page.
Фрагмент программы:
Рис.3.1. Фрагмента программы,инициализирующей все сегментные регистры
3.Определить содержимое сегментных регистров DS, CS и SS при указанных в табл.5 физических адресах информационных элементов сегментов данных, кода и стека и их одинакового смещения в сегментах.
Для определения содержимого сегментных регистров необходимо по правилу шестнадцатеричной арифметики вычесть из физического адреса хранящегося в сегменте памяти информационного элемента его смещение от начала соответствующего сегмента.
Данных-4527h, кода-2392h, стека-6774h, смещение-1896h.
(DS)= 4527h-1896h=2С91h;
(CS)= 2392h-1896h=AFCh;
(SS)= 6774h-1896h=4EDEh;
4.Привести фрагмент программы,(см. рис.3.2) определения минимального из двух чисел с размещением результата по адресу 1324h.
Рис.3.2. Фрагмент программы определения минимального из двух чисел с размещением результата по адресу 1324h.
Задание 4
1.Определить способ адресации и эффективные адреса ЕА ячеек памяти при следующих комбинациях регистров и смещения в коде команд с учетом их содержимого, приведенного в табл.6:
[BX] [BX+DI] [BX+SI] [BX+DI+C] [BP] [BP+DI] [BP+SI]
[BP] [BP+DI] [BP+SI] [DP+DI+C]
[DI] [SI] [DI+C] [SI+C]
Для определения эффективного адреса ЕА необходимо учитывать различные методы адресации, используемые в микроЭВМ для указания места, где хранится операнд команды.
BX=5752h
BP=2427h
SI=3425h
DI=52h
C=361h
EA=[BX]=5752h
EA1=[BX+DI]=5752h+52h=57А4h
EA2=[BX+SI]=5752h+3425h=8B77h
EA3=[BX+DI+C]=5752h+52h+361h=5B05h
EA4=[BP]=2427h
EA5=[BP+DI]=2427h+52h=2479h
EA6=[BP+SI]=2427h+3425h=584Ch
2.Привести фрагмент прикладной программы,(см.рис.4.1) которая завершив вывод строки символов, отдаёт управление операционной системе после нажатия клавиши.
Рис. 4.1. Фрагмент прикладной программы, ) которая завершив вывод строки символов, отдаёт управление операционной системе после нажатия клавиши.
3.Привести фрагмент прикладной программы,(см.рис.4.2) которая после нажатия клавиши последовательно выводит символы из ряда А, Т, А, С и, завершив вывод символов, отдаёт управление операционной системе.
Рис.4.2. Фрагмент прикладной программы, которая после нажатия клавиши последовательно выводит символы из ряда А, Т, А, С и, завершив вывод символов, отдаёт управление операционной системе.
