Баг асм

баг асм
Что то не пойму,
допустим если в консоль ввести пробел пробел и 11
в конце программы смотрю дамп outStr
31 31 24
Все норм, а выводит
1111
Почему?

comment *
Ввести с клавиатуры строку.
Сжать строку, т. е. удалить пробелы и та-буляции.
Вывести результаты на экран.
*

code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
xor si,si
input:
lea dx,inStr
mov ah,0ah
int 21h

;обработка
lea bx,inStr+2
xor cx,cx
mov cl,inStr+1 ;для цикла, количество введенных символов
processing:
mov al,[bx] ;очередной символ строки
cmp al,9
je next ;переход, если равно
cmp al,32
je next
;символ не пробел и не таб
out:
mov outStr+si,al
inc si
next:
inc bx
loop processing
mov outStr+si,'$'

;вывод результата на экран
mov ah,09h
mov dx,offset outStr
int 21h

quit:
mov ax,4c00h
int 21h

code ends

data segment
inStr db 80,80 dup(0)
outStr db 80 dup(0)
data ends

stk segment stack
db 256 dup(0)
stk ends

end start

  • Только проснулся.. ) Но на первый взгляд, может проблема здесь? :
    inStr db 80,80 dup(0) ?
    Непонятное резервирование массива.. Зачем после запятой еще раз 80? По моему ошибка здесь. Попробуйте ее резервировать одним числом, точно так же, как и массив outStr. Если боитесь, что не хватит места для ввода символов, просто зарезервируйте побольше места, да и всё )) Ну например db 160. Если проблема не в этом, попозже загляну, разберусь, сейчас некогда )
  • перед выводом ответа почистить экран нужно!