Команды управления выполнением программ
Команды перехода (условные, безусловные)
Условия реализуются с помощью «флагов» (флаговых битах). Эти биты находятся в специальном флаговом регистре.
CF – флаг переноса
PF – флаг четности. 1 – четное число, 0 – нечетное
ZF (zero flag) – 0 – число равно 0, 1 – число не равно 0
SF (sight flag) – 1 – число неотрицательно, 0 – число отрицательно
OF (overflow flag) переполнение. Равен 1 при переполнении
IF (interruption flag) – 1, когда имеет место прерывание.
Вызов подпрограммы
Операции представлены в таблице на языке Ассемблера (автокоде) для intel
Язык Ассемблера позволяет представлять машинные команды в симв. Виде.
Тип операции (команды) | Наименование операции | Символ операции (ассемблер. intel) | Пример | Описание |
Передачи данных | Перемещение | MOV | MOV x,y | Передача машинного слова (4 байта) или блока данных от источника к приемнику. |
Сохранение | STOR | STOR x | Содержимое регистра процессора сохраняется в ячейке памяти Х | |
Загрузка | LOAD | LOAD х | Передача данных из адреса памяти Х в регистр ЦП | |
Загрузка адреса | LEA | LEA x,y X=адрес у | Значением Х будет не значение У, а его адрес | |
Очистка | CLR | CLR | Передает в регистр ЦП одни нули. | |
Установка | SET | SET | Передает в регистр ЦП слово из одних единиц. | |
Запись в Стек | PUSH | PUSH x | Содержимое ячейки памяти по адресу х помещается в вершину стека | |
Извлечение из Стека | POP | POP x | Запись из вершины стека в ячейку памяти по адресу Х | |
Арифметические операции | Сложение | ADD | ADD x,y | X=x+y. Складываем и результат записываем в Х |
Умножение | MUL | MUL x,y | X=x*y Умножаем и результат записываем в х | |
Деление | DIV | DIV x,y | X=x/y Делим и результат записываем в х | |
Положительное приращение | INC | INC x | Х=Х+1 | |
Отрицательное приращение | DEC | DEC x | Х=х-1 | |
Логические операции. Выполняются поразрядно | Не | NOT | NOT x | Х = НЕ х |
И | AND | AND x,y | X=x^y | |
ИЛИ | OR | OR x,y | X=x v y | |
Искллючающее или | XOR | XOR x,y | X=x / y (штрих шеффера) | |
Сравнение | CMP | CMP x,y | Арифметическое или логическое сравнение. Резл. Записываются во флаговый регистр | |
Логический сдвиг | SHR SHL | SHR x,y SHL x.y | Влево Вправо Берем у, делаем сдвиг и помещаем в Х | |
Арифметический сдвиг | SAR SAL | SAR x,y | X= сдвиг у | |
Циклический сдвиг | ROR ROL | ROL x,y | Х=сдвиг у | |
Операции ввода-вывода | Ввод | IN | IN A | Передача данных из регистра А устройства ввода-вывода (порта) в регистр ЦП |
Вывод | Out | OUT A | Передача данных из регистра ЦП в регистр устройства ввода-вывода | |
Управления выполнением программы | Безусловный переход | JMP | JMP A | Безусловный переход на команду по адресу А |
Вызов подпрограммы | CALL | CALL A | Вызов подрограммы по адресу А В момент вызова сохраняется вся инфа о текущем состоянии главной программы, откуда произошел вызов | |
Возврат из Подпрограммы | RET | RET | Обеспечивает возврат из вызванной подпрограммы и восстановление состояния вызвавшей программы | |
Остановка | HLT | HLT | Принудительная остановка программы | |
Ожидание | WAIT | WAIT | Программа приостанавливается, пока не будет выполнено некое условие. | |
Условный переход | JE JNE JG JL JGE JLE | JE A JNE A JG A | Сначала работает CMP x,y (сравнение) В зависимости от рез-тов сравнения устанавливаются различные флаги Переход производится, если рез-т. Сравнения x=y Переход, если x!=y Переход, если x>y X<y Переход, если x>=y X<=y | |
Способы адресации
КОП А
Операнд может быть 3 типов.
1) Может стоять какое-то конкретное значение. Напр. ADD x,6 (х=х+6)
2) Некий адрес. Тогда ADD x,y (значение берется из ячейки памяти по данному адресу. X=x+y)
3) По адресу хранится не значение, а адрес, в котором хранится значение
ADD x,[y] (x=x+y^)
В зависимости от способа адресации исполнительный адрес определяется различным образом
Режим (способ) адресации | Обозначение | Плюсы | Минусы |
Непосредственная адресация | (операндом является конкретное значение) | Нет обращения к памяти. | Негибкость. |
Прямая адресация | ЕА = А Исполнительный адрес указывается явно | Простота | Ограниченное адресуемое пространство |
Регистровая адресация | ЕА = R (r – имя некого регистра) | Нет обращения к памяти | Ограниченное адресуемое пространство |
Косвенная адресация (основной способ) | Исполнительный адрес = [A] | Большой объем адресуемого пространства (напр. Для Pentium = 2^32 адресов) | Два обращения к памяти. Проигрыш в быстродействии |
Косвенная Адресация через регистр | ЕА = [R] | Большой объем адрес. Пространства | Два обращения к памяти |
Адресация со смещением -относительная -адресация через регистр базы -индексная адресация -… | EA = PC + A (PC – регистр с адресом текущей команды) ЕА = [R] + A (адресация относительно начала программы. В регистре стоит начало.) ЕА = [A] + R (исп. При адресации эл-тов массива) EA = [A] + [R] | Большая гибкость и эффективность | Сложность |
Стековая адресация | ЕА = S (s – вершина стека) | Мало обращения к памяти | Ограниченная возможность применения |
Иллюстрация работы стековой адресации.
PUSH X
PUSH Y
ADD
POP Z
Формат машинной команды – это как в ячейке памяти хранится маш. Команда, код операции, способ адресации, адреса операндов и т.д.
Проектирование системы команд компьютера
Это самый важный этап разработки нового процессора
Команда, в отличие от операнда, занимает несколько ячеек в памяти
Длина команды кратна длине ячейки команды
Распределение полей в команде:
1. Сколько бит под опер.
2. Компромисс между увеличением числа операций и отведения места под операнды.
Основы языка Ассемблера (автокод)
Появился в 50е коды и представляет собой способ символической записи машинных команд
Ассемблер разрабатывается для любого процессора.
Программы на языке Ассемблера тоже компилируются и переводятся в машинные команды
Ассемблер используется для защиты от взломов и наоборот.
На ассемблере пишутся вставки для языков высокого уровня, там, где нужно наиболее высокое быстродействие.
Написание вставки на ассемблере позволяет максимально оптимизировать кол-во и последовательность машинных команд.
Характеристики ассемблера
1) Использует мнемокоды для команд и адресов, что позволяет быстрее понимать и изменять программу
2) Ассемблер – это первый язык программирования
Функции ассемблера
1. Распределение памяти
2. Перевод команд в коды
3. Поиск ошибок
4. Построение «объектного модуля» в машинных кодах
5. Построение листинга
6. Ассемблер использует все вышеперечисленные способы адресации.
7. В ассемблере каждая команда пишется на отдельной строке
8. В ассемблере так же используются процедуры и ф-ии.
9. В отличие от обычных языков у процедур нет параметров
10. Искусство написания программ на ассемблере – это умение использовать разные способы адресации, регистры и так называемые прерывания для обращения к внешним устр-вам.
11. Программа состоит из модулей, а модули из сегментов.
12. Сегментов – 4, они имеют свои названия для каждой программы. (Сегмент – это «кусок памяти»)
DSEG – сегмент данных
SSEG – сегмент стека
CSEG – программный сегмент
ESEG – сегмент общего назначения. (для данных)
Начало каждого сегмента располагается в спец. Сегментах
Помимо обычных команд в Ассемблере есть так называемые «псевдокоманды», которые служат для размещения или определения данных.
A SEGMENT начало сегмента А
A ENDS Конец сегмента А
B PROC Начало процедуры В
B ENDP Конец процедуры B
По сложности написания разница между маш. Кодом и ассемблером такая же, как между Ассемблера и языком высокого уровня
----
Написать программу вычисления выражения (А + В) * 5
A SEGMENT
2-адресная
ADD a,b
MUL a,5
A ENDS
3-адресная
ADD a,b,r
MUL r,5,r
1-адресная
LOAD a
ADD b
MUL 5
STOR r
0-адресная
PUSH a
PUSH b
ADD
EA = s
Push 5
MUL
POP r
Для 0,1,2,3 адресной машины.
Данные находятся в ОЗУ, начиная с язейки 0120
Вопрос: в какую ячейку ОЗУ будет записан резл. Следующей операции и чему он будет равен, если в ячейке Х по адресу 002 находится 5?
1) Mov x,7
В ячейке 0122 будет записано 7
2) Mov [x],x
в ячейке 0125 будет записано 5
3) Mov [x],7
в ячейке 0125 будет записано 7
Сегмент данных находится, начиная с ячейки 0120
Модельные программы
x+y ? z
if ((x+y) >= z) печать (‘+’)
else печать (‘-‘)
Программа на автокоде
SSEG SEGMENT STACK ; сегмент стека
DB 256 DUP ; мы отводим память под 256 байт
SSEG ENDS ; конец сегмента
DSEG SEGMENT ; сегмент данных
X DB 5
Y DB 3
Z DB 10
DSEG ENDS ; конец сегмента данных
CSEG SEGMENT ; сегмент программы
ASSUME CS:CSEG, DS:DSEG, SS:SSEG ; регистры, в которые мы заносим начало каждого сегмента
START PROC FAR ; начало описания программы
PUSH DS ; DS, AX – регистры.
PUSH AX
MOV DS DSEG
CALL MAIN ; вызов главной процедуры
RET ; выход из процедуры
START ENDP ; программа старт закончена
MAIN PROC NEAR
MOV AH,6 ;загрузка программы вывода на экран содержимого регистра DL
MOV BH,x; загрузим в регистр BH значение х
MOV BL,y; в BL - y
ADD BH,BL ; (x+y) в регистровой адресации
MOV BL,z ; загрузили z в регистр в BL
CMP BH,BL ; x+y ? z
JL LAB ; переход на метку лаб, если х+у меньше z
MOV DL,’+’; печать + при х+у >= z
JMP DONE
LAB: MOV DL,’-‘ ; печать – если х+у меньше z
DONE: INT 21H; вызов ОС путем прерывания для печати символа на экран.
(int – команда ассемблера для вызова ОС)
RET
MAIN ENDP
CSEG ENDS
END START; программа старт запускается на выполнение (переход на начало исполняемого кода)
Для выполнения специфических действий, напр ввода-вывода, надо занести в определенные регистры определенные значения
Машина Тьюринга
Машина Тьюринга – формальная мат. Модель работы компьютера, а так же модель алгоритмов
В модели Тьюринга и программа и сам компьютер работают по некоему алгоритму, поэтому в некотором смысле это одно и то же.
В 30е годы было разработано много различных моделей алгоритмов, т.к. появилась необходимость в оптимизации. Одна из этих моделей – машина Тьюринга.
В ней есть память и есть аналог процессора
Она состоит из след. Компонентов
1.
|
Бесконечная в обе стороны лента, поделенная на сегменты. В каждом сегменте может храниться только одно значение.
2. Устройства управления, в каждый момент времени может находиться в одном из состояний из конечного множества Q
3. У устройства управления есть пишущая головка. В каждый момент времени она обозревает одну ячейку ленты
В зависимости от обозреваемого символа на ленте и состояния устройства управления (qn) могут быть выполнены следующие действия:
1) на ленту может быть записан некий символ А
2) УУ может перейти в новое состояние или остаться в прежнем состоянии, а пишущая головка может изменить свою позицию
(сдвинуться вправо, влево или остаться на месте)
Среди всех состояний выделяют
q1 – начальное состояние
qz – конечное состояние, в котором она прекращает работать
λ – пустой символ, в ячейке ничего не записано
Таким образом лента является аналогом памяти компьютера с хранимыми данными и устройством управления, где записано состояние
Например: обозревая символ 1 находимся в состоянии q1 записываем * переходим в состояние q2 и сдвигаемся вправо
1 q1 à *q2 R
Еще один способ записи команд – табличный
По столбцам – символ на ленте По строкам – состояния | ||||
* | λ | |||
Q1 | *q2 R | |||
Q2 | ||||
Q3 |
Графический способ.
Граф – Вершины, соединенные ребрами
Вершинами графа являются состояния
Ребра – все остальное
Машина Тьюринга в начале строится для каждой отдельной операции,
Т.е. Для каждого действия – своя машина Тьюринга
Сложение символов
1 1 1 1 1 + 1 1 1 1 à 1 1 1 1 1 1 1 1 1
Машина Тьюринга не имеет никакого отношения к двоичной арифметике, она работает с символами
Одну и ту же операцию можно сделать по разному
Возьмем самую левую единицу и поместим ее на место плюса
Q1 * à qz λ R Случай х=0
Q1 à q2 λ R
Q2 1 à q2 1 R (продвигаемся на 1 символ вправо по единицам Х, не меняя их)
Q2 * à q3 1 L ( после окончания работы машины Тьюринга головка должна обозревать самый левый символ)
Q3 1 à q3 1 L
Q3 λ à qz λ R (машина сдвинулась и остановилась перед 1й единицей)
ДЗ – написать в табл и граф) Составить М Т , из n единиц n нулей и вернуться в начало
Написать на ассемблере прогу
If (x<=y ) z = x^2-y, else z=x^+y. X=6 y=4
1 Q1 à 0 Qz R
0 Q2 à Q3 1 L
Q3 λ à qz λ
DSEG SEGMENT ; сегмент данных
X DB 6
Y DB 4
Z DB 0
DSEG ENDS ; конец сегмента данных
CSEG SEGMENT ; сегмент программы
ASSUME CS:CSEG, DS:DSEG, SS:SSEG ; регистры, в которые мы заносим начало каждого сегмента
START PROC FAR ; начало описания программы
PUSH DS ; DS, AX – регистры.
PUSH AX
MOV DS DSEG
CALL MAIN ; вызов главной процедуры
RET ; выход из процедуры
START ENDP ; программа старт закончена
MAIN PROC NEAR
MOV AH,6 ;загрузка программы вывода на экран содержимого регистра DL
MOV BH,x; загрузим в регистр BH значение х
MOV BL,y; в BL - y
CMP BH,BL
JL MET
MUL BH,BH ; (xx) в регистровой адресации
ADD BH,BL
MOV BL,z ; загрузили z в регистр в BL
ADD BL,BH
MOV DL,z ; печать рез-ла
JMP DONE
MET:
MUL BH,BH ; (xx) в регистровой адресации
MUL BL,-1
ADD BH,BL
MOV BL,z ; загрузили z в регистр в BL
ADD BL,BH
MOV DL,z ; печать рез-та
DONE: INT 21H; вызов ОС путем прерывания для печати символа на экран.
(int – команда ассемблера для вызова ОС)
RET
MAIN ENDP
CSEG ENDS
11111 – х штук à скопировать 11111 х штук * 11111 еще х штук.Потребуется некий счетчик
Аппаратное обеспечение (hardware)
Компьютер –это программируемое устройство, которое может обрабатывать данные и выполнять вычисления.
Они бывают аналоговые и цифровые
ЦП в современных компьютерах исполняется в виде СБИС (сверх большой интегральной схемы)
Она состоит из тысяч тончайших кремниевых пластинок, на которые нанесены логические эл-ты
Все современные компы строятся на основе принципов, которые предложены в машине Тьюринга, т.е. есть хранимые данные, над которыми выполняется программа.
Фон Неймановская архитектура используется в 99% всех компьютерах
Память однородна и состоит из адресуемых ячеек.
Хранимые программы
Несмотря на разнообразие компов выделяется 3 типа архитектур:
1) Классическая архитектура (процессор, который обрабатывает какие-то данные)
2) Многопроцессорные комплексы (каждый обрабатывает свои данные, а память общая)
3) Многомашинные комплексы (каждый процессор имеет собственную память)
Магистрально-модульная организация.
Модули – аппаратура, все составляющие части, подключаются к магистрали – и любой из них можно заменить.
В компьютере имеется несколько магистралей разного назначения. (PCI express, USB, AGP, FSB)
Важнейшие принципы выполнения программ компьютера.
1) Прерывание. Выполнение программы прерывается, и управление передается ОС.
после того, как ОС произвела некие действия, управление передается обратно программе.
Каждая программа работает на процессоре несколько миллисекунд, затем прерывается и идет следующая программа. И так по кругу.
2) Конвейер. В программе выполняется параллельно (одновременно) несколько команд.
3) Контроллер (адаптер) – управление устройствами ввода-вывода. К нему подключены сами эти устройства. Если контроллер находится внутри компа на мат.плате, он называется адаптером. У контроллеров есть своя память в виде регистров. Они называются «порты ввода-вывода»1
Устройства памяти
К внутренней памяти относится оперативная память, кэш-память, специальная память.
Оперативная память сделана на СБИС, она хранит данные по принципу конденсаторов. Они непрерывно разряжаются, каждую миллисекунду данные стираются. Поэтому данные непрерывно обновляются (регенерируется)
Кэш-память - это промежуточная память между регистрами ЦП и ОЗУ. Она небольшого объема, гораздо быстрее оперативной памяти, туда считывается (временно) из ОЗУ те программы и данные, с которыми в настоящее время идет работа.
Специальная память:
1) ROM (ПЗУ) - read only memory (постоянное запоминающее устр-во). Из нее можно только читать.
BIOS – программный код для запуска ОС и тестирование внешних устройств.
2) CMOS RAM
CMOS SETUP – при нажатии клавиши ДЕЛ во время запуска компа.
Внешняя память используется для постоянного хранения данных.
Жесткий диск. Использует магнитный способ записи. Обмен данных с хардом ведется по секторам, т.е. нельзя считать или записать меньше, чем 1 сектор . в 1 секторе – 512 байт.
Компакт-диски. Использует лазерный способ записи.
CD-ROM. Считывается впадины и выступы
CD-R. Участки затемняются. Это соотв. единицам
CD-RW Органические эл-ты, упорядывачиваются опр. Образом.
Периферийные устройства.
Монитор – в каждом пикселе находится люминофор, при попадании туда пучка света, в зависимости от интенсивности того или иного цвета образуется нужный цвет.
Устройства ввода-вывода.
Плоттер (графопостроитель) позволяет выводить схемы, карты, чертежи.
Модем (модулятор-демодулятор) преобразует дискретную инфу из компа в аналоговый сигнал, который передается по каналам связи.
Дигитайзер (оцифровыватель) – реверсивно к плоттеру. Преобразует чертежи в цифровую форму.
Аудиоадаптер (звуковая плата) – преобразует звук в цифровой форме в реальный звук.
Вычислительные сети
Передача данных на большие расстояния и параллельная обработка данных.
Обычно используется архитектура клиент-сервер.
Первой сетью считается американский военный проект (ARPANET)
Протокол – TCP/IP
Интернет – понятие гораздо более широкое, чем WWW.
Все ПО делится на уровни. В самом низшем уровне – передача электрического сигнала.
В самом высшем, например, эмейл, www, ftp и т.п.
Прикладной ур-нь – решение задач конкретного пользователя.
Так же есть сетевые уровни, на которых строится оптимальный маршрут передачи данных от пункта 1 в пункт 2.
Канальный ур-нь, транспортный ур-нь и т.п.
Вычислительные сети бывают локальные, в рамках 1го дома или фирмы. Они называются LAN (Local area network)
MAN (metropolitan area network) – в рамках 1го города.
WAN – (world area network) – мировая сеть.
500 лет до Н.Э. – изобретение счетов
1654 – изобретение логарифмической линейки
1834 – проект механической вычислительной машины
1850-60 годы, Леди Лавлейс (первый программист)
1880 – арифмоменр.
1897 – электронно-лучевая трубка.
1936 – машина Тьюринга
1944 – первая АВМ с эл-том управления.
1948 – создан транзистор
1953 – создана оперативная память на магнитных сердечниках
1955 – первые работы в области трансляторов
1957 – первый алгоритмический язык Фортран (формул транслейтор)
1967 – в СССР разработана машина БЭСМ-6 – самая передовая и быстрая серийная машина в мире.
1974 – фирма Intel разработала первый универсальный микропроцессор 8080. Начинается новая компьютерная эра
1975 – начатое серийное пр-во ПК
1982 – IBM PC/AT – персональный компьютер, жесткий диск – 40 мб.
1984 – первый ноутбук
1985 – лучший в мире язык программирования С
1989 - создан язык HTML
1991 – линукс.
1993 – компы массово стали работать с мультимедиа.
2000 – появление 64-разрядных компов
Поколения вычислительных машин
1 поколение (45-55г) – машина на лампах. Несколько тысяч операций в секунду, выполняется только 1 программа.
Приложения – исключительно космос и атомные.
2 поколение(55-65г) – на транзисторах. Так называемая пакетная обработка. Программист сдает колоды перфокарт, они помещаются в трубу и машина по очереди запускает задачи, записанные на перфокартах. Программист машины не видит, с ней работает оператор.
Приложения – наука.
3 поколение(65-75) – интегральные схемы. Мало эл-тов на одном кристалле, но они уже появились. Режим разделения времени. Расцвет языков программирования и компьютерных наук
Приложения – бизнес.
4 поколение(75-85) – появление ПК и микропроцессоров.
Приложения – компьютер стал массовым. Появились программные продукты
5 поколение(85-95) – СБИС, массовые распространения ПК, применение у каждого пользователя дома, появление графического интерфейса.
6 поколение(95-2005) – СБИС, интернет. Комп массово работает с мультимедиа.
7 поколение(2005-2015) – объединение информационных и телекоммуникационных технологий.
Программное обеспечение (software)
Выделяется 3 категории ПО:
1. Системное ПО
1.1 Операционная система. Служит для управления работы компьютера и связь с внешним миром, связь с пользователем и другими программами и управления аппаратурой. ОС работает в привилегированном режиме. В нем запрещены прерывания.
Управление задачами, памятью.
Если программа временно простаивает, то она выгружается на жесткий диск. Для этого существует файл подкачки.
Управление внешними устройствами. Само управление производит драйвер, а подключение устр-ва в общую систему обеспечивает ОС
Управление файлами
Управление свободным пространством. Дефрагментация диска.
1.2 Оболочки
Служат для управления ресурсами компьютера
1.3 Сервисное ПО (утилиты)
Проги, не решающие конкретных задач, а предназначенные для управления работой компа в той или иной мере (антивирусы, оптимизация диска, восстановление ОС, архиваторы и т.п.)
2. Инструментальное ПО
Для разработки ПО
2.1 Системы программирования.
Включает в себя компилятор, текстовый редактор, отладчик.
2.2 инструментальная среда
(напр. Visual studio ). Графический интерфейс, средства визуального программирования.
2.3 Интегрированные инструментальные среды
CASE
Computer
Aided
Software
Engineering
1) Специфицирование UML
2) Проектирование
3) Кодирование
4) Тестирование и отладка
5) Эксплуатация
6) Сопровождение
Инструментальные среды охватывают только кодирование и отладку.
Интегрированные И.С. поддерживают все этапы. Помогают строить проекты на языке UML, помогает генерировать батареи тестов для самых разных случаев, автоматическая генерация прогрмамы
3. Прикладное ПО (пакеты прикладных программ)
Служит для решения конкретных задач в той или иной предметной области.
3.1 Общего назначения
3.2 Интегрированные ППП – один интерфейс, объединены несколько программ в одном пакете.
3.3 Проблемно-ориентированные ППП
ППП в промышленности.
САПР – система автоматизированного проектирования. (проектирование СБИС, самолетов)
АСУ ТП – автоматизированные системы управления технологическими процессами (непрерывные)
ГАП – гибкое автоматизированное производство
ППП в науке
АСНИ – автоматизированная система научных исследований. Сбор инфы, моделирование.
Научно-технические расчеты. Маткад, статистик.
ИИ – искусственный интеллект.
ЭС – экспертные системы
OCR – optical character recognition (система распознавания символов)
Переводчики, словари
Бизнес
АСУ – автоматизированные системы управления
Программа бух. Учета.
КИС – корпоративная информационная система. SAP R3
Обучение
АОС – автоматизированная обучающая система
Медицина
…….