Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wert einer Variablen in ASM ausgeben, String zusammensetzen (https://www.delphipraxis.net/10034-wert-einer-variablen-asm-ausgeben-string-zusammensetzen.html)

Luckie 10. Okt 2003 14:46

Re: Wert einer Variablen in ASM ausgeben, String zusammenset
 
Das habe ich mir aus Code gebastelt, welcher eine Zeichenkette byteweise kopieren soll.

Christian Seehase 10. Okt 2003 15:36

Re: Wert einer Variablen in ASM ausgeben, String zusammenset
 
Moin Luckie,

Du hast vor Loop nirgends ECX initialisiert, und somit hat die Schleife eine unbestimmte Anzahl von Durchläufen.

Code:
lodsb
stosb
kannst Du durch

Code:
movsb
bzw. die ganze Schleife durch

Zitat:

rep movsb
austauschen.

Luckie 10. Okt 2003 19:10

Re: Wert einer Variablen in ASM ausgeben, String zusammenset
 
Und wie sähe dass dann aus?

Christian Seehase 10. Okt 2003 20:44

Re: Wert einer Variablen in ASM ausgeben, String zusammenset
 
Moin Luckie,

cih würde mal sagen so:

Code:
data segment
  dummy  DW 512 dup ($)
data ends


code segment
Start:
  mov  ax, 5 
  add  ax, 2 

  lea  si, ax
  lea  di, dx
  mov  ecx,strlen ; strlen = Länge die kopiert werden soll
  rep  movsb
  mov  dummy, ax
  mov  dx, offset dummy
  mov   ah, 9h
  int  21h
  mov  ax, 4C00h
  int  21h
code ends

end Start

Luckie 10. Okt 2003 21:59

Re: Wert einer Variablen in ASM ausgeben, String zusammenset
 
Leider auch nicht:
Code:
  lea  si, ax
**Error** build.bat(14) Illegal immediate
  lea  di, dx
**Error** build.bat(15) Illegal immediate
  mov  ex, 10 ; strlen = Lõnge die kopiert werden soll
**Error** build.bat(16) Undefined symbol: ex
  mov  ex, 10 ; strlen = Lõnge die kopiert werden soll
*Warning* build.bat(16) Argument needs type override
  mov  dummy, ax
**Error** build.bat(18) Can't address with currently ASSUMEd segment registers
Verdammt, das kann doch nicht so schwer sein den Inhalt eines Registers auf dem Monitor auszugeben. In meinem Assemblerbuch stehen wunbderbare Beispile zu allen Grzundrechenarten usw. drin, nur leider unvollständige Code Schnipppsel - die haben sich immer um die Ausgabe gedrückt. :cry:

Hier http://www.c-plusplus.de/forum/viewt...=370126#370126 habe ich von jemanden Code bekommen, ich muß nur noch rausfinden, wie ich den einzubinden habe.

Christian Seehase 10. Okt 2003 23:06

Re: Wert einer Variablen in ASM ausgeben, String zusammenset
 
Moin Luckie,

sorry, ich dachte es ging Dir nur um die Schleife:
Du kannst auch mal versuchen, ob's ohne die e's vor den Registerbezeichnungen geht, mit sind's halt die ganzen 32 Bit


Code:
data segment
  dummy  DW 512 dup ($)
data ends


code segment
Start:
  mov  eax, 5 
  add  eax, 2 

  lea  esi,[eax]
  lea  edi,[edx]
  mov  ecx,10 ; strlen = Länge die kopiert werden soll
  rep  movsb
  mov  dx, offset dummy
  mov  ah, 9h
  int  21h
  mov  ax, 4C00h
  int  21h
code ends

end Start

Luckie 10. Okt 2003 23:23

Re: Wert einer Variablen in ASM ausgeben, String zusammenset
 
Wie viele Enttäuschungen haltet ihr noch aus? :roll:
Code:
data segment
  dummy  DW 512 dup ($)
data ends


code segment
Start:
  mov  ax, 5 
  add  ax, 2 

  lea  si,[ax]
  lea  di,[dx]
  mov  cx,10 ; strlen = Länge die kopiert werden soll
  rep  movsb
  mov  dx, offset dummy
  mov  ah, 9h
  int  21h
  mov  ax, 4C00h
  int  21h
code ends

end Start
lea si,ax
**Error** build.bat(14) Illegal immediate
lea di,dx
**Error** build.bat(15) Illegal immediate

:evil:

Christian Seehase 10. Okt 2003 23:24

Re: Wert einer Variablen in ASM ausgeben, String zusammenset
 
Moin Luckie,

Zitat:

Zitat von Luckie
Verdammt, das kann doch nicht so schwer sein den Inhalt eines Registers auf dem Monitor auszugeben.

In welcher Form willst Du es denn darstellen? Binär, Hex, Dezimal? Byte, Word, Dword?
Oder soll das Register (in Deinem Falle wohl ax) einen darstellbaren Inhalt haben?

Luckie 10. Okt 2003 23:25

Re: Wert einer Variablen in ASM ausgeben, String zusammenset
 
Nun ja, ich rechne ja 5+2 und es wäre schön wenn da dann 7 stünde.

Christian Seehase 10. Okt 2003 23:26

Re: Wert einer Variablen in ASM ausgeben, String zusammenset
 
Moin Luckie,

Code:
lea si,ax
Code:
lea si,[color=red][[/color]ax[color=red]][/color]


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:31 Uhr.
Seite 2 von 3     12 3      

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