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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2011, 16:58   #1
Mr.BL@CK
Пользователь
 
Регистрация: 17.11.2010
Сообщений: 27
По умолчанию Обработка строк цепочечными командами

Суть задания проста - нужно удалить из строки все буквы А

Программку я вроде написал
Код:
sseg segment stack 'stack'
     db        64 dup (?)
sseg ends
data segment
               string db 'aaaaab'
               l        dw  6
data ends

 
code    SEGMENT  'code'
assume ss:sseg,ds:data,cs:code
start proc far
        lea dx,string                      ;вывод на экран строки до обработки
        mov ah,9
        int 21h 
        
        mov dx,30h
        lea di,string
        mov cx,l
n:
        cmp byte ptr [di],'a'                    ;собственно здесь указан искомый символ.
        jne nn
 
;если найден искомый символ то перезапишем строку, без этого символа.
                mov si,di
                inc si
                push di
                push cx
                inc cx
                m:
                        mov al,byte ptr [si]
                        mov byte ptr [di],al
                        inc si
                        inc di
                        loop m
                        pop cx
                        pop di
nn:
        inc di
        loop n
        
        lea dx,string                            ;вывод после обработки
        mov ah,9
        int 21h 
                
        mov ah,4ch
        int 21h
		start   endp
code    ends
        end     start
Сказали переделать,используя цепочечные команды.
А вот с этим уже проблема...
Помогите пожалуйста с решением,заранее спасибо
Mr.BL@CK вне форума Ответить с цитированием
Старый 10.12.2011, 17:24   #2
zhan313
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 44
По умолчанию

Это оно ?
Код:
        lea dx,string                      ;вывод на экран строки до обработки
        mov di,dx
        mov ah,9
        int 21h 
        
        mov	si,di
        mov cx,l
n:
	lodsb
	cmp	al,'a'
	jne	nn
	push	si
	push	di
	push	cx
	dec	cx
	rep	movsb
	pop	cx
	pop	di
	pop	si
	dec	si
nn:
	loop	n
zhan313 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с АТ-командами в DELPHI 7 Азамат Казанчев Помощь студентам 17 18.06.2011 08:22
обработка строк C++ krolex Помощь студентам 0 23.05.2010 14:39
обработка строк Xunter Помощь студентам 4 27.06.2008 21:48
Консольное приложение с командами Noor Общие вопросы Delphi 4 24.04.2008 21:54
Работа с DOS командами. 3apadlo Паскаль, Turbo Pascal, PascalABC.NET 1 27.01.2007 22:14