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

Віднімання 4-ох байтних чисел

Читайте также:
  1. АЛГОРИТМЫ СЛ-Я И В-Я ВЕЩЕСТВЕННЫХ ЧИСЕЛ
  2. Арифметичні операції додавання і віднімання
  3. Геометрическая интерпретация комплексных чисел
  4. Геометрическое изображение комплексных чисел
  5. ГЕОМЕТРИЧЕСКОЕ ИЗОБРАЖЕНИЕ КОМПЛЕКСНЫХ ЧИСЕЛ.
  6. ГРУПУВАННЯ СІЛЬСЬКОГОСПОДАРСЬКИХ ПІДПРИЄМСТВ ЗА ЧИСЕЛЬНІСТЮ

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

 

.model small

.data

 

A4 dd 87654321H

B4 dd 89ABCDEFH

R4 dq 0; можна і R4 db 0,0,0,0,0,0 і R4 dw 0,0,0 і R4 dd 0,0

 

.code

start:

; підрівняти сегмент даних під 0

mov ax,@data

mov ds,ax

; розмістити молодші слова операндів А4 і В4 в регістрах ax, dx

mov ax, word ptr A4

mov dx, word ptr B4

; перша операція додавання (без врахування переносу) реалізується інструкцією add

; це необхідно, оскільки попередні операції могли встановити прапорець переносу (С=1)

add ax,dx; ax = ax + dx (результат 1110H, C=1)

; зберегти результат в молодшому слові R4

mov word ptr R4,ax

; розмістити старші слова операндів А4 і В4 в регістрах ax, dx

mov ax, word ptr [A4+2]

mov dx, word ptr [B4+2]

; подальші операції додавання (з врахуванням переносу) реалізуються інструкцією adc:

adc ax,dx; правильно: ax = ax + dx + С (результат 1111H, C=1)

 

; add ax,dx; НЕправильно: ax = ax + dx (результат 1110H, C=1)

 

; зберегти результат в старшому слові R4

mov word ptr [R4+2], ax

; контрольне додавання на випадок виникнення переносу при останньому додаванні

mov ax,0

adc ax,0; ax = ax + 0 + С (результат 0001H, C=0)

; зберегти результат в найстаршому слові R4

mov word ptr [R4+4], ax

; завершення програми

mov ah,4CH

int 21

end start

end

 

Віднімання 4-ох байтних чисел

 

.model small

.data

 

A4 dd 87654321H

B4 dd 89ABCDEFH

R4 dq 0; можна і R4 db 0,0,0,0,0,0 і R4 dw 0,0,0 і R4 dd 0,0

 

.code

start:

; підрівняти сегмент даних під 0

mov ax,@data

mov ds,ax

; розмістити молодші слова операндів А4 і В4 в регістрах ax, dx

mov ax, word ptr A4

mov dx, word ptr B4

; перша операція віднімання (без врахування запозичення) реалізується інструкцією sub

; це необхідно, оскільки попередні операції могли встановити прапорець переносу (С=1)

sub ax,dx; ax = ax - dx (результат 7532H, C =1)

; зберегти результат в молодшому слові R4

mov word ptr R4,ax

; розмістити старші слова операндів А4 і В4 в регістрах ax, dx

mov ax, word ptr [A4+2]

mov dx, word ptr [B4+2]

; подальші операції віднімання (з врахуванням запозичення) реалізуються інструкцією sbb:

sbb ax,dx; правильно: ax = ax - dx - С (результат FDB9H, C=1)

 

;sub ax,dx; НЕправильно: ax = ax - dx (результат FDBAH, C=1)

 

; зберегти результат в старшому слові R4

mov word ptr [R4+2], ax

; контрольне віднімання на випадок виникнення переносу при останньому відніманні

mov ax,0

sbb ax,0; ax = ax - 0 - С (результат FFFFH, C=0)

; зберегти результат в найстаршому слові R4

mov word ptr [R4+4], ax

; завершення програми

mov ah,4CH

int 21

end start

end

 

 

Беззнакове множення 2 байти * 2 байти = 4 байти

.model small

 

.data

A2 dw 8808H

B2 dw 2

R4 dd 0

 

.code

start:

; підрівняти сегмент даних під 0

mov ax,@data

mov ds,ax

; розмістити слово операнду А2 в регістрі ax

mov ax, A2

; операція множення реалізується інструкцією mul

mul B2; ax = 1010, dx = 01

; зберегти результат в молодшому слові R4

mov word ptr R4,ax

; зберегти результат в старшому слові R4

mov word ptr [R4+2], dx

; завершення програми

mov ah,4CH

int 21

end start

end

 

Знакове множення 2 байти * 2 байти = 4 байти

.model small

 

.data

A2 dw 120; (78h)

B2 dw -2; (FFFEh)

R4 dd 0

 

.code

start:

; підрівняти сегмент даних під 0

mov ax,@data

mov ds,ax

; розмістити слово операнду А2 в регістрі ax

mov ax, A2

; операція множення реалізується інструкцією imul

imul B2;ax = FF10, dx = FFFF

;mul B2;ax = FF10, dx = 0077

; зберегти результат в молодшому слові R4

mov word ptr R4,ax

; зберегти результат в старшому слові R4

mov word ptr [R4+2], dx

; завершення програми

mov ah,4CH

int 21

end start

end

Беззнакове множення 4 байти * 2 байти = 8 байт

 

.model small

.data

 

A4 dd 0FFFFFFFFH

B2 dw 0FFFFH

R8 dq 0

 

.code

start:

; підрівняти сегмент даних під 0

mov ax,@data

mov ds,ax

; розмістити молодше слово операнду А4 в регістрі ax

mov ax, word ptr A4

; операція множення реалізується інструкцією mul

mul B2; ax =1, dx = FFFE

; зберегти результат в молодшому слові R8

mov word ptr R8,ax

; зберегти результат в 2-му слові R8

mov word ptr [R8+2], dx

; розмістити старше слово операнду А4 в регістрі ax

mov ax, word ptr [A4+2]

; операція множення реалізується інструкцією mul

mul B2; ax =1, dx = FFFE

; додати без врахування переносу ax і друге слово результату R8

add ax, word ptr [R8+2]; ax = 1 + FFFE = FFFF

; зберегти результат в 2-му слові R8

mov word ptr [R8+2],ax

; додати з врахуванням переносу dx і 0

adc dx, 0; dx = FFFE + 0 + C = FFFE

; зберегти результат в 3-му слові R8

mov word ptr [R8+4],dx

; завершення програми

mov ah,4CH

int 21

end start

end

 

Беззнакове ділення 2 байти / 1 байт = 1 байт

.model small

.data

A2 dw 0085H

B1 db 2

R1 db 0

 

.code

start:

; підрівняти сегмент даних під 0

mov ax,@data

mov ds,ax

; розмістити слово операнду А2 в регістрі ax

mov ax, A2

; операція ділення реалізується інструкцією div

; якщо B1 ≤ ah, то генерується помилка (0888Н/2 = помилка)

div B1; al = 42 - частка, ah = 01 - остача

; зберегти частку в R1

mov R1,al

; завершення програми

mov ah,4CH

int 21

end start

end

 

Знакове ділення 4 байти / 2 байти = 2 байти

.model small

.data

A4 dd 8883H

B2 dw -2; (FFFEh)

R2 dw 0

 

.code

start:

; підрівняти сегмент даних під 0

mov ax,@data

mov ds,ax

; розмістити молодше слово операнду А4 в регістрі ax

mov ax, word ptr A4

; розмістити старше слово операнду А4 в регістрі dx

mov dx, word ptr [A4+2]

; операція ділення реалізується інструкцією idiv

; якщо B2≤dx, то генерується помилка (78888888Н/2 = помилка)

idiv B2;ax = BBBFH, dx = 1H

;div B2;ax = 0000H, dx = 8883H

; зберегти частку в R2

mov R2,ax

; завершення програми

mov ah,4CH

int 21

end start

end

 

 


Дата добавления: 2015-10-29; просмотров: 172 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
День – Мехико – Дом-музей Фриды Кало и Дом-музей Троцкого – Taскo – Акапулько| Куплет: Reef The Lost Cauze

mybiblioteka.su - 2015-2024 год. (0.015 сек.)