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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2007, 14:56   #1
julia23
 
Регистрация: 11.07.2007
Сообщений: 7
По умолчанию инвертирование строки

Нужно написать программу, изменяющую порядок следования элементов в строке на обратный, я уже столько на исправляла, что просто теперь уже не вижу свою ошибку
Код:
MODEL SMALL
.STACK 256
.DATA
	n	equ 10
	stroka	db '0123456789','$'
	stroka_len equ $-stroka
	stroka2	db 11 dup (?)

.CODE
start:
	mov ax,@Data
	mov dx,ax   
	xor ax,ax
	mov cx,5
	lea bx, stroka
	lea si, stroka
m1:

       mov al,[bx]             
       add    si,cx
       dec    si                ; указывает на конец буфера
                               ; строки
       mov    al,[bx]           ; получить следующий символ
       mov    [si],al           ; сохранить символы в
                                ; обратном порядке
       inc    bx                ; указатель на следующий
                                ; символ
       dec    si                ; указатель на предыдущую
	dec cx
	jnz m1                             
                                ; вывода
        mov ah,09h
	lea dx,stroka ; напечатать строку
	int 21h
	
    Done:
       mov    ah,4ch       
       int    21h               
END start

Последний раз редактировалось rpy3uH; 10.11.2007 в 08:48.
julia23 вне форума Ответить с цитированием
Старый 08.11.2007, 15:35   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

.....
lea bx, stroka
lea si, stroka2
.....
lea dx,stroka2 ; напечатать строку
.....
(Судя по заданию... НАсколько я понял)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.11.2007, 15:44   #3
julia23
 
Регистрация: 11.07.2007
Сообщений: 7
По умолчанию Я так пробовала

А суть еще в том чобы именно в ней менять местами.
Может у кого нибудь будут еще варианты,а то при этом у меня много чего выдает в ответ но далеко от того что надо
julia23 вне форума Ответить с цитированием
Старый 08.11.2007, 20:11   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

допустим di указывает на исходную строку, cx -длина строки, si указывает на строку результат , тогда это будет выглядеть примерно так

Код:
      add di, cx
    сopyrep:
      dec di
      mov dl, byte [di]
      mov byte [si], dl
      inc si

      loop copyrep
p.s. сам не проверял

Последний раз редактировалось rpy3uH; 08.11.2007 в 20:20.
rpy3uH вне форума Ответить с цитированием
Старый 09.11.2007, 12:56   #5
julia23
 
Регистрация: 11.07.2007
Сообщений: 7
По умолчанию

В другую переменную у меня получилось это сделать а вот в переменной stroka ни как не получается, выдает пусто.
julia23 вне форума Ответить с цитированием
Старый 09.11.2007, 18:00   #6
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

ну так инвертируй строку в другую строку и потом скопируй вторую строку в исходную
rpy3uH вне форума Ответить с цитированием
Старый 09.11.2007, 21:23   #7
Mayk
Новичок
Джуниор
 
Регистрация: 09.11.2007
Сообщений: 1
По умолчанию

Я скопировал ваш код і отредактировал вот что получилось
Код:
.MODEL SMALL
.STACK 256
.DATA
stroka db '0123456789','$'
.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

Последний раз редактировалось rpy3uH; 10.11.2007 в 08:46.
Mayk вне форума Ответить с цитированием
Старый 12.11.2007, 10:36   #8
julia23
 
Регистрация: 11.07.2007
Сообщений: 7
Смех

Спасибо огромное, не поверите но я это пробовала но он мне пусто выдавал, не знаю что ему не хватало, но это работает, может много исправляла и гдето наверное забыла убрать коментарий. Помогите пожалуйста еще, у меня что то мысли ни какие не лезут в голову. Надо написать программу сцепления строк(содержимое одной строки добавляется содержимое второй). Я пробовала но у меня опять выдает пусто. Буду очень признательна за любую мысль. Заранее спасибо.
julia23 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27
Строки Настена Помощь студентам 1 07.01.2008 23:47
Строки. Mr.User Помощь студентам 11 08.12.2007 07:00
как вывести строку поочередно сначала первая буква первой строки потом первая буква второй строки и т.д. vitalik007 Помощь студентам 1 25.09.2007 20:45