Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Altri Linguaggi - Stampare un carattere in Assembly X86
Forum - Altri Linguaggi - Stampare un carattere in Assembly X86

Avatar
^JAVA^ (Ex-Member)
Pro


Messaggi: 93
Iscritto: 06/12/2007

Segnala al moderatore
Postato alle 18:43
Venerdė, 08/08/2008
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.
Codice sorgente - presumibilmente Altri Linguaggi

  1. segment .text
  2. global main
  3. main:
  4. MOV DL,41h ; Dovrebbe stamare A
  5. MOV AH,02h
  6. INT 21h


PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 11:58
Lunedė, 11/08/2008
non ho mai provato assmbler x86 sotto linux, ma se non sbaglio quando fai

Codice sorgente - presumibilmente Plain Text

  1. mov ah,02h
  2. 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

Codice sorgente - presumibilmente Altri Linguaggi

  1. mov al,41h
  2. mov ah,02h
  3. int 21h



č un carattere singolo, non una stringa da mettere in dl

Ultima modifica effettuata da lorenzo il 11/08/2008 alle 11:59
PM Quote
Avatar
^JAVA^ (Ex-Member)
Pro


Messaggi: 93
Iscritto: 06/12/2007

Segnala al moderatore
Postato alle 0:46
Domenica, 17/08/2008
Ciao, sono riuscito a risolvere vi posto il sorgente:
Codice sorgente - presumibilmente Altri Linguaggi

  1. section .data
  2.  
  3.  hello: db 'Hello world!',10;Stringa da visualizzare
  4.  hlength: equ $-hello ;Lunghezza stringa hello
  5.  
  6. section .text
  7.  
  8. global main
  9.  
  10. main:
  11.  
  12.  mov EAX,4 ;Chiamata alla funzione sys_write
  13.  mov EBX,1;Standard output
  14.  mov ECX,hello;Inserisco offset di hello
  15.  mov EDX,hlength;Inserisco la lunghezza di hello
  16.  INT 80h ;Interrupt
  17.  mov EAX,1;Chiamata alla funzione sys_exit
  18.  mov EBX,0;Ritorno 0
  19.  INT 80;Interrupt


Ciao & Grazie a tutti!

PM Quote