Собственными усилиями сделал комментарии к коду.
Код:
;Выдача на экран символов ASCII кодов
;По 16 символов в строке через пробел
;Белым цветом на синем фоне
model tiny ;модель памяти для .com файлов
.code ;упрощенная деректива определения сегмента данных
org 100h ;смещение программы при записи в память на 256 байт
start: mov ax,0003h ;помещение в р-р ax значение 0003h(комманда очистки экрана и установки текстового режима формата 80x25 с цветами 16/8)
int 10h ;вызов системного прерывания(выполняется функция в р-е ah, с параметрами из р-а al)
mov si,256 ;помещение в р-р si значение 256(кол-во проходов цикла)
mov ah,02h ;помещение в р-р ah значение 02h(комманда установки позиции курсора)
mov dx,0 ;помещение в р-р dx значение 0(позиция курсора - строка:0, колонка:0)
int 10h ;вызов системного прерывания(выполняется функция в р-е ah, с параметрами из р-а dx)
mov ah,09h ;помещение в р-р ah значение 09h(комманда вывода символа из р-а al в текущей позиции курсора)
mov bl,00011111b ;помещение в р-р bl значение 00011111b(параметр цвета комманды 09h)
mov al,0 ;помещение в р-р al значение 0(параметр номера символа для вывода, в таблице ASCII кодов, комманды 09h)
mov cx,1 ;помещение в р-р cx значение 1(параметр счетчика выводимых символов комманды 09h)
clp: int 10h ;вызов системного прерывания(выполняется функция в р-е ah, с параметрами из р-в: bl,al,cx)
dec si ;вычитание -1 из значиния в р-е si
jz m1 ;условный переход на метку m1, если бит z в флаговом р-е равен 0
push ax ;значение р-а ax записывается в стек
mov ah,02h ;помещение в р-р ah значение 02h(комманда установки позиции курсора)
inc dl ;увеличение значения в р-е dl на 1
int 10h ;вызов системного прерывания(выполняется функция в р-е ah, с параметрами из р-а dx)
mov ax,0920h ;помещение в р-р ax значение 0920h(комманда вывода символа из р-а al в текущей позиции курсора)
int 10h ;вызов системного прерывания(выполняется функция в р-е ah, с с параметрами из р-в: bl,al,cx)
mov ah,02h ;помещение в р-р ah значение 02h(комманда установки позиции курсора)
inc dl ;увеличение значения в р-е dl на 1
int 10h ;вызов системного прерывания(выполняется функция в р-е ah, с параметрами из р-а dx)
pop ax ;помещение в р-р ax значений из стека
inc al ;увеличение значения в р-е dl на 1(увеличивается номер кода символа в ASCII таблице)
test al,0Fh ;сравнение значения в р-е dl с значением 0Fh
jnz clp ;условный переход на метку clp, если бит z в флаговом р-е не равен 0
push ax ;значение р-а ax записывается в стек
mov ah,02h ;помещение в р-р ah значение 02h(комманда установки позиции курсора)
inc dh ;увеличение значения в р-е dh на 1
mov dl,0 ;помещение в р-р dl значение 0(переведет коретку в начало строки)
int 10h ;вызов системного прерывания(выполняется функция в р-е ah, с параметрами из р-а dx)
pop ax ;помещение в р-р ax значений из стека
jmp clp ;переход на метку clp
m1: mov ah,02h ;помещение в р-р ah значение 02h(комманда установки позиции курсора)
inc dl ;увеличение значения в р-е dl на 1
int 10h ;вызов системного прерывания(выполняется функция в р-е ah, с параметрами из р-а dx)
mov ax,0920h ;помещение в р-р ax значение 0920h(комманда вывода символа из р-а al в текущей позиции курсора)
int 10h ;вызов системного прерывания(выполняется функция в р-е ah, с с параметрами из р-в: bl,al,cx)
mov ah,4c00h ;помещение в р-р ax значение 4с00h(команда выхода в MS-DOS)
int 21h ;вызов системного прерывания(выполняется функция в р-е ax)
end start
Социальные закладки