Einzelnen Beitrag anzeigen

Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Problem in Assembler: Grundrechenarten

  Alt 9. Mär 2006, 12:07
ich denke mal es wird um die multiplikation und division von integern gehen. dabei hilft dir (oh wunder ) imul und idiv. zu beachten bei den beiden ist, dass sie nur einen integer als "parameter" bekommen, den anderen int muss man vorher in EAX (oder war's EDX ) packen, der wird dann implizit benutzt. das ergebniss steht dann in EDX:EAX (d.h. wenn das ergebniss nicht in nen Integer passt, werden die "überstehenden" bits in EDX gepackt).

das ganze bezieht sich jetzt auf vorzeichenbehaftete zahlen (wies Integer nunmal sind), wenn du mit vorzeichenlose zahlen rechnen willst, nimmst du einfach mul/div statt imul/idiv.

edit:
ich hab grad nochmal nachgeschaut, beim idiv ist es etwas anders. da ist nachher in EAX das ergebniss der division und in EDX der Rest. das ganze läuft also für einen Integer so ab:

Code:
imul Int: EDX:EAX := EAX * Int
idiv Int: EAX := EAX div Int / EDX := EAX mod Int
edit2: hier ein link zu nem Opcode-PDF: http://www.jegerlehner.ch/intel/IntelCodeTable.pdf

edit3: beim idiv ist es nochmal anders, da steht der 1. operand in EDX:EAX. also so:
Code:
idiv Int: EAX := EDX:EAX div Int / EDX := EDX:EAX mod Int
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.
  Mit Zitat antworten Zitat