Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тетрадь_ЗИ.doc
Скачиваний:
1
Добавлен:
10.11.2019
Размер:
711.17 Кб
Скачать

Программа 1.3

TITLE СЛОЖЕНИЕ ЦЕЛЫХ БЕЗЗНАКОВЫХ ЧИСЕЛ

TITLE ПОВЫШЕННОЙ ТОЧНОСТИ

; Определение сегмента стека

SSEG SEGMENT PARA STACK 'STACK'

DB 256 DUP(0)

SSEG ENDS

; Определение сегмента данных для слагаемых и результата

DSEG SEGMENT PARA PUBLIC 'DATA'

SLOG1 DD 1 DUP (0) ; Слагаемое, длина двойное слово

SLOG2 DD 1 DUP (0) ; Слагаемое, длина двойное слово

SUM DQ 1 DUP(0) ; Результат, длинна 5 байтов

DSEG ENDS

; Определение сегмента кода программы

CSEG SEGMENT PARA PUBLIC 'CODE'

ASSUME CS:CSEG,DS:DSEG,SS:SSEG

SUMMA PROC FAR

mov ax,DSEG ; Определение адреса сегмента DATA

mov ds,ax ; Пересылка в сегментный регистр DS

Start: lea si,SLOG1 ; Получение смещения SLOG1 в SI

lea di,SLOG2 ; Получение смещения SLOG2 в DI

lea bx,SUM ; Получение смещения SUM в BX

clc ; Очистка флага переноса.

mov cx,0

mov ax,[si] ; Сложение SLOG1 и SLOG2 с учетом

adc ax,[di] ; бита переноса.

mov [bx],ax ; Сохранение результата

inc si ; Вычисление смещения следующего

inc si ; слова слагаемых без изменения

inc di ; бита переноса предыдущего сложения

inc di

mov ax,[si]

adc ax,[di]

mov [bx+2],ax

jnc Lmem ; Был перенос? Нет - переход не метку

inc cx ; Да - создать старший байт.

Lmem: mov [bx+4],cx ; Сохранить старший байт в памяти

jmp Start

SUMMA ENDP

CSEG ENDS

END SUMMA

1 слагаемое

2 слагаемое

результат

десятичное

шестнадцат.

десятичное

шестнадцат.

десятичное

шестнадцат.

1

2

Таблица 1.1.3

Команда

содержимое регистров

аx

bx

cx

dx

cs

ds

di

si

Флаги

cf

zf

sf

pf

af

df