Почему не работает программа, написанная самостоятельно в debug.exe по статье "Введение в машинный код" с сайта wasm.ru? При запуске нижеприводимого com-файла получено сообщение в окошке с заголовком 16-bit subsystem: NTVDM обнаружила недопустимую инструкцию по адресу траляля. У меня какие-то непонятные проблемы с запуском com-файлов, которые я создаю в учебных целях... и примеры com-файлов к книге "Ассемблер - это просто " не работают так как описано в книге. Либо вообще не запускаются, т.е черный экран cmd, либо не работают так как описано. А набираю код, компилирую и компоную абсолютно точно. В чем может состоять проблема? Код: Code (Text): 0100 XOR AL,AL ;окошко первое :0102 MOV BH,10 :0104 MOV CH,05 :0106 MOV CL,10 :0108 MOV DH,10 :010A MOV DL,3E :010C MOV AH,06 :010E INT 10 :0110 MOV BH,20 ;окошко второе :0112 MOV CH,06 :0114 MOV CL,11 :0116 MOV DH,0F :0118 MOV DL,3D :011A INT 10 :011C MOV BH,30 ;окошко третее :011E MOV CH,07 :0120 MOV CL,12 :0122 MOV DH,0E :0124 MOV DL,3C :0126 INT 10 :0128 MOV BH,40 ;окошко четвертое :012A MOV CH,08 :012C MOV CL,13 :012E MOV DH,0D :0130 MOV DL,3B :0132 INT 10 :0134 MOV BH,50 ;окошко пятое :0136 MOV CH,09 :0138 MOV CL,14 :013A MOV DH,0C :013C MOV DL,3A :013E INT 10 :0140 INT 20 ;конец проги... :0142 -r cx CX 0012 -n five.com -w Запись 00026 байт
Asm75 > В чем может состоять проблема? Первая инструкция расположена по адресу 100h, последняя - 140h и занимает 2 байта. Итого размер программы 42h байт, а ты просишь записать 12h байт. > Запись 00026 байт Ты ничего не путаешь?
щас угадаю, ты наверна все это под вистой делаешь? в винде вроде бы запрещены прерывания попробуй сделать то же самое, только в досе. Не в эмуляторах всяких, а именно в дос
Нет, система у меня WinXP Professional Edition SP3, запускаю из cmd или двойным щелчком просто из папки.А что значит "не в эмуляторах, а именно в ДОСе"? ДОС инсталлировать как-то надо отдельно?
Странно, при трассировке в debug пишет, что Программа завершилась нормально и выдает зеленое окошко в синей рамке. Но это же не то, что должна делать программа по описанию в статье "Введение в машинный код". Насколько я понял, программа должна выдать 4 окна, вложенных в основное окно.
Pavia Где в первом посте ты видишь, что ip отличен от 100h? Asm75 Размер твоего файла five.com - 38 байт? Если да, то ты записал 26h байт, а надо 42h. Т.о. последняя команда твоего five.com - :0124 MOV DL,3C, т.е. не вызывается int 10h, следовательно, не рисуется третье окно. За последней командой следует "мусор", который "крашит" NTVDM, что касается выполнения по debug'ером, то, наверное, его "мусор" позволяет завершиться программе "корректнее".