;---------------------------------------- OutChar macro char ;макрос вывода символа local l1,l2,loopCX push cx mov cx,2 mov bh,char mov al,bh shr al,04 loopCX: cmp al,09h jbe l1 add al,37h jmp l2 l1: add al,30h l2: mov es:[si],ax mov al,bh and al,00001111b add si,2 loop loopCX add di,01h pop cx endm ;---------------------------------------- ClrScr macro ;макрос очистки экрана push ax push bx push cx push dx mov ah,06h ;AH 06 (прокрутка) mov bh,07 ;Нормальный атрибут (черно/белый) mov cx,0000 ;Верхняя левая позиция mov dx,184Fh ;Нижняя правая позиция int 10h ;Передача управления в BIOS pop dx pop cx pop bx pop ax endm ;---------------------------------------------- .model small .stack 100h .data .code start: .486 mov ax,@DATA mov ds,ax mov ax,0b800h mov es,ax ;в es начало видеопамяти mov si,0 ;смещение относительно начала видеопамяти mov di,0 ;счетчик байтов mov ah,7h ;атрибуты выводимых символов mov cx,offset exit sub cx,offset start ;адрес конца проги - адрес начала = ее размер!!! ClrScr CXne0: mov al,cs:[di] OutChar al loop Cxne0 ; input: ; MOV dx,1900h ; INT 10h ; MOV ah,07h ; INT 21h exit: mov ax,4C00h int 21h END start