Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/12: Рейтинг темы: голосов - 12, средняя оценка - 4.50
 Аватар для Sarmat
3 / 3 / 2
Регистрация: 13.11.2010
Сообщений: 57

Выбрать символы, коды которых имеют единицу в 1-м и 3-м разрядах

02.04.2012, 18:38. Показов 2566. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем. Помогите пожалуйста. Задали сделать задачу, но при этом еще не дали для этого материал. Пробовал найти в нете и сделать сам - не получаеться.
Есть переменная LIT1 типа DB с значением "from-sql-active". Нужно выбрать символы, коды которых имеют единицу в 1-м и 3-м разрядах, и скопировать их в переменную LIT2.
Если можно - с коментами. Буду очень благодарен.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.04.2012, 18:38
Ответы с готовыми решениями:

Дан массив S(50).Вывести те символы (и их коды), коды которых кратны 5 и определить их количество.
Дан массив S(50).Вывести те символы (и их коды), коды которых кратны 5 и определить их количество.

Вывести на экран символы, коды которых равны
Вывести на экран символы, коды которых равны - 116,62 в восьмеричной системе - 39,22 в шестнадцатеричной системе

Не выводятся юникодовские символы, коды которых 128-160
Ни в XE ни в XE2 не выводятся на экран юникодовские символы с кодами от 128 до 160. Хотелось бы узнать, это баг билдера или я чего-то не...

35
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
02.04.2012, 19:16
задача простая, может покажешь, чего ты там сделал, а мы подправим..
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
02.04.2012, 19:24
Цитата Сообщение от Sarmat
"from-sql-active"
Это что, преподы из одной методички задания лепят? Поиск по разделу принесёт много интересного.
0
 Аватар для Sarmat
3 / 3 / 2
Регистрация: 13.11.2010
Сообщений: 57
02.04.2012, 20:18  [ТС]
Нужного мне нету. Пока ничего не сделал. Просто я в Ассемблере вобще не разбираюсь. Мне ближе С/С++ Помогите пожалуйста.
0
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
02.04.2012, 20:29
без комментов..
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
.model small
.data
    LIT1    db "from-sql-active"
    len dw $ - LIT1
    LIT2    db 20 dup ('$')
.code
start:
    mov ax,@data
    mov ds,ax
    
    lea si,LIT1
    lea di,LIT2
    
    mov cx,len
n1: mov al,byte ptr [si]
    test al,10b
    je n2
    test al,1000b
    je n2       
        mov byte ptr [di],al
        inc di
n2: inc si
    loop n1
 
    mov ah,9
    lea dx,LIT2
    int 21h
 
    mov ah,10h
    int 16h
    mov ah,4ch
    int 21h
end start
1
Заблокирован
02.04.2012, 21:15
zzzyyyxxx, А не проще ли один раз проверить:
Assembler
1
2
3
4
5
6
7
8
n1:
 test al, 10h
 je n2
    mov byte ptr [di], al
    inc di
n2:
  inc si
  Loop n1
1
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
02.04.2012, 21:19
так друг, может оно и проще, но вот в задании:
Цитата Сообщение от Sarmat Посмотреть сообщение
Нужно выбрать символы, коды которых имеют единицу в 1-м и 3-м разрядах
PS: может и можно уложиться в одну проверку, но я думаю и такого варианта будет достаточно, хотя конечно, если что придумаешь, выкладывай, заценим..
0
Заблокирован
02.04.2012, 21:26
А мой test чем плох? Уверен вы знаете, но все же подчеркну: 10h=1010b как раз первый и третий биты.

Добавлено через 2 минуты
Мой вариант идентичен вашему, но проверку я описал выше.
0
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
02.04.2012, 21:34
Цитата Сообщение от Искандар Посмотреть сообщение
Уверен вы знаете, но все же подчеркну: 10h=1010b как раз первый и третий биты.
1) можно на ты..
2) 10h? вот же, h я проглядел.. трындец моему зрению.. вроде как 10h = 10000b, вероятно ты имел ввиду 10d?
а так вообще проверь мой и свой варианты, результат, то разный.. или нет?
0
 Аватар для Sarmat
3 / 3 / 2
Регистрация: 13.11.2010
Сообщений: 57
02.04.2012, 22:10  [ТС]
Всем спасибо. Работает
0
Заблокирован
03.04.2012, 08:01
zzzyyyxxx, Как вариант можно использовать строковые операции:
Assembler
1
2
3
4
5
6
7
8
cld
n1: lodsb
     test al, 10b
     je n2
     test al, 1000b
     je n2
        stosb
n2: loop n1
Добавлено через 1 минуту
И код стал короче
0
 Аватар для HITMAN
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
03.04.2012, 08:11
К чему два перехода изначально на n2 а потом на n1.
Так думается быстрее.
Assembler
1
2
3
4
5
6
7
8
9
10
cld
next: dec cx 
     lodsb
     test al, 10b
     je next
     test al, 1000b
     je next
     stosb
     cmp cx,0
     jne next
0
Заблокирован
03.04.2012, 08:55
IOAN, А лишняя проверка зачем? за меня это loop сделает и для новичка лучше не усложнять программу сложными конструкциями.

Добавлено через 6 минут
Да и скорость выполнения у вас ниже
0
 Аватар для HITMAN
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
03.04.2012, 09:02
Искандар, я считаю команды типа loop, movsb сложными т.к. происходит несколько микро-операций. С cmp всё проще проверка и переход если условие выполняется. Возможно я упростил?

Добавлено через 5 минут
Искандар, залейте ваш пример для тестирования. У меня результат обратный. Скорее всего дело в железе
0
Заблокирован
03.04.2012, 09:07
IOAN, согласен, но loop сам выполняет все операции которые вы прописали вручную. С циклом программа лучше читается
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
03.04.2012, 09:14
IOAN, если loop не нравится — ставь рядом dec cx и jnz — тогда можно обойтись и без cmp cx,0
0
 Аватар для HITMAN
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
03.04.2012, 09:16
Искандар, команда loop очень сильно ограничивает цикл. Она подобна repeat в ЯП. А реализация for оставляет желать лучшшего

Добавлено через 1 минуту
Цитата Сообщение от Mikl___ Посмотреть сообщение
ставь рядом dec cx и jnz
Как вариант!!!
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
03.04.2012, 09:23
уменьшаю количество проверок
Assembler
1
2
3
4
5
6
7
next: lodsb
      not al
      test al, 1010b
      jnz @f
      not al
      stosb
@@:   loop next
0
Заблокирован
03.04.2012, 09:25
IOAN, Возможно, но я с этим не сталкивался. И к томуже споры про эффективность - материал не этой темы. пускай возьмет что больше нравится
0
 Аватар для HITMAN
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
03.04.2012, 09:53
Цитата Сообщение от Искандар Посмотреть сообщение
пускай возьмет что больше нравится


Добавлено через 26 секунд
Цитата Сообщение от Искандар Посмотреть сообщение
споры про эффективность
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.04.2012, 09:53
Помогаю со студенческими работами здесь

Вывести из строки символы, коды которых представляют возрастающую последовательность
Поиск по интернету и форуму результата не дал - нашел только тему "Массивы. Представляют ли элементы массива возрастающую...

Получить в другом файле символы, коды которых соответствуют элементам исходного файла
1.С помощью датчика случайных чисел записать в файл некоторое количество чисел из отрезка.Получить в другом файле символы, коды которых...

Вывести все символы, ASCII-коды которых лежат между a и b включительно, в порядке возрастания их кодов
Даны два числа: a и b — коды символов. Ваша задача — вывести все символы, ASCII-коды которых лежат между a и b включительно, в порядке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru