Студопедия  
Главная страница | Контакты | Случайная страница

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

CMP безпосереднє значення –пам’ять

Читайте также:
  1. ADD / SUB пам’ять-безпосереднє значення.
  2. Puc. 2. Класифікація ринків за призначенням і структурою
  3. Акт проголошення незалежності української держави (1941р.) та його значення.
  4. Аналіз параметрів мікроклімату робочої зони та оцінка щодо відповідності їх нормативним значенням
  5. Біологічне значення нестатевого розмноження
  6. Боротьба Київської Русi з монголо-татарами та її iсторичне значення.
  7. Важливе значення у мовленні має правильне наголошення в словах, що свідчить про високу культуру мовця.
  8. Велике значення для розуміння природи психіки має висвітлення закономірностей її становлення в процесі еволюції живого світу та суспільно-історичного розвитку людства.
  9. Вибір методу ціноутворення (методу визначення базової ціни).

Команда NEG змінює війкове значення з додатного на від’ємне і з від’ємного на додатне. Фактично, вона віднімає операнд від нуля і додає одиницю.

Додавання багатобайтних чисел

Наведемо універсальну процедуру додавання двох чисел довільної розмірності, використовуючи додавання окремих слів.

При цьому слід: 1) забезпечити сусідство слів; 2) виконувати обробку від молодшого до старшого слова; 3) завантажити в регістр CX кількість слів, що будуть додаватися

Дія починається з додавання наймолодших полів, тобто тих слів, що розташовані в пам’яті за молодшими адресами. У першому циклі додаються ліві слова, а у другому - слова, розташовані правіше. При цьому адреси в регістрах SI, DI і BX збільшуються на 2. Цю операцію виконують по дві команди INC для кожного регістра. Застосовувати команду ADD reg,02 у цьому випадку не можна, тому що при цьому буде очищений прапорець переносу, що приведе до спотворення результату додавання. Оскільки використовується цикл, виконується лише команда додавання ADC. Перед циклом команда CLC (CLear Carry - очистити прапор переносу) установлює нульове значення прапорця переносу.

 


DOSSEG

.MODEL SMALL

.STACK 100h

.DATA

X DW 1111h, 2222h

Y DW 3333h,4444h

Z DW 3 dup(0)

 

.CODE

mov ax,@data

mov ds,ax

clc

mov cx,2

lea si,X

lea di,y

lea bx,z

l1:

mov ax,[si]

adc ax,[di]

mov [bx],ax

inc si

inc si

inc di

inc di

inc bx

inc bx

loop l1

adc [bx],0

mov ah,4Ch

int 21h

 


 

Для віднімання багатобайтних чисел слід використовувати команду SBB (віднімання з запозиченням), яка є еквівалентом ADD.

 

Множення

Операція множення для беззнакових даних виконується командою MUL, а для знакових - IMUL (Integer MULtiplication - множення цілих чисел). У єдиному операнді команд MUL і IMUL вказується множник. Відповідальність за контроль над форматом чисел, що обробляються і за вибір відповідної команди множення лежить на самому програмісті. Існують дві основні операції множення:

"Байт на байт". Множене перебуває в регістрі AL, а множник у байті пам'яті або в однобайтовом регістрі. Після множення добуток перебуває в регістрі AX. Операція ігнорує і витирає будь-які дані, які були в регістрі AH.

AX=AL*регістр8/пам’ять8

"Слово на слово". Множене перебуває в регістрі AX, а множник - у слові пам'яті або у двобайтному регістрі. Після множення добуток знаходиться в подвійному слові, для якого потрібно два регістри: старша (ліва) частина добутку - в регістрі DX, а молодша (права) частина - в регістрі AX. Операція ігнорує й стирає будь-які дані, які перебували в регістрі DX.

DX:AX=AX* регістр16/пам’ять16

Розглянемо наступну команду:

MUL MULTR

Якщо поле MULTR визначене як байт (DB), то операція припускає множення вмісту AL на значення байта з поля MULTR. Якщо поле MULTR визначене як слово (DW), то операція припускає множення вмісту AX на значення слова з поля MULTR. Якщо множник перебуває в регістрі, то довжина регістра визначає тип операції, як це показано нижче:

MUL CL; Байт-множник: множене в AL, добуток в AX.

MUL BX; Слово-множник: множене в AX, добуток DX:AX.

 

Команда IMUL призначена для множення чисел зі знаком. Формат її використання аналогічний MUL.

Якщо множник і множене мають однаковий знак, то IMUL та MUL генерують однаковий результат, а якщо множники мають різні знаки, то команда MUL виробляє доданій результат, а команда IMUL – від’ємний.

Для підвищення ефективності операції множення, при множенні на степінь числа 2 більш доцільним є зсув вліво на необхідну кількість бітів. Зсув більше ніж на один розряд потребує параметру у регістрі CL. Наприклад:

Множення на 2 SHL al,1

Множення на 8: MOV CL,3

SHL AX,CL




Дата добавления: 2014-12-19; просмотров: 74 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав