Другие языки программирования и технологии
Помогите разобраться в программе.
CSEG segment org 100h Begin: mov ah,9 mov dx,offset Message int 21h mov ah,9 mov dx,offset Mess2 int 21h mov ah,10 int 16h Message db 'Hello, world!$' Mess2 db 'Это я!$' CSEG ends end Begin Ассемблирование проходит успешно но как только пытаюсь запустить программу вылетает ошибка 16 разрядная подсистема MS-DOS. Процессор обнаружил недопустимую инструкцию IP:0003 OP:Fe ff 9f 08 00
Потому, что пытаешься запустить под виндой, которая не разрешает на прямую юзать прерывания!
Поставь DOSBox и будет тебе счастье…
Поставь DOSBox и будет тебе счастье…
Ну а как же ты хотел?
После того, как программа все напечатает, ее нужно корректно завершить.
in 16h - ожидание нажатия на клавишу, если в ah загружен 00h. Что такое 10 - я не помню, но видимо, что-то другое.
После чего программа дальше пытается выполнить код, который стоит после int 16h, но там не код, а строка.. . Потому и ругань.. . Это - так - на вскидку.. . 20 лет не писал на ассемблере.. .
Но почему-то кажется, что последней инструкцией программы должна быть в этом случае int 20h - завершить программу и вернуться в родительский процесс...
После того, как программа все напечатает, ее нужно корректно завершить.
in 16h - ожидание нажатия на клавишу, если в ah загружен 00h. Что такое 10 - я не помню, но видимо, что-то другое.
После чего программа дальше пытается выполнить код, который стоит после int 16h, но там не код, а строка.. . Потому и ругань.. . Это - так - на вскидку.. . 20 лет не писал на ассемблере.. .
Но почему-то кажется, что последней инструкцией программы должна быть в этом случае int 20h - завершить программу и вернуться в родительский процесс...
у меня пашет все. компилировал тасмом.
У некоторых моих друзей тоже была такая проблема. Я думаю что проблема в том что у них была 64битная машина и винда а программы та 16битные. У меня просто 32 битная. может поэтому и пашет все.
пользуйся лучше FASM'ом
там не нужно указывать все эти сегменты и т. д.
вот пример твоей программы на Фасм
org 100h
mov ah,9
mov dx,Message
int 21h
mov ah,9 ;эта строка тут даже лишняя так как в ah уже есть "9"
mov dx,Mess2
int 21h
mov ah,10
int 16h
int 20h ; закрытие программы. ставь желательно всегда
Message db 'Hello, world!$'
Mess2 db 'Its me!$'
У некоторых моих друзей тоже была такая проблема. Я думаю что проблема в том что у них была 64битная машина и винда а программы та 16битные. У меня просто 32 битная. может поэтому и пашет все.
пользуйся лучше FASM'ом
там не нужно указывать все эти сегменты и т. д.
вот пример твоей программы на Фасм
org 100h
mov ah,9
mov dx,Message
int 21h
mov ah,9 ;эта строка тут даже лишняя так как в ah уже есть "9"
mov dx,Mess2
int 21h
mov ah,10
int 16h
int 20h ; закрытие программы. ставь желательно всегда
Message db 'Hello, world!$'
Mess2 db 'Its me!$'
Похожие вопросы
- помогите разобраться в программе (Паскаль)
- Помогите разобраться с написанием программы Паскале!
- посмотрите мою программу на с++.Помогите разобраться
- В чем ошибка? Помогите разобраться! (программа на С++: добавление столбца в матрицу)
- Прошу помочь разобраться, пояснить некоторые пункты требования ТИПОГРАФИИ.
- помогите написать простые программы на Qbasic
- Пожалусто помогите разобраться в тексте программы С++
- Пользуемся продуктом компании, но у многих пользователей возникает ошибка при работе с программой. Помогите разобраться!
- Помогите разобраться в C++ с программой по поиску простых чисел
- Помогите разобраться, Pascal!