Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПС(2)16.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
116.74 Кб
Скачать

Вариант №16 Лабораторная работа 1

Организация условных переходов

Из имеющегося массива чисел осуществить выборку тех, которые имеют четное число единиц.

вар.

Исходный массив

16

162,163,164,165,166,167,168,169,170,171

Программа:

cdseg segment 'code'

assume cs:cdseg

org 100h

start:

mov cx,(offset dest)-(offset source)

mov si,offset source

mov di,offset dest

m1: mov al,0 ;обнулим ax

add al,[si] ;добавим к al байт по смещению [si]

jnp m3 ;если флаг паритета сброшен, то прыгаем на m3

stosb ;иначе сохраняем al в память по смещению [di]

m3:inc si ; увеличим si, чтобы он указывал на следующий байт

loop m1,

int 20h

;data

source db 162,163,164,165,166,167,168,169,170,171

dest db (offset dest)-(offset source) dup (0)

cdseg ends

end start

Результат:

Числа 163,165,166,169,170

Контрольные вопросы:

1. Какие бывают команды перехода?

Ответ: Команды переходов:

Безусловный переход (Jmp);

Условный переход (Jnnn) (символы nnn мнемонического кода зависят от проверяемого условия). Условные переходы бывают без учета и с учетом знака.

2. Перечислите команды условных переходов.

Ответ:

Без учета знака:

Ja/jnbe – переход, если выше (не ниже и не равно) Z,C

Jae/jnb/jnc – переход, если C=0: выше или равно (не ниже) C

Jb/jnae/jc – переход, если C=1: ниже (не выше и не равно) C

Jbe/jna – переход, если ниже или равно (не выше) A,C

Je/jz – переход, если равно (нуль): Z=1 Z

Jne/jnz – переход, если не равно (не нуль): Z=0 Z

Jp/jpe – переход, если четность: Р=1 P

Jnp/jpo – переход, если нечетность: Р=0 P

C учетом знака:

Jg/jnle – переход, если больше (не меньше и не равно) Z,S,O

Jge/jnl – переход, если больше или равно (не меньше) S,O

Jl/jnge – переход, если меньше (не больше и не равно) S,O

Jle/jng – переход, если меньше или равно (не больше) Z,S,O

Js – переход, если отрицательно: S=1 S

Jns – переход, если положительно: S=0 S

Jo – переход, если переполнение: O=1 O

Jno – переход, если нет переполнения: O=0 O

3. С помощью каких регистров признаков осуществляется каждая из них?

Ответ: Смотрите ответ на предыдущий вопрос.

4. Каков формат команд перехода, и к какому способу адресации они относятся?

Ответ: Формат команд:

Код Операнд

<метка> jmp(jnnn) r, m

В команде может использоваться либо прямая, либо косвенная адресация. При прямой в качестве операнда указывается метка, которому передается управление. При косвенной адресации операнд должен указать либо на регистр, в котором хранится смещение на оператор внутри сегмента, либо на участок памяти, где хранится адрес передачи управления.

5. По каким условиям записывается 1 в каждый из разрядов регистра состояния мп?

Ответ:

Флаг Назначение

O (Переполнение) Указывает на переполнение старшего бита (О=1) при арифметических командах.

D (Направление) Обозначает левое (D=1) или правое (D=0) направление пересылки или сравнения строковых данных.

I (Прерывание) Указывает на возможность внешних прерываний (I=1).

T (Пошаговый режим) Обеспечивает возможность работы процессора в пошаговом режиме (T=1).

S (Знак) Содержит результирующий знак при арифметических операциях (0 - плюс, 1 - минус).

Z (Ноль) Показывает результат арифметических операций и операций сравнения (0 - ненулевой, 1 - нулевой результат).

A (Внешний перенос) Содержит перенос из 3-го бита (А=1) для 8-битовых данных, используется для специальных арифметических операций.

P (Контроль четности) Показывает четность младших 8-битовых данных (1 - четное, 0 - нечетное число).

C (Перенос) Содержит перенос из старшего бита (С=1) после арифметических операций, а также последний бит при сдвигах или циклических сдвигах.