AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Aus Integer-Wert bestimmte Stelle extrahieren
Thema durchsuchen
Ansicht
Themen-Optionen

Aus Integer-Wert bestimmte Stelle extrahieren

Ein Thema von ibp · begonnen am 6. Jul 2007 · letzter Beitrag vom 31. Dez 2017
 
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: Aus Integer-Wert bestimmte Stelle extrahieren

  Alt 6. Jul 2007, 16:20
mit kleinen Änderungen
Delphi-Quellcode:
function getdigit(zahl,stelle:integer):integer;
{
in
zahl  --> eax
stelle --> edx

out
result <-- eax
}

asm
  push ebx //ebx auf den Stack retten

  xor ecx,ecx //ecx löschen
  inc ecx //ecx auf 1 setzen
  mov ebx,10 //ebx auf 10 setzen

@while: //nur ein Label für Sprungziele
  dec edx //edx um 1 erniedrigen
  jng @endwhile //wenn edx nicht größer als 0 nach @endwhile springen
  imul ecx,10 //ecx mit 10 multiplizieren
  jmp @while //nach @while springen
@endwhile:

  cdq //convert DWord-->QWord (Division vorbereiten)
  div ecx //division von eax/ecx --> ganzzahliger Anteil in eax; Rest in edx
  cdq //dasselbe nochmal
  div ebx //division von eax/ebx (Rest steht wieder in edx)
  mov eax,edx //edx nach eax(=Result)

  pop ebx //gerettetes Register wieder herstellen
end;
Bis endwhile ist die Vorbereitung dass aus 1,2,3,4 -->1,10,100,1000 wird. Ab dem CDQ macht die funktion das, was Sirthornberry auch macht.
Es geht halt nicht ohne, dass man erst die 10er-Potenzen ausrechnet.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
 


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 01:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz