.186 public ASCIIZprint, IsInRange, strings_text SEGMENT 'CODE' ASSUME cs:strings_text IsInRange PROC FAR ;Проверяет, является ли байт al заключенным в диапазон ;dl<=al<=dh ;Вход: al - проверяемый символ ; dl - меньшая (нижняя) граница диапазона ; dh - большая (верхняя) граница диапазона ;Выход: ah - 00h - символ не является заключенным в диапазон ; FFh - является cmp dh,dl jae IsInRange_skip xchg dh,dl IsInRange_skip: xor ah,ah cmp al,dl jb IsInRange_end cmp al,dh ja IsInRange_end not ah IsInRange_end: ret IsInRange ENDP ASCIIZprint PROC FAR ;Вход: ds:si - начало ASCIIZ-строки ;Выход: ds:si - следующий байт после 0-байта push ax push dx pushf cld ASCIIZprint_o: lodsb cmp al,0 jz ASCIIZprint_e mov ah,2 ;Display char mov dl,al int 21h jmp ASCIIZprint_o ASCIIZprint_e: popf pop dx pop ax ret ASCIIZprint ENDP strings_text ENDS END