Форум «Всё о Паскале» _ Ассемблер _ команды арифметических операций
Автор: valeria 1.12.2008 14:44
Добрый день! Начала изучать ассемблер только-только, поэтому столкнулась с проблемой. Вот задание
Цитата
Есть два вектора v1 и v2 , каждый состоит из двух компонент – целых чисел со знаком в упакованном BCD формате, каждая компонента состоит из трех десятичных цифр. Необходимо определить векторы v3 и v4 представляющие сумму и разность векторов v1 и v2 соответственно.
Посидела, почитала книжек, вот что удалось набросать
.MODEL SMALL .STACK 10h .DATA bcdv1 DB .... bcdv2 DB .... bcdv3 DB ? bcdv4 DB ? sum DB 2 DUP(?) dif DB 2 DUP(?) assume cs:code_sg,ds:code_sg,ss:code_sg
begin: mov ax,@DATA mov ds,ax mov al,bcdv1 add al,bcdv2 daa mov sum,al mov al,bcdv1+1 adc al,bcdv2+1 daa mov sum+1,al mov al,bcdv1 sub al,bcdv2 das mov dif,al mov al,bcdv1+1 sbb al,bcdv2+1 das mov sum+1,al END begin
на этом все потуги сошли на нет. Что поставить вместо многоточия и как вывести вектора 3 и 4 для меня осталось загадкой
Автор: volvo 1.12.2008 22:23
Цитата
Что поставить вместо многоточия
Поставь данные, которых хочешь складывать/вычитать... Например,
bcdv1 DB 04h, 56h, 05h, 67h ; 456 и 567 bcdv2 DB 01h, 23h, 03h, 45h ; 123 и 345
, под bcdv3 и bcdv4, кстати, нельзя выделять по одному байту, как ты это делаешь...