K
Hallo...ich hab mal wieder ein Problem mit einem Programm, ich weiss einfach net was ich da machen muss, bzw wie.
Ich hab ein Sortier Programm, das muss folgendermasen umprogrammiert werden:
Die Anzahl der sortierten Buchstaben und Zahlen soll auf der Konsole ausgegeben werden:
String1 enthält ... Großbuchstaben
String1 enthält ... Kleinbuchstaben
String2 enthält ... Zahlen.
Ausserdem soll das Programm mittels Unterprogrammen funktionieren, also das sortieren und das zählen soll in einer main methode mittels CALL,PUSH,POP,RET aufgerufen werden.
Ich wäre dankbar, wenn mir da einer von euch helfen könnte, da ich nicht weiß wie ich es anpacken soll...es kommen ja nicht mal im compiler die fehler, nur das ein fehler ist...
Hier ist das Programm...also schon mal viele Grüße, und danke,
Christina
PS: wir haben GoAsm
DATA SECTION
String1 DB 'A','D','d','C','b','X','y','B','H','P','K','k','l','z','m','a','Y'
String2 DB '1','6','2','9','8','3','4','7','5'
String3 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
carr DB 0Ah
linef DB 0Dh
;
RCKEEP DD 0
;
CODE SECTION
;
START: MOV EAX,0
MOV ESI,ADDR String1
MARKE1: CMP EAX,16
JG >ENDE
MOV EDX,EAX
INC EDX
MARKE2: CMP EDX,16
JG >ENDE1
MOV BL,[ESI+EAX]
MOV CL,[ESI+EDX]
CMP BL,CL
JL >WEITER
MOV [ESI+EAX],CL
MOV [ESI+EDX],BL
WEITER: INC EDX
JMP <MARKE2
ENDE1: INC EAX
JMP <MARKE1
ENDE: PUSH -11D
CALL GetStdHandle
PUSH 0,ADDR RCKEEP
MOV ESI,ADDR String1
PUSH 9D,ESI
PUSH EAX
CALL WriteFile
PUSH -11D
CALL GetStdHandle
PUSH 0,ADDR RCKEEP
MOV ESI, Addr carr
PUSH 1D, ESI
PUSH EAX
CALL WriteFile
PUSH -11D
CALL GetStdHandle
PUSH 0,ADDR RCKEEP
MOV ESI, Addr linef
PUSH 1D, ESI
PUSH EAX
CALL WriteFile
PUSH -11D
CALL GetStdHandle
PUSH 0,ADDR RCKEEP
MOV ESI,ADDR String1+9
PUSH 8D,ESI
PUSH EAX
CALL WriteFile
PUSH -11D
CALL GetStdHandle
PUSH 0,ADDR RCKEEP
MOV ESI, Addr carr
PUSH 1D, ESI
PUSH EAX
CALL WriteFile
PUSH -11D
CALL GetStdHandle
PUSH 0,ADDR RCKEEP
MOV ESI, Addr linef
PUSH 1D, ESI
PUSH EAX
CALL WriteFile
;------------------
MOV EAX,0
MOV ESI,ADDR String2
MARKE3: CMP EAX,8
JG >ENDE3
MOV EDX,EAX
INC EDX
MARKE4: CMP EDX,8
JG >ENDE2
MOV BL,[ESI+EAX]
MOV CL,[ESI+EDX]
CMP BL,CL
JL >WEITER1
MOV [ESI+EAX],CL
MOV [ESI+EDX],BL
WEITER1: INC EDX
JMP <MARKE4
ENDE2: INC EAX
JMP <MARKE3
ENDE3: PUSH -11D
CALL GetStdHandle
PUSH 0,ADDR RCKEEP
MOV ESI,ADDR String2
PUSH 30D,ESI
PUSH EAX
CALL WriteFile
;----------------------------
MOV EAX,1
RET