Cristian Опубликовано 7 декабря, 2011 Жалоба Поделиться Опубликовано 7 декабря, 2011 Вот программа.data segmentst1 db 255 dup(?)s1 db 255s2 db (?)data endscode segmentassume cs:code, ds:datastart: mov ax,data mov ds,ax ;ВВОД/ВЫВОД*********** ;mov dx, offset s1; Указатель на буфер. lea dx, s1; mov ah, 0Ah int 21h inc dx; Адрес буфера ввода +1. Теперь указатель на фактической длинне. mov di, dx; mov bl, [di]; Записать в bi количество введенных символов. mov [di], ah; xor bh,bh; inc di; di содержит адрес начала строки st1. mov byte ptr [di+bx],'$';Записать в конец строки знак доллар. Адр.нач. стр.+кол симв. mov ah, 09h int 21h ;*********************quit: mov ax, 400h int 21hcode endsend startВсе вроде бы понятно, но одну строчку понять не могу: mov [di], ah; почему записывается по адресу в di, ведь в ah содержится 0Ah, смысл не понятен. без этой строчки выводит все причем в эту же строку, только впереди строки стоит еще 1 непонятный символ, а с ней выводит наследующую строку. Объясните знающие люди) Ссылка на комментарий
bat2000 Опубликовано 8 декабря, 2011 Жалоба Поделиться Опубликовано 8 декабря, 2011 Символ - 0Ah - это для периферийных устройств - служебный код, означающий "перевод на следующую строку". Программа имеет такой смысл - ввод строки в буфер - вывод введенных данных из буфера на следующей строке стандартного устройства вывода. Ссылка на комментарий
Cristian Опубликовано 8 декабря, 2011 Автор Жалоба Поделиться Опубликовано 8 декабря, 2011 bat2000Ну ясно спасибо. Я знаю про что программа, я же ее написал, просто у меня там проблема была, и посоветовали добавить строку эту. Ссылка на комментарий
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти