Telitett Negyzet Kirajzolasa Assemblyben
unknown
assembly_x86
4 years ago
1.4 kB
12
Indexable
Code Segment
assume CS:Code, DS:Data, SS:Stack
Start:
mov ax, Code
mov DS, AX
; Képernyő Törlés
mov ax,03h
int 10h
; Kurzor pozicionálás
mov ah,02h
mov bl,0
mov dl,40
mov dh,12
int 10h
; Beállítom a négyzet méretét a CX regiszterbe és beteszem a stackbe
mov cx,5
push cx
; Átmásolom a DI regiszterbe a CX értékét (5) mivel 5x kell majd lefusson a ciklus
mov di,cx
Kulso:
pop cx ;megbizonyosodom rolla hogy cx ben
; a eredeti meret legyen megadva a belso loop miat
push cx
Belso:
; Karakter kiíratása - *
mov ah,02h
mov dl,"*"
int 21h
loop Belso
; Kurzor pozicionálás - Megnöveljük a DH-t hogy a kovetkezo oszlop kovetkezzen
mov ah,02h
mov bl,0
mov dl,40
inc dh
int 10h
dec di ; Csökkentjük a DI-t mert már ugye egyszer lefutott a ciklus, így már csak pl: 4x kell lefutnia
mov cx,di ; Átmásoljuk a CX regiszterbe. Amennyiben 0 van a CX-ben kilépünk a loop-bol
loop Kulso
; Ha leutunk egy billentyut akkor vege a program futásának
xor ax,ax
int 16h
pop ax ; A végén kiürítjük a vermet
Program_Vege:
mov ax, 4c00h
int 21h
Code Ends
Data Segment
Data Ends
Stack Segment
Stack Ends
End Start
Editor is loading...