- •Архитектура эвм и вычислительных систем Организация базовой эвм
- •Регистры алу
- •Разрядность регистров
- •Классификация команд цп
- •Определение данных в цп
- •О mov ax,29 mov ah,10 (т.К. Не превышает, кодируется) mov ax,65536 перации передачи данных
- •Целые числа и операции над ними
- •Разветвление в программах
- •Безусловный переход
- •Уловный переход
- •Логические операции
- •Использование подпрогамм и выделение повторяющихся частей кода
- •Использование стека в процедурах. Организация процедуры
- •Адресация и виды адресации
- •Сдвиговые операции
Уловный переход
Если при безусловном переходе всего на всего регистр iep (указатель на следующую инструкцию) записывает адрес того места, куда нужно перейти и при этом не анализируются какие-либо данные, то условный переход может производиться лишь по анализу результатов, записанных во флаги
Флаговый регистр
Каждый бит флагового регистра в разные моменты меняет свое значение. Если флаг выставлен, значит во флаговом бите 1, если нет, то 0. Основные флаги:
Of (overflow flag) – флаг переполнения
Cf (carry flag) – флаг переноса
Zf (zero flag) – флаг нуля (да или нет)
Pf (parity flag) – флаг четности/нечетности
Sf – флаг знака
Команда сравнения cmp работает по тому же принципу, что и sub: происходит вычитание, при этом, если выполнение команды sub привело к отрицательному числу, то флаги sf и zf меняются, если числа при вычитании были одинаковы, то zf = 0. Первый операнд при выполнении команды cmp не меняется
Операции условного перехода с анализом флагов
je (jmp equal) – прыжок, если a=b
jne (jmp not equal) – прыжок, если a!=b
jb (jmp big)
jo |
Прыжок, если |
of |
=1 |
jc |
cf |
||
js |
sf |
||
jz |
zf |
||
jp |
pf |
||
jno |
of |
=0 |
|
jnc |
cf |
||
jns |
sf |
||
jnz |
zf |
||
jnp |
pf |
je |
equal |
= |
jne |
non equal |
!= |
jg |
Gather |
> (знак) |
jl |
Lower |
< (знак) |
ja |
Above |
> (без знака) |
jh |
below |
< (без знака) |
Логические операции
And – логическое «и» – проводится над двумя операндами. С помощью этой команды можно, как правило, установить определенные биты первого операнда в 0
Or – логическое «или» – проводится над двумя операндами. Позволяет установить определенные биты первого операнда в 1
Xor – «исключающее или» – проводится над двумя операндами. Позволяет проверять определенные биты первого операнда.
Использование подпрогамм и выделение повторяющихся частей кода
Повторяющиеся части программ являются, как правило, большим минусом, т.к. код из-за этого загромождается данными и одинаковыми фрагментами, поэтому в таких случаях часто используются процедуры и циклы.
Стек – это конструкция, которая сопутствует каждой программе и является таким же сегментом, как сегмент кода/данных. Со стеком работает 3 регистра:
ss – содержит адрес сегмента стека
esp/sp – указывает на вершину стека, т.е. содержит адрес самого верхнего элемента всех конструкций
ebp/bp – адрес базы кадра стека содержит в себе адрес того элемента стека, к которому необходимо обратиться произвольно
Основные свойства стека:
Стек не может превышать размер в 64кб (Только в случае 16и разрядных регистров или в случае использование 16и разрядного ЦП)
Стек не может быть больше 4Гб (в случае 32у разрядных регистров)
Элементы стека работают по принципу LIFO (Last input First output)
Со стеком можно работать с помощью команд:
push <операнд> (выставляет операнд на вершину стека). При вставке каждого следующего значения в стек, стек расширяется в сторону дна, при этом предыдущий верхний элемент не перезаписывается, а всего лишь спускается ниже
pop <операнд> (забирает из стека самый верхний элемент и помещает его в операнд). Таким образом верхним элементом стека становится предыдущий