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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2014, 13:47   #1
Webster0526
Новичок
Джуниор
 
Регистрация: 04.10.2014
Сообщений: 4
По умолчанию Пробелы между символами

Доброго времени суток, программисты!
Очень нужна ваша помощь в решении задания.
Само задание звучит так: Написать программу, которая вводит с клавиатуры строку и выводит ее на экран в обратном порядке, вставив после каждого символа пробел.
Есть фрагмент программы, который инвертирует строку. Помогите пожалуйста со вставкой пробелов и вводом строки с клавиатуры.
Заранее большое спасибо!
Код:
.MODEL SMALL

.STACK 256

.DATA
stroka db 'abcdefghij','$'

.CODE
start:
mov ax, @Data
mov ds, ax
xor ax, ax
mov cx, 5
lea bx, stroka
lea si, stroka
add si, 9
m1:
mov al,[bx]
mov ah,[si]
mov [si],al
mov [bx],ah
inc bx 
dec si
dec cx
jnz m1
mov ah,09h
lea dx,stroka 
int 21h
mov ah,4ch
int 21h
END start
Webster0526 вне форума Ответить с цитированием
Старый 04.10.2014, 13:58   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
вводит с клавиатуры строку и выводит ее на экран в обратном порядке
Сразу перед глазами команды push и pop. Дальше - лирика одна.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 04.10.2014, 14:28   #3
Webster0526
Новичок
Джуниор
 
Регистрация: 04.10.2014
Сообщений: 4
По умолчанию

Вроде сделал, но не работает. Не могли бы вы посмотреть где ошибка?

Код:
.MODEL SMALL

.STACK 256

.DATA
stroka db 11
vhod_str1 db 'Vvedite 1 stroky:','$'

.CODE
start:
push @data
pop ds
        
mov ah, 09h      ;çàïðîñ ââîäà ñòðîêè
lea dx, vhod_str1
int 21h

mov ah, 0Ah        ;ââîä ñòðîêè
lea dx, stroka
int 21h 

mov ax, @Data
mov ds, ax
xor ax, ax
mov cx, 5
lea bx, stroka
lea si, stroka
add si, 11
m1:
mov al,[bx]
mov ah,[si]
mov [si],al
mov [bx],ah
inc bx 
dec si
dec cx
jnz m1
mov ah,09h
lea dx,stroka 
int 21h
mov ah,4ch
int 21h
END start
Webster0526 вне форума Ответить с цитированием
Старый 04.10.2014, 14:33   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

мда...
я имел в виду посимольно запихать строку в стек, а потом в след. цикле поимвольно её из стека доставать и через пробелы эти символы выводить.

з.ы. ассемблер не знаю!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 04.10.2014, 14:38   #5
Webster0526
Новичок
Джуниор
 
Регистрация: 04.10.2014
Сообщений: 4
По умолчанию

очень жаль...
Webster0526 вне форума Ответить с цитированием
Старый 04.10.2014, 16:57   #6
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Код:
.model tiny
.code
org 100h
start:

mov dx,offset message
mov ah,9
int 21h

mov dx,offset buffer
mov ah,0ah
int 21h

mov al,ah
int 29h

xor cx,cx
mov si,offset buffer
inc si
mov cl,[si]
add si,cx

@@:
mov al,[si]
dec si
int 29h
mov al,20h
int 29h
loop @b

xor ax,ax
int 16h
ret
message db 'Enter some string',0dh,0ah,'$'
buffer db 254
end start
vadimych вне форума Ответить с цитированием
Старый 04.10.2014, 17:15   #7
Webster0526
Новичок
Джуниор
 
Регистрация: 04.10.2014
Сообщений: 4
По умолчанию

не работает
Webster0526 вне форума Ответить с цитированием
Старый 04.10.2014, 17:31   #8
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Цитата:
не работает
Думаю, в руках проблема.
vadimych вне форума Ответить с цитированием
Старый 04.10.2014, 18:29   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Код:
format MZ

push	cs
pop	ds
;Вводим строку
 xor bx,bx
 xor cx,cx
 lea dx,ptr s
 mov ah,0Ah
 int 21h

;Получаем длинну введенного
 lea si,ptr s
 inc si
 xor cx,cx
 mov cl,byte [si]
 inc si

;Заряжаем цикл вывода посимвольно
for2:
;Выводим символ
 xor ax,ax
 xor dx,dx
 mov	 ah, 2
 mov	 dl,[si]
 int	 21h		 ; DOS - PRINT CHAR
;Выводим пробел
 xor ax,ax
 xor dx,dx
 mov	 ah, 2
 mov	 dl,' '
 int	 21h		 ; DOS - PRINT CHAR
 inc si
loop for2
;Заставляем консоль ждать
 mov	 ah, 1
 int	 21h		 ; DOS - KEYBOARD INPUT
 mov	 ah, 4Ch
 int	 21h


 ret

s db 100 dup(' ')
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строка между символами. Delphi ADK01 Помощь студентам 1 01.03.2013 21:38
удалить лишние пробелы со строки так чтобы между символами осталось по одному пробелу delphi MASIK Общие вопросы Delphi 7 22.12.2010 18:23
Расстояние между символами. Meridian Помощь студентам 0 05.06.2010 15:58
Поиск между символами в документе viter.alex Microsoft Office Word 7 24.05.2009 20:00
удалить лишние пробелы со строки так чтобы между символами осталось по одному пробелу c++ DimaG Общие вопросы C/C++ 1 01.11.2007 21:50