Перейти к содержанию

Ввод\Вывод на ассемблере.


Рекомендуемые сообщения

Вот программа.

data segment

st1 db 255 dup(?)

s1 db 255

s2 db (?)

data ends

code segment

assume cs:code, ds:data

start: 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 21h

code ends

end start

Все вроде бы понятно, но одну строчку понять не могу: mov [di], ah; почему записывается по адресу в di, ведь в ah содержится 0Ah, смысл не понятен. без этой строчки выводит все причем в эту же строку, только впереди строки стоит еще 1 непонятный символ, а с ней выводит наследующую строку. Объясните знающие люди)

Ссылка на комментарий

Символ - 0Ah - это для периферийных устройств - служебный код, означающий "перевод на следующую строку". Программа имеет такой смысл - ввод строки в буфер - вывод введенных данных из буфера на следующей строке стандартного устройства вывода.

Ссылка на комментарий

bat2000

Ну ясно спасибо. Я знаю про что программа, я же ее написал, просто у меня там проблема была, и посоветовали добавить строку эту.

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...