.MODEL SMALL
.STACK 100H
.DATA
;цвет хр ится в переверутом виде
;т к к к причтеии в п мяти о перевор чив ется 
;еще р з


     str2            db 'CopyRight Shadow Maverick -=RIA=-'

     file_name      db 'aa.bmp',0
     point_fname      dd file_name
     e            db 0,0,0,0,0,0,0
     string            db 3 dup (0)
     e1            db 0,0,0,0,0,0,0
     len_string=$-string
     dfgh            db 0,0,0,0,0,0,0,0,0
     point_string      dw string
     dbf            db 0,0,0,0,0,0,0,0
     handle            dw 0
     size_f            dw 16383;р змер чит емой и выводимой
                         ;ифом ции вот и епоято
                         ;почему 16383 если больше или меьше
                         ;то получится смещеие
;выводимой ифом ции  16383*4=65532
;и почему оо зер кльо отобр жео по горизо и вертик л
                         
.CODE
START:
.386
     mov ax,@data      ;иици лиз сегме д ых
     mov ds,ax      ;
     
     mov ax,4f02h
     mov bx,10fh
     int 10h
     
     mov ax,0a000h      ;иици лизир сегмет es
     mov es,ax      ;  видеоп мять
     
     mov ah,4fh            ;
     mov al,05            ;62454
     mov bh,0            ;---------
     mov bl,0            ;---------
     mov dx,0            ;переосим око   оди ш г 
     int 10h
     
;открыв ем ф йл
;только для чтеия
     mov al,00h
     lds dx,point_fname      ;ук з тель   имя ф йл 
     mov ah,3dh            ;
     int 21h                  ;
     mov handle,ax            ;дескриптор

;уст овим    ч ло иформ ции о пикселях цвет   чи с  дрес  в ф йле 036h
     mov bx,handle
     mov al,0
     mov cx,0
     mov dx,036h
     mov ah,42h
     int 21h
cyc:
     xor di,di      ; ч ло в видеоп мяти 0000:0000

cycl:
     
     mov bx,handle
     mov cx,3      ;чит ем по 3 б йт 
     mov dx,offset point_string;пих ем сюды
     push dx            ;вот место ?*?

     mov ah,3fh
     int 21h
;выпихив ем от сюд 
     pop si            ;ето с мое итересое ?*? без етого почемуто
                 ;отк зыв ется р бот ть если е использов ть
                 ;прямую з грузку
     xor cx,cx
     
     mov cx,3      ;грузим
     
rep movsb            ;грузим счит ые 3 б йт  с DS:SI в ES:DI

     cmp size_f,0;пок  е 0 ст ет
     je ew
     
     inc di      ;смещеие в видеобуффере
     sub size_f,1;вычит ем из р змер  1
     jmp cycl

ew:      
           
     mov size_f,16383;вост  влив ем р змер в з д
     
     xor di,di;обуляем видео буффер т/е/  стр ив ем   0  дрес смещеие

     mov ah,4fh            ;
     mov al,05            ;62454
     mov bh,0            ;---------
     mov bl,0            ;---------
     mov dx,1            ;переосим око   оди ш г 
     int 10h      ;BIOS прерыв ие VIDEO
     
     xor di,di
     
     
cycl1:
     
     mov bx,handle      ;дескриптор ф йл  
     mov cx,3      ;чит ем по 3 б йт 
     mov dx,offset point_string
     push dx            ;вот место ?*?
   mov ah,3fh
     int 21h
     
     pop si            ;ето с мое интересное ?*? без етого почемуто
                 ;отк зыв ется р бот ть если не использов ть
                 ;прямую з грузку
     xor cx,cx
     
     mov cx,3      ;грузим
     
rep movsb            ;грузим счит ные 3 б йт  с DS:SI в ES:DI
     inc di            ;смещение в видео буфф

     cmp size_f,0
     je ex23
     
           sub size_f,1
           
     jmp cycl1
ex23:

     mov size_f,16383
     
     xor di,di

     mov ah,4fh            ;
     mov al,05            ;
     mov bh,0            ;---------
     mov bl,0            ;---------
     mov dx,2            ;переносим окно н  один ш г 
     int 10h
     
     xor di,di
     
     
cycl2:
     
     mov bx,handle
     mov cx,3      ;чит ем по 3 б йт 
     mov dx,offset point_string
     push dx            ;вот место ?*?

     mov ah,3fh
     int 21h
     
     pop si            ;ето с мое интересное ?*? без етого почемуто
                 ;отк зыв ется р бот ть если не использов ть
                 ;прямую з грузку
     xor cx,cx
     
     mov cx,3      ;грузим
     
rep movsb            ;грузим счит ные 3 б йт  с DS:SI в ES:DI
     inc di            ;смещение в видео буфф

     cmp size_f,0
     je ex25
     
           sub size_f,1
           
     jmp cycl2

ex25:

     mov size_f,16383
     
     xor di,di

     mov ah,4fh            ;
     mov al,05            ;
     mov bh,0            ;---------
     mov bl,0            ;---------
     mov dx,3            ;переносим окно н  один ш г 
     int 10h
     
     xor di,di
     
     
cycl3:
     
     mov bx,handle
     mov cx,3      ;чит ем по 3 б йт 
     mov dx,offset point_string
     push dx            ;вот место ?*?

     mov ah,3fh
     int 21h
     
     pop si            ;ето с мое интересное ?*? без етого почемуто
                 ;отк зыв ется р бот ть если не использов ть
                 ;прямую з грузку
     xor cx,cx
     
     mov cx,3      ;грузим
     
rep movsb            ;грузим счит ные 3 б йт  с DS:SI в ES:DI
     inc di            ;смещение в видео буфф

     cmp size_f,0
     je exit
     
           sub size_f,1
           
     jmp cycl3

     
exit:
     mov ah,0      ;wait 
     int 16h            ;key
           
     mov ax,3      ;close
     int 10h            ;graph
     
     mov ah,4ch      ;|
     mov al,0      ;| -EXIT to DOS;
     int 21h            ;|/

END START