Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Многословное сложение




2.1. Запишите в текстовом редакторе NORTON программу exdbad.asm в СОМ-формате:

 

.286

TITLE EXDBAD (COM) Пример сложения двойных слов

CODESG SEGMENT PARA 'Code'

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

ORG 100H;Начало в конце PSP

BEGIN: JMP SHORT MAIN;Обход через данные

;-------------------------------------------------------

WORD1A DW 0123H;Элементы данных

WORD1B DW 0BC62H

WORD2A DW 0012H

WORD2B DW 553AH

WORD3A DW?

WORD3B DW?

;--------------------------------------------------------

MAIN PROC NEAR;Основная процедура

CALL D10DWD;Вызвать сложение 1

CALL E10DWD;Вызвать сложение 2

RET

MAIN ENDP

; Пример сложения двойных слов

; ----------------------------

D10DWD PROC

MOV AX,WORD1B

ADD AX,WORD2B;Сложить правые слова

MOV WORD3B,AX

MOV AX,WORD1A

ADC AX,WORD2A;Сложить левые слова с переносом

MOV WORD3A,AX

RET

D10DWD ENDP

; Сложение чисел любой длины

; --------------------------

E10DWD PROC

CLC;Очистить флаг переноса

MOV CX,2;Установить счетчик

LEA SI,WORD1B;Левое слово WORD1B

LEA DI,WORD2B;Левое слово WORD2B

LEA BX,WORD3B;Левое слово суммы

E20: MOV AX,[SI];Поместить слово в АХ

ADC AX,[DI];Сложить с переносом

MOV [BX],AX;Сохранить слово

DEC SI

DEC SI

DEC DI

DEC DI

DEC BX

DEC BX

LOOP E20;Повторить цикл

RET

E10DWD ENDP

CODESG ENDS

END BEGIN

 

Процедура D10DWD демонстрирует простой способ сложения содержимого одной пары слов (WORD1A и WORD1B) с содержимым второй пары слов (WORD2A и WORD2B) и сохранения суммы в третьей паре слов (WORD3A и WORD3B). Сначала выполняется сложение правых слов BC62 и 553A. Полученная сумма превышает емкость регистра АХ. Переполнение вызывает установку влага переноса в 1. Затем выполняется

сложение левых слов, но в данном случае вместо команды ADD используется команда сложения с переносом ADC. Эта команда складывает два значения, и если влаг CF уже установлен, к сумме прибавляется 1.

Процедура E10DWD демонстрирует подход к сложению значений любой длины. Действие начинается со сложения самых правых слов складываемых полей. В первом цикле складываются правые слова, во втором - слова, расположенные левее. При этом адреса в регистрах SI, DI и ВХ уменьшаются на 2. По две команды DEC выполняют эту операцию для каждого регистра. Перед циклом команда CLC устанав-

ливает нулевое значение флага переноса, а также устанавливается счетчик слов.

Для многословного вычитания вместо команды ADC в процедуре E10DWD необходимо установить команду SBB.

2.2. Выполнить ассемблирование и компоновку программы. Записать листинг программы в отчет. Вызвать отладчик DEBUG на выполнение программы.

2.3. Просмотреть сегмент кодов с помощью команды D CS:100 и определить в каких ячейках памяти записаны элементы данных программы. Выполнить трассировку программы, записывая выводы в отчет о выполнении каждой команды. При трассировке отслеживать признак переноса CF (если NC - то 0, признака переноса нет, если CY – то 1, признак переноса есть). Для определения результатов выполнения команд: MOV WORD1B,AX и MOV WORD3A,AX необходимо просмотреть сегмент кодов.

 





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 394 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Свобода ничего не стоит, если она не включает в себя свободу ошибаться. © Махатма Ганди
==> читать все изречения...

2373 - | 2121 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.