Поиск:

Ответ в темуСоздание новой темы Создание опроса
> asm, изменить часть кода, изменить код элементарной прог.на строки 
V
    Опции темы
VeliNA
  Дата 14.3.2010, 12:08 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 14.3.2010

Репутация: нет
Всего: нет



помогите пожалуйста Девушке-новичку,
дана программа, код уже готовый, после изменения условия, нужно изменить и сам код, если есть другие варианты этой программы, то тоже хорошо.
вот задача: 
С клавиатуры вводится строка длиной N, 2<N<100. Заменить каждый символ латинского алфавита на символ, идущий следующим в алфавите. Символы 'z' и 'Z' не заменять. Результат вывести на экран.
Было так:
Код

.686
.model flat, stdcall
include macroses.inc

.data
include vars.inc
a DB 99 DUP(' ')                                    ;объявляем массив
len DB 0                                        ;объявляем переменную в которой будет храниться массив
                                                ;объявление переменных содержащих сообщения
promt1 DB 'Vvedite stroky: '
promt3 DB 'Result '

.code
include procedures.inc

WinMain PROC

    INIT_CONSOLE

    WRITE_CONSOLE OFFSET promt1, SIZEOF promt1    
    READ_STRING    a                            

    mov len,al                            ; сохраняем размер массива в переменной len
    mov cl,len                            ; переносим размер строки в cl
    mov esi, OFFSET a                    ; ставим указатель на начало строки в esi
    
.WHILE cl>0                                ;пока cl не равен 0 выполняем
    mov al,[esi]

    .IF al >='A' && al !='Z' && al <'z'        
           ; если символ лежит в промежутке "A ... Y, a, ... y" т.е. все символы кроме 'Z' и 'z'
        add al,1                            
              ;то добавляем к ним 1 т.е. передвигаем его на следующую букву (если была А то станет В и т.д.)
    .ENDIF 

mov [esi],al; записываем символ после проверки
add esi, 1; переходим к следующему элементу
dec cl    ; декриминируем cl
.ENDW                                        

    WRITE_CONSOLE OFFSET promt3, SIZEOF promt3        ; Выводим инфо.сообщение

    WRITE_CONSOLE OFFSET a, SIZEOF a            ; Выводим обработанную строку

        
    READLN_CONSOLE                                ; ожидаем ввода
    INVOKE ExitProcess, 0                        ; завершаем процесс

WinMain ENDP
end


нужно переделать код, чтобы запускалось в M.Visual C++ 2008 с изменением в условии 
объявления переменных 
Код

a DB 99 DUP ('a'), dup ('b'), 'Zz'

 вместо ранее
Код

a DB 99 DUP(' ')  

PM MAIL   Вверх
ФедосеевПавел
Дата 14.3.2010, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 7.2.2009

Репутация: 4
Всего: 10



Могу лишь предположить, что в новом варианте строка a будет браться из памяти вместо ввода с клавиатуры. Тогда после этой замены определи размер строки и закомментируй (или удали) её ввод. Что-то вроде этого
Код
...
a DB 99 DUP ('a'), 5 dup ('b'), 'Zz'            
len DB $-a          ;вычисляется длина строки
или
len DB SIZEOF a
...
;    WRITE_CONSOLE OFFSET promt1, SIZEOF promt1    
;    READ_STRING    a                            

;    mov len,al                            ; сохраняем размер массива в переменной len
...

PM   Вверх
VeliNA
Дата 19.3.2010, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 14.3.2010

Репутация: нет
Всего: нет



спасибо!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0844 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.