Prick
26-10-2003, 23:43
Hallo,
hoffe eine kleine Anfänger Assembler-Frage ist hier gestattet. Beschäftige mich seit kurzer Zeit mit der Programmiersprache Assembler und Linux (ix86) und stehe nun vor einem kleinem Problem.
Würde ganz gerne, um mehr über den Umgang mit Assembler zu lernen, einmal das Status-Byte des Druckers abfragen, leider bereitet mir das einige Schwierigkeiten, vielleicht könnt ihr mir da weiterhelfen?
section .text
global _start
msg db "Druckertest ...",0x0A ;0x0A->zeilenumbruch
msg2 db "Drucker bereit",0x0A
len equ $-msg
len2 equ $-msg2
_start:
mov eax,4 ; Ausgabe von msg
mov ebx,1
mov ecx,msg
mov edx,len
int 0x80
jmp Drucker_test
Drucker_test:
mov ah,02
xor dx,dx
int 17h
test ah,10000000b
je Bereit
Bereit:
mov eax, 4
mov ebx, 1
mov ecx, msg2
mov edx, len2
int 0x80
jmp Endeprg
Endeprg:
mov eax,1 ;syscall 1 = exit
int 0x80 ;exit
ist natürlich sehr simpel und sieht sicher auch sehr mies aus, für jemand der sich da etwas besser auskennt, bin wie gesagt noch in der Lernphase. :-)
Beim Ausführen von int 17h "segfaultet" mir das Programm, bin daher um jede Antwort/Verbesserung dankbar, diesen Fehler zum vermeiden.
Danke im Voraus,
h.d.
hoffe eine kleine Anfänger Assembler-Frage ist hier gestattet. Beschäftige mich seit kurzer Zeit mit der Programmiersprache Assembler und Linux (ix86) und stehe nun vor einem kleinem Problem.
Würde ganz gerne, um mehr über den Umgang mit Assembler zu lernen, einmal das Status-Byte des Druckers abfragen, leider bereitet mir das einige Schwierigkeiten, vielleicht könnt ihr mir da weiterhelfen?
section .text
global _start
msg db "Druckertest ...",0x0A ;0x0A->zeilenumbruch
msg2 db "Drucker bereit",0x0A
len equ $-msg
len2 equ $-msg2
_start:
mov eax,4 ; Ausgabe von msg
mov ebx,1
mov ecx,msg
mov edx,len
int 0x80
jmp Drucker_test
Drucker_test:
mov ah,02
xor dx,dx
int 17h
test ah,10000000b
je Bereit
Bereit:
mov eax, 4
mov ebx, 1
mov ecx, msg2
mov edx, len2
int 0x80
jmp Endeprg
Endeprg:
mov eax,1 ;syscall 1 = exit
int 0x80 ;exit
ist natürlich sehr simpel und sieht sicher auch sehr mies aus, für jemand der sich da etwas besser auskennt, bin wie gesagt noch in der Lernphase. :-)
Beim Ausführen von int 17h "segfaultet" mir das Programm, bin daher um jede Antwort/Verbesserung dankbar, diesen Fehler zum vermeiden.
Danke im Voraus,
h.d.