Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как вывести считанную строку 
:(
    Опции темы
Innuendo108
Дата 22.10.2010, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 3.4.2008

Репутация: нет
Всего: 2



Чего-то я совсем запутался в этих функциях.

Цитата

Функция 0Ah
Выполняет ввод с клавиатуры в буфер строки символов.
• Вызов:
аh= 0аh
ds: dx = адрес буфера ввода
• Возвращаемое значение:
Строка символов по указанному адресу
Примечание: dx содержит смещение буфер вывода, DS - сегментный адрес. Буфер вывода имеет следующую структуру: 
0-й байт содержит максимальное количество символов в буфере;
1-й байт содержит количество реально введенных символов;
начиная со 2-го размещён буфер для ввода размером не менее указанного в в 1-м байте.


И там же пример в учебнике:

Код

data segment
buffer db 11 ; Нулевой байт буфера
entered db (?) ; Число введенных символов
string db 11 dup (?) ; Введенные символы
data ends

code segment
assume cs:code , ds:data
mov ax, data
mov ds, ax

lea dx, buffer ; Адрес буфера в dx
mov ah, 0ah ; Номер функции в аh
int 21h ; Вызов функции

mov ax, 4c00h;
int 21h;
code ends



А теперь строка где? Она по адресу dx? или к ней можно обращаться как к переменной string. Что, когда я в сегмент данных по очереди пишу переменные, то он резервирует память прямо друг за другом. Т.е. это же я могу ввести и так? :
Код

; data
buffer db 11, ?, 11 dup (?)
;code
; точно так же


Главный вопрос, как мне вывести эту строку? И вообще как лучше с ней работать, как к ней обращаться?

Это сообщение отредактировал(а) Innuendo108 - 22.10.2010, 23:28
PM MAIL   Вверх
iff
Дата 23.10.2010, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 5
Всего: 16



1. Да, вы можете обращаться к введенной строке как к переменной string.
2. Да, вы можете ввести и так, но тогда к введенной строке неудобно будет обращаться. (к ней придется обращаться вот так: buffer[2])
3.Вывести строку можно при помощи другой функции  21h прерывания или другого, например функцией 40h прер. int 21h (она вообщето предназначена для вывода в файл, но если дискриптор файла указать равным 1, то вывод осуществится на экран, а если вавод перенаправлен, то туда, куда он соответственно перенаправлен.)
Код

.386
mov ah,40h
mov bx,1
movzx cx, entered
lea dx, string
int 21h

Или например можно воспользоваться видеосервисом BIOS (посмотрите ф-ция 13h прер. int10h: [URL=http://www.codenet.ru/progr/dos/int_0009.php )]http://www.codenet.ru/progr/dos/int_0009.php)[/URL]

Добавлено через 8 минут и 53 секунды
Или ф-цией 09h  int 21h
http://fantom-lab.narod.ru/Assembler/MS_DOS/1133.htm

Это сообщение отредактировал(а) iff - 23.10.2010, 13:17


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Innuendo108
Дата 26.10.2010, 03:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 3.4.2008

Репутация: нет
Всего: 2



ясно, спасибо за ответы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0873 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.