assembler ввод/вывод. простейшая программа

программирование assembler

попробовал написать на асм простейшую программу - и тут же фейл.

.model small
.stack 100h
.code

start:
mov ax,@data
mov ds,ax

;ввод
mov dx,offset buf
mov ah,0Ah
int 21h

;вывод
mov dx,offset buf
mov ah,09h
int 21h

;конец
mov ax,4C00h
int 21h

.data
buf db 5

end start

строка вводится, но не выводится. а точнее выводится несколько строк кракозябр, и проц пищит пару раз
как сделать чтобы вывелась строка которую я только ввел

Примечание:
<<попробуй добавить в конец буфера $ и выводить со второго байта.>>
можно поинтересоваться как это сделать?
Ответы:
потому что насколько помню 0aH ф-я доса своеобразно заполняет буфер, полезная часть строки начинается не с нулевого смещения от адреса буфера и строка не термиинируется символом $
>как сделать чтобы вывелась строка которую я только ввел
попробуй добавить в конец буфера $ и выводить со второго байта.
буфер инициализируется
buf  db 17, ?, 17 dup ("$")
а при выводе строки добавить смещение на 2 байта
;вывод
mov dx,offset buf
add dx,2
mov ah,09h
int 21h


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.