Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lectures / 09

.pdf
Скачиваний:
43
Добавлен:
16.04.2013
Размер:
146.03 Кб
Скачать

Команда jmp: Примеры (VI)

6

data segment

addr_m1 dd m1 data ends

code1 segment ….

jmp addr_m1 ….

jmp m1 code1 ends

code2 segment

….

m1 label far ….

code2 ends

Косвенный межсегментный

Прямой межсегментный

Команда сравнения cmp

cmp оп1, оп2

Сравнивает два операнда: оп1 - оп2

Устанавливает флаги: cf

pf

af - по этому флагу нет условного перехода zf

sf of

Команды условного перехода jxx

jcc метка_перехода

Значение аббревиатур в командах jcc:

 

Англ.

Рус.

Тип операнда

 

 

 

 

e

Equal

Равно

Любой

n

Not

Не

Любой

 

 

 

 

g

Greater

Больше

Числа со знаком

l

Less

Меньше

Числа со знаком

 

 

 

 

a

Above

Выше (>)

Числа без знака

b

Below

Ниже (<)

Числа без знака

 

 

 

 

Команды условного перехода jxx

Мнемо-

 

Типы

 

Критерий

 

Значение

 

 

 

код

 

операндов

 

перехода

 

флагов

je

 

Любые

 

оп1 = оп2

 

zf = 1

jne

 

Любые

 

оп1 оп2

 

zf = 0

 

 

 

 

 

 

 

 

jl/jnge

 

Со знаком

 

оп1

< оп2

 

sf of

jle/jng

 

Со знаком

 

оп1

<= оп2

 

sfof or zf=1

jg/jnle

 

Со знаком

 

оп1

> оп2

 

sf=of and zf=0

jge/gnl

 

Со знаком

 

оп1

>= оп2

 

sf = of

 

 

 

 

 

 

 

jb/jnae

 

Без знака

 

оп1 < оп2

 

cf = 1

jbe/jna

 

Без знака

 

оп1 <= оп2

 

cf=1 or zf=1

ja/jnbe

 

Без знака

 

оп1 > оп2

 

cf=0 and zf=0

jae/jnb

 

Без знака

 

оп1 >= оп2

 

cf = 0

 

 

 

 

 

 

 

 

Команды условного перехода: Пример 1

.data

n equ 50

m db n dup (?)

Обнулить поле длиной 50 байтов

.code

xor m1: mov

inc cmp

jne

...

bx,bx

m[bx],0 bx

bx, n m1

Другой способ (короче):

mov bx,n

m1: mov m[bx-1],0 dec bx

jne m1 ;или jnz m1

Команды условного перехода: Пример 2

.data

 

 

 

mas

db 50 dup (?)

.code

 

 

cmp

mas[si], 5

 

 

je

eql

 

 

После команды,

 

устанавливающей флаги,

 

jl

less

 

можно использовать

 

jg

grt

несколько команд

 

условного перехода

eql: ;если элемент=5 less: ;если элемент<5 grt: ... ;если элемент>5

Команды условного перехода по

значению флага

Мнемокод

Название

Значение флага

флага

для переноса

 

jc

Переноса

cf = 1

jp/jpe

Четности

pf = 1

jz

Нуля

zf = 1

js

Знака

sf = 1

jo

Переполнения

of = 1

 

 

 

jnc

Переноса

cf = 0

jnp/jpo

Четности

pf = 0

jnz

Нуля

zf = 0

jns

Знака

sf = 0

jno

Переполнения

of = 0

Команды условного перехода по

значению регистра cx/ecx

jcxz метка_перехода

Переход, если cx =0

jecxz метка_перехода

Переход, если ecx =0

Команда цикла loop

loop метка

Декремент cx

Сравнение cx с нулем:

если cx>0, то переход на метку

если cx=0, то выполнение следующей после loop команды

Команда цикла loop: Пример

.data

 

 

 

 

 

Увеличить

mas

dw 5,7,-4,…,78

каждый из

.code

 

 

20

 

 

элементов

….

 

 

 

 

массива на 5

 

 

 

 

 

 

 

mov cx,20 ; счетчик цикла

 

xor

si,si

 

m1:

add

mas[si],5

 

 

add

si,2 ; к след. элементу

loop m1

….

Соседние файлы в папке Lectures