AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ASM

Ein Thema von Daniel B · begonnen am 1. Jul 2002 · letzter Beitrag vom 1. Jul 2002
Antwort Antwort
Daniel B
(Gast)

n/a Beiträge
 
#1

ASM

  Alt 1. Jul 2002, 16:57
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.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2
  Alt 1. Jul 2002, 17:14
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;
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#3
  Alt 1. Jul 2002, 17:29
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?
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#4
  Alt 1. Jul 2002, 18:04
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 von DOS Bildschirm:
C>hwelt.exe
Hallo Welt
C>_
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#5
  Alt 1. Jul 2002, 18:13
Zitat von sakura:
Code:
DB   'Hello World',13,10,'$'
Zitat von DOS Bildschirm:
Hallo Welt
Wenn asm doch nur sooo klug wäre.

Danke Dir.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#6
  Alt 1. Jul 2002, 18:16
Na ja, so ist das halt mit denen, welche sich nicht zwischen deutsch und englisch entscheiden können/wollen.
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#7
  Alt 1. Jul 2002, 18:26
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
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:01 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