Вообщем вот такой нусталшой ТИПА загрузчик, компилируем запускаем *.exe (под виндой),выводит надпись как часы.Ок! Убираем Format MZ ,компилируем в *.bin, создаем самозагружаемый образ *.iso, записываем его на диск, перезагружаемся, надпись выводится как часы(только английские символы).Ок! Но если этот же ISO-шник запустить под виртуальной машиной, нифига, китай нам машет ероглифами, что не правильно, чего не хватает? Да, и как мне выводить русские символы, установить кодировку? (думаю нужен массив, но по какому адрессу его посылать тогда?) Код (Text): Format MZ push cs pop ds mov ax,$4f03 int 10h; push $B800; pop es mov si,_str; mov di,0; mov cx,[str_]; mov ax,10001111b; cld m1: movsb; stosb loop m1; jmp $ _str db 'Loading...' str_ dw $-_str;
Нормально установи обычный текстовый видеорежим (mov ax,3/int 10h) и регистр ds (при запуске экзешника его инициализация вообще не требуется, а при загрузке с iso нужно смотреть, как именно запускается твой код - если как обычный загрузчик, то предложенный тобой способ имеет право на существование, хотя все-таки надежнее сделать так: push 7C0h/pop ds).
Чтобы использовать русские буквы, ты должен загрузить соответствующий шрифт в память знакогенератора. Это можно сделать двумя способами - с помощью соответствующей функции BIOS или напрямую через порты в/в.
Здесь я ошибся, а точнее перепутал с com-файлами. При запуске экзешника в ds и es находится сегментный адрес psp, поэтому их нужно настраивать явно.
все сам разобрался... org $7c00;забыл написать а вообще, хз зачем этот орг нужен я и так сегменты сам настраивал, и вроде как биос передает управление на $7c00