Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 33
TASM

Сложение неупакованных BCD чисел, неверный результат

17.12.2013, 17:11. Показов 1569. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При сложении 2 неупакованных BCD числа получается один и тот же результат, 50. Подскажите, где ошибка?

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
.model small
.stack
.data
sum db 4 dup(0)
first db 1, 1
second db 3, 1
len equ 2
.code
start:
    xor ax, ax
    xor dx, dx
    xor si, si
    mov cx, len
op:
    mov al, first[si]
    adc al, second[si]
    aaa
    mov sum[si], al
    inc si
    loop op
    adc sum[si], 0
    xor cx, cx
    xor bx, bx
    mov cx, si
opa:
    add sum[bx], 30h
    inc bx
    loop opa
    mov sum[3], '$'
    xor ax, ax
    mov ah, 9
    lea dx, sum
    int 21h
    mov ah, 4ch
    int 21h
end start
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.12.2013, 17:11
Ответы с готовыми решениями:

Сложение неупакованных bcd-чисел
Всем Привет!! Возникла проблема со сложением неупакованных bcd-чисел(принцип “младший байт по младшему адресу”). Пыталась сделать. Но что...

Сложение двух BCD чисел
При проверке программы (через Тасм в проге фар, выдаёт ошибку в выводе результат на экран), а ошибку не знаю как исправить (может быть...

Сложение двух BCD чисел
Помогите с задачей, нужно чтобы вводилось двухзначное число, я сделал что вводится однозначное число. Препод обьяснил, но что-то не понял. ...

3
 Аватар для TFS
551 / 33 / 6
Регистрация: 11.12.2013
Сообщений: 92
17.12.2013, 22:20
Добавьте после "start:"

Assembler
1
2
mov ax, @data
mov ds, ax
Теперь выводит "42".

(при старте программы ds указывает на psp, а вам нужно, чтобы указывал на сегмент данных)
1
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 33
18.12.2013, 10:52  [ТС]
Спасибо! Порой такие досадные ошибки вылазят..

Добавлено через 25 минут
TFS, Но все равно это же неправильно) Должно выводить наоборот, 24..Я изменил код, но теперь не учитывается сложение которое дает в результате больше 100. Выводит 04, где-то единица потерялась.. Вот как я изменил:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
.model small
.stack
.data
sum_neg db 4 dup(0)
sum_end db 4 dup(0)
first db 1, 9
second db 3, 1
len equ 2
.code
start:
    mov ax, @data
    mov ds, ax
    xor ax, ax
    xor dx, dx
    xor si, si
    mov cx, len
op:
    mov al, first[si]
    adc al, second[si]
    aaa
    mov sum_neg[si], al
    inc si
    loop op
    adc sum_neg[si], 0
    xor cx, cx
    xor bx, bx
    mov cx, si
opa:
    xor ax, ax
    mov al, sum_neg[bx]
    mov sum_end[si], al
    add sum_end[si], 30h
    dec si
    inc bx
    loop opa
    mov sum_end[3], '$'
    xor ax, ax
    mov ah, 9
    lea dx, sum_end
    int 21h
    mov ah, 4ch
    int 21h
end start
0
 Аватар для TFS
551 / 33 / 6
Регистрация: 11.12.2013
Сообщений: 92
18.12.2013, 12:23
Я потому и написал, что именно выводит. Можно посимвольно вывести в обратном порядке, необязательно заполнять строку.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
        .model small
        .stack
 
        .data
sum     db      4 dup(0)
first   db      1, 9
second  db      3, 1
len     equ     $-second
 
        .code
start:
        mov     ax, @data
        mov     ds, ax
 
        xor     ax, ax
        xor     si, si
        mov     cx, len
 
op:
        mov     al, first[si]
        adc     al, second[si]
        aaa
        mov     sum[si], al
        inc     si
        loop    op
        adc     sum[si], 0
 
        mov     cx, si
        inc     cx
        add     si, offset sum
        std
 
zero:
        lodsb
        test    al, al
        jnz     skip
        loop    zero
 
skip:
        mov     ah, 2
        mov     si, cx
        jz      next
        dec     si
 
next:
        mov     dl, sum[si]
        add     dl, 30h
        int     21h
        dec     si
        jns     next
 
        mov     ax, 4c00h
        int     21h
        end     start
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.12.2013, 12:23
Помогаю со студенческими работами здесь

Сложение упакованных BCD чисел
Мне требуется сложить два упакованных BCD числа: 5643 и 9127 Вот что я сделал: .model small .stack 256 .data b db 5643h...

Ввод/вывод, сложение BCD чисел
задать с клавиатуры два BCD числа, числа двухразрядные. выполнить сложение BCD чисел.. предусмотреть: вывод заданных чисел на экран..

Задача на сложение двух bcd чисел
Народ, подскажите как исправить...у меня задача на сложение двух bcd чисел, я прогу написал, все правильно считает, вот только ответ...

Вывод неупакованных bcd
Всем привет. Собственно, столкнулся с проблемой - вывод неупакованных чисел. Т.е. мне нужно было вычесть два неупакованных числа и...

Неверный результат сложение
Всем привет, взялся за Паскаль - выполнять задание от универа и тут же натолкнулся на крайне неприятную ошибку (или не ошибку, не знаю). ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru