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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2013, 19:26   #1
Sevastian
 
Регистрация: 15.11.2013
Сообщений: 3
По умолчанию Работа со строками

Удалить КАЖДЫЕ идущие подряд согласные буквы
Вот что я смог сделать, но она удаляет только 2 первые встретившиеся в стоке буквы, а дальше нет
Код:
.model small
.stack 100h
.data
strBig db 254 
len db ?
str_ db  255 dup (?)
vowels db 'aeiouyAEIOUY'
len1 = $-vowels

.code      
start:
mov ax,@data
mov ds,ax
mov es,ax
 
mov ah,10
mov dx,offset strBig
int 21h
xor cx,cx
mov cl,len
mov bx,2
mov si,offset strBig+2
 
labl1:
lodsb 
mov dx,cx
 mov cx,len1
mov di,offset vowels

repnz scasb  
mov cx,dx
jnz labl2 
 
dec bx 
je labl3 
jmp labl4

 
labl2:
mov bx,2
labl4:
loop labl1 
 
jmp exit  
labl3:
 
mov di,si 
sub di,2
rep movsb 
mov al,24h
stosb  
mov al,10
int 29h
 
mov dx,offset str_
mov ah,9
int 21h
 
exit:
 
xor ax,ax
int 16h
 
mov ax,4c00h
int 21h
ret
end start
помогите, как сделать, а то сам пытался циклить, но ничего не получалось(
Sevastian вне форума Ответить с цитированием
Старый 15.11.2013, 21:38   #2
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Sevastian, нехорошо обманывать. Сам ты ни строчки не написал. Поэтому и не можешь элементарное сделать. А, нет, сделал. Имена меток поменял. Неужто Mikl___ был прав? И Nastya_Juk оказалась мужиком?
Пруф: http://www.cyberforum.ru/asm-beginne...ad1003360.html

На вот, Nastya_Juk, или кто ты там есть, Sevastian? И помни, что на обмане далеко не уедешь. Чувствуешь себя как помоями облитым из-за этих ваших выкрутасов со сменой пола.

Код:
.model small
.data
strBig db 254
len db ?
str_ db 255 dup (?)
vowels db 'aeiouyAEIOUY'
len1 = $ - vowels
 
.code      
start:
mov ax,@data
mov ds,ax
mov es,ax
 
mov ah,10
mov dx,offset strBig
int 21h
 
xor cx,cx
mov cl,len
mov bx,2                           ; флаг наличия гласных букв во введённой строке
mov si,offset strBig+2
 
@1:
lodsb                                 ; очередной символ строки записываем в регистр al
mov dx,cx                          ; длину строки сохраняем в свободном регистре
mov cx,len1
mov di,offset vowels             ; адрес строки с гласными буквами 
repnz scasb                       ; сканируем эту строку пока не встретим в ней значение равное al
mov cx,dx                          ; восстанавливаем текущее значение длины введённой строки  
jnz @2                              ; если символ в al был найден в строке с гласными
 
dec bx                               ; уменьшаем на единицу значение флага
je @3                               ; если оно стало равно нулю - выходим из цикла, две гласные подряд найдены
jmp @4                              ; и продолжаем цикл
 
@2:
mov bx,2                          ; иначе восстанавливаем значение флага
@4:
loop @1                             ; продолжение цикла
 
jmp exit                             ; если просмотрена вся строка - выход
 
@3:
push cx
mov di,si                           ; здесь исключаем из строки две гласные
sub di,2                            ; текущий индекс уменьшаем на два
push di
rep movsb                        ; и копируем оставшиеся символы строки, затирая две гласные
pop si
pop cx
jmp @2

exit:

mov byte ptr [si],24h          ; записываем символ завершения строки '$'
 
mov al,10                          ; переводим курсор на новую строку
int 29h
 
mov dx,offset str_              ; выводим на экран результат
mov ah,9
int 21h
 
 
xor ax,ax
int 16h
 
mov ax,4c00h
int 21h
end start

Последний раз редактировалось vadimych; 16.11.2013 в 07:33.
vadimych вне форума Ответить с цитированием
Старый 18.11.2013, 13:48   #3
Sevastian
 
Регистрация: 15.11.2013
Сообщений: 3
По умолчанию

упс, Видимо твой код на киберфоруме нашел, каюсь.
Сначала не понял, что за Настя Жук, а потом оказалась, это девушка с моего потока и у нее такое же задание.
Извиняюсь, не хотел обидеть никого
Sevastian вне форума Ответить с цитированием
Старый 18.11.2013, 14:31   #4
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

А я извиняться не буду. Терпеть не могу брехунов.
vadimych вне форума Ответить с цитированием
Старый 19.11.2013, 13:55   #5
Sevastian
 
Регистрация: 15.11.2013
Сообщений: 3
По умолчанию

Я и не прошу извинений, понимаю, что сам виноват
Еще раз извиняюсь за свое поведение
Sevastian вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками. asmars Общие вопросы C/C++ 2 07.04.2012 10:08
C# Работа со строками! Vikor666 Помощь студентам 0 03.12.2011 16:13
C++ работа со строками clip Помощь студентам 2 28.11.2011 21:36
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
Работа со строками Дырдин Общие вопросы C/C++ 12 24.10.2009 19:47