p>
23 init proc far; програма ініціалізації при включенні
24 call test; тест АЛУ
call test_rom; тест ПЗУ
call test_ram; тест ОЗУ
xor ax, ax; обнулити акумулятор
mov bx, ffffh; заповнити bx одиницями
29 mov es, ax; ініціалізувати сегмент es
30 mov di, 010h; 10h = 4 * 4 - переривання INT O (по переповнення) -
31 init_int:; останнє з обов'язкових системних переривань
32 mov es: [di], bx; ініціалізувати вектор переривання значеннями
33 mov es: [di +2], ax; адреси стартовою комірки пам'яті
34 sub di, 2; перейти до наступного вектору
35 jnz init_int
mov es: [014h], cs; 5 * 4 = 20 = 14h. переривання № 5 - від принтера
37 mov es: [016h], offset output; перехід на програму виведення
38 mov es: [018h], cs; переривання № 6 - від клавіатури
39 mov es: [01Ah], offset input; перехід на програму введення
mov ax, 1Ch; установка сегментів даних
41 mov es, ax; відразу після таблиці векторів переривань
42 mov ds, ax
43 mov ax, 1000h; базовий адресу стека - 10000h
44 mov ss, ax
mov sp, 0fffeh; початок стека - з кінця ОЗУ
46 mov al, PPIW; завантаження упр. слова для ППІ
47 out PPIR, al
48 mov al, 00001101b; сигнал скидання принтера
49 out PPIC, al; завантажити в порт С - порт УС принтера
m ov al, PICW; завантаження упр. слова для ПКП
51 out PICR1, al; адресу ВКП при A0 = 0
mov al, PKDIW; завантаження упр. слова для ПККІ
53 out PKDIR, al
54 mov al, 00001111b; зняття сигналу скидання принтера
55 out PPIC, al