21.02.2019, 14:11 [+3 UTC]
в нашей команде: 3 400 чел. | участники онлайн: 8 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.69 (10.02.2019)
JS-v.1.33 | CSS-v.3.35

Общие новости:
10.02.2019, 21:59

Форум:
16.02.2019, 15:03

Последний вопрос:
21.02.2019, 14:11
Всего: 148799

Последний ответ:
21.02.2019, 09:18
Всего: 257813

Последняя рассылка:
20.02.2019, 21:15

Писем в очереди:
57

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
24.12.2010, 00:27 »
Савенков Михаил
Спасибо! Оперативно и как раз так, как мне и нужно smile [вопрос № 181579, ответ № 265036]
04.01.2012, 19:02 »
Юрий
Все классно!!!

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Модератор
Рейтинг: 790
Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 397
cain52
Статус: 3-й класс
Рейтинг: 259

Перейти к консультации №:
 

Консультация онлайн # 142039
Раздел: • Assembler
Автор вопроса: Mishgan
Отправлена: 23.08.2008, 11:47
Поступило ответов: 2

Уважаемые специалисты, как вывести элементы массива поочередно в строке? После вывода одного элемента очищаю строку для вывода следующего. В результате после ввода (ф. vvod закомментировал) или инициализации massiv dw 123,56,1,0,89,104 получаю
123
563
1 3
0 3
893
104
Код com-проги в приложении:
Если можно, то прокомментируйте Ваш вариант-нужно разобраться, а не только сдать
Заранее спасибо

Приложение:

Последнее редактирование 23.08.2008, 16:54 Зенченко Константин Николаевич (Старший модератор)

Состояние: Консультация закрыта

Ответ # 227819 от Airyashov

Здравствуйте, Mishgan!

mov schetchikstroki,7
mov di,offset string
ochistkastroki:
mov byte ptr[di],20h
inc di
dec schetchikstroki
jnz ochistkastroki

сравнив со своим кодом разберётесь


Консультировал: Airyashov
Дата отправки: 25.08.2008, 08:50

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Здравствуйте, Mishgan!

Данный цикл в Вашей программе лишний:

ochistkastroki:
. . .
jnz ochistkastroki

т.к. получается Вы два раза заполняете свою строку, первый раз когда записываете цифры числа, второй когда записываете пробел. Зачем? Вам достаточно только добавить команду:
loop .reverse
mov byte ptr[bp],'$';записываем маркер конца строки
ret

Тем самым Вы записываете после своего сформированого числа, маркер конца строки для функции 09h прерывания 21h.
Ещё как совет, можно иначе записать саму строку вывода:
ent db 13,10
string db 7 dup(20h),'$'

Формируете число как в программе с метки string , а вот выводите начиная с метки ent . Таким образом можно выбросить ещё код п/п perevodkursora.
Удачи!


Консультировал: Зенченко Константин Николаевич (Старший модератор)
Дата отправки: 26.08.2008, 12:24

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 142039
Boriss

# 1

= общий = | 24.08.2008, 12:44

Во-первых, в начале работы по Win XP нужно инициализировать текстовый режим

mov ax, 3
int 10h

Во-вторых, "стандартный" выход из EXE далеко не всегда работает в COM - не надо так
В-третьих, плохо понял, что нужно. Поясните. Вам не нравится Ваш вывод?

неизвестный

# 2

= общий = | 25.08.2008, 23:05

Boriss, я хотел, чтобы был вывод чисел таких же, что и при инициализации
На счет выхода из EXE: учту
Текстовый режим имеется в виду в командной строке (мои проги под ДОС) или для программирования 32-х разрядных прог?
Mishgan

Boriss

# 3

= общий = | 26.08.2008, 21:01

Под XP без инициализации текстового режима вывод не виден. СОМ - это ВСЕГДА DOS, "обычный" EXE (точнее, MZ-файл, от того, что в начале стоят эти две буквы, в отличие от PE, NE-файлов) - это тоже DOS

Далее, BP лучше не использовать так. Это специальный регистр для работы со стеком в подпрограммах. Потом поймете
А я не понял (нет времени анализировать): Ваша проблема не исчезла после ответов?

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 4

= общий = | 26.08.2008, 21:26 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Boriss:

© Цитата:
в отличие от PE, NE-файлов
, правда? эти фалы тоже начинаются с MZ-заголовка вернее заглушки.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

неизвестный

# 5

= общий = | 27.08.2008, 22:21

Boriss, проблемы больше нет
После того, как вставил иниц-ю тест. режима после метки main, в командной строке очистился предыд. ввод и прога выдала результат. В этом и есть суть инициализации режима?
Почему прогу под ДОС (например, эту, COM или EXE вер.) на асме нельзя запустить, а проги на Си или Pascal'e под ДОС можно прямо по щелчку мышкой?

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.15336 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.69 от 10.02.2019
Версия JS: 1.33 | Версия CSS: 3.35