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



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа «Логические операции»

Поиск

Составить рабочую программу для вычисления выражения.

Варианты заданий.

1. .

2. .

3. .

4. .

5. .

 


Команды сравнения и команды переходов

 

Практическое занятие «Команды сравнения и команды переходов»

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

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

Сравнение выполняется при помощи АЛУ посредством внутреннего вычитания. Первое из сравниваемых чисел размещается в аккумуляторе, второе может находиться в одном из регистров РОН или в памяти.

Особенностью команд сравнения является то, что содержимое аккумулятора и регистра не изменяются при выполнении команды.

Флаги регистра признаков устанавливаются в зависимости от результата сравнения. Команды сравнения используют те же методы адресации, что арифметические и логические команды:

CMP R - сравнение содержимого аккумулятора и регистра;

CMP M - сравнение содержимого аккумулятора и ячейки памяти, адрес которой хранится в регистровой паре (H, L);

CPI <data> - сравнение содержимого аккумулятора с содержимым второго байта команды.

Команды переходов предназначены для изменения последовательности выполнения команд программы. Команды переходов позволяют организовать в программах циклы и ветвления.

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

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

JMP <addr> – безусловный переход по адресу, который указан во втором и третьем байтах команды.

 

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

JC <addr> – переход, если есть перенос в старший байт или заем; флаг переноса CY=1. В противном случае выполняется следующая команда;

JNC <addr> - переход, если нет переноса или заема; флаг переноса CY=0. В противном случае выполняется следующая команда;

JZ <addr> - переход, если результат в аккумуляторе равен нулю; флаг нуля Z=1. В противном случае выполняется следующая команда;

JNZ <addr> - переход, если результат в аккумуляторе не равен нулю; флаг нуля Z=0. В противном случае выполняется следующая команда;

JP <addr> - переход, если флаг знака S=0, т.е. в аккумуляторе находится положительное число. В противном случае выполняется следующая команда;

JM <addr> - переход, если флаг знака S=1, т.е. в аккумуляторе находится отрицательное число. В противном случае выполняется следующая команда;

JPE <addr> - переход, если флаг знака P=1, т.е. число в аккумуляторе содержит четное количество единиц. В противном случае выполняется следующая команда;

JPO <addr> - переход, если флаг знака P=0, т.е. число в аккумуляторе содержит нечетное количество единиц. В противном случае выполняется следующая команда.

Пример 1. Сравнить два однобайтных числа, находящихся в регистрах D и ЯП (0800). Большее из чисел записать в ЯП (0801).

 

Таблица 9 – Пример программы

 

Адрес ЯП Мнемоническое обозначение Код Комментарий
  LDA 3A Содержимое ЯП (0800) переслать в аккумулятор А
     
     
  CMP D BA Сравнение A и регистра D
  JNC D2 Условный переход по нулевому значению триггера переноса по адресу (0909)
     
     
  MOV A, D Содержимое регистра D переслать в а А
  STA   Переслать содержимое аккумулятора в ЯП (0801)
     
090А    
090B HLT   Останов

 

Пример 2. Если однобайтное число в регистре В четное, то его проинвертировать и записать в ЯП (0800), если нечетное, записать его в ЯП (0801).

 

Таблица 10 – Пример программы

Адрес ЯП Мнемоническое обозначение Код Комментарий
  MOV A, B   Содержимое регистра B переслать в А
  CPI FE Сравнение содержимого аккумулятора с нулем
     
  JPO E2 Условный переход по нечетному коду результата по адресу (090D)
  0D 0D
     
  CMA 2F Инвертирование содержимого А
  STA   Переслать содержимое аккумулятора в ЯП (0800)
     
     
090A JMP С3 Безусловный переход по адресу (0910)
090B    
090C    
090D STA   Переслать содержимое аккумулятора в ЯП (0801)
090E    
090F    
  HLT   Останов


Поделиться:


Последнее изменение этой страницы: 2016-08-12; просмотров: 319; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.81.228 (0.005 с.)