
- •Программирование эвм
- •Int 21h ;кодом возврата 0 прерывания 21h
- •Работа с битами
- •Порядок выполнения работы
- •Устройства ввода-вывода
- •Ввод исходных данных с клавиатуры и вывод результатов на дисплей
- •Inc di ;смещение в видеопамяти на следующий символ
- •Порядок выполнения работы
- •Контрольные задания
- •Система команд процессора
- •Способы адресации
- •Влияние команд на регистр флагов
- •Расширенные регистры и типы данных процессоров x86
- •Система команд процессоров ia-32 и Intel 64
- •Int 21h ;системного прерывания 21h
- •Использование дальней подпрограммы
- •X dw 0aabBh, 0abbAh, 0baaBh, 0bbaAh ;исходные данные
- •Использование подпрограмм для ввода-вывода
- •Порядок выполнения работы
- •Контрольные задания
- •Дескрипторы
- •Порядок работы процессора в защищенном режиме
- •Использование дальней подпрограммы в защищенном режиме
- •Использование idt. Ввод данных с клавиатуры в защищенном режиме
- •Порядок выполнения работы
Inc di ;смещение в видеопамяти на следующий символ
dec cx ;декремент счетчика битов
jnz inloop ;если еще не все цифры введены,
;ввод следующей цифры
mov x, dx ;если все цифры введены,
;число записывается в переменную x
;введенное число преобразуется и результат записывается в память
and dx, m ;на число накладывается маска
mov y, dx ;результат записывается в переменную y
;инициализация регистров для вывода результата на экран
mov bx, 8000h ;индикатор очередного выводимого бита
mov di, 80*2 ;результат будет выведен под исходным числом
;цикл вывода результатов на экран
outloop: mov ax, y ;передача результата в аккумулятор
test ax, bx ;проверка очередного бита - 0 или 1
jnz bit1
mov es:[di], 0730h ;если 0, вывести 0
jmp NxtBit
bit1: mov es:[di], 0731h ;если 1, вывести 1
NxtBit: inc di
inc di ;переход на следующую позицию видеопамяти
shr bx, 1 ;настройка индикатора на следующий бит
jnc outloop ;переход к тестированию следующего бита
pause: in al, 60h ;цикл, пауза для просмотра результата
cmp al, 01h ;пауза заканчивается по нажатию Esc
jne pause
quit: mov ax, 4C00h ;функция завершения программы
int 21h ;системного прерывания 21h
code ends ;конец сегмента команд
end main ;конец главной программы
Квадратные скобки у имени регистра означают, что в регистре находится не операнд, а адрес операнда. То есть, по команде:
mov es:[di], 0730h
в память по логическому адресу es:di помещается слово 0730h.
Порядок выполнения работы
Написать на языке ассемблера программу, выполняющую определенную задачу в соответствии с вариантом.
Исходные данные вводятся в память с клавиатуры, результаты выводятся на дисплей. Сообщение об ошибке выводится в виде звукового сигнала через динамик.
Работа с устройствами ввода-вывода должна полностью осуществляться средствами программы (использование функций BIOS или операционной системы не допускается), то есть в программе должны быть команды ввода-вывода из соответствующих портов (регистров) клавиатуры, видеоадаптера, таймера.
Исследовать работу программы, отслеживая состояние системы после выполнения команд: значения регистров процессора, ячеек памяти, портов ввода-вывода. Результаты анализа работы программы оформить в виде таблицы. Последовательность строк в таблице должна соответствовать последовательности выполнения команд в период прогона программы, а не их последовательности в тексте программы. В строке, соответствующей данной команде, содержимое регистров, ячеек памяти и портов ввода-вывода должно быть таким, каким оно является после ее выполнения.
Проанализировать таблицу, выполнить необходимые сравнения, сделать выводы.
Общие признаки всех вариантов:
-
Исходные данные вводятся с клавиатуры и помещаются в сегмент данных.
-
Результаты заносятся в сегмент данных, а затем выводятся на экран.
-
Для звуковой сигнализации об ошибках используется динамик.
Признаки формирования вариантов:
-
Формат ввода данных с клавиатуры.
-
Способ формирования звукового сигнала.
-
Задача.
Сравнения:
-
Передача операндов (по времени и по множеству команд):
-
Внутри процессора.
-
Процессор — память.
-
Процессор — устройство ввода-вывода.
-
-
Команд:
-
По количеству циклов шины.
-
По количеству типов цикла шины.
-
По направлению обмена информацией.
-
Содержание отчета
-
Задание, конкретизированное вариантом.
-
Листинг программы.
-
Таблица состояния системы после выполнения команд программы.
-
Сравнения и выводы по результатам анализа таблицы и выполненным сравнениям.
Контрольные вопросы
-
Какие общие и специфичные устройства ЭВМ не изображены на рис.2.
-
Физический адрес, выдаваемый процессором, делится на две части: более общую, адресующее устройство, и более конкретную, адресующую элемент (ячейку памяти или порт) устройства. Приведите другие примеры такого рода структуризации различных адресов.
-
Какие устройства ЭВМ являются активными, а какие пассивными?
-
Какое направление движения информации является передачей, а какое приемом в случае прямого доступа к памяти?
-
Может ли процессор принимать код операции команды не из памяти?
-
Классифицируйте типы циклов шины процессора i8086.
-
Сопоставьте этапы работы процессора и временные промежутки его функционирования. Охарактеризуйте их с точки зрения того, какие действия процессора им соответствуют, внутренние или внешние.
-
В каких устройствах компьютера имеется оперативная память?
-
В каких устройствах компьютера имеется постоянная память?
-
В каких устройствах компьютера имеется процессор?
-
В каких устройствах компьютера отсутствуют регистры?
-
Какие органы чувств не задействованы в устройствах взаимодействия пользователя с ЭВМ? Почему?
-
Запрещены или разрешены прерывания сразу после включения ЭВМ?
-
Чем определяется количество прерываний в ЭВМ?
-
Классифицируйте интерфейс процессора с клавиатурой, монитором, динамиком.
-
Будет ли звучать динамик после завершения программы TmrBeep.asm, если его не выключить?
-
Зависит ли частота звукового сигнала динамика в программе TmrBeep.asm от частоты работы процессора?
-
Зависит ли время звучания динамика (длительность задержки) в программе TmrBeep.asm от частоты работы процессора?
-
За какое время переполнится счетчик системного времени?
-
Зачем необходимо фиксировать не только нажатия, но и отжатия клавиш?
-
Можно ли результаты работы программы не размещать в сегменте данных, а сразу записывать в видеопамять?
-
Сколько в программе InKoutD.asm сегментов?