7. Работа с регистрами озу средствами языка Паскаль
Паскаль предоставляет программисту возможность обращаться в программе непосредственно к памяти и портам, не прибегая к ассемблерным вставкам.
Для работы с памятью используются стандартные команды: MEM (для работы с переменными типа «byte» и MEMW для работы с переменными типа «word». Структура двух указанных команд аналогична: MEM [<базовый адрес сегмента> : <смещение>] – разделяются двоеточием. Адреса можно записывать явно, десятичным или шестьнадцатиричным числом (например, $1da8) или указать с помощью стандартных функций Seg() и Ofs() адрес сегмента и смещения для существующей переменной.
Программа pas_mem (файл pas_mem.Pas)
Program pas_mem;
Uses crt,windos;
var
A,B,c,d,t:byte; {переменные размером 8 бит}
x,y,z:word; {переменные «слово» - два байта}
{========================STRAT PROGRAM==================}
ВEGIN
clrscr; {очистка экрана}
A:=112;
b:=Seg(a); {номер сегмента переменной А}
c:=Ofs(a); {смещение переменной А}
A:=A+16;
D:=mem[seg(a):Ofs(a)]; {Запись в переменную D по адресу регистра}
mem[seg(a):Ofs(a)]:=156; {Запись в регистр по адресу}
D:=mem[seg(a):ofs(a)]; { Запись в переменную D по адресу регистра }
memw[108:108]:=257; { Запись в регистр по адресу }
t:=memw[108:108]; { Запись в переменную е по адресу регистра
ВНИМАНИЕ ! Ошибка, потеря данных! }
x:=memw[108:108]; { Запись в переменную x по адресу регистра }
c:=Seg(x); {номер сегмента переменной x}
d:=Ofs(x); {номер сегмента переменной x}
end.
Анализируя программу сделать вывод: почему присвоение переменной t по адресу приведет к ошибке.
Литература
1. Микропроцессорные системы числового программного управления станками. В.Л. Сосонкин, М., Машиностроение. 1985.
2. Программирование обработки на станках с ЧПУ. Р.И. Гжиров, П.П.Серебрицкий, Ленинград, "Машиностроение" ,1990.
3. Токхаим Р. Микропроцессоры: Курс и упражнения. М., Энергоиздат 1988г.
Пример выполнения работы
Лабораторная работа
Построение диаграммы последовательной передачи данных.
Выполнил ст. гр. ТМ-02 Шугалеев И.А.
Цель работы:
При заданном байте инициализации портов приема – передачи, для информационного блока «номер студента по списку» - «имя студента» «фамилия» составить диаграмму последовательной передачи данных.
С помощью «трассировщика» (клавиша F8) языка Паскаль изучить работу с регистрами процессора и оперативной памяти.
Номер по списку -13
Имя – Гоша
Байт инициализации -100110112
• биты 1-0 - определяют число бит информационного кода: 8 бит;
• бит 2 - определяет число стоп-бит если 0 то 1 стоп-бит;
• биты 3-4 - контроль четности: 11 – контроль по четности;
• 7-5 - устанавливают скорость обмена 1200 бод.
Формируем ASCII последовательности символов - 13. Гоша Куциев, данные сводим в таблицу
Символы |
1 |
3 |
. |
Г |
о |
ш |
а |
ASCII код (дес.) |
49 |
51 |
46 |
131 |
174 |
232 |
160 |
ASCII код (шест) |
31 |
33 |
2Е |
83 |
АЕ |
Е8 |
А0 |
ASCII код(двоич.) |
00110001 |
00110011 |
00101110 |
10000011 |
10101110 |
11101000 |
01010000 |
Передача данных инициализирована со скоростью 1200 бод, следовательно время передачи одного бита равно:
Выводы по работе.
Заданный информационный блок будет передан за время
Контрольные вопросы
1. Представление информации в виде цифрового сигнала.
2. Системы счисления применяемые в цифровой технике.
3 Хранение информации в параллельных регистрах.
4. Хранение информации в последовательных регистрах.
5. Характеристика адресной памяти.
6. Характеристика стековой памяти.
7. Периферийные устройства. Общая характеристика.
8. Способы обмена информации между внешним устройством и ЭВМ.
Общая характеристика.
9. Асинхронная последовательная передача данных.
10. Дистанционная связь. Характеристика.
11. Программно-управляемая передача данных. Общая характеристика.
12. Синхронный и асинхронный обмен при программно-управляемой
передаче данных.
13. Обмен информацией по прерыванию.
14. «Порты» обмена информацией
15.Охарактеризовать регистры процессора
16. Пояснить на примерах выполнение операций с регистрами процессора
17. Составить программу на языке «Pascal» «перестановки» старшего и младшего байтов регистра АХ.
18. Программа «DEBUG»
19. Язык Паскаль. Сколько байт памяти выделяется для переменных различного типа.