22.05.2019, 21:00 [+3 UTC]
в нашей команде: 3 633 чел. | участники онлайн: 5 (рекорд: 21)

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

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

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

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

Общие новости:
28.04.2019, 09:13

Форум:
16.05.2019, 21:07

Последний вопрос:
22.05.2019, 16:35
Всего: 149679

Последний ответ:
22.05.2019, 20:03
Всего: 258510

Последняя рассылка:
22.05.2019, 16:45

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

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

Наша кнопка:

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

Отзывы о нас:
18.01.2010, 20:54 »
Ольга Б.
Я вам очень, очень благодарна! Сама лучше разбираюсь в пределах и производных, чем в комплексных числах! С уважением и благодарностью за помощь! [вопрос № 176106, ответ № 258705]

РАЗДЕЛ • Assembler

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

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

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

Коцюрбенко Алексей Владимирович
Статус: Модератор
Рейтинг: 617
Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 279
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 123

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

Консультация онлайн # 69864
Раздел: • Assembler
Автор вопроса: Loriendil
Отправлена: 07.01.2007, 14:48
Поступило ответов: 3

Здравствуйте,уважаемые эксперты!
разбирая программку из книги Калашникова возникла парочка вопросов(прога в приложении):
1.mov di,0;обнуляем di для того , чтобы счётчик не уходил на бесконечность(т.е. в di заносим число оставшихся попыток,а тогда что происходит с cx или наоборот- непонятно. )
2.Интересно, если во внутреннем цикле add di,2 всё супер,но если пишем add di,1 (какая разница с какой скоросью растёт di [ведь любой символ ASC II занимает 1 байт]) вдруг программа работает глючит.
Связано ли это с ячейкой памяти выделяемой под 1 рожицу или нет.
И самое интересное, проверяя две идентичные проги (прога Калашникова) только с 2 разными операторами:
add di,1
sub di,2 ( в каждой прге всё идентично кроме этих операторов)
эффект одинаковый (проверено по afdpro). Почему?
И ещё скажите ,пожалуйста, как бы с эмулироват DOS по-нормальному,
а то у меня DOS`а нет и я запускаю com-программы в Dos Navigator`е, но хотелось бы полноценной вещи. Как с эмулировать Dos в WinXP(или может лучше скачатьMS-DOS где-нибуть?[Вы не подсажете,где поискать?])

Приложение:

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

Ответ # 135168 от ramok

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

1. cx используется в нутри процетуды Out_chars как внутренний счетчик. и во вторых в конце этой процедуры мы восстанавливаем значение cx
mov cx,dx
для внешнего цикла
loop Next_screen

2. di используется что бы получить доступи к видео памяти.
mov es:[di],ax
es в данном случае указывает на начало сегмента видеопамяти 0B800h, а di - на текущий символ видеопамяти. Увеличение di на 2 связано с тем как видеопамять устроена. на каждый символ выводимый на экран хранится 2 байта: сам символ и аттрибут цвета. Увеличивая di на 2 каждый раз Вы не только переходите к следующему символу, но и пропускаете байт аттрибута текущего символа. Думаю подробней должно быть в Вашем учебнике

3. Обычно использую или Far или Dos Navigator как Вы


Консультировал: ramok
Дата отправки: 07.01.2007, 16:14

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

0

[подробно]

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

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

Ответ # 135174 от Евгений Иванов

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

Поставь DosBox. Отличный эмулятор реального режима.

http://dosbox.sourceforge.net


Консультировал: Евгений Иванов
Дата отправки: 07.01.2007, 16:32

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

0

[подробно]

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

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

Ответ # 135199 от Фёдоров М. Ф.

Здравствуйте, Loriendil!
Все просто.
- Команда loop инкрементирует cx
- add di, 2 необходимо для того, что мы осуществляем прямой вывод в видео память. А адресация каждой экранной позиции в сегменте видео буфера равна 2 байтам. (Цвет фона и симфола) + ASCII код символа!


Консультировал: Фёдоров М. Ф.
Дата отправки: 07.01.2007, 19:00

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

0

[подробно]

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

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

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

Яндекс Rambler's Top100

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

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

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