Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2013, 08:56   #1
eugrita
Пользователь
 
Регистрация: 01.04.2010
Сообщений: 11
По умолчанию ввод и вывод строки в ASM 8086

Вот написал, используя материалы других 2 процедуры по вводу строки inp и выводу ее же prn. При запуске выводит много мусора и пищит.
Полагаю из-за того что не был добавлен признак конца строки '$'
Как его добавить?
Код:
inp proc near ; конец ввода по ENTER
enterch:
        mov     dl, '>'
        mov     ah, 02h
        int     21h
        mov     cx, 50
        mov     bx, offset str
ech:
        mov     ah, 01h
        int     21h 
        cmp al,13
        jle quit
        mov     byte ptr [bx],al
        inc     bx
        loop    ech
quit:
        ret
inp endp

Последний раз редактировалось eugrita; 13.05.2013 в 09:00.
eugrita вне форума Ответить с цитированием
Старый 13.05.2013, 09:04   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

eugrita,
а зачем заниматься онанизмом вводя строку по одному символу через 1-ую функцию 21h прерывания? Ведь специально для этого существует 0Ah функция того же 21h прерывания. Эта функция кроме нажатия на Энтер обрабатывает еще и нажатия на "back space", "delete", "insert", стрелки "влево" и "вправо"
Mikl___ вне форума Ответить с цитированием
Старый 13.05.2013, 09:41   #3
eugrita
Пользователь
 
Регистрация: 01.04.2010
Сообщений: 11
По умолчанию

может и так. Только по теме вопроса- введенная ли моим или вашим способом строка будет содержать символ конца? '$'
eugrita вне форума Ответить с цитированием
Старый 13.05.2013, 10:48   #4
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

eugrita
при вводе строки 0Аh функцией 21h прерывания будет известна длина строки (она будет во втором байте от начала) туда ставится "доллар" и строка выводится на экран 9 функцией 21h прерывания
Код:
; masm dos com #
.286
.model tiny
.code
org 100h
start:	mov ax,3
	int 10h
	mov ah,9
	mov dx,offset mes1
	int 21h
	mov ah,0Ah
	mov dx,offset buff
	int 21h
	mov bh,0
	mov bl,buff+1
	mov buff[bx+2],'$'
	mov word ptr buff,' !'
	mov ah,9
	mov dx,offset mes2
	int 21h
	mov ah,0
	int 16h
	ret
mes1 db 'Как тебя зовут?',0Dh,0Ah,'$'
mes2 db 0Dh,0Ah,'Привет'
buff db 255,?,255 dup(?)
end start
Mikl___ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Asm] Не работает умножение матриц мп 8086 (masm) tesler Помощь студентам 0 26.12.2012 19:15
Вывод физ. и stack'ого адреса переменной / 8086 coNsept Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 15.04.2011 06:02
Ввод строки и числа, вывод усеченной подстроки - как? olgasssssss Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 08.12.2010 17:28
Файловый Ввод-вывод и строки coll3ctor Общие вопросы C/C++ 17 02.05.2010 11:02
Ввод символьной строки,вывод содержимого соответствующего регистра(TASM) adgam Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 17.03.2010 08:48