![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() ![]() |
![]() |
Account |
![]()
Сообщение
#1
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ввот загвоздка такая ,программа была написана, но очищал экран сначала просто выводом символа пробел
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 прерывания)? |
volvo |
![]()
Сообщение
#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
|
Account |
![]()
Сообщение
#3
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo, опять тебе спасибо, что то я в описании данной функции в данном прерывании не досмотрел что это отребут, невнимательность моя)
Но если не трудно объясни, что дает этот атрибут, какая его функция, что то я не догоняю?( mov bh,07h ; <--- Обрати внимание: это - АТРИБУТ Вывод строки такой легче, но требуется именно посимвольный))) Сообщение отредактировано: Account - 20.05.2009 17:43 |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Цитата какой толк от данного тогда атрибута? Какой толк? А простой... Тот атрибут, который ты устанавливаешь при вызове функции 06, устанавливается для каждого символа (точнее, для каждой позиции на экране), который был очищен вызовом данной функции. А когда ты выводишь строку, ты устанавливаешь только символы, атрибуты не меняются, какие были, те и остаются. Что значит атрибут 00h, объяснять не надо? Вот и подумай, как будет выглядеть строка, когда ты выведешь ее с данным атрибутом...Можешь воспользоваться функцией 09h того же 10h-прерывания, чтобы выводить символ с атрибутом в текущей позиции курсора, тогда будет неважно, чему равнялся BH при вызове функции "свертка окна вверх (06h)" |
Account |
![]()
Сообщение
#5
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo, спасибо за разъяснение. Вспомнил, как то проглядывал уроки Калашникова, там как раз это было когда выводились символы с атрибутами. Так как я не ас в асме, да и особо с атрибутами не часто сталкивался, поэтому и не обратил внимание на описание да и не вспомнил.
Просто восхищаюсь Вашими познаниями и умениями) Сообщение отредактировано: Account - 20.05.2009 17:59 |
Account |
![]()
Сообщение
#6
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo, а где можно взять данные по указанию в атрибуде цветовоой гаммы, т.е. коды соответсвующие цветам, я попробовал конечно поэксперементировать, но выяснять что то в ручную все вариации не охото)))
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Младшие 4 бита (0 .. 3) - цвет символа:
0 - черный 8 - серый , следующие 3 бита (4 .. 6) - цвет фона (понятно, что возможны только значения 0 .. 7, то есть, неяркие цвета), самый старший бит - Blink, мерцание символа |
Account |
![]()
Сообщение
#8
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо)
|
![]() ![]() |
![]() |
Текстовая версия | 28.07.2025 19:35 |