Oppure

Loading
08/08/08 16:43
^JAVA^
Ciao, è da poco che programmo in Assembly X86 sotto Linux, voglio provare ad utilizzare gli interrupts, il seguente codice dovrebbe stampare la lettera A ma non la stampa ed il programma esce con un Segmentation fault. Potete aiutaremi?
Come compilatore utilizzo nasm.
segment .text
global main
main:
MOV DL,41h ; Dovrebbe stamare A
MOV AH,02h
INT 21h
aaa
11/08/08 9:58
lorenzo
non ho mai provato assmbler x86 sotto linux, ma se non sbaglio quando fai

mov ah,02h
int21h


il codice è sbagliato. Se chiami il 21h per stampare a video( glielo dici con mov ah,02h )
devi mettere quello che devi stampare in al

mov al,41h
mov ah,02h
int 21h


è un carattere singolo, non una stringa da mettere in dl
Ultima modifica effettuata da lorenzo 11/08/08 9:59
aaa
16/08/08 22:46
^JAVA^
Ciao, sono riuscito a risolvere vi posto il sorgente:
section .data

 hello: db 'Hello world!',10;Stringa da visualizzare
 hlength: equ $-hello ;Lunghezza stringa hello

section .text 

global main

main:

 mov EAX,4 ;Chiamata alla funzione sys_write
 mov EBX,1;Standard output
 mov ECX,hello;Inserisco offset di hello
 mov EDX,hlength;Inserisco la lunghezza di hello
 INT 80h ;Interrupt
 mov EAX,1;Chiamata alla funzione sys_exit
 mov EBX,0;Ritorno 0
 INT 80;Interrupt

Ciao & Grazie a tutti!
aaa