- •Архитектура эвм и вычислительных систем Организация базовой эвм
- •Регистры алу
- •Разрядность регистров
- •Классификация команд цп
- •Определение данных в цп
- •Целые числа и операции над ними
- •Разветвление в программах
- •Безусловный переход
- •Уловный переход
- •Логические операции
- •Использование подпрогамм и выделение повторяющихся частей кода
- •Использование стека в процедурах. Организация процедуры
- •Адресация и виды адресации
- •Сдвиговые операции
Определение данных в цп
byte = 28 – M
word = 216 – слово
dword = 232 – удвоенное слово
qword = 264 – учетверенное слово
Операции передачи данных
mov ax,29
mov ah,10
(Т.к. не превышает, кодируется)
mov ax,65536
mov – пересылка данных <куда>,<что>
Передаются:
-
Регистр – регистр
-
Память – регистр
-
Регистр – память
Целые числа и операции над ними
В ЭВМ «+» и «-» числа представляются по-разному
Математические операции:
add |
сложение mov ax,2 ax [00(ah) 02(al)] mov bx,4 bx [00(bh) 04(bl)] add ax,bx ax [00(ah) 06(al)] sub bx,ax bx [00(bh) 02(bl)] sub ax,bx ax [10 02] inc ax (3) dev ax (1) |
sub |
вычитание |
mul |
умножение |
div |
деление |
inc |
увеличение +1 |
dec |
уменьшение -1 |
mov |
добавление |
Разветвление в программах
Разветвление – это механизм, позволяющий произвести в программе разделение хода ее выполнения. Разветвления в программах НЕ дают возможности выполнять одну и вторую ветвь одновременно. Для организации разветвления существует 3 основные операции:
-
Безусловный переход
-
Условный переход
-
Процедуры (см. таблицу процедур)
Безусловный переход
Безусловный переход – производится без каких-либо условий, а именно: с установленного места перехода ЦП идет туда, куда ему предписано идти программой. Безусловный переход состоит из команды перехода и метки. Меткой называется адрес, на который переходит ЦП в момент, когда он встречает саму команду перехода. Безусловный переход может производиться как по ходу, так и против хода программы.
jmp (после метки «:»)
mov ah,10
(Т.к. не превышает, кодируется)
mov ax,65536
Определение полей данных
Поле памяти может иметь размер в 1б, слово, двойное слово, учетверенное слово, в зависимости от размерности поля в нем можно хранить определенный размер данных
Основные сегменты программы
Программа в памяти состоит из 3х основных сегментов:
-
Сегмент данных (содержит в себе данные, определяемые нами в программе. Его адрес загружается в сегментный регистр ds)
-
Сегмент кода (часть программы, которая содержит в себе операции над данными или код. Этому сегменту соответствует регистр cs, в которыый загружается адрес этого сегмента)
-
Сегмент стека (регистр ss содержит адрес стека)
В 16и разрядной архитектуре процессора max размер сегмента кода или данных 64кб, в 32ух разрядной – 4Гб
.data
.code
start:
mov ax,@data
mov ds,ax
Уловный переход
Если при безусловном переходе всего на всего регистр iep (указатель на следующую инструкцию) записывает адрес того места, куда нужно перейти и при этом не анализируются какие-либо данные, то условный переход может производиться лишь по анализу результатов, записанных во флаги
Флаговый регистр
Каждый бит флагового регистра в разные моменты меняет свое значение. Если флаг выставлен, значит во флаговом бите 1, если нет, то 0. Основные флаги:
-
Of (overflow flag) – флаг переполнения
-
Cf (carry flag) – флаг переноса
-
Zf (zero flag) – флаг нуля (да или нет)
-
Pf (parity flag) – флаг четности/нечетности
Команда сравнения 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 |
< (без знака) |