Witam wszystkich, mam duży problem. Dostałem program na zaliczenie (z asemblera), muszę go tak przerobić aby punkt poruszał się po prostokącie i mam dodać komentarze, gdzie co jest wykonywane, a ja nic nie wiem z asemblera, próbowałem się poduczyć ale tego nie chwytam, proszę pomóżcie.
Mam taki kod, tam punkcik porusza sie po trójkącie a ma być prostokąt:
ASSUME CS:CODE, SS:DSTACK, DS:DATA
DSTACK SEGMENT STACK
DB 64 DUP ('STACK')
DSTACK ENDSDATA SEGMENT
dlugosc_lini dw 0
x dw 0
kolor db 13pocz_x dw 0
pocz_y dw 0szer_wyp dw 0
wys_wyp dw 0
DATA ENDSCODE SEGMENT
Punkt PROC ; Procedura rysuje punkt
push dx
push dimov dl, kolor
mov di, x
mov es:[di+bx],dlpop di
pop dx
ret
Punkt ENDPPrzelicz_wsp PROC ; Przelicza współrzędne punktu
push cx
push axmov ax, pocz_x
mov x,ax
mov cx, pocz_y
sss:
add x, 320d
loop ssspop ax
pop cx
ret
Przelicz_wsp ENDPPlamka PROC ; procedura oczekująca na powrót plamki w pionie
mov dx,3dah
ram1:
in al,dx
test al,8
jnz ram1
ram2:
in al,dx
test al,8
jz ram2
ret
Plamka ENDPPrawy_bok PROC ; Rysuje linię skośną skierowaną w prawo
push cx
mov cx, dlugosc_linicall Przelicz_wsp
ff:
add x,321
mov kolor, 10
call Plamka
call Punktmov kolor,0
call Plamka
call Punktloop ff
pop cx
ret
Prawy_bok ENDPLewy_bok PROC ; Rysuje linię skośną skierowaną w lewo
push cx
mov cx, dlugosc_linicall Przelicz_wsp
gg:
sub x,319
mov kolor,11
call Plamka
call Punktmov kolor, 0
call Plamka
call Punktloop gg
pop cx
ret
Lewy_bok ENDPPodstawa PROC ; Rysuje linię poziomą skierowaną w lewo
mov cx, dlugosc_linicall Przelicz_wsp
ee:
dec x
mov kolor, 12
call Plamka
call Punktmov kolor, 0
call Plamka
call Punkt
loop ee
ret
Podstawa ENDPStart:
mov ax,DATA
mov ds,ax ; rejestr DS wskazuje nam segment z naszymi danymimov ax,0013h ;uruchamia tryb graficzny 320*240
int 10h
mov ax,0A000h
mov es,axpocz:
mov kolor,28mov dlugosc_lini,50
mov pocz_x,160
mov pocz_y,100
call Prawy_bokmov dlugosc_lini,100
mov pocz_x,210
mov pocz_y,150
call Podstawamov dlugosc_lini,50
mov pocz_x,110
mov pocz_y,150
call Lewy_boksprawdz_klawisz:
push es ;sprawdzamy czy nie został naciśnięty dowolny klawisz
xor ax,ax
mov es,ax
mov ax,es:[41Ah]
cmp ax,es:[41Ch]
pop es
jz poczmov ax,0003h ;jeżeli został naciśnięty klawisz to kończymy program
int 10hmov ax,0003h ;wraca do trybu dosowego
int 10hmov ax,4c00h ;zakończ
int 21hCODE ENDS
END Start
Bardzo proszę o pomoc, bo sam nie dam rady !!!