Pereiti prie turinio

tomka080

Nariai
  • Pranešimai

    7
  • Užsiregistravo

  • Lankėsi

  • Atsiliepimai

    0%

Reputacijos išklotinė

  1. Patinka
    tomka080 sureagavo į simasj Reikia pagalbos sudarant programos algoritmą   
    Labas,
     
    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
     
    P.S. Beje, tavo paveiksliuko nerodo
×
×
  • Pasirinkite naujai kuriamo turinio tipą...