Архитектура компьютеров / Учебные пособия / Примеры программирования assembler IA-16 / Сложение целых чисел большой размерности
.docПрограмма сложения целых чисел размерностью двойное слово
.model small ; модель памяти, используемая для ЕХЕ
.stack 100h ; сегмент стека размером в 256 байт
.code
start: mov ax,@data ; сегментный адрес строки message
mov ds,ax ; помещается в DS
mov bx,offset a
loop: mov ax, [bx]
add ax,[bx+4]
mov [bx+8], ax
mov ax, [bx+2]
adc ax, [bx+6]
mov [bx+10], ax
mov ax,4C00h
int 21h ; функция DOS "завершить программу"
.data
A dd 00ACF77Fh ;определение данных
B dd 00AA3219h
C dd 0
end start
Программа сложения целых чисел произвольной размерности (до 10 байт)
.model small ; модель памяти, используемая для ЕХЕ
.stack 100h ; сегмент стека размером в 256 байт
.code
start: mov ax,@data ; сегментный адрес строки message
mov ds,ax ; помещается в DS
mov bx,offset NameA
xor ax,ax
mov al,length
div 2 ; делим размерность на 2
xor di,di ; индексный регистр = 0
loop: mov dx, [bx+di*2]
adc dx,[bx+di*2+10]
mov [bx+di*2+20], dx
inc di
cmp di, ax
jb loop ; продолжаем сложение пока di < ax
; jl loop ; эквивалентная команда «если меньше»
; jne loop ; эквивалентная команда «если не равно»
mov ax,4C00h
int 21h ; функция DOS "завершить программу"
; ********* сегмент данных
.data
NameA dt 0 ; данные размерностью 10 байт
NameB dt 0
NameC dt 0
Length db 0 ; размерность может быть меньше 10 байт,
; но кратна 2 байтам