|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.05.2009, 15:40 | #1 |
Delphi
Форумчанин
Регистрация: 12.06.2008
Сообщений: 137
|
Собственное прерывание на Ассемблере
Как написать собственное прерывание на Ассемблере?
Мне нужно чтобы например int 60h выводило на экран строку, но с другим цветом (например жёлтым). Код:
|
14.05.2009, 16:24 | #2 |
Oldschool geek
Форумчанин
Регистрация: 09.03.2009
Сообщений: 611
|
Код:
|
14.05.2009, 16:29 | #3 |
Delphi
Форумчанин
Регистрация: 12.06.2008
Сообщений: 137
|
Всё равно не работает
C:\MASM611\BIN>ML.EXE C:\MASM611\BIN\MYINT.ASM /AT Microsoft (R) Macro Assembler Version 6.11 Copyright (C) Microsoft Corp 1981-1993. All rights reserved. Assembling: C:\MASM611\BIN\MYINT.ASM Microsoft (R) Segmented Executable Linker Version 5.31.009 Jul 13 1992 Copyright (C) Microsoft Corp 1984-1992. All rights reserved. Object Modules [.obj]: MYINT.obj/t Run File [MYINT.com]: "MYINT.com" List File [nul.map]: NUL Libraries [.lib]: Definitions File [nul.def]: LINK : fatal error L1127: far segment references not allowed with /TINY C:\MASM611\BIN>pause Для продолжения нажмите любую клавишу . . . |
14.05.2009, 17:19 | #4 |
Oldschool geek
Форумчанин
Регистрация: 09.03.2009
Сообщений: 611
|
Если модель tiny, то вместо
Код:
Код:
|
14.05.2009, 17:46 | #5 |
Delphi
Форумчанин
Регистрация: 12.06.2008
Сообщений: 137
|
Вот теперь работает! Спасибо!
Код:
ENT DB 13,10,'$' ;проверка символов enter(13), пробел(10),$ и что такое ent db ? |
14.05.2009, 18:08 | #6 |
Oldschool geek
Форумчанин
Регистрация: 09.03.2009
Сообщений: 611
|
db вставляет в результирующий код любые байты. ent db -- насколько я помню ассемблер, это разместит данные и присвоит им метку. Только тут, наверное, ent: db должно быть. А, может быть, оба варианта работают.
13,10,'$' — это не проверка. Это просто байты. Чтобы с этими байтами что–то сделать, нужно взять их адрес. Код:
Если написать Код:
|
15.05.2009, 09:49 | #7 |
Delphi
Форумчанин
Регистрация: 12.06.2008
Сообщений: 137
|
Всё понятно, спасибо!
А как сделать, чтобы сообщение "Eto nashe preryvanie!" выводилось жёлтым цветом? Код:
Последний раз редактировалось Stilet; 25.05.2009 в 17:14. |
16.05.2009, 14:18 | #8 |
Oldschool geek
Форумчанин
Регистрация: 09.03.2009
Сообщений: 611
|
Я думаю, это через видеопрерывание (int 10h) можно сделать. В Интернете полно списков прерываний, там и цвета можно выставлять, и прочее.
Самым простым решением, пожалуй, было бы дописать Esc–последовательность перед строкой. Таким макаром можно раскрасить всё в самые разные цвета. Вот только, насколько я помню, в NTVDM нет ANSI драйвера, так что через int 10h надо. |
16.05.2009, 15:02 | #9 |
Delphi
Форумчанин
Регистрация: 12.06.2008
Сообщений: 137
|
Есть пример программы, но она не работает почему-то. Может я неправильно ассемблирую? Ассемблирую через bat файл. Ассемблер: MASM 6.11.
БАТ ФАЙЛ Код:
Код:
Как я понял mov ah,31 атрибут символа, в данном случае ярко-белый символ на синем фоне. Я пробовал это использовать в своей программе, но не получается. |
16.05.2009, 15:16 | #10 |
Форумчанин
Регистрация: 15.07.2008
Сообщений: 615
|
Хмм... В вашем примере нет ошибки. Эту прогу просто нужно запустить из под файловой оболочки DOS, тогда, как я понял, у вас появится 2000 белых рожиц на синем цвете
xor eax, eax
xchg [eax], eax |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Собственное значение матриц. | Mixasik | Помощь студентам | 2 | 18.10.2008 21:30 |
6 прерывание | ленусик | Помощь студентам | 5 | 30.05.2008 16:57 |