SumArray Proc Uses SI, Was heisst bitte das Uses bei MASM?

OP #6197291
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
....
.....
---------------------------------
Gast #6197306
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
#6197740
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
Angehängte Dateien:
Gast #6198013
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren