ASM
Hi,
könnte mir bitte jemand ein paar Assembler Zeilen schreiben, die evtl. auch sinn ergeben sollten. Mehr als 10 werden wohl nicht nötig sein. Ein kenner sollte aber was damit anfangen können. Also einfach nur irgendwelche Befehle schreiben muss nicht wirklich sein. Was die Zeilen machen ist mir egal. Meintwegen "Hallo World!" ausgeben, oder irgendsowas einfaches. Hintergrund, ich möchte auf meiner Seite ein bisschen über Delphi erzählen und möchte dabei auch ein paar Beipiele zeigen, Delphi, Asm, Maschinensprache usw. ich kenn mich mit ASM überhaupt nicht aus, und hoffe das ihr mir jetzt keinen schmarrn schreibt. Vielen Dank. |
Die folgende Prozedur vertaucht die Werte von a und b.
Code:
procedure SwapInt(var a, b: Integer); assembler;
asm // in: eax <-> @a // in: edx <-> @b push ebx mov ebx, [eax] mov ecx, [edx] mov [eax], ecx mov [edx], ebx pop ebx end; |
Hi,
danke, aber ich möchte "reinen" Assembler-Code. nicht wie man ihn in Delphi umsetzt. So als würde man in einer ASM-Entwicklungsumgebung arbeiten. Für PIC's oder sowas. Brauche ich da nur den ASM teil, wie werden dann die variablen deklariert? |
Das kann ich jetzt leider nicht testen - sollte aber unter Turbo Assembler funktionieren (für MS DOSe)
Code:
.MODEL SMALL
.STACK 100h .DATA Greeting DB 'Hello World',13,10,'$' .CODE ;DS auf das Datensegment zeigen lassen mov AX, @Data mov DS, AX ;DOS Interrupt 0x21/Funktion 0x9 (Text darstellen) mov AH, 9 ;Pointer zur Meldung mov DX, OFFSET Greeting ;DOS Interrupt 0x21 ausführen int 21h ;DOS Interrupt 0x21/Funktion 0x4C (Programm beenden) mov ah, 4Ch ;DOS Interrupt 0x21 ausführen int 21h END Zitat:
|
Zitat:
Danke Dir. :cat: |
Na ja, so ist das halt mit denen, welche sich nicht zwischen deutsch und englisch entscheiden können/wollen.
|
Und weils so schön war, noch eine Prozedur, welche erst zurückkehrt, wenn der Kathodenstrahl des Monitors von der unteren, rechten Ecke zur oberen, linken Ecke wandert. (DOS Animationen haben dadurch flickerfreies Darstellungen ermöglicht).
Code:
WaitRetrace proc pascal far
;Status Register für den Test vorbereiten mov DX, 3DAh ;Label (für Jumps) @w1: ;Bit 3 in AL ist 0, wenn der Bildschirm aufgebaut wird in AL, DX test AL, 8h ;warten, wenn das Bit 3 nicht 0, also 1, ist jnz @w1 ;Label (für Jumps) @w2: ;Bit 3 in AL ist 1, wenn der Strahl zurück geht in AL, DX test AL, $8 ;warten, wenn das Bit 3 auf 0 gesetzt ist jz @w2 ENDP |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz