Hi all..

mov al, 0xB6
	out 0x43, al

Why the istruction out give me a segmentation fault ?? :rolleyes:
This is the enteire code

section .data
	hello:     db 'Hello world!',10    ; 'Hello world!' plus a linefeed character
	helloLen:  equ $-hello             ; Length of the 'Hello world!' string
	                                   ; (I'll explain soon)

section .text
	global _start

_start:
	mov eax,4            ; The system call for write (sys_write)
	mov ebx,1            ; File descriptor 1 - standard output
	mov ecx,hello        ; Put the offset of hello in ecx
	mov edx,helloLen     ; helloLen is a constant, so we don't need to say
	                     ;  mov edx,[helloLen] to get it's actual value
	int 80h              ; Call the kernel
	

	xor al, al	
	mov al, 0xB6
	out 0x43, al
 	xor al, al
 	mov al, 54
 	out 0x42, al
	xor al, al
 	mov al, 124
 	out 0x42, al
 	xor al, al
 	in al, 0x61
 	or al, 3
 	out 0x61, al
 	xor al, al

	mov eax,1            ; The system call for exit (sys_exit)
	mov ebx,0            ; Exit with return code of 0 (no error)
	int 80h

oh, i use linux... ;)

Recommended Answers

All 4 Replies

Linux runs in 32bit protected mode whre all ports are blocked .

The code u r showing will only gonna work in real mode (i.e. 16 bit , MsDos style).

If you really need to execute in/out instruction then consider coding the above prog as a device driver or kernel moddule .

Linux will give u access to ports in Ring 0 only ,where driver runs.

Linux runs in 32bit protected mode whre all ports are blocked .

The code u r showing will only gonna work in real mode (i.e. 16 bit , MsDos style).

If you really need to execute in/out instruction then consider coding the above prog as a device driver or kernel moddule .

Linux will give u access to ports in Ring 0 only ,where driver runs.

i'm italian, and my english is poor....:rolleyes:

SO, i cannot execute OUT and IN command in linux ??
:eek:

No , You Need To Code A Driver / Kernel Moddule To

Hi,

There are some 3rd party drivers that let you access IO ports through them, but you call a function on their DLL not the OUT opcode.

Loren Soth

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.