Многобайтовое сложение и вычитание целых чисел - Assembler
Формулировка задачи:
Составьте программу, выполняющую многобайтовое сложение и вычитание целых чисел
Сложение выполнить с использованием 32-разрядных регистров, вычитание без использования 32-разрядных регистров.
A:="BF82D9569B425443H"
B:="88ABCDCADDB78822H"
Решение задачи: «Многобайтовое сложение и вычитание целых чисел»
textual
Листинг программы
.model small .386 .stack 100h .data A dq 0BF82D9569B425443h B dq 088ABCDCADDB78822h C db 9 dup(?) .code start: mov ax,@data mov ds,ax clc lea si,A lea di,B lea bx,C mov cx,4 minus: mov dx,word ptr [si] mov ax,word ptr [di] sbb dx,ax lahf mov word ptr [bx],dx add bx,2 add si,2 add di,2 sahf loop minus sbb byte ptr C+8,0 mov ah,4Ch int 21h end start
Объяснение кода листинга программы
- Установка сегмента данных на сегмент, на который указывает переменная
ax
. - Установка сегмента стека на 100h.
- Объявление переменных
A
,B
иC
. - Начало выполнения кода с метки
start
. - Переменная
ax
получает значение сегмента данных. - Переменная
ds
получает значение сегмента данных. - Очистка флага переноса ввода-вывода.
- Переменная
si
получает смещение строкиA
. - Переменная
di
получает смещение строкиB
. - Переменная
bx
получает смещение строкиC
. - Переменная
cx
получает значение 4. - Начало цикла с метки
minus
. - Переменная
dx
получает значение из памяти по смещениюsi
. - Переменная
ax
получает значение из памяти по смещениюdi
. - Вычитание значения
dx
изax
с использованием флага переноса. - Очистка флага переноса ввода-вывода.
- Запись значения
dx
в память по смещениюbx
. - Увеличение
bx
на 2. - Увеличение
si
на 2. - Увеличение
di
на 2. - Запись значения
ah
в память по смещениюC+8
. - Ввод значения 4Ch в
ah
. - Вызов прерывания 21h.
- Конец выполнения кода с метки
start
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д