- •Энтропия
- •Преобразование из 10тиричной системы в проивольную
- •Сбис – Сверх Большая Интегральная схема
- •Триггер
- •Сумматор
- •Машинные команды
- •If (interruption flag) – 1, когда имеет место прерывание.
- •Способы адресации
- •Машина Тьюринга
- •11111 – Х штук скопировать 11111 х штук * 11111 еще х штук.Потребуется некий счетчик
- •Аппаратное обеспечение (hardware)
- •Устройства памяти
- •Вычислительные сети
- •Поколения вычислительных машин
- •Программное обеспечение (software)
Способы адресации
КОП А
Операнд может быть 3 типов.
Может стоять какое-то конкретное значение. Напр. ADD x,6 (х=х+6)
Некий адрес. Тогда ADD x,y (значение берется из ячейки памяти по данному адресу. X=x+y)
По адресу хранится не значение, а адрес, в котором хранится значение
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
Y
Z
Z
POP Z
Формат машинной команды – это как в ячейке памяти хранится маш. Команда, код операции, способ адресации, адреса операндов и т.д.
Проектирование системы команд компьютера
Это самый важный этап разработки нового процессора
Команда, в отличие от операнда, занимает несколько ячеек в памяти
Длина команды кратна длине ячейки команды
Распределение полей в команде:
Сколько бит под опер.
Компромисс между увеличением числа операций и отведения места под операнды.
Основы языка Ассемблера (автокод)
Появился в 50е коды и представляет собой способ символической записи машинных команд
Ассемблер разрабатывается для любого процессора.
Программы на языке Ассемблера тоже компилируются и переводятся в машинные команды
Ассемблер используется для защиты от взломов и наоборот.
На ассемблере пишутся вставки для языков высокого уровня, там, где нужно наиболее высокое быстродействие.
Написание вставки на ассемблере позволяет максимально оптимизировать кол-во и последовательность машинных команд.
Характеристики ассемблера
Использует мнемокоды для команд и адресов, что позволяет быстрее понимать и изменять программу
Ассемблер – это первый язык программирования
Функции ассемблера
Распределение памяти
Перевод команд в коды
Поиск ошибок
Построение «объектного модуля» в машинных кодах
Построение листинга
Ассемблер использует все вышеперечисленные способы адресации.
В ассемблере каждая команда пишется на отдельной строке
В ассемблере так же используются процедуры и ф-ии.
В отличие от обычных языков у процедур нет параметров
Искусство написания программ на ассемблере – это умение использовать разные способы адресации, регистры и так называемые прерывания для обращения к внешним устр-вам.
Программа состоит из модулей, а модули из сегментов.
Сегментов – 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?
Mov x,7
В ячейке 0122 будет записано 7
Mov [x],x в ячейке 0125 будет записано 5
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; программа старт запускается на выполнение (переход на начало исполняемого кода)
Для выполнения специфических действий, напр ввода-вывода, надо занести в определенные регистры определенные значения
