Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 8
1

Не работает программа

17.04.2011, 22:04. Показов 580. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго Вам времени суток.
Есть программа, которая должна считать сколько четных элементов присудствует в массиве dist_index и записывать это число в cnt, но почему то это не происходит(
т.к. как опыта программирования на ассемблере практически не имею, то обращаюсь к вам за разъяснениями, почему она не хочет работать)

Код:
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
.model small
.stack 100h
 
            
            
.code 
        cnt dw 0
        dist_index  dd  0b6372342h,12f71268h,324a4456h,0ff78ab07h,1234b789h ; массив дальних указателей 
        num_el=5
        mov  si, offset dist_index      ; в si адресс массива 
        mov cx, num_el; число указателей в массиве 
        
calculation: 
        test byte ptr [si], 00000001b; проверка четности младщего байта элемента массива ?
        jnz next ; нет, проверяем следующий элемент 
        inc cnt  ; да, увеличваем счетчик элементов 
            
next: 
        add si,4; si на след указатель
        loop calculation 
            
        mov  ax,cnt
    
Conversion:
        xor dx,dx ; обнуляем dx (для деления)
        div cx ; делим DX:DX na CX (10) получаем в AX частоне, в DX отстаток
        xchg ax,dx ; меняем их местами, нам нужен остаток 
        add al,'0' ; получаем в AL     символ десятичной цифры 
        stosb ; записываем ее в строку 
        xchg ax,dx ; востанавливем АХ частное 
        or ax,ax ; сравниваем АХ с 0
        jne Conversion ; если не ноль, то повторяем
    ; вывод строки на экран 
        mov ah,9
        lea dx,[di+1] ; заносим в DX  адрес  начала строки 
        int  21h; выводим ее на экран 
    string db 5 dup (?),'$' ; резервируем 5 бай для строки
    StringEnd = $-1 ; экзывает на символ $  
 end
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2011, 22:04
Ответы с готовыми решениями:

Программа работает в консоли xp, но не работает в dosbox в 7ке
Добрый день, проблему описал в заголовке, код: .286 DSEG SEGMENT STR_ALRLOADED...

Программа , которая выводит время, за которое программа работает
Вообщем, нужно что бы считалось время от начала работы программы, и выводилось на экран.

Почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает
почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает. Имею...

Программа работает на Delphi 2007 или более ранней но не работает на старших версиях (10.1 например)
В программе используются дополнительные файлы и dll написанные на fortran их кода нет ;( в ранних...

3
0 / 0 / 0
Регистрация: 18.04.2011
Сообщений: 3
19.04.2011, 09:25 2
Привет, я переделал в com файл,
работает, только выводит ошибку деления на ноль
вопрос: у тебя массив из двойных слов, а элементы которые надо подсчитать тоже двойное слово, или другое?
0
4165 / 1817 / 216
Регистрация: 06.10.2010
Сообщений: 4,074
19.04.2011, 09:36 3
1) Перед меткой Conversion напиши mov cx,10
2) di нигде не инициализируется
3) lea dx,[di+1] это адрес конца строки + 1
1
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 8
19.04.2011, 14:51  [ТС] 4
Спасибо, разобрался )) сделал другой вывод и немного инициалицую нормальную)
0
19.04.2011, 14:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.04.2011, 14:51
Помогаю со студенческими работами здесь

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

После AVZ не работает программа Credo Межевой план автоматически закрывается и не работает цифровая подпись
После AVZ не работает программа Credo Межевой план автоматически закрывается и не работает цифровая...

Программа работает в отладке, но не работает в скомпилированном виде
Доброго времени суток. Появилась не предвиденная проблема :( Не получается разобраться,...

Программа работает в дебаге, но не работает в релизе
Программа должна отключать пк, через заданое время, командой консоли shutdown. public...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru