Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
72
Добавлен:
16.04.2013
Размер:
249.25 Кб
Скачать

Типы записей s-record.

Всего существует несеолько типов S-record, которые применяются для создания единого блока записей S-record:

S0: Запись заголовка блока записей S-record. Поле код/данные может содержать любую символьную информацию идентифицирующую блок S-record. Содержимое поля адреса, как правило, равно нулю.

S1: Запись, содержащая код/данные и 2-байтовый адрес начала загрузки в память кодов/данных.

S2: Запись, содержащая код/данные и 3-байтовый адрес начала загрузки в память кодов/данных.

S3: Запись, содержащая код/данные и 4-байтовый адрес начала загрузки в память кодов/данных.

S5: Запись, содержащая ряд записей типов S1, S2 и S3, объединенных в особый блок. В данной записи нет поля код/данные.

S7: Окончательная запись для блока записей типа S3. Поле адреса, необязательно, может содержать 4-байтовый адрес произвольной команды (команда не буде выполнена). В данной записи нет поля код/данные.

S8: Окончательная запись для блока записей типа S2. Поле адреса, необязательно, может содержать 3-байтовый адрес произвольной команды (команда не буде выполнена). В данной записи нет поля код/данные.

S9: Окончательная запись для блока записей типа S1. Поле адреса, необязательно, может содержать 2-байтовый адрес произвольной команды (команда не буде выполнена). В данной записи нет поля код/данные.

Монитор TUTOR поддерживает записи типа S0, S1, S2, S8 и S9. Блок записей S-record может содержать только одну окончательную запись. Записей заголовка может быть несколько, но обычно используется только одна.

Практическая часть

1. Ввод исходных данных и анализ результатов работы программы с помощью команд просмотра и модификации памяти и регистров.

Монитор TUTOR позволяет пользователю производить запись исходных данных непосредственно в ячейки памяти и в регистры процессора, а также просматривать их содержимое.

Для просмотра группы последовательно лежащих ячеек памяти предназначена директива монитора MD, в параметрах которой указывается адрес начальной ячейки и количество отображаемых байт. Например, выведем на дисплей содержимое 20 ячеек памяти начиная с адреса $1000. Запишем в командной строке директиву MD с соответствующими параметрами (поля директивы и параметров разделяются между собой пробелами):

TUTOR 1.32> MD 1000 14

Примечание.Здесь и далее в примерах жирным шрифтом выделяются сообщения, выдаваемые монитором, обычным шрифтом приводится информация вводимая пользователем с клавиатуры.

Результат выполнения команды (для частного случая заполнения памяти данными) выглядит следующим образом:

TUTOR 1.32> MD 1000 14

001000 0C 00 00 30 6D 28 0C 00 00 39 6E 10 02 80 00 00 . . . Om(. . .9n. . . . .

001010 00 0F 11 C0 10 38 1E 3C 00 E4 4E 4E 0C 00 00 41 . . .@.8.<.dNN. . . A

В каждой строке выводится содержимое 16 байт памяти в шестнадцатеричном виде и в виде ASCII символьного эквивалента. Если код, записанный в ячейке памяти не имеет символьного эквивалента, вместо него записывается точка (.). Следует иметь в виду, что команда MD выводит содержимое памяти только строками по 16 байт. Если в команде не указано количество выводимых байт, то отображается одна строка.

Для ввода данных в память с клавиатуры предназначено несколько команд монитора: BF, MM и MS. Команда заполнения блока памяти BF используется, если необходимо заполнить несколько последовательно расположенных слов памяти (каждое слово состоит из двух байтов) каким-либо одним значением. В команде указываются начальный и конечный адрес заполнения (оба адреса должны быть четными) и величина, которой будут заполнены ячейки. В качестве примера заполним 16 байт памяти начиная с адреса $1000 значением $FF, для чего выполним команду:

TUTOR 1.32> BF 1000 100E FFFF

После ввода команды (RETURN) проверим результат, просмотрев содержимое этих ячеек памяти:

TUTOR 1.32> BF 1000 100E FFFF

PHYSICAL ADDRESS=00001000 0000100E

TUTOR 1.32> MD 1000

001000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF . . . . . . . . . . . . . . . .

Для заполнения памяти блоком данных используется директива MS. В команде указывается начальный адрес заполнения и строки данных (разделяются пробелами), которые будут записаны в память. Если производится запись числовой строки, то максимально в ней указывается до 4-х байт. Заполним пять байт памяти начиная с ячейки $1000 значениями $12, $34, $56, $78, $44. Введем команду и проверим результат, просмотрев содержимое указанных ячеек:

TUTOR 1.32> MS 1000 12345678 44

TUTOR 1.32> MD 1000

001000 12 34 56 78 44 FF FF FF FF FF FF FF FF FF FF FF .4VxD . . . . . . . . . .

Команда MM позволяет пользователю построчно редактировать содержимое ячеек памяти. После ввода команды на дисплее отображается адрес ячейки памяти (указывается как параметр команды) и ее содержимое, далее следует знак "?", после которого пользователь может записать в ячейку новое значение. Текущее значение ячейки может быть сохранено, если после знака "?" не указывать новых данных. Ввод данных и переход к новой ячейке памяти осуществляется нажатием клавиши RETURN. При этом возможны четыре варианта действия команды: если после введенных данных не следует дополнительных символов, то производится доступ к следующей по порядку ячейке памяти; если после введенных данных указывается символ "^", то производится доступ к предыдущей ячейке; аналогично символ "=" приводит к открыванию текущей ячейки, а точка - к завершению выполнения команды. Единичная ячейка памяти, открываемая командой MM, может иметь размер байта, слова или длинного слова. Проиллюстрируем на примере действие команды MM. Выберем адрес начальной ячейки $1000, доступ будем производить к ячейкам, имеющим размер слово (два байта).

TUTOR 1.32> MM 1000;W

001000 1234 ?FFFF

001002 5678 ?DDDD

001004 44FF ?EEEE^

001002 DDDD ?

001004 EEEE ?

001006 FFFF ?AAAA=

001006 AAAA ?.

TUTOR 1.32> MD 1000

001000 FF FF DD DD EE EE AA AA FF FF FF FF FF FF FF FF . . ]]nn**. . . . . . . .

Содержимое регистров процессора пользователь может узнать выполнив команду монитора DF. Эта команда используется без параметров и после ее выполнения на дисплее отображается содержимое всех доступных регистров процессора, а также одна дизассемблированная команда, на которую указывает счетчик команд. Для того, чтобы узнать содержимое определенного регистра или записать в него новое значение используется команда .Rx , где Rx - название регистра. Если после команды .Rx следуют данные, то они записываются в регистр, если данные отсутствуют, то на дисплей выводится содержимое данного регистра. Рассмотрим работу этих команд на примере:

TUTOR 1.32> .PC 1000

TUTOR 1.32> .D0 3456

TUTOR 1.32> .A7 1500

TUTOR 1.32> .PC

.PC=00001000

TUTOR 1.32> DF

PC=00001000 SR=2700=.S7..... US=FFFFFFFF SS=0000077A

D0=00003456 D1=0000D1D1 D2=0000D2D2 D3=00D3D3D3

D4=0000000D D5=000000DF D6=0000FBFF D7=00000000

A0=00000000 A1=00000000 A2=00000000 A3=00000000

A4=00000000 A5=00000000 A6=00000000 A7=0000077A

-----------001000 FFFF DC.W $FFFF

При работе в среде монитора TUTOR может оказаться полезной команда перевода шестнадцатеричных данных в десятичные и наоборот. Команда преобразования данных DC использует в качестве параметра числовое выражение, которое может включать в себя как шестнадцатиричные, так и десятичные данные (шестнадцатиричные данные указываться с префиксом "$", десятичные - с префексом "&"). В результате выполнения команды значение выражения вычисляется и записывается в двух форматах: шестнадцатеричном и десятичном. Проиллюстрируем это примером:

TUTOR 1.32> DC &120

$78=&120

TUTOR 1.32> DC &15+$4-$13

$0=&0

TUTOR 1.32> DC -1000

$FFFFF000=-$1000=-&4096

Соседние файлы в папке Motorola - Описание лаб