Software-Interrupt: Zeichen ´A´ ausgeben.
mov ah, 02
mov dl, 41
int 21h rem DOS-Interrupt Zeichen ausgeben
int 20
Dürfte mit dem nasm unter Linux nicht funktionieren.

Danke, gespeichert in "livingston_assembler_link.txt" für weiteres SurfenLivingston hat geschrieben:03.11.2024 19:30:35Interrupt 21h geht unter Linux wahrscheinlich ins Leere, sicher aber nicht zu irgendwas Brauchbarem.
Nebstbei: Der Versuch, irgendwas anderes als int80h aufzurufen, wird vom Kernel sofort bestraft. Der 80er ist der einzige, den ein User (und auch root) unter Linux nutzen darf. Alle anderen führen zu einer Exception wegen mangelnder Privilegien. Interrupt 80h war [*] die Schnittstelle zum Kernel (syscall), was am ehesten dem int21h aus DOS nahekommt.
[*] Wird heute zwar nicht mehr von libc und Co verwendet, weil zu langsam und träge, ist aber wohl immer noch eine Möglichkeit, den Kernel anzusprechen.
NACHTRAG:
Ein paar gaaanz einfache Beispiele für die Kernelschnittstelle sehen so aus: https://www.tutorialspoint.com/assembly ... _calls.htm
Der Assembler macht keine Annahmen von der Umgebung, es wird einfach nur ausgeführt, was Du ihm vorgibst. Da int ein regulärer Befehl ist, wird er natürlich ausgeführt. Wenn aber der Interrupt-Vektor ins nichts/auf was nicht Lauffähiges zeigt oder dem User untersagt ist, diesen Interrupt aufzurufen, dann knallt's eben zur Laufzeit.mampfi hat geschrieben:04.11.2024 10:41:40Ich hab´s jetzt mal spaßeshalber eingegeben, die Fehlermeldung gibt aber keinen Hinweis auf den falschen Interrupt: