Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
default.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
256.51 Кб
Скачать

4.4 Теоретичні відомості про команди мови Assembler

4.4.1. Команди арифметичниз операцій

При організації лінійних процесів на мові Асемблер використовують такі команди, як:

mov – команда передачі значення;

add – команда додавання;

sub – команда віднімання;

mul – команда множення;

div – команда ділення;

xchg – команда обміну значень.

Розглянемо кожну з наведених команд.

4.4.2. Команди передачі значень:

1) команда mov (передача): mov op1, op2.

По команді mov на місце першого операнда передається значення іншого операнда: op1:=op2. Команда не впливає на прапорці регістра FLAGS.

Приклади:

mov AX,500; означає A=500

mov BL,DH; означає BL=DH

По команді mov можна передавати як байт, так і слово.

2) команда xchg (обмін значень): xchg op1,op2

Ця команда обмінює значення своїх операндів (вони мають бути байтами, або словами);

op1 <=> op2. Команда не впливає на прапорці.

Приклади:

mov AX,62; AX=62

mov SI,135; SI=135

xchg AX,SI; AX=135, SI=62

4.4.3.Команди додавання і віднімання.

Команда add (додавання): add op1,op2

Команда sub (віднімання): sub op1,op2

Команда add додає операнди та заносить їхню суму на місце першого операнда: op1:=op1+op2.

По команді sub від першого операнда віднімається другий операнд, здобута різниця заноситися на місце першого операнда:

op1:=op1-op2.

Приклад:

add AH,12; AH:=AH+12

sub SI,z; SI:=SI-z

add z,-300; z:=z+(-300)

Команди add та sub працюють як з числами розміром у байт, так і з числами розміром у слово. Не можна, щоб один з операндів був байтом, а інший - словом.

4.4.4 Команди множення й ділення.

Процесори Intel «вміють» множити і ділити цілі числа, тобто ці операції входять в набір команд, а значить реалізуються символічними командами Асемблера.

1) команда mul (множення): mul op

Операнд op, зазначений у команді - це лише один зі співмножників; він може знаходитись у регістрі чи в пам'яті, але не може бути безпосереднім операндом. Як не дивно, операція множення виглядає як унарна операція. Проте це маленький секрет Асемблера, бо місцезнаходження іншого співмножника зафіксовано, і тому в команді не вказується. При множенні цілих операндів зі знаком, використовується команда imul op.

2) команда div (ділення): div op

Аналогічно команді множення.

Приклад обчислення арифметичного виразу

Нехай треба обчислити вираз f=(7x+12z)/(y-5)

Нижче приведена фрагмент коду на Асемблері, що це завдання вирішує:

………….

mov ax,7

imul x

xchg ax,bx

mov ax,12

imul z

add ax,bx

mov cx,y

mov bx,5

sub cx,bx

idiv cx

mov f,ax

……………

4.4.5Команди умовного Перехіду

Більш чи менш складний алгоритм потребує організовувати обчислення більш складним чином ніж проста послідовність дій. Така організація вимагає наявності команд, що реалізують перехід за тієї чи іншої умови. Такі команди має процесор, і відповідно Асемблер їх відтворює. Всі команди умовного Перехіду можна поділити на три групи. У першу групу входять команди, що ставляться після команди порівняння. У їх мнемокодах за допомогою певних символів описується той чи інший результат порівняння, за яким відбувається перехід. Це такі символи:

E – equal (дорівнює)

N – not (не)

G – greater (більше) - для чисел зі знаком

L – less (менше) - для чисел зі знаком

A – above (вище) - для чисел без знака

B – below (нижче) - для чисел без знака

Далі наведені назви усіх команд умовного Перехіду, що використовуються

після команди порівняння (через слеш вказані назви-синоніми):

Таблиця 4.1

Команди умовного Перехіду, що використовуються після команди порівняння

Мнемокод

Змістовна умова для Перехіду.

після CMP ор1, ор2

Стан прапорців для Перехіду

для будь-яких чисел

je

jne

op1=op2

op1<>op2

zf=1

zf=0

для чисел зі знаком

jl/jnge

jle/jng

jg/jnle

jge/jnl

op1<op2

op1<=op2

op1>op2

op1>=op2

sf<>of

sf<>of або zf=1

sf=of і zf=0

sf=of

для чисел без знаку

jb/jnae

jbe/jna

ja/jnbe

jae/jnb

op1<op2

op1<=op2

op1>op2

op1>=op2

cf=1

cf=1 або zf=1

cf=0 і zf=0

cf=0

До другої групи команд входять ті, що ставляться після команд, відмінних від команд порівняння, і ті, які реагують на те чи інше значення якого-небудь визначеного прапорця.

Таблиця 4.2

Команди умовного Перехіду, які реагують на те чи інше значення прапорця

Мнемокод

Умова Перехіду

Мнемокод

Умова Перехіду

jz

js

jc

jo

jp

zf=1

sf=1

cf=1

of=1

pf=1

jnz

jns

jnc

jno

jnp

zf=0

sf=0

cf=0

of=0

pf=0

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]