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 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
    

Anmelden zum Antworten