2013-11-13 2 views
0

Ну, я скопировал этот код именно со страницы 17 из http://www.tutorialspoint.com/assembly_programming/assembly_tutorial.pdf , но когда я был скомпилирован с NASM (на окнах, даже если в PDF они используют Linux) с помощью команды nasm -f elf test.asm -o test.com, и запустить его он плюет на это у меня :Какая незаконная инструкция?

 
16 bit MS-DOS Subsystem 

dir The NTVDM CPU has encountered an illegal instruction. 
CS:0000 IP:0077 OP:fo 37 05 0a 02 Choose 'Close' to terminate the application. 

где dir это место, откуда я скомпилированный и запустил программу (каталог NASM). Надеюсь, я не сделаю из этого ничего общего, но это меня озадачивает. Спасибо заранее!

ответ

2
int 0x80 ;call kernel 

Вы находитесь на окнах - даже до. Адрес, который вы используете в этой инструкции (0x80), специфичен для Linux/Unix.

http://en.wikipedia.org/wiki/INT_(x86_instruction)

+0

спасибо. сейчас я увижу – mee

+1

На DOS. Его API-интерфейс, основанный на прерываниях, широко документирован; просто найдите тот, который более или менее соответствует любому syscall, который вы пытались сделать. –

Смежные вопросы