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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2009, 14:22   #1
tiger
Пользователь
 
Регистрация: 30.03.2008
Сообщений: 52
По умолчанию ассемблер, замена символа в строке

Помогите подправить задачку по ассемблеру. вчера несколько часов с ней сидел и запутался. Написать программу, которая в заданой символьной строке будет заменять цифры ('0'..'9') на знак '*'.
Вот мои очерки:
Код:
Data Segment para 'Data'
max=100
string db 'Vvedite stroku','$'
str1 db 'Преобразованная строка','$'
inputs label byte
maxs db max
nums db ?
strs db max dup(' ')
Data Ends

Code Segment para 'code'
          assume cs:Code,ds:Data,es:Data
include in&out.asm
Main Proc far
         push DS
         sub AX,AX
         push AX
         mov AX,Data
         mov DS,AX
         lea DX,string
         call outstr
         call newline
         lea DX,inputs
         call inpstr
         lea SI,strs
         mov DH,39h    ;символ 9
         mov BX,2ah    ;символ *
         mov AX,0  
         sub CH,CH
         mov CL,nums
         cmp CX,0
     jne m1
         ret

m1:   jcxz m3    ;поиск и замена цифр в строке на *
        cmp [SI],DH
         jae m2
         mov [SI],BX

m2:   mov DI,SI
         inc  SI
         inc AX 
        dec CX
         jmp m1


m3:  mov CX,AX
       call newline
m4:  mov DL,[DI]
       call outchar
       inc DI
       loop m4
       retf
Main Endp
Code Ends
       End Main
И процедуры для ввода, вывода строк
Код:
inchar  proc near
        mov  ah,1
        int 21h
        ret          ; inchar by al 
inchar  endp
outchar proc near   ;  outchar dl 
        mov  ah,2     
        int 21h
        ret
outchar endp
newline proc near
        push ax
        mov dl,0dh
        call outchar
        mov dl,0ah
        call outchar
	pop ax
        ret
newline endp
outstr  proc near   ;  outchar dx 
        mov  ah,09h     
        int 21h
        ret
outstr  endp
inpstr  proc near   ;  outchar dx 
        mov  ah,0Ah     
        int 21h
        ret
inpstr endp
Помогите пожалуйста кто знает именно с алгоритмом замены цифр на символ *. я наверно там много чего понапутывал...
tiger вне форума Ответить с цитированием
Старый 05.11.2009, 14:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот например так:
Код:
.data
;_______________
 arr db "123456789hytiwenf56",0
;_______________
.code
start:
 mov ecx,0
aga:
 mov al, byte ptr [arr+ecx]
 cmp al,'0'
 jl qu
 cmp al,'9'
 jg qu
 mov byte ptr [arr+ecx],'*'
qu:
 cmp al,0
 inc ecx
 jz aga
ret
end start
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.11.2009, 14:48   #3
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

проверить не на чем, но кажется где-то так
Код:
        lea SI,strs
         sub CH,CH
         mov CL,nums
	mov ax,cx
         cmp CX,0
     jne m1
         ret

m1:   
        cmp [SI], byte ptr '0'
	jc sk
	cmp [si], byte ptr '9'
	jnbe sk
         mov [SI],byte ptr '*'
sk:   
         inc  SI
	loop m1

m3:  mov CX,AX
        lea DI,strs

       call newline
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 05.11.2009, 15:25   #4
tiger
Пользователь
 
Регистрация: 30.03.2008
Сообщений: 52
По умолчанию

спасибо огромное Вам!
tiger вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Номер символа в строке Veroonya SQL, базы данных 4 24.08.2009 15:04
Замена символа Flippp Общие вопросы C/C++ 20 24.06.2009 17:18
поиск в строке символа IvanM Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 02.06.2009 22:27
Удаление символа в строке Fantom Общие вопросы Delphi 2 23.06.2008 16:03
Перл. Замена символа \ на символ / Stilet PHP 1 12.04.2008 10:17