IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> Вывод строки с предварительной очисткой экрана
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Ввот загвоздка такая ,программа была написана, но очищал экран сначала просто выводом символа пробел
n-ое число)), потом вот решил переделать так чтоб очистка производилась 06h функцией в 10h прерывании, вот код

prg segment
assume CS:prg,DS:data

begin:
mov ax,data
mov ds,ax
xor cx,cx
mov ax,0600h
mov dx,184fh
mov bh,0h
int 10h
mov ah,02h
mov dx,0b0fh
int 10h
mov cx,10h
mov bx,0
l: mov dl,mesg[bx]
int 21h
inc bx
loop l
mov ah,10h
int 16h
mov ax,4c00h
int 21h
prg ends
data segment
mesg db 'aaaaaaaaaaaaaaaa$'
data ends
stk segment stack
db 256 dup (?)
stk ends
end begin


но не пойму в чем дело, очистка ведь производится перед выводом строки, а всеравно происходит затираниее
(проверял сдвигая нижный правый угол указываемый в 06h функции 10h прерывания)?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






       xor cx,cx
mov ax,0600h
mov dx,184fh
mov bh,07h ; <--- Обрати внимание: это - АТРИБУТ
int 10h ; чистим окно

mov bh, 0 ; <--- А это - номер видеостраницы
mov ah,02h
mov dx,0b0fh
int 10h ; устанавливаем курсор в заданное место

; здесь - вывод строки
, хотя строку гораздо проще выводить через
       mov ah, 9
lea dx, mesg
int 21h
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


volvo, опять тебе спасибо, что то я в описании данной функции в данном прерывании не досмотрел что это отребут, невнимательность моя)
Но если не трудно объясни, что дает этот атрибут, какая его функция, что то я не догоняю?(

mov bh,07h ; <--- Обрати внимание: это - АТРИБУТ


Вывод строки такой легче, но требуется именно посимвольный)))

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
какой толк от данного тогда атрибута?
Какой толк? А простой... Тот атрибут, который ты устанавливаешь при вызове функции 06, устанавливается для каждого символа (точнее, для каждой позиции на экране), который был очищен вызовом данной функции. А когда ты выводишь строку, ты устанавливаешь только символы, атрибуты не меняются, какие были, те и остаются. Что значит атрибут 00h, объяснять не надо? Вот и подумай, как будет выглядеть строка, когда ты выведешь ее с данным атрибутом...

Можешь воспользоваться функцией 09h того же 10h-прерывания, чтобы выводить символ с атрибутом в текущей позиции курсора, тогда будет неважно, чему равнялся BH при вызове функции "свертка окна вверх (06h)"
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


volvo, спасибо за разъяснение. Вспомнил, как то проглядывал уроки Калашникова, там как раз это было когда выводились символы с атрибутами. Так как я не ас в асме, да и особо с атрибутами не часто сталкивался, поэтому и не обратил внимание на описание да и не вспомнил.

Просто восхищаюсь Вашими познаниями и умениями)

Сообщение отредактировано: Account -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


volvo, а где можно взять данные по указанию в атрибуде цветовоой гаммы, т.е. коды соответсвующие цветам, я попробовал конечно поэксперементировать, но выяснять что то в ручную все вариации не охото)))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Младшие 4 бита (0 .. 3) - цвет символа:
          0 - черный                  8 - серый
1 - синий 9 - голубой
2 - зеленый 10 - светло-зеленый
3 - циан 11 - светлый циан
4 - красный 12 - светло-красный
5 - магента 13 - светлая магента
6 - коричневый 14 - желтый
7 - белый 15 - ярко-белый

, следующие 3 бита (4 .. 6) - цвет фона (понятно, что возможны только значения 0 .. 7, то есть, неяркие цвета), самый старший бит - Blink, мерцание символа
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Бывалый
***

Группа: Пользователи
Сообщений: 212
Пол: Мужской

Репутация: -  0  +


Спасибо)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 17.04.2024 4:20
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name