- •Введение
- •Цели и задачи курса
- •1. Общие сведения о вычислительных машинах и вычислительных системах
- •1.1. Основные понятия и определения
- •1.2. Классификация эвм по назначению и типу
- •1.3. Типы эвм
- •1.4. Основные принципы организации вычислительных машин и систем
- •1.5. Основные характеристики вычислительных машин и систем
- •1.5.1 Стоимость и цена аппаратного обеспечения
- •1.5.2. Производительность вычислительных машин и систем
- •Контрольные вопросы
- •2. Фукциональный состав и назначение основных устройств вм
- •2.2. Назначение шин, шина с тремя состояниями
- •2.3. Назначение устройств ввода-вывода, способы информационного обмена
- •Контрольные вопросы
- •3. Организация процессоров
- •3.1. Введение в функциональную организацию процессора
- •3.2. Операционный блок
- •3.3. Блок управления
- •3.4. Устройства управления процессора
- •3.4.1. Классификация уу
- •3.4.2. Аппаратные уу
- •3.4.3. Микропрограммные уу
- •3.5. Интерфейсный блок
- •3.6. Назначение стека
- •Контрольные вопросы
- •4. Система команд и адресация данных
- •4.1. Группы команд
- •4.2. Адресация операндов
- •4.3. Методы адресации
- •5. Память вычислительных машин
- •5.1. Иерархическая организация системы памяти
- •5.2. Иерархическая структура зу
- •5.3. Основные характеристики зу
- •5.4. Организация связи оп с процессором
- •5.5. Ассоциативные зу
- •Контрольные вопросы
- •6. Принципы обмена данными в вычислительных машинах. Интерфейсы вычислительных машин, организация прерываний
- •6.1. Шины
- •6.1.1. Синхронная шина
- •6.1.2. Пересылка данных за несколько тактов
- •6.1.3. Асинхронные шины
- •6.1.4. Заключительные замечания
- •6.2. Назначение и классификация шинных интерфейсов
- •6.3. Организация и обмен данными между периферийными устройствами и вычислительным ядром системы
- •6.4. Организация прерываний
- •6.4.1. Программные прерывания
- •Команда int
- •6.4.2. Обработка прерываний
- •6.4.3 Таблица векторов прерываний
- •6.4.4. Запуск обработчиков прерываний
- •6.5. Последовательная передача данных
- •7. Вычислительные системы параллельной обработки данных
- •7.1. Параллельная обработка как архитектурный способ повышения производительности
- •7.2. Параллелизм и конвейеризация – способы параллельной обработки данных
- •7.2.1. Параллельная обработка данных (параллелизм)
- •7.2.2. Конвейеризация
- •7.3. Классификация архитектур вычислительных систем
- •7.4. Мультипроцессоры и мультикомпьютеры
- •7.5. Классификация мультипроцессорных систем по способу организации основной памяти
- •7.6. Закон Амдала (эффективность параллельных программ)
- •8. Компьютер ibm pc и операционная система ms dos
- •8.1.Архитектурные особенности процессоров семейства ia-32
- •8.2. Организация памяти компьютера ibm pc, работающего под управлением ms dos
- •Видеопамять
- •Пзу bios
- •Системные ресурсы компьютера
- •8.3. Основы программирования на языке Ассемблера
- •8.3.1. Выполнение программ
- •8.3.2. Написание, компиляция и отладка программы
- •8.3.3. Дополнительные средства ассемблера
- •9. Темы заданий для контрольной работы
- •Тема 1. Архитектура процессора Intel 8086.
- •Контрольные вопросы
- •9.1. Аппаратная модель процессора 8086
- •Программная модель процессора
- •Тема 2. Структура ехе- и сом- программы. Вывод на экран.
- •9.2. Структура программы на языке Ассемблера.
- •9.3. Вывод информации на экран
- •Тема 3. Циклы, ввод с клавиатуры.
- •Тема 4. Ввод чисел. Перевод чисел в различные системы счисления.
- •9.4. Перевод чисел в различные системы счисления
- •Тема 5. Работа с прерываниями: перехват и восстановление.
- •Варианты задания
- •Контрольные вопросы
- •Тема 6. Программирование таймера 8254 и генерация звука
- •Программирование звукового канала таймера.
- •9.7. Инициализация таймера
- •9.8. Назначение каналов таймера в ibm pc
- •9 .9. Генерация тона.
- •9.10. Варианты задания
- •Тема 7. Ответы на контрольные вопросы по лекционному курсу
- •Вариантов заданий Таблица 9.4
- •Литература
Программная модель процессора
Программная модель процессора - это функциональная модель, используемая программистом при разработке программ в кодах ЭВМ или на языке ассемблера. В такой модели игнорируются многие аппаратные особенности в работе процессора.
Тема 2. Структура ехе- и сом- программы. Вывод на экран.
Цель работы: Изучение структуры программы на языке ассемблера формата .ЕХЕ и .СОМ. Получение навыков вывода данных на экран монитора.
Задание: Используя представленный ниже теоретический материал, имеющуюся литературу [9,2,14,19,21] и предоставленное преподавателем обучающее программное обеспечение студент должен разработать EXE-программу вывода символа на экран, и СОМ- программу вывода на экран строки.
9.2. Структура программы на языке Ассемблера.
Исходный программный модуль состоит из команд и директив. Команды управляют работой процессора, а директивы указывают ассемблеру и редактору связей, каким образом следует объединять, команды для создания модуля, который и станет работающей программой.
Команда на языке ассемблера состоит не более чем из четырех полей.
Ниже приведен формат команды с указанием названия его полей:
Метка Код операции Операнды ; Комментарии
MET: MOV AX, BX ; Пересылка из регистра BX в AX
Обязательное поле - поле кода операции, определяющее команду, которую должен выполнить микропроцессор. Поле операндов определяется кодом операции и содержит дополнительную информацию о команде. Метка содержит в символическом виде адрес команды, что необходимо для организации переходов (ссылок). Поле комментария служит для удобства программиста и компилятором игнорируется.
Оператор директивы состоит из символического имени, кода псевдооперации, поля операндов и комментария. Структура директивы аналогична структуре команды. Второе поле - код псевдооперации определяет смысловое содержание директивы. Как и команды, у директивы есть операнды, причем их может быть один или несколько и они отделяются друг от друга запятыми. Допустимое число операндов в директиве определяется кодом псевдооперации. Например:
mas DB 0,0,0,0,0 ; объявлен массив с именем mas
END START ; директива окончания текста программы
Директива может быть помечена символическим именем и содержать поле комментария. Символическое имя, стоящее в начале директивы распределения памяти, называется переменной (например, mas) . В отличие от метки команды после символического имени директивы двоеточие не ставиться.
Программа на языке ассемблера состоит из программных модулей, содержащихся в различных файлах. Каждый модуль, в свою очередь, состоит из операндов или директив ассемблера и заканчивается директивой END. Метка, стоящая после кода псевдооперации END, является точкой входа в программу (с этой метки процессор начинает исполнять программу).
Каждый модуль разбивается на отдельные части директивами сегментации, определяющими начало и конец сегмента. Любой сегмент начинается директивой начала сегмента - SEGMENT и заканчивается директивой конца сегмента - ENDS. В начале директив сегментации ставится имя сегмента.
Каждый сегмент может быть также разбит на части. В общем случае информационные сегменты SS, ES и DS состоят из определений данных, а программный сегмент CS - из команд и директив, группирующих команды в блоки.
Программный сегмент может разбиваться на части директивами определения процедур - некоторых выделенных блоков программы. Как и для определения сегмента, имеются две такие директивы - директива начала процедуры PROC и директива конца ENDP (сообщает компилятору об окончании текста процедуры). Процедура имеет имя, которое должно включаться в обе директивы, процедуры в сегменте могут располагаться последовательно одна за другой, могут быть также вложенными одна в другую.
Принципиальной особенностью COM-программы является то, что в отличие от EXE-программы, которая содержит отдельные сегменты данных, стека и кода, СОМ-программа содержит лишь один основной сегмент (сегмент кода), в котором размешаются и код и данные и стек. Кроме того, EXE-программа, в отличие от COM-программы, содержит так называемый EXE-заголовок, при помощи которого загрузчик выполняет настройку ссылок на сегменты в загруженном модуле, а так как и СОМ- и ЕХЕ- программа должна загружаться с адреса PSP:0100h (100h=256), СОМ-программа должна содержать в начале сегмента кода директиву позволяющую осуществить такую загрузку (ORG 100H).
Более подробно со структурой программ на языке ассемблера можно познакомиться в [14]. Ниже приведены примеры, иллюстрирующие основные особенности структуры ЕХЕ- и COM-программ, написанных на языке ассемблера.
Структура EXE-программы:
;Определение сегмента стека
STAK SEGMENT STACK
DB 256 DUP (?)
STAK ENDS
;Определение сегмента данных
DATA SEGMENT
SYMB DB ‘A’ ;Описание переменной с именем SYMB и со значением «A»
. . . ;Определение других переменных
DATA ENDS
;Определение сегмента кода
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STAK
;Определение подпрограммы
PROC1 PROC
. . . ;Текст подпрограммы
PROC1 ENDP
START: XOR AX, AX ; Точка входа в программу
MOV BX, data ; и обязательная инициализация
MOV DS, BX ; регистра DS в начале программы
CALL PROC1 ; Пример вызова подпрограммы
. . . ; Текст программы
MOV АН, 4СН ; Операторы завершения программы
INT 21H
CODE ENDS
END START
Структура COM-программы:
;Определение сегмента кода
CODE SEGMENT
ASSUME CS:CODE, DS:CODE, SS:CODE
ORG 100Н ;Начало необходимое для СОМ-программы
START:
……. ; Текст программы
MOV AH, 4CH ; Операторы завершения программы
INT 21H
; данные для программы
BUF DB 6 ; Определение переменной типа Byte
…… ;Определение других переменных
……
CODE ENDS
END START
Примеры законченных программ формата .СОМ можно посмотреть в программной среде WinASM 2.0 (см. пункт 8.3.2).
