Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Завдання на роботу. Написати асемблер-програму для множення двобайтового беззнакового операнду Х на константу 51,72





Написати асемблер-програму для множення двобайтового беззнакового операнду Х на константу 51,72.

Таблиця 7.1 - Варіанти завдань

Тип операнду Х Константа
  однобайтовий знаковий 3,13
  двобайтовий беззнаковий 5,28
  однобайтовий знаковий 7,41
  двобайтовий беззнаковий 6,59
  однобайтовий знаковий 13,62
  двобайтовий беззнаковий 17,37
  однобайтовий знаковий 47,16
  двобайтовий беззнаковий 33,26
  однобайтовий знаковий 27,74
  двобайтовий беззнаковий 44,26
  однобайтовий знаковий 47,54
  двобайтовий беззнаковий 35,83
  однобайтовий знаковий 41,58
  двобайтовий беззнаковий 22,47

7.4 Приклад оформлення звіту

X×51,72 = 51×X+0,72×X;

51=32+16+2+1=25+24+21+20;

0,72» 0,5+0,125+0,0625+0,03125=2-1+2-3+2-4+2-5.

MOV AX, X ® занесення Х до регістру АХ;

MOV BX, X ® занесення Х до регістру ВХ;

SHR AX, 1 ® АХ=Х/2;

MOV CX, AX ® СХ=Х/2;

SHR AX, 2 ® АХ=Х/8;

ADD CX, AX ® СХ=Х/2+Х/8;

SHR AX, 1 ® АХ=Х/16;

ADD CX, AX ® СХ=Х/2+Х/8+Х/16;

SHR AX, 1 ® АХ=Х/32;

ADD CX, AX ® СХ=Х/2+Х/8+Х/16+Х/32;

ADD CX, BX ® СХ=Х+Х/2+Х/8+Х/16+Х/32;

XOR DX, DX ® обнулення старшої частини добутку;

SHL BX, 1 ® ВХ=2Х

RCL DX, 1

ADD CX, BX ® СХ=2Х+Х+дробова частина

ADC DX, 00

SHL BX, 3 ® ВХ=16Х

RCL DX, 3

ADD CX, BX ® СХ=16Х+2Х+Х+дробова частина

ADC DX, 00

SHL BX, 1 ® ВХ=32Х

RCL DX, 1

ADD CX, BX ® СХ=32Х+16Х+2Х+Х+дроб. частина

ADC DX, 00


ЛАБОРАТОРНА РОБОТА №8

 

КОМАНДИ БЕЗУМОВНОГО ТА УМОВНОГО ПЕРЕХОДІВ

 

8.1 Мета роботи

 

Освоїти безумовний та умовний перехід у написанні асемблер-програм.

 

8.2 Теоретичні відомості

JLE/JNG-перехід, якщо менше або рівно/перехід, якщо більше

Якщо (SF)#(OF) або (ZF) = 1, то (IP) (IP) + Disp8.

Команди передають управління за адресою, що задається цільовим операндом, за умови, що прапорці SF і OF не рівні, або якщо прапорець ZF встановлений в 1. В іншому випадку виконується наступна по черзі команда. Адреса цільового операнда обчислюється додаванням байта зсуву з адресою наступної команди. Оскільки зсув є 8-бітовим цілим числом із знаком, то команди JNE/JNG можуть передавати управління за адресою в діапазоні + 127 ¸ - 128 байт від кінця команди. Ці команди корисно використовувати при порівнянні чисел із знаком.

Приклад. Нехай в регістрі СХ записано число D700H, в регістрі ВР - число 0124Н і виконується наступна послідовність команд:

  СМР СХ,ВР
JLE NEXT
AND AL,00
RET  
NEXT: ADD АХ, 127

Перша команда встановлює прапорець SF в 1 і скидає прапорець OF в 0. Після виконання другої команди управління передається за адресою NEXT і виконується команда ADD АХ,127. Це означає, що вміст регістра СХ не більше вмісту регістру ВР.

Якщо регістр СХ містить число 0125Н, регістр ВР - число 0124Н, то перша команда скине в 0 обидва прапорці SF і OF і замість передачі управління за адресою NEXT наступною виконуваною командою буде AND AL,00.

 

JA/JNBE – перехід, якщо більше/перехід, якщо не менше або рівно

Якщо(CF) = 0 і (ZF) = 0, то (IP) (IP) + Disp 8.

 

Команди здійснюють передачу управління за адресою, яка задається цільовим операндом, при виконанні умови одночасної рівності нулю прапорців CF і ZF. В іншому випадку виконується наступна команда. Адреса цільового операнда генерується додаванням байта зміщення з адресою наступної команди. Так як байт зміщення представляє собою 8-бітове ціле знакове число, команди можуть вказувати адресу переходу в діапазоні +127 байт ¸ –128 байт від послідньої адреси команди. Команди зручно використовувати при порівнянні беззнакових чисел.

Приклад. Нехай регістр AL містить число 62Н і виконується наступна послідовність команд:

 

CMP AL,60H

JA UPPER

RET

UPPER: AND AL,5EH

 

Перша команда в цій послідовності здійснює зкидання в нуль прапорців CF і ZF. Після виконання команди JA UPPER управління передається команді з адресою UPPER і виконується команда AND AL,5EH. Це свідчить про те, що вміст регістру AL більший за шіснадцяткове число 60Н.

Якщо регістр AL містить число 41Н, то в наведенному прикладі в результаті виконання першої команди прапорець CF буде встановлений в 1 і наступною за командою JA буде виконуватися команда RET.

JAE/JNB/JNC – перехід, якщо більше чи рівно/перехід, якщо не менше/перехід, якщо нема переносу


Якщо (CF) = 0, то (IP) (IP) + Disp 8.

 

При виконанні умови рівності нулю прапорця CF команди передають управління за адресою, яка задана цільовим операндом. В іншому випадку виконується наступна команда. Адреса цільового операнда визначається додавання байта зміщення з адресою наступної команди. Так як байт зміщення є 8-бітове ціле знакове число, то команди JAE/JNB/JNC можуть передавати управління командам з адресою пам’яті з діапазону +127байт ¸ –128байт. Команди використовуються для порівняння беззнакових чисел.

 

Приклад. Нехай регістр ВХ містить число D823H і виконуються наступні команди:

 

SUB BX,100H

JAE ERROR

CALL NEW

RET

ERROR: ADD DL,125

 

Перша команда скидає в нуль прапорець CF. Після виконання другої команди управління передається команді ADD DL,125 з адресою ERROR. Це означає, що вміст регістру BX більший за число 100Н або рівний йому.

Якщо в регістрі ВХ записане число 0047Н, то в приведеному прикладі при виконанні першої команди прапорець CF буде встановлений в одиницю і наступною командою буде CALL NEW.

 

 

JB/JNAE/JC – перехід, якщо менше/перехід, якщо не більше або рівно/перехід,тобто, перенесення

Якщо (CF) = 0, то (IP) (IP) + Disp 8.

 

Команди передають управління за адресою, при умові, що прапорець перенесення CF встановлений в 1. Інакше виконується наступна по черзі команда. Оскільки байт зсуву є 8-бітове ціле число із знаком, то команди JB/JNAF/JC можуть передавати управління командам з адресами з діапазону -127байт-¸+128байт від останньої адреси команди переходу.

Приклад. Нехай регістр AL містить 00, однобайтова комірка пам'яті TEST-BIT містить 1 і виконується наступна послідовність команд:

 

  CMP AL,TEST_BIT
  JB PARITY
  AND DL,AL
  RET  
PARITY: HLT  

Команда CMP AL,ТEST_BIT встановлює прапорець CF в 1. Після виконання другої команди управління передається команді з адресою PARITY, тобто команді HLT. Це означає, що вміст регістра AL менше вмісту комірки пам'яті TEST-BIT. Якщо регістр AL і комірка пам'яті TEST-BIT містять одне і те ж число 00, то при виконанні першої команди прапорець CF буде скинений в 0 і виконуватиметься наступна команда - AND AL.DL.

JBE/JNA - пе рехід, якщо менше або рівно/перехід, якщо не більше

Якщо (CF)=1 або (ZF)=1, тo (IP) (IP) + Disp8.

Команди передають управління за адресою, що задається цільовим операндом, за умови, що прапорець перенесення CF або прапорець нуля ZF встановлені в 1. В іншому випадку виконується наступна по черзі команда. Адреса цільового операнду обчислюється додаванням байту зсуву з адресою наступної команди. Оскільки зсув є 8-бітове ціле число із знаком, то команди JBE/JNA можуть передавати управління командам з адресами з діапазону +127 байт ¸ –128 байт від останньої адреси команди переходу. Команди JBE/JNA є корисними при порівнянні цілих чисел із знаками.

Приклад. Нехай двобайтовий елемент пам'яті NEW_DATA містить число 0001Н і виконуються команди

 

CMP WORD PTR NEW_DATA,01

JBH FOUND

CLD

RET

FOUND: AND AL.00


Оскільки обидва операнди першої команди рівні один одному (обидва рівні 01), то після її виконання буде встановлений в одиницю прапорець ZF. Після виконання другої команди управління буде передано за адресою FOUND, де знаходиться команда AND AL.00, яка виконується наступною після JBE FOUND командою. Це означає, що вміст двобайтовї комірки пам’яті NEW_DATA менше або рівно значенню другого операнду (в даному випадку 1).

Якщо в елементі пам'яті NEW_DATA міститься число 0024Н, то відбудеться перехід до команди CLD

 

JCXZ-перехід, якщо вміст регістра СХ рівний нулю

Якщо (СХ) = 0, то (IP) (IP) + Disp8.

 

Команда передає управління за адресою, що задається цільовим операндом, за умови, що вміст регістра СХ рівний 0. Інакше виконується наступна за JCXZ команда. Адреса цільового операнда обчислюється додаванням байта зсуву з адресою наступної команди. Оскільки зсув є 8-бітове ціле число із знаком, то команда може вказувати адресу переходу в діапазоні.+ 127 байт¸ -128 байт від кінця команди.

Приклад. Нех ай в регістрі СХ міститься число 0001Н і виконується наступна послідовність команд:

 

DEC CX

JCXZ SKIP_REPEAT

CALL REPEAT

RET

SKIP_REPEAT: STD

 

Перша команда зменшує вміст регістру СХ до 0. Після виконання другої команди управління буде передано команді STD з адресою SKIP_REPEAT.

 

 

JE/JZ-перехід, якщо рівно/перехід по нулю

Якщо (ZF)=1, то (IP) (IP) + Disp8.

Команди передають управління за адресою, що задається цільовим операндом за умови рівності одиниці прапорця ZF. Інакше виконується наступна команда. Адреса цільового операнду визначається додаванням байта зсуву з адресою наступної команди. Оскільки зсув є 8-бітове ціле число із знаком, то команди можуть вказувати адресу переходу в діапазоні +127байт ¸ -128 байт від конця команди.

 

 

JG/JNLE - переход, якщо більше ніж/переход, якщо не менше ніж або рівно

Якщо ((SF) = (OF) AND (ZF) = 0), то (IP) (IP) + Disp8.

 

Команди передають управління за адресою, що задається цільовим операндам, за умови одночасної рівності значень прапорwів SF і OF і рівності нулю прапорця ZF. Інакше виконується наступна по черзі команда. Адреса цільового операнда обчислюється складанням байта зсуву з адресою наступної команди. Оскільки зсув є 8-бітове ціле число із знаком, то команди JG/JNLE можуть вказувати адресу переходу в діапазоні +127 байт ¸ -128 байт від кінця команди. Команди корисні при порівнянні чисел із знаком.

 

JGE/JNL - nepexід, якщо більше або рівно/перехід, якщо не менше ніж

Якщо (SF) = (OF), то (IP) (IP) + Disp8.

 

Команди здійснюють передачу управління по адресі, що задається цільовим операндом, при умові, що значення прапорців SF і не рівні. В іншому випадку виконується наступна по черзі команда. Адреса цільового операнда обчислюється додаванням байта зсуву з адресою наступної команди. Оскільки зсув є 8-бітове ціле число із знаком, то команди JGE/JNL можуть вказувати адресу переходу в діапазоні +127 байт ¸ -128 байт від кінця команди. Ці команди корисно використовувати при порівнянні чисел із знаком.


JL/JNGE - перехід, якщо меньше/перехід, якщо не більше або рівно

Якщо (SF)#(OF), то (IP) (IP) + Disp8.

 

Команди передають управління за адресою, що задається цільовим операндом, за умови, що прапорці SF і OF не рівні. Інакше виконується наступна по черзі команда. Адреса цільового операнду обчислюється додаванням байту зсуву з адресою наступної команди. Оскільки зсув є 8-бітове ціле число із знаком, то команди JL/JNGE можуть вказувати адресу переходу в діапазоні +127байт ¸ -128 байт від кінця команди. Ці команди корисно використовувати при порівнянні чисел з знаком.

Приклад. Нехай регістр АХ містить число FFFFH, регістр DX - число 0002Н і виконуються наступні команди:

 

CMP AX,DX

JL CHECK

CLC

RET

CHECK: AND АХ, 00

 

Перша команда встановлює прапорець SF в 1, а прапорець OF в 0. Після виконання команди JL CHECK управління передається за адресою CHECK і виконується команда AND AX,00. Це означає, що вміст регістра АХ менше вмісту регістра DX.

Якщо регістр АХ містить число 0124Н, а регістр DX - число 0020Н, то після виконання першої команди прапорці SF і OF будуть скинені в 0 і замість переходу за адресою CHECK виконуватиметься наступна за JL команда CLC.

 







Date: 2015-12-12; view: 536; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.021 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию