
;            ENV23.ASM - дополнительная программа к Главе № 23

; (С) Авторские права на файлы-приложения принадлежат автору книги
; "Ассемблер? Это просто! Учимся программировать под MS-DOS"
; Автор: Калашников Олег Александрович (e-mail: Assembler@Kalashnikoff.ru)
;	 http://www.Kalashnikoff.ru

;   === Начало программы: ===
cseg segment
assume cs:cseg, ds:cseg, ss:cseg, es:cseg
org 100h

Begin:
       mov ax,3
       int 10h        ;Чистим экран

       mov ax,cs:[2Ch]
       mov ds,ax      ;DS указывает сегмент окружения DOS
       xor si,si      ;SI - смещение

       mov ah,2       ;Функция вывода одного символа на экран

Next_char:
       lodsb          ;Получаем первый символ
       or al,al       ;Это нуль?
       jz End_param   ;Да - тогда первый параметр закончился 

Next_param:
       mov dl,al      ;Нет, не нуль. Тогда выводим полученный символ...
       int 21h        ;...на экран в текущую позицию курсора
       jmp short Next_char ; Приступаем к следующему символу... 

End_param:
       mov dl,0Ah     ;Достигнут конец первого параметра
       int 21h        ;Выведем возврат каретки / перевод строки,
       mov dl,0Dh     ;чтобы параметры не были в куче, а каждый начинался
       int 21h        ;со следующей строки.

       lodsb          ;Получим очередной символ из строки окружения DOS
       or al,al       ;Если это 0, то все параметры выведены.
       jnz Next_param ;Пора выходить в DOS.
                      ;Иначе - выводим очередной параметр... 

       int 20h

cseg ends
end Begin
