На даче стоит компьютер(процессор Pentium 4) Создал программу(Fasm): MAIN.ASM Code (Text): org 100h use16 MAIN_Code: include 'GFX.ASM' mov ah, 10h int 16h int 20h MAIN_Data: MAIN_End: GFX.ASM Code (Text): use16 mov ax,3 int 10h push cs pop ds mov si,text mov di,3900 mov ax,0B800h mov es,ax mov ah,7 @@: lodsb or al,al je @F stosw jmp @B @@: mov ah, 10h int 16h mov ax, 13h int 10h mov ah, 0ch mov cx, 255 mov bh, 0 @@: mov al, cl mov dx, 10 mov cl, al add cl, 10 int 10h mov cl, al loop @B jmp GFX_End GFX_Data: text db 'Loading...',0h GFX_End: Работает. Но когда запустил её на городском компьютере(Intel Core 2 Duo): Он пишет: 16-разрядная подсистема MS-DOS **************\Projects\video\MAIN.COM Процессор HTVDM обнаружил недопустимую инструкцию. CS:c000 IP:d6d8 OP: fedecec6c6 Главное адрес (даже смещение всегда одинаковы)
Кстати с биосом мне не повезло(глючил постоянно) Застревает на строчках Code (Text): mov ax, 13h int 10h Возможно-ли что версия не удачная? p.s. Надо без биоса: In, Out — этим всё сказано, но изучать долго.
Zhelezka Насчет ошибок проверь по справочникам. Возможно некоректное значение в регистрах. Но если застривает чисто на строчках То биос видео карты плохой. Поищи пример с in out - в интернете были, даже на wasm проскакивали. Переключение режимов делается на автомати записью ряда значений в порты. Значения табличные так что думать не нужно. Разве что пару нюансов есть, но я думаю если пример найдешь тебе его хватит.
Жалко, что не биос, он вроде подешевле, а почему Windows и все другие игры работают? А может быть из-за этого проблемма: Windows при загрузке всегда говорит: p.s.: Точно сообщение не помню, звучит примерно так.
16-битные функций BIOS'a врядли выкинут из "современных систем" тут хрен его знает конечно, чтоб окончательно определиться с глюкаловом надо заценить работу кода на Intel Core 2 Duo в чистом DOS а то 16-разрядная подсистема MS-DOS (c Процессором HTVDM) глюкодром тот еще. еще неплохо провереть (на коре под голым досом ) режим Unreal с доступом к LFB (это круто) 320x200x256 вобщето. с 64кб окном доступное по A0000 адресу.
проверь под отладчиком. Пошагово. Вызов int 10h сделай StepOver. Иногда, на некоторых биосах, после вызова портится регистр AX. Поэтому в момент Code (Text): int 10h mov cl, al вовсе не факт, что в cl то, что тебе надо. Там может быть что-то иное... строго говоря, как и в аh. Натыкался (давно еще) на похожие грабли, считая, что регистры после вызова сохраняются Оказалось, не всегда.