Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2013, 14:37   #1
mazzahaker
Пользователь
 
Регистрация: 04.12.2011
Сообщений: 23
По умолчанию BCD (сложение и вычитание)

Здравствуйте! Пытаюсь выполнить задание из книжки по BCD-числам и не совсем получается. Итак, смотрите... Имеется задание: вычилить: A+B-C. При этом:
Формат данных - упакованные
Ддлина А - слово, А=1037
Длина В - слово, В=2068
Длина С - слово, С=3596
Вроде переносы сделаны, как надо, а что еще не так? В MASM 5 ошибок... Что делаю не так, помогите пожалуйста испрвить ошибку, спасибо!

Код:
; A+B-C           
TITLE LAB1
data segment
	a DB 1037
	b DB 2068
	c DB 3596                           
data ends

code segment
    assume cs:code,ds:data
begin:

   mov al,a
   add al,b
   daa
   sub al,c
   das
   jnc $+4 ;переход через команду, если результат <= 99
   mov sum+1,ah ;учет переноса при сложении (результат > 99)
   mov sum,al ;младшие упакованные цифры результата

code ends
END begin
mazzahaker вне форума Ответить с цитированием
Старый 11.03.2013, 04:27   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

mazzahaker,
  1. по заданию длина А, В и С - слово, а по программе?
    Код:
    	a DB 1037
    	b DB 2068
    	c DB 3596
  2. если представлять в программе А, В и С как 1037, 2068 и 3596 то ассемблер переведет их в 40Dh(1037), 814h(2068) и E0Ch(3596) и никакой работы с BCD-числам не получится, читай внимательно учебник или лекцию
  3. в просьбе
    Цитата:
    Что делаю не так, помогите пожалуйста исправить ошибку, спасибо!
    явно читается
    Цитата:
    сделайте за меня

Последний раз редактировалось Mikl___; 11.03.2013 в 04:32.
Mikl___ вне форума Ответить с цитированием
Старый 11.03.2013, 04:32   #3
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

mazzahaker,
на форуме http://www.cyberforum.ru/ тема "BCD (сложение и вычитание)" от пользователя kristi1 найди десять отличий
Цитата:
Здравствуйте! Пытаюсь выполнить задание из книжки по BCD-числам и не совсем получается. Итак, смотрите... Имеется задание: вычилить: A+B-C. При этом:
Формат данных - упакованные
Ддлина А - слово, А=1037
Длина В - слово, В=2068
Длина С - слово, С=3596
Вроде переносы сделаны, как надо, а что еще не так? В MASM 5 ошибок... Что делаю не так, помогите пожалуйста испрвить ошибку, спасибо!
[asm]; A+B-C
TITLE LAB1
data segment
a DB 1037
b DB 2068
c DB 3596
data ends

code segment
assume cs:code,ds : data
begin:

mov al,a
add al,b
daa
sub al,c
das
jnc $+4 ;переход через команду, если результат <= 99
mov sum+1,ah ;учет переноса при сложении (результат > 99)
mov sum,al ;младшие упакованные цифры результата

code ends
END begin[/asm]
особенно обрати внимание на слова вычилить, Ддлина, испрвить
хакер, блин...

Последний раз редактировалось Mikl___; 11.03.2013 в 04:51.
Mikl___ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложение и вычитание двух листов Alex Fergusson Microsoft Office Excel 19 25.07.2013 12:46
IEEE 754 Сложение, вычитание _PROGRAMM_ Помощь студентам 3 27.08.2012 09:03
Сложение и вычитание дат и времени apx_angel PHP 1 08.05.2011 15:21
вычитание неупакованных BCD-чисел Танчик007 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 09.04.2011 17:29
Переопределение операций(сложение,вычитание...) master_root Общие вопросы Delphi 3 18.06.2008 20:20