
- •Информатика - 2
- •Учебное пособие предназначено для бакалавров направления 230200 «Информационные системы».
- •Учебно-методическим центром
- •Содержание
- •Введение
- •Логические основы информатики. Основные понятия и определения
- •Основные понятия и определения алгебры логики
- •1.3. Переключательные функции одного и двух переменных
- •Вопросы по лекции
- •Преобразования логических выражений
- •2.1. Понятие синтеза комбинационных схем
- •2.2. Логические элементы
- •2.3. Аналитическая запись переключательной функции. Построение схем на элементах заданного базиса
- •Вопросы по лекции
- •Комбинационные схемы и конечные автоматы.
- •Синхронный rs-триггер с дополнительным входом установки исходного состояния
- •Двухтактный d-триггер
- •Самым универсальными и сложными являются jk-триггеры. Они могут строиться как со статическим, так и с динамическим управлением. Универсальный jk-триггер
- •Регистры
- •Последовательный регистр
- •Счетчики. Суммирующий счетчик.
- •Вычитающий счетчик. Реверсивный счетчик.
- •Одноразрядный двоичный сумматор
- •Многоразрядные сумматоры
- •Дешифраторы
- •Мультиплексор
- •Демультиплексор
- •Вопросы
- •4. Функциональная и структурная организация эвм
- •4.1. Понятие функциональной и структурной организации
- •4.2. Структура эвм
- •4.2. 1 Процессор
- •Функции процессора:
- •4.2.2. Память эвм
- •4.2.3. Устройство ввода/вывода
- •4.3. Функционирование эвм.
- •1 Счетчик команд Счетчик команд . Фаза чтения машинной команды из озу и запись машинной команды в регистр команд.
- •2.Фаза дешифрации кода операции машинной команды.
- •3.Фаза выполнения машинной команды.
- •4. Переход к выполнению следующей машинной команды
- •2. Структура машинных команд
- •Способ адресации
- •Система операций
- •Вопросы
- •5. Понятие ФайлА и файловОй системЫ
- •Структура данных на магнитном диске
- •Вопросы
- •6. Таблица размещения файлов fat. Базы данных. Основные типы данных.
- •6.1. Таблица размещения файлов fat
- •Структура fat
- •Основные типы данных
- •Обобщенные структуры или модели данных
- •7. Информационная модель канала передачи
- •7.1. Формы представления информации. Виды сигналов.
- •7.2. Спектральное представление сигнала
- •8. Средства коммуникаций и мировые сети
- •8.1.Организация межкомпьютерной связи
- •8.2. Компьютерные сети
- •8.2.1. Топология сетей
- •8.2.2. Наиболее распространенные виды топологий сетей
- •8.2.3. Методы соединения устройств сети
- •8.2.4. Классификация компьютерных сетей по степени географического распространения
- •8.3.Методы соединения локальных сетей.
- •8.4.Способы соединения беспроводных сетей
- •8.7. Сеть интернет
- •16.7.1. Способы связи сетей в Интернет
- •16.7.1.1. Протоколы
- •8.7.2.2. Адреса компьютеров в сети Интернет
- •8.7.3. Основные возможности, предоставляемые сетью Интернет
- •1. World Wide Web — главный информационный сервис.
- •Вопросы
- •9. Основы кодирования информации
- •9.1. Кодирующее отображение
- •9.2. Префексные коды
- •9.3. Оптимальное кодирование
- •9.3.1. Код Шеннона -Фано
- •9.3.2. Блочное кодирование
- •9.3. Код Хафмана
- •Помехоустойчивое кодирование Назначение помехоустойчивых кодов
- •Помехоустойчивое кодирование
- •9.1.4. Инверсный код
- •9.2. Корректирующие коды
- •9.2.1. Код Хемминга
- •Вопросы
- •10. Защита информации безопасность информации и необходимость ее защиты
- •Стандарты по защите информации
- •Группы и модели нарушителей
- •Уровни информационной защиты
- •Межсетевые экраны
- •Криптография. Идентификация пользователей
- •Вопросы
- •Федеральный закон Российской Федерации от 27 июля 2006 г. N 149-фз Об информации, информационных технологиях и о защите информации.
Система операций
Все операции, выполняемые в командах ЭВМ, принято делить на пять классов.
1. Арифметико-логические и специальные — команды, в которых выполняется собственно преобразование информации. К ним относятся арифметические операции сложение, вычитание, умножение и деление (с фиксированной и плавающей занятой), команды десятичной арифметики, логические операции конъюнкции, дизъюнкции, инверсии и др., сдвиги, преобразование чисел из одной системы счисления в другую и др.
2. Пересылки и загрузки — обеспечивают передачу информации между процессором и памятью.
3. Ввода/вывода — обеспечивают передачу информации между процессором и внешними устройствами.
4. Передачи управления — команды, которые изменяют естественный порядок выполнения команд программы. Эти команды меняют содержимое программного счетчика, обеспечивая переходы по программе. Существуют команды безусловной и условной передачи управления. В последнем случае передача управления происходит, если выполняется заданное в коде команды условие, иначе выполняется следующая по порядку команда.
Различают три разновидности команд передачи управления:
- переходы;
- вызовы подпрограмм;
- возвраты из подпрограмм.
Команды переходов помещают в программный счетчик содержимое своего адресного поля — адрес перехода. При этом старое значение программного счетчика теряется.
Команда вызова подпрограммы работает подобно команде безусловного перехода, но старое значение программного счетчика предварительно сохраняется в специальном регистре или в стеке. Команда возврата передает содержимое верхушки стека или специального регистра в программным счетчик.
5. Системные— команды, выполняющие управление процессом обработки информации и внутренними ресурсами процессора. К таким командам относятся команды управления подсистемой прерывания, команды установки и изменения параметров защиты памяти.
Язык ассемблер является символическим аналогом машинного языка. По этой причине программа, написанная на ассемблере, отражает все особенности архитектуры микропроцессора (организацию памяти, способы адресации операндов, правила использования регистров и т.д.).
Программа на ассемблере представляет собой совокупность блоков памяти, называемых сегментами памяти. Программа может состоять из одного или нескольких таких блоков сегментов. Каждый сегмент содержит совокупность машинных команд, которые необходимо выполнить процессору. Машинная команда может содержать операнды.
Основные способы задания операндов команды:
-
Операнд задается в самой команде (непосредственный операнд). Операнд находится в коде команды, то есть является ее частью.
Например: add sum, 2 (команда складывает содержимое поля по адресу sum с целым числом 2 и записывает результат по месту первого операнда, то есть в память).
2. Операнд находится в одном из регистров. Регистровые операнды указываются именами регистров.
3. Операнд располагается в памяти. Это наиболее сложный и в тоже время наиболее гибкий способ задания операндов. Он позволяет реализовать следующие два основных вида адресации: прямую адресацию (эффективный адрес содержится в самой команде и для формирования не используется никаких дополнительных источников и регистров), косвенную адресацию.
Команды могут не иметь операндов, иметь один или два операнда. В двухоперандовой машинной команде возможны операнды: регистр-регистр, регистр-память, память-регистр, непосредственный операнд - регистр, непосредственный операнд-память.
Регистры
Регистры процессора представляют собой ячейки очень быстрой памяти и служат для временного хранения различных кодов: данных, адресов, служебных кодов.
Рис. 4.9. Регистры общего назначения: AX, BX, CX, DX
Регистры АХ, BX, CX, DX в основном участвуют в арифметических и логических операциях.
Регистр AX является основным сумматором и применяется для всех операций ввода-вывода, некоторых операций над строками и некоторых арифметических операций.
Регистр BX является базовым регистром. Это регистр, который может использоваться в качестве индекса для расширенной адресации, а также для вычислений.
Регистр CX является счетчиком. Он необходим для управления числом повторений циклов и для операций сдвига влево или вправо. Регистр также используется для вычислений.
Регистр DX является регистром данных. Он применяется для некоторых операций ввода-вывода и тех операций умножения и деления над большими числами, которые использует пару DX:AX.
Сегментные регистры: CS, DS, SS, ES
Сегментные регистры CS и DS обеспечивают адресацию памяти. Как было сказано выше, все ячейки памяти пронумерованы последовательно. Процессор обеспечивает доступ к этим ячейкам памяти, для хранения машинных команд и данных. Адрес машинной команды или данных состоит из двух частей: сегмент памяти и смещение.
Сегмент - независимый, поддерживаемый на аппаратном уровне блок памяти, имеющий размер не более 216 байт=65536 байт.
Смещение - номер байта в сегменте.
Например: 13C6:0100 - сегмент смещение
Для адресации машинной команды или данных используют специальные регистры, называемые сегментными регистрами.
Имеются три главных сегмента:
1. Сегмент кодов, который содержит выполняемые машинные команды. Обычно первая выполняемая команда находится в начале этого сегмента. Регистр сегмента кодов (CS) содержит начальный адрес сегмента кода. Этот адрес плюс значение смещения в командном указателе (IP) определяет адрес машинной команды, которая должна быть выполнена.
2. Сегмент данных, который содержит определенные данные, константы, необходимые программе. Регистр сегмента данных (DS) адресует данный сегмент. Регистр содержит начальный адрес сегмента данных. Этот адрес плюс значение смещения, который указывается в машинной команде, указывают на конкретную ячейку в сегменте данных.
3. Сегмент стека содержит адреса возврата как для программы при возврате в операционную систему, так и для вызовов подпрограмм при возврате в главную программу. Регистр сегмента стека (SS) содержит начальный адрес сегмента стека. Этот адрес плюс значение смещения в регистровом указателе (SP) определяют адрес стека памяти для временного хранения адресов и данных.
Регистр ES используется для управления адресацией памяти.
Регистр командного указателя IP содержит смещение на команду, которая должна быть выполнена.
Рассмотрим пример программы на языке ассемблер:
Задание: Найти значение выражения S=1+2+…+N
;
Указываем соответствие сегментных
регистров сегментам
assume
cs:code, ds:data ;
Опишем сегмент данных ;
Откроем сегмент данных data
segment ;
Закроим сегмент данных data
ends ;
Опишем сегмент кода ;
Откроем сегмент кода code
segment begin: ;
Настроим регистр ds на
сегмент данных mov
ax,data mov
ds,ax
mov
ax,0ah int
21h mov
cx,ax mov
ax,[0000] mov
bx,[0001] A: add
ax,bx inc
bx loop
A mov
[0004],ax mov
dx,ax mov
ah,09h int
21h nop ret code
ends end
begin
Рис.4.10. Пример задачи
Машинные команды имеют различную длину: один, два, или три байта. Они находятся в памяти непосредственно друг за другом. Выполнение программы начинается с первой команды, и далее непосредственно выполняются остальные. Память разбивается на блоки в 1 байт. Все ячейки памяти пронумерованы последовательно, начиная с нуля. Адрес машинной команды состоит из двух частей: сегмент, смещение. Например: 13С6:0100.
При всевозможных пересылках данных: из регистров в регистры или из памяти в регистры и обратно, различают регистры-источники и регистры-приемники данных.
ПАМЯТЬ
Вектор прерывания
с м е
щ е н и е 0h 1h … 21h …
0004
0008 … Программа Данные
ПРОЦЕССОР
Регистры общего назначения
AX
– аккумулятор
BX
– база
CX
– счетчик
DX
- данные
0000: 0000
с е г м е н т
15 7 0
Сегментные
регистры
CS
– коды
DS
– данные
SS
– стек
ES
- данные
Счетчик команд
IP
31 0
1400:0000
Данные 1
байт 1 байт
Программа
00 |
00 |
00 |
01 |
00 |
03 |
… |
… |
|
|||||||
|
|
|
|
8BD8 |
2BC0 |
… |
|
0002 0004 0006 0008
|
13EF:0000
13EF:0002
13EF:0004
Рис.4.11.
S=0;
I=1 S=S+I I=I+1 да нет |
Адрес команды (сегмент: смещение) |
Машинная команда |
Адрес данных (сегмент: смещение) |
Оператор на языке машинных кодов |
Операция |
Оператор на языке высокого уровня |
1400:0000 |
B8----R |
|
MOV AX,DATA |
Переслать DATA в регистр AX |
|
|
1400:0003 |
8ED8 |
|
MOV DS,AX |
Переслать содержимое регистра AX в регистр DS |
|
|
1400:0005 |
B40A |
|
MOV AH,0A |
Переслать значение 0А (номер функции ввода) в регистр AH |
Scanf (“%d”, N) |
|
1400:0007 |
CD21 |
|
INT 21 |
Передать управление в ОС для ввода данных |
||
1400:0009 |
8BD8 |
|
MOV CX,AX |
Переслать содержимое регистра AX (введенные данные) в CX |
||
1400:000B |
A10000 |
13EF:0000 |
MOV AX,[0000] |
Переслать данные (2 байта) из памяти, начинающиеся в DS по адресу 0000, в регистр AX |
S=0 |
|
1400:000E |
8B1E0200 |
13EF:0002 |
MOV BX,[0002] |
Переслать данные (2 байта) из памяти, начинающиеся в DS по адресу 0002, в регистр BX |
I=1 |
|
1400:0012 |
03C3 |
|
ADD AX,BX |
Прибавить содержимое регистра BX к AX (результат записывается в регистр AX) |
S=S+1 |
|
1400:0014 |
40 |
|
INC BX |
Прибавить значение 1 к регистру BX |
I=I+1 |
|
1400:0015 |
E2F9 |
|
LOOP |
Вернуться к метке А при выполнении условия цикла |
While (I<=N) |
|
1400:0017 |
A30400 |
13EF:0004 |
MOV [0004],AX |
Переслать содержимое регистра AX в память по адресу 0004 |
Printf (“%d”, S) |
|
1400:001A |
8BD0 |
|
MOV DX,AX |
Переслать содержимое регистра AX в DX |
||
1400:001C |
B409 |
|
MOV AH,09 |
Переслать значение 09 (номер функции вывода) в регистр AH |
||
1400:001E |
CD21 |
|
INT 21 |
Передать управление в ОС для вывода данных |
||
1400:0020 |
90 |
|
NOP |
Пустой оператор |
Остановка |
|
1400:0021 |
CB |
|
RETF |
Конец программы |
Таблица 1.
Таблица 2.
Оператор на языке машинных кодов |
Машинный команда |
Значения регистров |
||||||||||||
AX |
BX |
CX |
DX |
SP |
BP |
SI |
DI |
DS |
ES |
CS |
SS |
IP |
||
MOV AH,0A |
B40A |
0000 |
0000 |
0000 |
0000 |
0100 |
0000 |
0000 |
0000 |
13EF |
13EF |
1400 |
13EF |
0005 |
INT 21 |
CD21 |
0A00 |
0000 |
0000 |
0000 |
0100 |
0000 |
0000 |
0000 |
13EF |
13EF |
1400 |
13EF |
0007 |
MOV CX,AX |
8BD8 |
0A02 |
0000 |
0000 |
0000 |
00ED |
0000 |
0000 |
0000 |
13EF |
13EF |
1400 |
13EF |
0009 |
MOV AX,[0000] |
A10000 |
0000 |
0000 |
0002 |
0000 |
00ED |
0000 |
0000 |
0000 |
13EF |
13EF |
1400 |
13EF |
000B |
MOV BX,[0002] |
8B1E0200 |
0000 |
0000 |
0002 |
0000 |
00ED |
0000 |
0000 |
0000 |
13EF |
13EF |
1400 |
13EF |
000E |
ADD AX,BX |
03C3 |
0000 |
0001 |
0002 |
0000 |
00ED |
0000 |
0000 |
0000 |
13EF |
13EF |
1400 |
13EF |
0012 |
INC BX |
40 |
0001 |
0001 |
0002 |
0000 |
00ED |
0000 |
0000 |
0000 |
13EF |
13EF |
1400 |
13EF |
0014 |
LOOP |
E2F9 |
0001 |
0002 |
0002 |
0000 |
00ED |
0000 |
0000 |
0000 |
13EF |
13EF |
1400 |
13EF |
0015 |
ADD AX,BX |
03D8 |
0001 |
0002 |
0001 |
0000 |
00ED |
0000 |
0000 |
0000 |
13EF |
13EF |
1400 |
13EF |
0012 |
ADD BX,0001 |
830100 |
0003 |
0002 |
0001 |
0000 |
00ED |
0000 |
0000 |
0000 |
13EF |
13EF |
1400 |
13EF |
0014 |
LOOP |
E2F9 |
0003 |
0003 |
0001 |
0000 |
00ED |
0000 |
0000 |
0000 |
13EF |
13EF |
1400 |
13EF |
0015 |
MOV [0004],AX |
A30400 |
0003 |
0003 |
0000 |
0000 |
00ED |
0000 |
0000 |
0000 |
13EF |
13EF |
1400 |
13EF |
0017 |
MOV DX,AX |
8BD0 |
0003 |
0003 |
0000 |
0000 |
00ED |
0000 |
0000 |
0000 |
13EF |
13EF |
1400 |
13EF |
001A |
MOV AH,09 |
B409 |
0003 |
0003 |
0000 |
0003 |
00ED |
0000 |
0000 |
0000 |
13EF |
13EF |
1400 |
13EF |
001C |
INT 21 |
CD21 |
0903 |
0003 |
0000 |
0003 |
00ED |
0000 |
0000 |
0000 |
13EF |
13EF |
1400 |
13EF |
001E |
NOP |
90 |
0903 |
0003 |
0000 |
0003 |
00EB |
0000 |
0000 |
0000 |
13EF |
13EF |
1400 |
13EF |
0020 |
RETF |
CB |
0903 |
0003 |
0000 |
0003 |
00EB |
0000 |
0000 |
0000 |
13EF |
13EF |
1400 |
13EF |
0021 |
Машинный код (операционный код) команды зависит от регистров, на которые имеется ссылка, количества байтов, направления передачи данных (регистр – регистр, регистр – память, память – регистр и т.д.) и от ссылки на непосредственные данные или на память. За кодом команды следуют или непосредственные данные, или адресное смещение данных.
Таблица 4.3.
Команда |
Способ адресации |
Машинный код |
Пересылки |
Регистровая AX-BX BX-AX BX-CX CX-BX AX-CX CX-AX
|
8BC3 8BD8 8BD9 8BCB 8ВC1 8BC8 |
Непосредственная AX-данные BX-данные CX-данные
|
B8 B9 BB |
|
Прямая AX-адрес адрес-AX
|
А1 А3 |
|
Сложения |
Регистровая AX-BX BX-AX BX-CX CX-BX AX-CX CX-AX
|
03С3 03D8 03D9 03СB 03C1 03C8 |
Непосредственная AX-данные BX-данные CX-данные
|
05 83С3 83С1 |
|
Прямая AX-адрес
|
0306 |
Рассмотрим машинные команды, встречающиеся в программе.
1) В8 - - - - R
Четыре дефиса означают, что ассемблер не может определить адрес DATA, он определяется, когда объектная программа будет скомпонована и загружена для выполнения. Поскольку загрузчик может расположить программу в любом месте памяти, ассемблер оставляет данный адрес открытым и показывает символом R, компоновщик должен будет подставить в это место действительный адрес.
2) 8ED8 – команда пересылки содержимое регистра AX в регистр DS
8ED8
3) B40A - команда пересылки значения 0А в регистр AH
4) CD21 - команда прерывания
5) 8BD8 - команда пересылки данных из регистра AX в регистр CX
8BD8
6) A10000 - команда пересылки данных (2 байта) из памяти по адресному смещению 0000 (сегмент памяти берется из регистра DS) в регистр AX
Данные в памяти занимают 2 байта.
В ходе выполнения команда А1 пересылает значение 00 в младшую часть регистра AX, т.е. однобайтовый регистр AL, а значение 00 – в старшую часть регистра AX, т.е в регистр AH
AX: | 00 | 00 |
AH AL
7) 8B1E0200 - команда пересылки данных (2 байта) из памяти по адресному смещению 0002 (сегмент памяти берется из регистра DS) в регистр BX
Данные в памяти занимают 2 байта.
В ходе выполнения команда 8B1E пересылает значение 00 в младшую часть регистра BX, т.е. однобайтовый регистр BL, а значение 02 – в старшую часть регистра BX, т.е в регистр BH
BX: | 02 | 00 |
BH BL
8) 03C3 - команда суммирования содержимого регистра BX в AX
03С3
9) 40 - команда суммирования значения 0001 к регистру BX
40
10) А30400 - команда пересылки данных (2 байта) по адресному смещению 0004 из памяти (сегмент памяти берется из регистра DS) в регистр AX.
Данные в памяти занимают 2 байта.
В ходе выполнения команда А3 пересылает значение 00 в младшую часть регистра AX, т.е. однобайтовый регистр AL, а значение 04 – в старшую часть регистра AX, т.е в регистр AH
AX: | 04 | 00 |
AH AL
11) 8BD0 - команда пересылки данных из регистра AX в DX
8BD0
12) B409 - команда пересылки значения 09 в регистр AH
13) E2F9
E2 – команда для перехода LOOP
F9 – отрицательное значение смещения (-7)
Команда LOOP прибавляет F9 к командному указателю (IP), который содержит адрес команды после LOOP (001В):
Командный указатель: 001В
Адрес в команде LOOP: F9
Адрес перехода: 0014
14) 90 - команда пустого оператора
90
15) СВ - команда длинного возврата из процедуры
СB
Рассмотрим команды языка ассемблер, встречающиеся в программе.
Команда пересылки данных
Команда пересылки mov
Команда mov копирует значение из источника в приемник:
mov приемник, источник
Арифметические команды
Команда сложения add
Команда add требует двух операндов. Операнды – данные, которые обрабатываются командами.
add о1,о2
Команда add складывает оба операнда о1 и о2 и записывает результат в о1, предыдущее значение которого теряется.
Команда инкрементирования inc
inc о1
Команда inc добавляет единицу к оператору.
Команда Loop
Команда Loop реализует цикл с конечным числом шагов. Она использует начальное значение регистра CX. В каждом цикле команда уменьшает содержимое регистра CX на 1.
Команды ввода-вывода
Периферийные устройства используют так называемые шлюзы ввода – вывода или порты ввода - вывода. С помощью портов программа может «общаться» с тем или иным периферийным устройством.
В ассемблере для ввода-вывода данных используют прерывание 21h.
Для запроса на ввод необходимо поместить в регистр AH номер функции ввода 10 (0AH), на вывод - 09 (09H)
Команда INT прерывает обработку программы и передает управление в ОС по вектору прерывания 0А для ввода данных.
Обработка прерываний производится в три этапа:
прекращается выполнение текущей программы;
управление предается по адресу таблицы векторов прерываний;
выполняется процедура обработки прерывания и управление возвращается прерванной программе.