Je eql              ; переход, если элемент mas равен 5



Jl low               ; переход, если элемент mas меньше 5

Jg grt              ; переход, если элемент mas больше 5

eql:

low:

grt:

 

(слайд №13)

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

 

       Мнемоническое обозначение некоторых команд условного перехода отражает название флага, с которым они работают, и имеет следующую структуру: первой буквой идет символ «j» (jump, переход) вторым – либо обозначение флага, либо символ отрицания «n», после которого стоит название флага. Такая структура команды отражает ее назначение. Если символа «n» нет, то проверяется состояние флага, и, если он равен 1, производится переход на метку перехода. Если символ «n» присутствует, то проверяется состояние флага на равенство 0, и в случае успеха производится переход на метку перехода. В следующей таблице приведены все эти команды:

 

Название флага Номер бита в eflags/falgs Команды условного перехода Значение флага для осуществления перехода
флаг переноса cf 1 j c cf = 1
флаг четности pf 2 jp pf = 1
флаг нуля zf 6 jz zf = 1
флаг знака sf 7 js sf = 1
флаг переполнения of 11 jo of = 1
флаг переноса cf 1 jnc cf = 0
флаг четности pf 2 jnp pf = 0
флаг нуля zf 6 jnz zf = 0
флаг знака sf 7 jns sf = 0
флаг переполнения of 11 jno of = 0

 

       Эти команды можно использовать после любых команд, изменяющих указанные флаги.

(слайд №14)

Пример:

 

В данном примере производится замена в строке символов длиной n байт малых (строчных) букв английского алфавита на большие (прописные). Суть алгоритма заключается в кодах ASCII данных букв. А именно: в таблице ASCII строчные и прописные буквы упорядочены по алфавиту. Строчным буквам английского алфавита соответствует диапазон кодов 61h – 7Ah, а прописным – 41h – 5Ah. Для того, чтобы понять идею, лежащую в основе алгоритма преобразования, достаточно сравнить представления соответствующих прописных и строчных букв в двоичном виде:

a – 0110 0001                                    z – 0111 1010

A – 0100 0001                                   Z – 0101 1010

 

Как видно из приведенного двоичного представления, для выполнения преобразования между строчными и прописными буквами достаточно всего лишь инвертировать 5-ый бит.

 

Model small

Stack 100h

Data

N equ 10                                            ; количество символов в stroka

stroka db “acvfgrndup”

Code

start:

       mov ax, @data

Mov ds, ax

Xor ax, ax

Mov cx, n

Lea bx, stroka ; адрес stroka в bx

m1:

       mov al , [ bx ]   ; очередной символ из stroka в al

Cmp al , 61 h     ; проверить, что код символа не меньше 61h

Jb next             ; если меньше, то не обрабатывать и перейти к следующему символу

Cmp al , 7 ah     ; проверить, что код символа не больше 7 A h

Ja next             ; если больше, то не обрабатывать и перейти к следующему символу

And al , 11011111 b                 ; инвертировать 5-ый бит

       mov [ bx ], al    ; символ на его место в stroka

next:

Inc bx              ; адресовать следующий символ

Dec cx              ; уменьшить значение счетчика в cx

Jnz m 1            ; если cx не 0, то переход на m1

exit:

Mov ax, 4c00h

Int 21 h             ; возврат управления ОС

End start

 

(слайд №15)

3.3.4. Команды условного перехода и регистр ecx/cx.

 

       Архитектура микропроцессора предполагает специфическое использование многих регистров. К примеру, регистр eax/ax/al используется как аккумулятор, а регистры bp, sp – для работы со стеком. Регистр ecx/cx тоже имеет определенное функциональное назначение – он выполняет роль счетчика в командах управления циклами и при работе с цепочками символов.

       Синтаксис этой команды условного перехода таков:

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

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

 

       Эти команды удобно использовать при организации цикла и при работе с цепочками символов. В отличие от других команд условной передачи управления, команда jcxz/jecxz может адресовать только короткие переходы – на -128 байт или +127 байт от следующей за ней командой.


Дата добавления: 2022-07-02; просмотров: 15; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!