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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2023, 18:39   #1
YaLubluMamu
Пользователь
 
Регистрация: 22.10.2022
Сообщений: 37
По умолчанию КОМАНДЫ ОБРАБОТКИ СТРОК И ТАБЛИЦ

Выполнить поиск элемента в таблице, которою необходимо построить в соответствии с приведенным ниже номером варианта. Найденную строку выдать на экран. Количество строк таблицы – 10.
Вариант: По номеру в списке определить фамилию.
YaLubluMamu вне форума Ответить с цитированием
Старый 12.02.2023, 19:08   #2
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 489
По умолчанию

Цитата:
Сообщение от YaLubluMamu Посмотреть сообщение
Выполнить поиск элемента в таблице, которою необходимо построить в соответствии с приведенным ниже номером варианта.
Пойду кофе погуще заварю.
Valick вне форума Ответить с цитированием
Старый 12.02.2023, 19:31   #3
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

fasm1 ver. 1.73.30 Linux i586
Код:
format ELF
define EOLN 10
macro table [num, name, sername, thirdname] { forward local name_text, sername_text, thirdname_text
 dd num, name_text, sername_text, thirdname_text
 common dd 0, 0, 0, 0
 forward name_text db name, 0
 forward sername_text db sername, 0
 forward thirdname_text db thirdname, 0 }

struc string txt& { label . byte
 db txt
 .Length = $ - .
 db 0
 .Bytes = $ - . }

entry $
    mov edx, str_input_num.Length
    mov ecx, str_input_num
    mov ebx, 1
    mov eax, 4
    int 128
    mov esi, buf_input_num
    mov edx, buf_input_num.Length
    mov ecx, esi
    mov ebx, 0
    mov eax, 3
    int 128
    lea ecx, [eax - 1]
    xor eax, eax
    xor ebx, ebx
    mov edi, 10
    jecxz invalid_num
@@:
    mov bl, [esi] 
    mul edi
    inc esi
    sub bl, '0'
    cmp bl, 9
    ja invalid_num
    add eax, ebx
    adc edx, edx
    loopz @b
    test edx, edx
    jnz out_of_range
    or esi, -1
@@:
    inc esi
    lea ebx, [table_data + esi * 8]
    mov edx, [ebx + esi * 8]
    mov ecx, [ebx + esi * 8 + 8]
    cmp eax, edx
    jz @f
    cmp ecx, ebx
    ja @b
    mov edx, error_not_found.Length
    mov ecx, error_not_found
    jmp print_and_exit
invalid_num:
    mov edx, error_invalid_num.Length
    mov ecx, error_invalid_num
    jmp print_and_exit
out_of_range:
    mov edx, error_out_of_range.Length
    mov ecx, error_out_of_range
    jmp print_and_exit
@@:
    mov ebx, ecx
    mov edi, ecx
    or ecx, -1
    xor eax, eax
    repne scas byte [edi]
    sub eax, ebx
    mov ecx, ebx
    lea edx, [edi + eax - 1]
print_and_exit:
    mov ebx, 1
    mov eax, 4
    int 128
    mov ebx, 1
    mov eax, 1
    int 128
; Строки с именами, фамилиями и отчествами заполните сами
table_data table 1,  'Иван',  'Иванов',  'Иванович',\
                 2,  'Петр',  'Петров',  'Петрович',\
                 3,  'Сидор', 'Сидоров', 'Сидорович',\
                 4,  ' ', ' ', ' ',\
                 5,  ' ', ' ', ' ',\
                 7,  ' ', ' ', ' ',\
                 25, ' ', ' ', ' ',\
                 15, ' ', ' ', ' ',\
                 10, ' ', ' ', ' ',\
                 6,  ' ', ' ', ' '
buf_input_num string 256 dup (' ')
str_input_num string 'Введите num = '
error_not_found string EOLN, EOLN, 'Ошибка! Строка с этим номером не найдена в таблице'
error_out_of_range string EOLN, EOLN, 'Ошибка! Введенное значение вне 32-битного диапазона'
error_invalid_num string EOLN, EOLN, 'Ошибка! Вы ввели не число'

Последний раз редактировалось macomics; 13.02.2023 в 01:15.
macomics вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Команды пакетной обработки fkty Операционные системы общие вопросы 1 08.06.2016 15:40
Команды обработки строк (Help) Cpagent Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 05.04.2016 14:17
Скорость обработки команды volod3000 Общие вопросы Delphi 6 13.12.2011 21:36
Недостаточно памяти для обработки команды TBitMap finder_sl Мультимедиа в Delphi 12 03.03.2010 20:40
Команды обработки строк! Proskurin Помощь студентам 11 06.05.2008 16:11