Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Norgan
4 / 4 / 3
Регистрация: 25.11.2008
Сообщений: 58
#1

Сумма отрицательных чисел. - Assembler

12.09.2010, 14:20. Просмотров 972. Ответов 3
Метки нет (Все метки)

Доброго времени суток! Прошу помощи вычислить ошибку в следующем коде:

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
data          SEGMENT  
 mas    dw  -2,0,2,-1,8,-3,-4,3,9
data          ENDS
 
code          SEGMENT
              ASSUME   cs:code,ds:data
               
begin:
    mov ax,data
    mov ds,ax
    
    mov cx,9
    lea bx,mas  
    xor dx,dx
 
oi1:    mov ax,[bx]
    cmp ax,0
    jns oi2
 
    jmp oi3
oi2:    add dx,ax
oi3:    inc bx
    loop    oi1
 
        mov ax,dx
        xor     cx, cx
        mov     bx, 10
oi4:
        xor     dx,dx
        div     bx
        push    dx
        inc     cx
        test    ax, ax
        jnz     oi4
        mov     ah, 02h
oi5:
        pop     dx
        add     dl, '0'
        int     21h
    loop    oi5
    
 
    
        mov ax,4c00h       
        int 21h
 
    
code          ENDS
              end      begin
Вроде все правильно(пересмотрел пару схожих решений), а ответ выходит около 3-х тысяч, даже и не предполагаю где может крыться ошибка. Буду очень благодарен за Вашу помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2010, 14:20
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сумма отрицательных чисел. (Assembler):

Сумма отрицательных элементов массива
Требуется помощь в отладке программы на ассемблере :) Задание: Определить...

Сумма отрицательных значение в массиве
Получить сумму отрицательных членов заданной последовательности. Вот что я...

Обработкам отрицательных чисел
Всем привет В ходе решения задачи на ассемблере возникла проблема такого рода...

Сумма чисел
Сумму чисел необходимо найти в диапазоне от 20 до 100.Прошу,очень нужно!

Сумма чисел
Помогите мне написать программу нахождения суммы двух чисел. Ввод чисел...

Сумма чисел
Ассемблер ток начал изучать. Хотел создать програму: пользователь вводит 2...

3
vital792
1997 / 1269 / 60
Регистрация: 05.06.2010
Сообщений: 2,213
12.09.2010, 16:04 #2
Цитата Сообщение от Norgan Посмотреть сообщение
oi3: inc bx
мне кажется ошибка тут(не запускал). Массив то 2 байтовый а ты указатель смещаешь на байт
1
Norgan
4 / 4 / 3
Регистрация: 25.11.2008
Сообщений: 58
12.09.2010, 16:33  [ТС] #3
Цитата Сообщение от vital792 Посмотреть сообщение
мне кажется ошибка тут(не запускал). Массив то 2 байтовый а ты указатель смещаешь на байт
Сделал вот так:
Assembler
1
2
3
oi3:    inc     bx
inc     bx
loop    oi1
По идее вот так должно пойти смещение на 2 байта, но в dx, все то же, что и было.
0
Tronix
157 / 104 / 6
Регистрация: 22.08.2010
Сообщений: 215
12.09.2010, 17:00 #4
Все дело в неправильном условии. JNS обозначает - прыгнуть если число не имеет знака (положительное число). Таким образом вы считаете сумму положительных чисел. Простая замена на JS исправляет положение. Далее, как уже верно сказали, тащится по массиву надо со смещением в два байта, а не по одному. Ну и наконец, ваша процедура вывода числа предназначена только для положительных чисел. Программа в итоге печатает 65526, что является правильным ответом. С учетом знака 65526 = -4 .

Assembler
1
2
3
4
5
6
7
8
oi1:    mov     ax,[bx]
        cmp     ax,0
        js     oi2  ; прыгаем если число имеет знак (оно отрицательное)
 
        jmp     oi3
oi2:    add     dx,ax
oi3:    add bx,2    ; всетаки ползем по два байта а не по одному
        loop    oi1
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2010, 17:00
Привет! Вот еще темы с решениями:

Сумма чисел
Составить программу на языке ASSEMBLER выполняющую сложение чисел вводимых с...

Сумма чисел в массиве
Помогите пожалуйста. Нужно написать программу для вычисления арифметической...

Сумма двух чисел
Написать программу под DOS нахождения суммы двух чисел.

сумма последовательных чисел
вот прога факториала, мне нид посчитать что то типа такого. ввожу пять и он мне...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru