Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура ЭВМ и вычислительных систем.docx
Скачиваний:
4
Добавлен:
22.12.2018
Размер:
41.95 Кб
Скачать

Определение данных в цп

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 основные операции:

  1. Безусловный переход

  2. Условный переход

  3. Процедуры (см. таблицу процедур)

Безусловный переход

Безусловный переход – производится без каких-либо условий, а именно: с установленного места перехода ЦП идет туда, куда ему предписано идти программой. Безусловный переход состоит из команды перехода и метки. Меткой называется адрес, на который переходит ЦП в момент, когда он встречает саму команду перехода. Безусловный переход может производиться как по ходу, так и против хода программы.

jmp (после метки «:»)

mov ah,10

(Т.к. не превышает, кодируется)

mov ax,65536

Определение полей данных

Поле памяти может иметь размер в 1б, слово, двойное слово, учетверенное слово, в зависимости от размерности поля в нем можно хранить определенный размер данных

Основные сегменты программы

Программа в памяти состоит из 3х основных сегментов:

  1. Сегмент данных (содержит в себе данные, определяемые нами в программе. Его адрес загружается в сегментный регистр ds)

  2. Сегмент кода (часть программы, которая содержит в себе операции над данными или код. Этому сегменту соответствует регистр cs, в которыый загружается адрес этого сегмента)

  3. Сегмент стека (регистр 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

< (без знака)