1. Заголовок или название темы должно быть информативным 2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE] 3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора. 5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM! 6. Проверяйте программы перед тем, как выложить их на форум!!
подфункция 03h функции 10h прерывания Int 10h, и как же это всё работает-то...
привет всем помогите пожалста разобраться с сабжем. на сколько я знаю эта подфункция переключает 7-ой бит байта атрибутов, который управляет мерцанием символов, тока вот интересно как оно работает... мне надо в цикле переключать значение этого бита, так чтобы цвет сиволов на экране менялся соответсвующим образом. я лабу сделала, но мне надо именно эту функцию там употребить.. помогите плиззз
Как ты верно заметила, в среде MS-DOS существует множество способов вывода строк. В общем случае можно выделить три категории: - вывод средствами MS-DOS/int 21h: обычный телетайпный вывод, ничего не знающий об атрибутах, установке положения курсора, очистке экрана и т.п.; полезен в тех случаях, когда необходимо чтобы программа поддерживала перенаправление вывода; абсолютно совместимый (главное, чтобы DOS была ; - вывод средствами BIOS/int 10h: знает про атрибуты, курсор и п.р., но не всегда удобен: не удается добиться одним вызовом требуемого результата; ничего не знает об устройствах DOS и стандартном выводе; - вывод напрямую в видеопамять: работает максимально быстро и всегда так, как требуется; удобен при полноэкранном выводе; наименее совместимый подход.
Вывод строки: в DOS - int 21h / AH = 9h; в BIOS - int 10h / AH = 13h; напрямую - lodsb/stosb ;)
Я дополнил твой код выводом через BIOS:
.model tiny .code
.startup
;Очистка экрана: средствами BIOS достигается с помощью повторной установки ;текущего видеорежима mov ah,0Fh ;получить текущий режим в AL int 10h xor ah,ah ;снова его установить int 10h
;Вывод тестовой строки с атрибутом 1Eh mov ax,1301h ;функция 13h, подфункция 1 - вывод с перемещением курсора xor dx,dx ;начальная позиция вывода: DH = строка, DL = столбец mov bx,1Eh ;BH = номер страницы; BL = атрибут lea bp,test1E ;ES:BP -> строка mov cx,5 ;CX = длина строки int 10h
;Вывод тестовой строки с атрибутом 9Eh mov ax,1301h mov dx,100h mov bx,9Eh lea bp,test9E mov cx,5 int 10h