2016-06-12 6 views
-1

falsch ist der Code:Assembly - kann nicht verstehen, was hier

proc ChangeColumnNumber1 
    inc [FirstColumnArray] 
    mov [Player1Drawx], 25h 
    mov [Player1Drawy], 87h 
    jmp DrawPlayer1Disc 
endp ChangeColumnNumber1 

DrawPlayer1Loop: 
    mov bh,0h 
    mov cx,[Player1Drawx] 
    mov dx,[Player1Drawy] 
    mov al,[player1disccolor] 
    mov ah,0ch 
    int 10h 
    inc [Player1Drawx] 
    cmp cx, [Player1Drawx + 14h] 
    jl DrawPlayer1Loop 

DrawPlayer1Disc: 
    mov bh, 0h 
    inc [Player1Drawy] 
    cmp dx, [Player1Drawy + 14h] 
    jl DrawPlayer1Loop 

proc CheckPlayer2Number 
    mov ah, 7 
    int 21h 
    cmp al, 31h 
    je Player2CheckColumn1 
    jmp CheckPlayer2Number 
endp CheckPlayer2Number 

proc Player2CheckColumn1 
    cmp [FirstColumnArray], 0 
    je ChangeColumnNumber2 
    cmp [FirstColumnArray + 1], 0 
    je ChangeColumnNumber2 
endp Player2CheckColumn1 

proc ChangeColumnNumber2 
    inc [FirstColumnArray + 1] 
    mov [Player2Drawx], 25h 
    mov [Player2Drawy], 60h 
    jmp DrawPlayer2Disc 
endp ChangeColumnNumber2 

DrawPlayer2Loop: 
    mov bh,0h 
    mov cx,[Player2Drawx] 
    mov dx,[Player2Drawy] 
    mov al,[player2disccolor] 
    mov ah,0ch 
    int 10h 
    inc [Player2Drawx] 
    cmp cx, [Player2Drawx + 14h] 
    jl DrawPlayer2Loop 

DrawPlayer2Disc: 
    mov bh, 0h 
    inc [Player2Drawy] 
    cmp dx, [Player2Drawy + 14h] 
    jl DrawPlayer2Loop 

Als ich es ausführen soll ich ‚1‘ drücken. Wenn ich das mache, soll es ein Quadrat zeichnen und wenn ich wieder '1' drücken soll, zeichnet es nicht das zweite Quadrat. Ich verstehe nicht, warum es nicht funktioniert. Davor hatte ich einen mov-Befehl, der einen Wert zum Beispiel in Player1Drawx verschiebt, aber es funktioniert nicht mit meinem neuen Code, also löschte ich ihn.

Danke für jede Hilfe, die ich bekomme.

+0

Verwenden Sie einen Debugger und kommentieren Sie Ihren Code, besonders wenn Sie möchten, dass andere helfen. Stellen Sie auch korrekte [MCVE] zur Verfügung. – Jester

Antwort

1
proc ChangeColumnNumber1 
    inc [FirstColumnArray] 
    mov [Player1Drawx], 25h 
    mov [Player1Drawy], 87h 
    jmp DrawPlayer1Disc 
endp ChangeColumnNumber1 

Wenn Sie jmp DrawPlayer1Disc das DX Register nicht eingerichtet war, immer noch verwenden Sie sofort in cmp dx, [Player1Drawy + 14h].

DrawPlayer1Disc: 
    mov bh, 0h 
    inc [Player1Drawy] 
    mov dx, [Player1Drawy]   <<< Don't you need this? 
    cmp dx, [Player1Drawy + 14h] 
    jl DrawPlayer1Loop 
    ret       <<< Aren't you missing a return here? 

Gleiches gilt für DrawPlayer2Disc.

Verwandte Themen