Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пара задачек 
:(
    Опции темы
balance
Дата 4.11.2007, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть задача:
Ввести с клавиатуры исходную строку S. Заключить в знаки «!» каждый  знак препинания. Исходную строку и результат вывести на экран.
Вроде бы, кое-что правильно...но программа не работает с строкой больше 3 символов...
Я так полагаю, что вроде бы si и di указывают на одну и ту же область памяти...
Не мог бы кто сказать, что нужно исправить
Код
.model small
.stack 100h
.data
b db '.','$'
d db ',','$'
r db '!','$'
soob1 db 0AH,0DH,'Введите исходный текст:','$'
soob2 db 0AH,0DH,'Исходный текст:','$'
soob3 db 0AH,0DH,'Обработанный текст:','$'
soob4 db 0AH,0DH,'Нажмите Enter для выхода из программы:','$'
;Структура для приёма сообщения
priem label byte
maxlen db 40    ;Максимальная длина сообщения
aclen db ?
text db 0AH, 0DH, 40 dup(''),'$'
text2 db 0AH, 0DH, 40 dup(''),'$'
exit label byte
maxl db 1    ;Максимальная длина сообщения
acl db ?
t db 0AH, 0DH, 1 dup(''),'$'
.code
mov dx,@data
mov ds,dx
mov es,dx
;Блок очистки экрана
mov ax,0600H
mov bh,07
mov cx,0000
mov dx,184FH
int 10h
;Блок вывода сообщения на экран
mov ah,09H    ;Функция ОС
lea dx,soob1
int 21h
;Блок приёма сообщения с клавиатуры
mov ah,0AH
lea dx,priem
int 21h
;Замена символа пробела в конце введённой строки 
;на символ пробела
mov bh,00
mov bl,aclen
mov text[bx],20h
;Блок вывода введённого текста
mov ah,09h    ;Функция ОС
lea dx,soob2
int 21H
mov ah,09H    ;Функция ОС
lea dx,text
int 21H
;Блок обработки введённого текста
sub si,si    ;очистка индексного регистра
sub di,di    ;очистка индексного регистра
mov ch,00    ;установить кол-во инераций цикла
mov cl,aclen    ;равное длине введенной строки
start:        ;начало блока обработки введённого текста
mov bl,text[si] ;занести в bl элекмент строки text
 zamb:          ;блок замены "."
  mov bh,b      ;сравниваем текущий символ в строке
  CMP bl,bh     ;если символы не совпадают
  JNE zamd      ;
  jmp a1
 zamd:        ;блок замены ","
  mov bh,d    
  CMP bl,bh
  JNE zamr
  jmp a1
 zamr:            ;блок замены "!"
  mov bh,r
  CMP bl,bh
  JNE a2
  jmp a1
 a1:  mov al,text[si] 
  mov text2[di],'"';замена найденного символа
  add di,1
  mov text2[di],bl;замена найденного символа
  add di,1
  mov text2[di],'"';замена найденного символа
  add di,1
  add si,1
  jmp a3


     mov text2[di],al
        add si,1    ;увеличение значения индексного регистра
        add di,1    ;увелечение значения индексного регистра
        jmp a3
    
 a3:LOOP start     ;возврат на начало цикла
;Блок вывода обработанного текста
mov ah,09H    ;Функция ОС
lea dx,soob3
int 21H
mov ah,09H    ;Функция ОС
lea dx,text2
int 21H
;Блок завершения программы
ext: mov ah,09H    ;Функция ОС
     lea dx,soob4
     int 21H
     mov ah,0AH
     lea dx,exit
     int 21h
     mov ah,4ch
     int 21h
END

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

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

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


 




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


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

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