але доданих для вирівнювання
; тепер IgnoredBits дорівнює числу ігнорованих бітів при малюванні
; будемо читати з файлу растр блоками по BlockSize байт і записувати в Rastr
; цикл для читання з файлу блоків растру: Rastr, BlockSize; читаємо блок растра з файлаReadFileError; якщо помилка доступу, то сообщаемax, 0; якщо досягнуто кінець файлу _Skip; _ то виходимо з ціклаDrawBlock; обробка блокаax , cx; якщо це був останній блок, то _Skip; _ виходимо з файлаReadBlock; читаємо наступний блок: CloseFile; закриваємо файлah, 00; ф-ія для очікування натискання клавіші16h; чекаємо поки користувач не натисне будь-яку клавішу, а потім виходимо
; відновимо попередній відеорежімah, ah; ah = 0 - ф-ія для встановлення графічного режімаal, OldScreenMode; установка попереднього режіма10h; встановлюємо графічний режим за допомогою переривання BIOSax, 4C00h21h; вихід з програми:; у зображення занадто великий розмір (більше ніж 320x200) CLoseFileEMsg5:; висновок повідомлення про помилку, у разі виникнення помилки чтеніяEMsg4Begin
; Функція для закриття файлу
; ВХІД: sp повинен вказувати на дескриптор файлу:
; закриття файлаah, 3eh; 3eh - ф-ія DOS для закриття файлаbx, Descriptor21h; закрити)
; ф-ія для відтворення одного пікселя
; Вхід: al = індекс палітриprocdx; збережемо dx в стек, щоб не зіпсувати
; якщо CurX вказує на біт, який не входить в зображення, то пропускаємо рісованіеcx, word ptr [biWidth]; в cx - ширина ізображеніяcx, CurX; якщо поточний мальованої піксель виходить за межі зображення _SkipDraw; _ то пропускаємо рісованіеCurX, 319SkipDrawCurY, 199SkipDraw
; малюємо точку
; mov cx, CurX; номер колонки - поточний (CurX)
; mov dx, CurY; номер рядка - поточний (CurY)
; mov ah, 0ch; 0ch - ф-ія для малювання крапки в відеосервісі BIOS
; mov bh, 0; номер відеосторінки = 0
; int 10h; малюємо точку
; малюємо точкуax; збережемо ax щоб не іспортітьax, 320; знайдемо розташування потрібного байта в пам'яті відеобуфераCurY; помножимо на номер строкіax, CurX; додамо номер колонкіdi, ax; es: di вказує на байт, відповідний даному байтуax; відновимо значення індексу палітриbyte ptr es: [di], al; копіюємо індекс палітри даного пікселя в видеобуфер:
; перевірка досягнення кінця рядка ізображеніяCurX; переходимо на наступний піксельcx, word ptr [biWidth]; в cx - ширина ізображеніяcl, IgnoredBits; додаємо до неї кол-во бітів, які не повинні отрісовиватьсяCurX, cx; якщо поточний номер пікселя НЕ дорівнює останньому _SkipEqu; _ то пропускаємо перехід до наступного рядка:
; перехід на слід. строкуCurX, 0; тепер номер 1о...