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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2009, 22:21   #1
Sonyalex90
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 23
По умолчанию Вывод строк, лабораторная

в общем нужно ввести строку из нескольких слов, а вывести каждое слово на новой строке с фиксированным отступом от предыдущего слова, т.е. должна получиться лесенка из введенных слов. кто нить может объяснить как это вообще делать. с вводом и выводом я разобрался, а вот как сделать лесенку не могу понять =( подскажите хоть примерно ка энто делаеться =)
Sonyalex90 вне форума Ответить с цитированием
Старый 12.11.2009, 22:37   #2
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Вставлять нужное число пробелов в начале строки.
Ф-ция 09 int 10h позволяет записать символ нужное число раз.
Можно вызывать ф-цию 01 int 21h нужное число раз, чтобы вставить пробелы.
Если для вывода использовать функцию 13h int 10h, то там заддается координата, для вывода строки. Просто увеличивайте каждый раз их на 1.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 12.11.2009, 23:00   #3
Sonyalex90
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 23
По умолчанию

а как сделать чтобы он разбил строку на слова?
Sonyalex90 вне форума Ответить с цитированием
Старый 12.11.2009, 23:08   #4
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

В цикле просматриваете строку и ищите символ пробела( ' ', 20h, 32d ) если символ встретился, значит слово закончилось. Если для вывода использовать ф-цию 09h int 21h, то вместо него нужно воткнуть '$'. и можно выводить. Потом продолжать смотреть строку со следующего символа.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 13.11.2009, 10:27   #5
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

могу помочь недорого, интересует?
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 13.11.2009, 12:23   #6
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

airyashov, я конечно понимаю работа, кризис все такое... Но может не стоит делать из раздела "Assembler" раздел "Фриланс" добавляя в каждую тему своё предложение об услуге ?
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 13.11.2009, 21:07   #7
Sonyalex90
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 23
По умолчанию

спасибо Goodwin98, буду пытаться ....
Sonyalex90 вне форума Ответить с цитированием
Старый 02.12.2009, 19:13   #8
Sonyalex90
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 23
По умолчанию

data segment
NL db 0Ah, 0Dh, '$'
Buf DB 255, 0, 256 DUP (0) ;
data ends
code segment ;отмечаем начало сегмента кодов
assume cs:code, dsata
START:
mov ax,data ;копируем адрес
mov ds,ax ;сегмента данных
mov dx,offset Buf ;считываем строку с клавиатуры
mov ah,0Ah
int 21h
xor cx,cx
mov al,[Buf+1] ;если считано 0 байт, то выход из
mov cl,al ;задаем количество повторений (длина строки)
test al,al ;программы
jz Exit
mov ah,09h
mov dx,offset NL ; перейти на следующую строку
int 21h
mov si,offset Buf+2
Cycle:
mov dl,[si] ;считать символ
cmp dl,' ' ;сравнить с пробелом
jne Print ;если не пробел - вывести
mov ah,09h ;если пробел - перевод каретки
mov dx,offset NL ;адрес строки с переводом каретки
int 21h ;вызов DOS
jmp Space ;пропустить код вывода - пробел не выводим
Print:
mov ah,02h ;выбор функции 2
int 21h ;вызов DOS
Space:
inc si ;перейти к следующему символу
loop Cycle
Exit:
mov AX,4C00h ;выход
int 21h ;из программы
code ends
END START



это просто вывод в столбик...... а как лесенкой чтобы было? =(((( помогите....
Sonyalex90 вне форума Ответить с цитированием
Старый 03.12.2009, 08:31   #9
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

добавьте после перевода строки
Код:
	push cx
	mov cx,count
	mov dl,' '
	mov ah,2
spaces:
	int 21h
	loop spaces
	inc count
	pop cx
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 03.12.2009, 21:41   #10
Sonyalex90
Пользователь
 
Регистрация: 20.09.2009
Сообщений: 23
По умолчанию

добавить после "перейти на следующую строку"?
ругается на count.... что и для чего это нужно?
Sonyalex90 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод/вывод строк anGeee Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 04.09.2009 21:58
вывод большего кол-ва строк Alternavi SQL, базы данных 2 03.07.2009 15:43
вывод массива строк посимвольно faraner Общие вопросы C/C++ 1 25.05.2009 22:51
Ввод/Вывод данных.Лабораторная работа. kry Общие вопросы C/C++ 1 03.03.2009 11:03
вывод GridView строк Shouldercannon Общие вопросы Delphi 0 25.02.2009 12:07