Подскажите пожалуйста, при помощи какого прерывания можно вывести символ на экран, очистить экран. Буду очень признателен, если покажите пример. Заранее спасибо!
Не дока в этих вопросах, но думаю, что тебе нужны функции прерывания 0x10, если речь идет о ф-иях BIOS. Я, например, делаю так: Код (Text): xor ds, ds ;Предполагается, что cтрока находится в физ. первых 64К. mov si, string ;si -- указатель на начало строки. mov cx, string_len ;cx -- длина, включая NULL. .l00p: lodsb test al, al ;Строка null-terminated, тут можно ввести любой признак. jz .exit mov bx, 0x7 mov ah, 0xE ;Эта ф-ия выводит символ из al и продвигает каретку. int 0x10 ;Поехали! jmp .l00p .exit: ret Подробнее об этом всем можно почитать тут: http://www.cs.cmu.edu/~ralf/interrupt-list/
Я прошу прощение, но я совсем BEGINNER =)) Поясните пожалуйста: 1. Как задается string? 2. string_len - это величина генерируемая автоматически или ее еужно самому программисту считать?
1. Самое простое, думаю, задать с помощью директивы 'db'. Код (Text): string: db 'String which you need',0x0 -- это для FASM. 2. Зависит от желания и ассемблера -- можно вручную посчитать, ну а если хочется автоматом, то для FASM это будет выглядеть так: Код (Text): string: db 'String which you need',0x0 string_len = $ - string это без выделения места под переменную string_len. Если хочется выделить место под переменную и проинициализировать ее длиной строки, то будет так: Код (Text): string: db 'ABC',0x0 string_len: db $ - string Это опять же для FASM. Ну и в коде, в этом случае нужно использовать 'mov cx, [string_len]' вместо 'mov cx, string_len'. А вообще -- лучше хорошенько почитать соответствующу лит-ру .