Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замещение строчных букв прописными, ПОМОГИТЕ 
:(
    Опции темы
Lusa
  Дата 10.3.2011, 17:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите пожалуйста)

Нужно написать exe-программу, которая выведет на экран вопрос "Input string". После введения строки необходимо превратить первую и последнюю буквы строки на строчные, а все остальные строчные на прописные.

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


Администратор
**


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

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



Под какую опреционную систему, компилятор, процессор?


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
iff
Дата 10.3.2011, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


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

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



Готов выполнить.
Для DOS, компилятор TASM.
А будут ли вводиться буквы национального алфавита (руский алфавит в частности)? или только латиница?


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Lusa
Дата 11.3.2011, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Для DOS, компилятор TASM.

Не имеет ризницы какой алфавит, латиница или русский - какой угодно. Если можно, напишите какие-то  комментарии до коду программы.     

Спасибо.
PM MAIL   Вверх
iff
Дата 12.3.2011, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


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

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



Готово.
Пример работы:
1) программа вывела на экран "Input string"
2) с клавиатуры было введено "tEsT STrinG"
3) программа вывела  "tEST STRINg"
см. скрин: user posted image


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
Lusa
Дата 12.3.2011, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



то что надо.... а код можно? 
PM MAIL   Вверх
iff
Дата 12.3.2011, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


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

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



написал в личку


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
iff
Дата 13.3.2011, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


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

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



Код

    .MODEL    SMALL
    .STACK    64
    .DATA
PROMPT    DB    'Input string', 0DH, 0AH, '$'

INPUTBUFER    LABEL    BYTE
MAXLEN    DB    79+1
LEN    DB    ?
STRIN    DB    79 DUP (?), ?, ?, ?

    .CODE
MAIN    PROC    FAR
    MOV    AX,@DATA    ;Инициализация
    MOV    DS,AX

    MOV    AH,09H    ;Вывод приглашения "Input string"
    LEA    DX,PROMPT
    INT    21H

    MOV    AH,0AH    ;Ввод строки
    LEA    DX,INPUTBUFER
    INT    21H

    MOV    AH,02H    ;Перевод строки на экране
    MOV    DL,0AH    ;   (после ввода функциией 0AH был выведен
    INT    21H    ;   только символ 0DH)

    CMP    LEN,0    ;Если была введена пустая строка, то выход
    JE    EXIT
            ;Преобразование строки:
    LEA    BX,STRIN    ;Загрузить в BX адрес первого символа
    CALL    LCASE PASCAL, BX    ;Преобразовать его к строчному
    INC    BX    ;Перейти к следующему символу
    MOV    CL,LEN    ;Инициализация цикла: Счётчик CX равен длина
    DEC    CL    ;   строки минус 2. Минус 2 потому как не
    DEC    CL    ;   преобразуется первый и последний.
CIRCLE1:    CALL    UCASE PASCAL, BX    ;Цикл: преобразовать текущий символ к заглавному
    INC    BX    ;и перейти к следующему
    LOOP    CIRCLE1    ;Повторить
    CALL    LCASE PASCAL, BX    ;Преобразовать текущий (последний) симв. к строчному.

    MOV    WORD PTR [BX+2], 240AH    ;В конце строки поставить символы перевода и конца строки
    MOV    AH,09H    ;Вывод строки (результата)
    LEA    DX,STRIN
    INT    21H
            ;Выход:
EXIT:    MOV    AH,07H    ;Ждать нажатия любой клавиши
    INT    21H

    MOV    AX,4C00H    ;Завершение работы программы
    INT    21H
MAIN    ENDP

    ;===Подпрограммы===

;Функция LCASE. Преобразует латинский символ в строчной.
;Функции передаётся 1 аргумент: слово, являющеесе адресом
;   (относительно DS) символа, который преобразуется. 
LCASE    PROC    NEAR
    PUSH    BP
    MOV    BP,SP
    PUSH    AX BX    ;Сохранить регистры
    MOV    BX,[BP+4]    ;Загрузить в BX первый аргумент (адрес символа)
    MOV    AL,[BX]    ;Загрузить в AL символ
    CMP    AL,41H    ;Если код символа меньше 41H
    JB    LDONOT
    CMP    AL,5AH    ;   или больше 5AH, то выход
    JA    LDONOT
    XOR    AL,00100000B    ;иначе: инвертировать 5-ый бит.
    MOV    [BX],AL    ;Загрузить преобразованный символ в адр. из 1-ого арг.
LDONOT:    POP    BX AX BP    ;Восстановить регистры
    RET        ;Выход
LCASE    ENDP

;Функция UCASE. Преобразует латинский символ в заглавный.
;Функции передаётся 1 аргумент: слово, являющеесе адресом
;   (относительно DS) символа, который преобразуется. 
UCASE    PROC    NEAR
    PUSH    BP
    MOV    BP,SP
    PUSH    AX BX    ;Сохранить регистры
    MOV    BX,[BP+4]    ;Загрузить в BX первый аргумент (адрес символа)
    MOV    AL,[BX]    ;Загрузить в AL символ
    CMP    AL,61H    ;Если код символа меньше 61H
    JB    UDONOT
    CMP    AL,7AH    ;   или больше 7AH, то выход
    JA    UDONOT
    XOR    AL,00100000B    ;иначе: инвертировать 5-ый бит.
    MOV    [BX],AL    ;Загрузить преобразованный символ в адр. из 1-ого арг.
UDONOT:    POP    BX AX BP    ;Восстановить регистры
    RET        ;Выход
UCASE    ENDP

    END    MAIN




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

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

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


 




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


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

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