Консультация № 161094
21.02.2009, 21:39
0.00 руб.
0 1 1
Здравствуйте !Помогите пожалуйста написать программу.

Приложение:
Дана строка из 15 символов. Разработать программу, осуществляющую круговую перестановку части букв исходной строки.
с первого по пятнадцатый по пять символов

Обсуждение

давно
Посетитель
7438
7205
22.02.2009, 00:43
общий
это ответ
Здравствуйте, Якупов Ринат Ильдарович!
Так как не указано направление сдвига, будем сдвигать от старшего адреса к млвдшему
Программа в приложении делает 5 циклических сдвигов строки из 15 символов
Если что-то непонятно или что-то не так (условие написано весьма запутанным языком),
милости просим в мини-форум

Приложение:
.model tiny
.data
sSrc db 'Source: $'
sRes db 'Result: $'
string db 'abcdefghijklmno'
db 0dh, 0ah, '$'

.code
.startup
lea dx, sSrc ;исходная срока
mov ah, 9
int 21h
lea dx, string
mov ah, 9
int 21h

lea si, string ;адрес строки
mov cx, 5 ;число перестановок
call rol_string ;отработаем

lea dx, sRes ;результат
mov ah, 9
int 21h
lea dx, string
mov ah, 9
int 21h

mov ax, 4c00h
int 21h

rol_string proc
push cx ;сохраним число перестановок
push si ;и начальный адрес
mov cx, 14 ;длина строки - 1
mov ah, [si] ;сохраним первого
RLoop: ;будем сдвигать от старшего к младшему
mov al, [si+1] ;читаем следующего
mov [si], al ;и пишем по текущему адресу
inc si ;сдвигаем индекс
loop Rloop ;циклим
mov [si], ah ;по адресу последнего пишем сохранный первый

pop si ;воссановим адрес строки
pop cx ;счечик сдвигов
loop rol_string
ret
rol_string endp

end

Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа