1. Заголовок или название темы должно быть информативным 2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE] 3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора. 5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM! 6. Проверяйте программы перед тем, как выложить их на форум!!
подфункция 03h функции 10h прерывания Int 10h, и как же это всё работает-то...
привет всем помогите пожалста разобраться с сабжем. на сколько я знаю эта подфункция переключает 7-ой бит байта атрибутов, который управляет мерцанием символов, тока вот интересно как оно работает... мне надо в цикле переключать значение этого бита, так чтобы цвет сиволов на экране менялся соответсвующим образом. я лабу сделала, но мне надо именно эту функцию там употребить.. помогите плиззз
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 аттрибут символа переход на след символ пишем все это в память т.е. на экран выводим переходим в видеопамяти дальше повтор пока не выведем всю строку ======================
push ds mov ax,ss mov ds,ax
т.к. это PASAL а Я все это сделал в процедуре, а в процедуре начала блока данных идет от стека --- адрес DS сегмента данных нужно сохранить ---- а потом востановить при выходе из процедуры
pop ds
------ Справочная литература В.Ю. Пирогов ASSEMBLER учебный курс
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы. МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/