Первое почти всегда лучше. Если тебе не нужно инициализировать строку. Если нужно, тогда dup(0). Кроме того, мне не нравится, что ты считаешь восьмибитный адрес. Добавишь ещё текста перед буфером, и всё сломается. Считай в 16-битном регистре. Пусть даже и в cx. И дальше там что-то странное. mov al,pos прочитает (и потом выведет) значение pos (у тебя там формируется адрес подстроки), а тебе нужно не сам адрес, а значение по адресу.
Т.е. mov al, [pos]?
Нет. Скорее всего, ты хочешь, например, mov si,pos; mov al,[si]. И если продолжить думать в этом направлении, то получится:mov si,offset s add si,pos ; тут pos надо 16-битный mov cx,len output: lodsb aam bla-bla-bla ... loop output
Исправил, однако кракозябры не покидают меня
Скинь готовое.
Обсуждают сегодня