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

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

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

> подфункция 03h функции 10h прерывания Int 10h, и как же это всё работает-то...
Infinity
сообщение 2.09.2004 21:54
Сообщение #1


Новичок
*

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

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


привет всем smile.gif
помогите пожалста разобраться с сабжем. на сколько я знаю эта подфункция переключает 7-ой бит байта атрибутов, который управляет мерцанием символов, тока вот интересно как оно работает...
мне надо в цикле переключать значение этого бита, так чтобы цвет сиволов на экране менялся соответсвующим образом.
я лабу сделала, но мне надо именно эту функцию там употребить.. помогите плиззз
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Shadow
сообщение 14.09.2004 23:53
Сообщение #2


Lonely_Raven
****

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

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


Infinity
----
смотри присоединенный файл он на PAS, но целиком все сделанно
на ASSEMBLERE Думаю переделать не составит труда
----
Вот изменение атрибутов символа на экране, но только через видеопамять
напрямую.. думаю пригодится
----
Сама программа неимеет оптимизаций и т.д. она просто работает
----
там именно в видеопамять пишеться аттрибут символа и код самого символа
    mov ax,0b800h
    mov es,ax

адресс видопамяти в текстовом режиме
    lea si,S
    mov ah,0
    mov al,[si]

грузим адрес строки причем
в ah = 0 ,а в al - код символа
    mov cx,ax
    inc si

первый симол это длина строки я ее не пропускаю т.к.
она потом мне нужна будет для счетчика цикла
----------------
cохраняем регитр ax и увеличиваем счетчик
т.е. переходим на след символ

@out:
    mov al,[si] {Symbol}
    mov ah,c    {attribut}
    inc si      {nex symbol}
    mov es:[di],ax  {to video memory}
    inc di      {movenau to video memory}
    inc di      {increment 2 se also for 1 symbol 2 byte memory}
    loop @out

ню вот в al код символа,
а в ah аттрибут символа
переход на след символ
пишем все это в память т.е. на экран выводим
переходим в видеопамяти дальше
повтор пока не выведем всю строку smile.gif
======================
    push ds
    mov ax,ss
    mov ds,ax

т.к. это PASAL а Я все это сделал в процедуре, а в процедуре
начала блока данных идет от стека
---
адрес DS сегмента данных нужно сохранить
----
а потом востановить при выходе из процедуры
    pop ds

------
Справочная литература
В.Ю. Пирогов ASSEMBLER учебный курс


Сообщение отредактировано: volvo - 6.11.2009 22:42


Прикрепленные файлы
Прикрепленный файл  TEXT_VID.zip ( 499 байт ) Кол-во скачиваний: 299


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 

- Текстовая версия 1.08.2025 18:25
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"