Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::

Форум работает в режиме архива, только для чтения и поиска.
Архив 2004 Архив 2007 Архив 2013

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.02.2011, 15:55
Новичок

Отправить личное сообщение для hakep112 Посмотреть профиль Найти все сообщения от hakep112
 
Регистрация: 08.02.2011
Сообщений: 1

Помогите с масивами на Assembler
Задано символьний масив С(n), n<=1000. Розробити програму, яка визначає і виводить в лексикографічному порядку: усі великі латинські букви, які є в масиві С; усі великі латинські букви, яких не має в масиві С; усі цифри, які є в масиві С; усі цифри, які є в масиві С і повторюються.
  #2  
Старый 08.02.2011, 16:02
MBo MBo вне форума
Местный

Отправить личное сообщение для MBo Посмотреть профиль Найти все сообщения от MBo
 
Регистрация: 21.09.2006
Адрес: Новосибирск
Сообщений: 1,374

Вряд ли кому-либо будет интересно писать учебную задачу за автора.
  #3  
Старый 09.02.2011, 14:39
Пользователь

Отправить личное сообщение для lordKelvin Посмотреть профиль Найти все сообщения от lordKelvin
 
Регистрация: 25.01.2010
Сообщений: 51

Код:
        push ebp
        mov ebp,esp
        sub esp,0x3E8+0x42
        lea edi,[ebp-0x3E8-0x42-0x32]
        mov ecx,0x42
        xor eax,eax
        rep stosb
        mov ecx,0x3E8
ref01:  rdtsc
        and al,0x3F
        mov ebx,ref00
        xlat
        stosb
        loop ref01
        lea esi,[ebp-0x3E8]
        mov ecx,0x3E8
        xor eax,eax
ref02:  lodsb
        cmp al,0x40
        ja ref03
        sub al,0x30
        inc dword [ebp-0x3E8-0x42+eax*4]
        jmp ref04
ref03:  cmp al,0x60
        ja ref04
        mov byte [ebp-0x3E8-0x1A+eax],1
ref04:  loop ref02
        lea esi,[ebp-0x3E8-0x1A]
        lea edi,[esi-0x32]
        mov ecx,0x1A
ref06:  cmp byte [esi],0
        je ref05
        mov al,0x5B
        sub al,cl
        stosb
ref05:  inc esi
        loop ref06
        mov al,0x0A
        stosb
        lea esi,[ebp-0x3E8-0x1A]
        mov ecx,0x1A
ref08:  cmp byte [esi],0
        jne ref07
        mov al,0x5B
        sub al,cl
        stosb
ref07:  inc esi
        loop ref08
        mov al,0x0A
        stosb
        lea esi,[ebp-0x3E8-0x42]
        mov ecx,0x0A
ref10:  lodsd
        test eax,eax
        jz ref09
        mov al,0x3A
        sub al,cl
        stosb
ref09:  loop ref10
        mov al,0x0A
        stosb
        lea esi,[ebp-0x3E8-0x42]
        mov ecx,0x0A
ref12:  lodsd
        cmp eax,2
        jb ref11
        mov al,0x3A
        sub al,cl
        stosb
ref11:  loop ref12
        mov al,0x0A
        stosb
        mov edx,edi
        lea ecx,[ebp-0x3E8-0x1A-0x32]
        sub edx,ecx
        mov eax,4
        mov ebx,1
        int 0x80
        mov esp,ebp
        pop ebp
        ret
ref00 db '0123456789abcdefghiJacklmnopqrstuvwxyzABCDEFGHIjKLMNOPQRSTUVWXYZ'
Программа создает массив из 1000 элементов, заполняя случайными буква английского алфавита и цифрами. После обработки выводятся четыре строки, отвечающие условию задачи. Для вывода текста используется прерывание 0x80 линукса.
 


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

Расширенный поиск
Опции просмотра