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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2009, 23:02   #1
Zeneth
Пользователь
 
Регистрация: 16.06.2009
Сообщений: 21
По умолчанию Помогите со строками..

Народ, если возможно, напишите какой-нибудь пример работы со строкой.
Чтоб наглядно посмотреть на ввод строки, какая-либо обработка (инверсия, например) и вывод.
Заранее спасибо.
З.Ы.
есть конкретный пример:
Ввести с клавиатуры строку. Переставить в ней символы, поменяв местами первый с последним, второй с предпоследним и т.д. Вывести результаты на экран.

Но кодить его, я так понимаю, лениво будет
еси есть у кого что-то подобное, выложите.
Zeneth вне форума Ответить с цитированием
Старый 16.06.2009, 23:10   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

ввод строки:
var s:string;
Read(s);//вводим с клавиатуры какие хошь символы
Wreite(s);//выводим на экран твою строчку

инверсия, это когда наоборот? типа было АССЕМБЛЕР, а стало РЕЛБМЕССА?
что-то таких не припомню...не доводилось с таким работать

можно сделать так:

Read(s);
s:=s+'добавка';//добавляем текст к нашей строчке справа, а можно и слева s:='довесок'+s;
Write(s);
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 16.06.2009, 23:20   #3
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Так мы же тебе в твоей предыдущей теме ответили! Ну да ладно, вот решение твоей задачи:
Код:
.186
stacksg segment stack
 dw 100h dup(?)
stacksg ends
data segment
 text1 db 'Stroka Input',0ah,0dh,'$';Текстовое сообщение для ввода
 t1  db 60    ;t1, t2, source необходимы для функции DOS 0ah int 21h
 t2  db ?
 source db 60 dup(' ')
 newstr db 0ah,0dh,'$' ;Переход на следующую строку
data ends
 assume cs:code,ds:data
code segment
begin:
 ;Инициализация сегмента ds
 mov ax,data
 mov ds,ax
 ;Устанавливаем текстовый режим
 mov ax,03h
 int 10h
 ;Ввод приглашения
 mov ah,09
 mov dx,offset text1
 int 21h
 ;Ввод строки до 59 символов
 mov ah,0ah
 mov dx,offset t1
 int 21h

;Обработка строки
 xor ax,ax
 mov al,t2 ;Колличество введеных строк
 push ax
 shr ax,1 ; делим на 2

 mov cx,ax ; и заносим в cx
 mov si,offset source ;Начало введеной строки в si
 mov di,offset source ; и в di
 
 pop ax
 push ax ;Сохраним в стеке значение кол-во введеных строк
 push si ; и начальный адрес строки source
 dec al
 add di,ax ;Установим di на конец введеной строки
 
 ;Отсюда идет обмен символами в строке
 @B0:   ; начало строки обмениваем с символами с концом строки
 mov al,[si]
 mov ah,[di]
 mov [di],al
 mov [si],ah
 inc si  ;После обмена изменяем значение адреса начала
 dec di  ; и конца строки (сближаем их)
 dec cx  ;Уменьшаем значение счетчика
 jne @B0 ;Если значение 0 то выходим
 
 pop si ;Востанавливаем значения из стека
 pop ax
 add si,ax ;Определяем адрес конца строки
 mov al,'$' ; и заносим символ $
 mov [si],al
 ;Переход на новую строку
 mov ah,09
 mov dx,offset newstr
 int 21h
 ;Вывод полученой строки
 mov ah,09
 mov dx,offset source
 int 21h
 ;Ждем нажатия любой клавиши
 mov ah,0
 int 16h
 ;Выход в DOS
 mov ah,4ch
 int 21h
code ends
 end begin
xor eax, eax
xchg [eax], eax

Последний раз редактировалось MalCer; 16.06.2009 в 23:23.
MalCer вне форума Ответить с цитированием
Старый 16.06.2009, 23:21   #4
Zeneth
Пользователь
 
Регистрация: 16.06.2009
Сообщений: 21
По умолчанию

Да, именно РЕЛБМЕССА
Вообще мне всемовский код нужен, программка то простейшая, на том же си, паскале, васике я то ее напишу запросто
а вот с асемом беда, нужно понять, как организация ввода и вывода строк происходит, и желательно на примере.
Zeneth вне форума Ответить с цитированием
Старый 16.06.2009, 23:30   #5
Zeneth
Пользователь
 
Регистрация: 16.06.2009
Сообщений: 21
По умолчанию

Цитата:
Сообщение от MalCer Посмотреть сообщение
Так мы же тебе в твоей предыдущей теме ответили!
ну там инверсия и была, инверсия массива, все верно.
мне просто нужно было ввод-вывод строк и обращение к ним освоить.

Спасибо, пример довольно наглядный.
Zeneth вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите со строками (Си) Данилыч Д. Помощь студентам 1 15.01.2009 17:05
помогите со строками SYL@R Помощь студентам 11 08.07.2008 11:11
помогите со строками ShenDy Общие вопросы C/C++ 2 26.03.2008 09:13
помогите со строками разобраться евгения, Помощь студентам 2 28.05.2007 21:28
помогите со строками разобраться pirozho4ek Помощь студентам 2 25.05.2007 10:29