Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2010, 23:15   #1
ohucheni
 
Аватар для ohucheni
 
Регистрация: 07.12.2008
Сообщений: 7
Сообщение вывод строки цвета фона через bios и видеопамять

Всем доброго времени суток!
пишу на ассемблере tasm под dos (command promt) и возникла следущая проблема:
я хочу вывести вертикально строчку символов (символы одного цвета) с разным цветом фона ДЛЯ СИМВОЛОВ но чтобы цвета символов совпадали с цветом фона ЭКРАНА т.е. если фон экрана черный то символы выводятся черным цветом на разноцветных "квадратиках"
но если я поменяю экран на другой цвет то символы остаются черными тогда каждый раз придется вручную менять атрибут символов
очевидно надо как то считать цвет символов с цвета фона экрана или где то задать их дополнительные атрибуты...
но как это сделать? помогите поправить код.
вот мой код "черного символа по черному фону ЭКРАНА":
Код:
CSEG segment

strn  db  0
zn    db    'G'
kol    dw    7 ;число символов
atr     db    11100000b ;атрибут

assume cs: CSEG

begin:
      
   ; one через биос

  ;ustanovka kursora
 mov ah,02h
  mov bh,0
  mov dh,strn
  mov dl,0
  int 10h

  inc strn  ;sled zn.mes

; vivod simvola  
  mov ah, 09h
  mov al, cs:zn
  mov bh, 0
  mov bl, cs:atr
  mov cx, 1
  int 10h
  sub cs:zn, 1
add cs:atr, 11100000b ;меняю цвет фона ДЛЯ СИМВОЛА

  mov cx, cs:kol 
  dec cs:kol

  loop begin


     ;  через видеопамять

  mov cx, 7

  mov ax, 0b800h ;начальный адрес видеопамяти
  mov es, ax
  mov di, 0010h  ;smesch
  mov al, 'Z'
  mov ah, 11100000b ;атрибут
  mov es:[di], al

b_eg:
  add di, 1
add ah, 01100000b ;меняю цвет фона ДЛЯ СИМВОЛА

  mov es:[di], ah
  add di, 159
  dec al
  mov es:[di], al
loop b_eg 


;  DOS exit
  mov ax,4C00h
  int 21h

CSEG ends
end Begin
заранее спасибо
ohucheni вне форума Ответить с цитированием
Старый 19.03.2010, 23:38   #2
Doholyan
Форумчанин
 
Регистрация: 26.04.2009
Сообщений: 270
По умолчанию

не углубляясь в твой код программы, но мне кажеться нужно просто выводить символы "пробел"
Doholyan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как к BIOS обращаться. Нужно чтение/запись BIOS. Dethon_ASM_Scarel Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 26.10.2011 11:40
Видеопамять на Intel GMA 4500M Pavel_Ine Компьютерное железо 0 10.10.2009 11:04
Смена цвета текста или фона строки относительно возвращённого значения abdumanon Microsoft Office Excel 1 07.04.2009 02:10
Изменение фона текущей строки puky Microsoft Office Access 1 09.02.2007 12:05