Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lec_10-12.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
172.54 Кб
Скачать

Тема №10. Арифметичні операції. Обробка двійкових даних.

Команди додавання і віднімання.

ADD і SUB – команди додавання і віднімання байтів або слід двійкових даних. В процесорі команда віднімання відбувається з використанням додаткових кодів, Додатковий код формується шляхом інвертування прямого коду та додаванням одиниці до молодшого розряду:

1 110101 0001010 0001011

прямий інвертований додатковий

Існує п’ять типів команд ADD і SUB з різним розміщенням даних:

Додавання/віднімання регістр – регістр

пам’ять – регістр

регістр – пам’ять

регістр – безпосередні значення

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

Приклад.

Page 60,132.

TITLE AD_SU (COM) Додавання і віднімання.

CODESG SEGMENT PARA `CODE`

ASSUME CS: CODESG, DS:CODESG, SS:CODESG

ORG IOOH

BEGIN: JMP SHORT MAIN

MAIN PROC NEAR

CALL BIOAD

CALL CIOSU

RET

MAIN ENDP

BYTEA DB 64h

BYTEB DB 40h

BYTEC DB 16h

WORDA DW 4000h

WORDB DW 2000h

WORDC DW 1000h

BIOAD PROC

MOV AL,BYTEA

MOV BL,BYTEB

ADD AL,BL ; додавання регістру до регістру.

ADD AL,BYTEC ; пам’ять і регістр

ADD BYTE,BL ; регістр і пам’ять

ADD BL,IOH ; безпосередньо байт даних і регістр

ADD BYTEA,25H ; безпосередньо байт даних і пам’ять

BIOAD ENDP

CIOSU PROC

MOV AX,WORDA

MOV BX,WORDB

SUB AX,BX ; віднімання регістру BX від AX

SUB AX, WORDC ; пам’ять від регістру

SUB WORDA, BX ; регістр від пам’яті

SUB BX, 1000H ; безпосередньо слово даних від регістру

SUB WORDA, 256H ; безпосередньо слово з пам’яті

RET

CIOSU ENDP

CODESG ENDS

END BEGIN

Прямої операції додавання і віднімання пам’ять - пам’ять не існує і прямої операції безпосередні дані – безпосередні дані також не існує.

Для виконання операції пам’ять – пам’ять необхідно один з операндів переслати в регістр. Для виконання операцій над безпосередніми даними, хоча б один операнд необхідно переслати в пам’ять або регістр.

Операції додавання і віднімання проводяться в додаткових кодах.

При однобайтних операндах – старший біт знаковий і сім біт даних, які охоплюють діапазон від –128 до +127.

При виконанні команди додавання, в якій використовується регістр AL і результат перевищує верхню межу діапазону 127, флаг переповнення і флаг знаку встановлюється в 1:

Приклад

+4Ah +01001010

61h 01100001

ABh 10101011

В таких випадках потрібно користуватися регістром AX.

Команда CBW (Convert Byte to Word) перетворює байт в регістрі AL в слово в регістрі AX. При додаванні слів значення результату може знаходитись в діапазоні від – 32768 до 32767, що в двійковій системі відповідає 15 молодшим бітам і 1 старшому біту знаку.

Додавання більше одного слова.

Існує 2 способи додавання операндів, які перевищують слово.

Нехай необхідно додати дві пари слів WORD1A WORD1B і WORD2A WORD2B і зберегти результат в третій парі слів WORD3A WORD3B.

Спочатку необхідно виконувати операцію над молодшими словами, а потім над старшими.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]