Assembler Nullchecker Problem
-
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 GoAsmDATA 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