Forum: PC-Programmierung SumArray Proc Uses SI, Was heisst bitte das Uses bei MASM?


von Peter B. (funkheld)


Lesenswert?

Hallo, guten tag.
Ich nutze den MASM für DOS.

Was heisst bitte das  "Uses SI" im Kopf ,
oder auch dieses Uses im anderen Programm : StringInfo Proc Uses SI DI 
BX ES

Danke.
----------------------------------
.model medium,basic
.code
.286

public SumArray

SumArray Proc Uses SI, Array:DWord, NumEls:Word, Sum:Word

  Push DS          ;save DS so we can restore it later
  Push SI          ;PDS far strings require saving SI too
....
.....
---------------------------------

von Dirk B. (dirkb2)


Lesenswert?

Versuch mal ein English-Deutsch Wörterbuch.
Das Grundwort ist „use“

von cppbert (Gast)


Lesenswert?

Peter B. schrieb:
> Hallo, guten tag.
> Ich nutze den MASM für DOS.
>
> Was heisst bitte das  "Uses SI" im Kopf ,

Wenn du mit invoke arbeitest werden diese register automatisch gesichert 
und restored, soweit ich das noch richtig weiss

Btw: Mit https://www.scummvm.org/news/20180331/ ida freeware 5 (nicht 7) 
kannst du wunderbar die sich ergebende exe/com datei anschauen und den 
asm code verstehen

von Peter B. (funkheld)


Lesenswert?

danke für die Info.

von cppbert (Gast)


Lesenswert?

Peter B. schrieb:
> danke für die Info.

Könnte auch ohne invoke gehen, einfach mal die exe oder obj mit ida 
anschauen, dann siehst du schnell was der assembler macht

von Thomas Z. (usbman)


Angehängte Dateien:

Lesenswert?

Siehe page 147

Der Assembler erzeugt zusätzlich Push und Pop Befehle in Prolog und 
Epilog um die angegebenen Register zu sichern. Man muss das also nicht 
mehr selbst machen. Über den Sinn dieser Aufzählung kann man sicher 
streiten.

Wenn man die Liste immer aktuell hält ist das sicher ein Weg. Vorteil 
ist sicher dass der Assembler die Reihenfolge im Griff hat und deshalb 
keine Tippfehler passieren können.
Um bei deinem Codeschnipsel zu bleiben. Da ist das Push si nicht 
notwendig da SI in der uses  Liste auftaucht. SI landet also doppelt auf 
dem Stack.

Thomas

: Bearbeitet durch User
von Peter B. (funkheld)


Lesenswert?

Danke.

Dieses IDA ist eine tolle Sache.

von cppbert (Gast)


Lesenswert?

Peter B. schrieb:
> Danke.
>
> Dieses IDA ist eine tolle Sache.

Ja das ist er

von cppbert (Gast)


Lesenswert?

cppbert schrieb:
> Peter B. schrieb:
>> Danke.
>>
>> Dieses IDA ist eine tolle Sache.
>
> Ja das ist er

Ghidra ist auch nicht schlecht aber nicht ganz so einfach zu bedienen 
wie IDA

von rbx (Gast)


Lesenswert?

Thomas Z. schrieb:
> Der Assembler erzeugt zusätzlich Push und Pop Befehle in Prolog und
> Epilog um die angegebenen Register zu sichern. Man muss das also nicht
> mehr selbst machen. Über den Sinn dieser Aufzählung kann man sicher
> streiten.

Zumindest ist der Code bei z.B. Stringverarbeitenen (Autoloop-)Befehlen 
ein kleines bisschen transparenter.
https://de.wikibooks.org/wiki/Assembler-Programmierung_f%C3%BCr_x86-Prozessoren/_Stringbefehle

In dem Assemblercode von dem MS-Dos "Debug" Programm werden die z.B. 
häufiger benutzt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.