Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Очистка экрана или переход на новую страницу! 
V
    Опции темы
kuller
Дата 19.5.2009, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет



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

сталкнулся с такой проблемой:
выводил строки на экран и дошел до самой нижней и ДОПУСТИМ хочу вывести следующую строчку на 1 строку ниже, ну так вот  ВОПРОС:

как сделать чтобы ПРОКРУТИЛАСЬ страница и строка вывелась как бы на самой верхней строчке монитора или как ОЧИТСТЬ весь экран, чтобы затем выводить опять же на 1 строчке монитора мою строку???

Заранее спасибо!
PM MAIL   Вверх
ФедосеевПавел
Дата 19.5.2009, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 7.2.2009

Репутация: нет
Всего: 10



Очистить экран
Код

  mov   ah, 06h     ;прокрутка экрана вверх
  mov   al, 00h    ;количество прокручиваемых строк. но если 00h - то весь экран
  mov   bh, 07h     ;цвет закрашиваемого экрана - белые символы на черном фоне
  mov   cx, 0000h  ;Координаты прокрутки от 00, 00
  mov   dx, 184Fh  ; до 24, 79 (весь экран)
  int     10h


Это сообщение отредактировал(а) ФедосеевПавел - 19.5.2009, 19:43
PM   Вверх
kuller
Дата 19.5.2009, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет



ФедосеевПавел, Спасибо! я уже сам до этого ДОШЕЛ))) (только я крутил ВНИЗ при помощи 07h)

а еще не подскажите как исправить ОШИБКУ вот такого типа:

Relative jump out of range by 0092h bytes

PM MAIL   Вверх
ФедосеевПавел
Дата 19.5.2009, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 7.2.2009

Репутация: нет
Всего: 10



Условные переходы jxx позволяют перейти лишь на 128 байт взад-вперед (в 16-разрядных программах).
Решение - изменение условия на противоположное и ещё один jmp. Но лучше изменить структуру программы.
Код

  jz   @@MyLbl
заменить на
  jnz  @@1
  jmp @@MyLbl
@@1:

PM   Вверх
kuller
Дата 19.5.2009, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет



ФедосеевПавел, что то я не понял как это будет работать!!

было:
jz   @@MyLbl
т.е. ЕСЛИ НОЛЬ то перейти на метку @@MyLbl

а стало:
jnz  @@1
  jmp @@MyLbl
@@1:
т.е. ЕСЛИ НЕ НОЛЬ, то перейти на метку @@1.

Как тогда оно работает если допустим ВСЕТАКИ НОЛЬ, то переход на @@MyLbl, так за счет чего тут УВЕЛИЧЕНИЕ байт взад-вперед???

 
ФедосеевПавел, если не сложно, могли бы по подробнее рассказать???
PM MAIL   Вверх
kuller
Дата 19.5.2009, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет



Решил этот вопрос НАТЫКАВ в программу ПРОЦЕДУР, тем самым уменьшил расстояния до метак перехода))
p.s. может это и не правильно, но зато работает!
PM MAIL   Вверх
ФедосеевПавел
Дата 19.5.2009, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 7.2.2009

Репутация: нет
Всего: 10



Код

  jz   @@MyLbl
заменить на
  jnz  @@1
  jmp @@MyLbl
@@1:

Было - если 0, то перейти на @@MyLbl.
Стало - если не ноль, то "перепрыгнуть" через следующую команду. А следующая команда - переход на @@MyLbl. Т.е. когда будет 0, то условие перехода не выполнится и будет выполняться следующая за jnz команда - jmp, которая и отправит на нужную метку @@MyLbl.
PM   Вверх
Mikl_
Дата 20.5.2009, 04:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 6
Всего: 14



ФедосеевПавел, для очистки экрана и перехода на новую строку в текстовом режиме достаточно mov ax,3/int 10h
PM MAIL   Вверх
kuller
Дата 20.5.2009, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 15.11.2007

Репутация: нет
Всего: нет



Mikl_, Спасибо!!!
и этот вариант работает!
Код

        mov ax,3
        int 10h

PM MAIL   Вверх
ФедосеевПавел
Дата 20.5.2009, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 7.2.2009

Репутация: нет
Всего: 10



Mikl_, Спасибо. Теперь и я буду знать.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.