Лишние символы в выводе DOS - Assembler

Узнай цену своей работы

Формулировка задачи:

.model tiny
 
@CRLF MACRO
mov ah,02h
mov dl,0Dh
int 21h
mov ah,02h
mov dl,0Ah
int 21h
ENDM
 
include DOS.INC
 
.data?
Array db 16
 
.code
.startup
 
@GetStr Array,'$',16    ;Ввод строки
@CRLF                   ;Перевод каретки
@ShowStr Array          ;Вывод строки
 
retn
end
Как избавиться от мусора в выводе?

Решение задачи: «Лишние символы в выводе DOS»

textual
Листинг программы
@GetStr MACRO ofset:REQ, terminator, limit, segmnt
    __LdAdr dx, <ofset>
    IFNB    <segmnt>
        __LdSeg ds, <segmnt>
    ENDIF
    mov     ah, 0Ah
    mov     si, dx
    IFNB    <limit>
        mov     BYTE PTR [si], limit
    ENDIF
    int     21h
    inc     si
    mov     bl, [si]
    sub     bh, bh
    inc     si
    IFNB    <terminator>
        mov     BYTE PTR [bx+si], terminator
    ENDIF
ENDM
 
 
@ShowStr MACRO ofset:REQ, segmnt
    LOCAL  msg, sseg
    IF @InStr( 1, ofset, <!"> ) EQ 1
        sseg    TEXTEQU @CurSeg
        .DATA
        msg     BYTE    ofset, "$"
    @CurSeg ENDS
        sseg    SEGMENT
        mov     dx, OFFSET msg
    ELSE
        __LdAdr dx, ofset
        IFNB    <segmnt>
            __LdSeg ds, <segmnt>
        ENDIF
    ENDIF
    mov     ah, 9
    int     21h
ENDM

Оцени полезность:

10   голосов , оценка 3.7 из 5