.model small .stack .data .code start: mov ax, 0a000h mov es, ax mov ax, 13h int 10h mov cx, 130 mov dx, 75 ; top horizontal line hseT: mov ah, 0ch mov al, 07h int 10h inc cx cmp cx, 216 jnz hseT ; bottom horizontal line mov cx, 130 mov dx, 125 hseB: mov ah, 0ch mov al, 07h int 10h inc cx cmp cx, 216 jnz hseB ; left vertical line: mov cx, 130 mov dx, 75 hseL: mov ah, 0ch mov al, 07h int 10h inc dx cmp dx, 125 jnz hseL ; right vertical line mov cx, 216 mov dx, 75 hseR: mov ah, 0ch mov al, 07h int 10h inc dx cmp dx, 126 jnz hseR ; left roof line mov cx, 130 mov dx, 75 hseLR: mov ah, 0ch mov al, 07h int 10h inc cx dec dx cmp cx, 173 cmp dx, 32 jnz hseLR ; right roof line mov cx, 173 mov dx, 32 hseRR: mov ah, 0ch mov al, 07h int 10h inc cx inc dx cmp cx, 216 cmp dx, 75 jnz hseRR ; left door line mov cx, 164 mov dx, 125 hseLD: mov ah, 0ch mov al, 07h int 10h dec dx cmp dx, 100 jnz hseLD ; right door line mov cx, 182 mov dx, 125 hseRD: mov ah, 0ch mov al, 07h int 10h dec dx cmp dx, 100 jnz hseRD ; top door line mov cx, 164 mov dx, 100 hseTD: mov ah, 0ch mov al, 07h int 10h inc cx cmp cx, 183 jnz hseTD ; windows mov cx, 136 mov dx, 85 hseLWV1: mov ah, 0ch mov al, 07h int 10h inc dx cmp dx, 105 jnz hseLWV1 mov cx, 146 mov dx, 85 hseLWV2: mov ah, 0ch mov al, 07h int 10h inc dx cmp dx, 105 jnz hseLWV2 mov cx, 156 mov dx, 85 hseLWV3: mov ah, 0ch mov al, 07h int 10h inc dx cmp dx, 105 jnz hseLWV3 mov cx, 190 mov dx, 85 hseRWV1: mov ah, 0ch mov al, 07h int 10h inc dx cmp dx, 105 jnz hseRWV1 mov cx, 200 mov dx, 85 hseRWV2: mov ah, 0ch mov al, 07h int 10h inc dx cmp dx, 105 jnz hseRWV2 mov cx, 210 mov dx, 85 hseRWV3: mov ah, 0ch mov al, 07h int 10h inc dx cmp dx, 105 jnz hseRWV3 mov cx, 136 mov dx, 85 hseWH1: mov ah, 0ch mov al, 07h int 10h inc cx cmp cx, 156 jnz hseWH1 mov cx, 190 mov dx, 85 hseWH1b: mov ah, 0ch mov al, 07h int 10h inc cx cmp cx, 210 jnz hseWH1b mov cx, 136 mov dx, 95 hseWH2: mov ah, 0ch mov al, 07h int 10h inc cx cmp cx, 156 jnz hseWH2 mov cx, 190 mov dx, 95 hseWH2b: mov ah, 0ch mov al, 07h int 10h inc cx cmp cx, 210 jnz hseWH2b mov cx, 136 mov dx, 105 hseWH3: mov ah, 0ch mov al, 07h int 10h inc cx cmp cx, 157 jnz hseWH3 mov cx, 190 mov dx, 105 hseWH3b: mov ah, 0ch mov al, 07h int 10h inc cx cmp cx, 211 jnz hseWH3b ; draw the path ; left path top mov cx, 164 mov dx, 126 pthLT: mov ah, 0ch mov al, 0ch ; light red int 10h dec cx inc dx cmp cx, 144 cmp dx, 146 jnz pthLT ; right path top mov cx, 182 mov dx, 126 pthRT: mov ah, 0ch mov al, 0ch int 10h dec cx inc dx cmp cx, 162 cmp dx, 146 jnz pthRT ; left path middle mov cx, 144 mov dx, 146 pthLM: mov ah, 0ch mov al, 0ch int 10h inc dx cmp dx, 166 jnz pthLM ; right path middle mov cx, 162 mov dx, 146 pthRM: mov ah, 0ch mov al, 0ch int 10h inc dx cmp dx, 166 jnz pthRM ; left path bottom mov cx, 144 mov dx, 166 pthLB: mov ah, 0ch mov al, 0ch int 10h dec cx inc dx cmp cx, 114 cmp dx, 196 jnz pthLB ; right path bottom mov cx, 162 mov dx, 166 pthRB: mov ah, 0ch mov al, 0ch int 10h dec cx inc dx cmp cx, 132 cmp dx, 196 jnz pthRB ; tree ; left trunk base mov cx, 40 mov dx, 135 treLTB: mov ah, 0ch mov al, 06h ; brown color int 10h inc cx dec dx cmp cx, 55 cmp dx, 120 jnz treLTB ; right trunk base mov cx, 86 mov dx, 135 treRTB: mov ah, 0ch mov al, 06h int 10h dec cx dec dx cmp cx, 71 cmp dx, 120 jnz treRTB ; left trunk vert mov cx, 55 mov dx, 120 treLTV: mov ah, 0ch mov al, 06h int 10h dec dx cmp dx, 80 jnz treLTV ; right trunk vert mov cx, 71 mov dx, 120 treRTV: mov ah, 0ch mov al, 06h int 10h dec dx cmp dx, 80 jnz treRTV ; I like pine trees mov dx, 80 mov bx, 101 DrwTree: ; draws a green pine ; tree with a nested ; jumps commands mov cx, 126 sub cx, bx ; simmetrical ; tree GrTree: mov ah, 0ch mov al, 02h ; green int 10h inc cx cmp cx, bx jnz GrTree cmp bx, 65 jle break sub dx, 3 sub bx, 2 jmp DrwTree break: mov dx, 15 mov bx, 278 mov cx, 278 mov ds, cx DrwSunT: mov cx, ds sub cx, 3 mov ds, cx DrwSunTp: mov ah, 0ch mov al, 0eh ; yellow int 10h inc cx cmp cx, bx jnz DrwSunTp cmp dx, 22 je break2 inc dx add bx, 3 jmp DrwSunT break2: DrwSunM: inc dx mov cx, ds DrwSunMp: mov ah, 0ch mov al, 0eh int 10h inc cx cmp cx, bx jnz DrwSunMp cmp dx, 36 je break3 jmp DrwSunM break3: DrwSunB: inc dx mov cx, ds add cx, 3 mov ds, cx sub bx, 3 DrwSunBp: mov ah, 0ch mov al, 0eh int 10h inc cx cmp cx, bx jnz DrwSunBp cmp dx, 43 je breakfinal jmp DrwSunB breakfinal: xor ax, ax int 16h mov ax, 3 int 10h mov ax, 4c00h int 21h end start