imant iš google: https://stackoverflow.com/questions/30187367/differences-between-int-10h-int-16h-int-21h#30188146 Each INT represents a functions family, where usually AH represents the function number.
For example :
INT 0x10 is used for screen manipulation
AH=0x00 -> set video mode AX=0x1003 -> Set Blinking mode AH=0x13 -> write string AH=0x03 -> get cursor position INT 0x10 with AH = 0x00 and AL = 3 (mov ax, 3) means: set video mode to TextMode 80x25 chars and 16 colors.
org 100h
mov ah, 0
mov al, 13h
int 10h
;T raide;
mov cx, 160
mov dx, 10
mov al, 15
; pradžioje cx = 160
; kol cx >= 120 (t.y. 40 kartų) sukame ciklą:
; ah = 12
; išvedam į ekraną (kai ah=0Ch funkcija "Write graphics pixel"; AL = Color, BH = Page Number, CX = x, DX = y)
; cx= cx-1
; vadinasi dedam baltus (nes AL=15) pikselus į koordinates:
; 160, 10
; 159, 10
; ...
; 120, 10
; gauname horizontalią liniją 160,10 - 120,10
u1: mov ah, 0ch
int 10h
dec cx
cmp cx, 120
jae u1
mov cx, 140
mov dx, 70
mov al, 15
;ciklo pradžia
; cx =140, dx=70
; ciklo metu cx (X koordinatė) nesikeičia
; DX (Y koordinatė keičiasi nuo 70 iki 10)
; išvedinėjame pikselius:
; 140, 70
; 140, 69
; ...
; 140, 10
; gauname vertikalią liniją 140, 70 - 140, 10
u2: mov ah, 0ch
int 10h
dec dx
cmp dx, 10
ja u2
; prasukus šiuos du ciklus ekrane turi matytis T raidė
;O raide;
mov cx, 220
mov dx, 70
mov al, 15
u3: mov ah, 0ch
int 10h
dec dx
cmp dx, 10
ja u3
; ciklo pradžioje X=220, Y = 70, pikselio spalva balta
; cikle mažinam Y koordinatę nuo 70 iki 11
; išvedinėjam baltus taškus (kai ah=0Ch ir int 10h) ir
; po ciklo prasisukimo gauname vertikalią liniją 220,70 - 220,10
mov cx, 180
mov dx, 70
mov al, 15
u4: mov ah, 0ch
int 10h
dec dx
cmp dx, 10
ja u4
; analogiškai Y mažėja nuo 70 iki 10, gauname vertikalią liniją 180, 70 - 180,10
; tad po šių dviejų ciklų turime dvi vertikalias linijas - ties X=180 ir ties X= 220
mov cx, 220
mov dx, 70
mov al, 15
u5: mov ah, 0ch
int 10h
dec cx
cmp cx, 180
ja u5
; X = 220, cikle mažėja iki 180
; išvedinėjam baltus taškus (kai ah=0Ch ir int 10h)
; Y (dx) nesikeičia, vadinasi gausim horizontalią liniją 220,70 - 180,70
mov cx, 220
mov dx, 10
mov al, 15
u6: mov ah, 0ch
int 10h
dec cx
cmp cx, 180
ja u6
; brėžiam viršutinę horizontalią liniją - CX mažėja nuo 220 iki 180
; Y nesikeičia ir yra 10
; vadinasi išvedę baltus taškus gausime liniją 220, 10 - 180, 0
; teoriškai tai pavadinta raide "O" bet man atrodo paprasčiausias kvadratas
ret
end
; pabaiga
Viskas, ko aš nesuprtatau šiame kode - kodėl pirmame cikle naudojamas jae, o visuose kituose cikluose - ja. Tad teoriškai pirmoji linija turėtų būti 1 pixeliu ilgesnė. Nesupratau kam to reikia