Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 16.11.2019
Сообщений: 10

Вывести количество цифр в строке или заменить символ на пустой символ или пробел

16.11.2019, 12:34. Показов 2681. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня считает только количество цифр, нужно еще их вивести их значение. С++
C++
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
34
35
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <string>
 
using namespace std;
 
int kol;
 
int main()
{
 char s[] = "hel7lo,1234wo8ld6";
 char s1;
 
 __asm
 {   pusha
  mov kol, 0
  mov ecx, 17
  lea esi, [s]
  @next:
  lodsb
  cmp al, '0'
  jb @skip
  cmp al, '9'
  ja @skip
  inc kol
  @skip:
  loop @next
  popa
 }
 
 cout << kol;
 getch();
 return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.11.2019, 12:34
Ответы с готовыми решениями:

Заменить каждый четный символ или на 'a', если символ не равен 'a' или 'b', или на 'c' в противном случае
Дана строка. Заменить каждый четный символ или на 'a', если символ не равен 'a' или 'b', или на 'c' в противном случае

Из строк, которые содержат символ '1' или '2', удалить первый встречающийся в строке символ, равный латинской букве 'a'
Дана матрица размером 4×3, элементами которой являются строки. Необходимо в системе Турбо-Паскаль написать программу, которая выполняет...

Вывести строки, в которых символ «*» встречается не менее 2 раз и заменить символ «*» на символ «_»
День добрый. Имеется условие лабы. Написать программу, в которой с клавиатуры вводится до 10 символьных строк. Вывести строки, в...

9
0 / 0 / 0
Регистрация: 16.11.2019
Сообщений: 10
16.11.2019, 13:09  [ТС]
Крашится и нужно вывести цифры, попробуйте сделать
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <string>
 
using namespace std;
 
int kol=0;
 
int main()
{
 char s[] = "h5el7lo,1234wo8l6d60";
 
 __asm
 {  pusha
mov eax, 0 // Кількість цифр на початку становить 0
mov edi, dword ptr [s] // Завантажити  в EDI адресу 1-го символу рядка s mov ecx, dword ptr k // Завантажити в лічильник довжину рядка у байтах cmp ecx, 0
//je @exit // Перевірка на порожній рядок
@next:
mov dl,byte ptr [edi] // Завантажити черговий символ рядка
lodsb
cmp dl,'0' // та перевірити його на інтервал цифр.
jl @sdvig // Якщо символ не є цифровий, тобто його код є менший за '0'
cmp dl,'9' // чи більший за '9', перейти на мітку @sdvig
jg @sdvig // для видалення цього символу
inc eax    // Інакше, збільшити значення кількості пробілів в EАX  на 1 та
jmp @skip    // перейти на мітку, обійшовши видалення нецифрових символів
@sdvig:
push ecx // Зберегти значення повторювань зовнішнього циклу (регістр ЕСХ)
push edi // та адресу символу (регістр EDI), який перевіряється, оскільки ці
// регістри використовуватимуться у внутрішньому циклі для видалення нецифрових символів
@nex: // З цієї мітки починається внутрішній цикл, в якому видалення
mov dh,byte ptr [edi+1] // відбувається за рахунок зсуву решти символів mov byte ptr [edi],dh // рядка. При цьому через регістр DH, починаючи inc edi // з нецифрового символу, почергово перевантажуються
loop @nex // (зсуваються) всі символи решти рядка
pop edi // Після видалення (зсуву) відновлюються значення регістрів EDI та
pop ecx // ЕСХ, щоб відновити перевірку, починаючи з номера символу,
dec edi // який було видалено, адже він набув нового значення
@skip:
inc edi  // Перейти на наступний символ, збільшивши адресу в EDI loop @next // Якщо ecx>0, перейти до опрацювання наступного символу @exit:
mov kol,eax // Завантажити обчислену кількість цифр до змінної kol
popa
 
 }
 
 cout << kol;
 getch();
 return 0;
}
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
16.11.2019, 13:32
Лучший ответ Сообщение было отмечено Sssembler как решение

Решение

Sssembler,
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
char s[] = "hel7lo,1234wo8ld6";
char s1[20];
 
__asm
{ pusha
mov kol, 0
mov ecx, 17
lea esi, [s]
lea edi,[s1]
@next:
lodsb
cmp al, '0'
jb @skip
cmp al, '9'
ja @skip
inc kol
stosb
@skip:
loop @next
popa
1
0 / 0 / 0
Регистрация: 16.11.2019
Сообщений: 10
17.11.2019, 00:58  [ТС]
а что будет выводить? где сама програма это лишь кусок кода
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
17.11.2019, 01:07
Sssembler,
так ты и допиши кусок кода, который будет что-либо выводить
0
0 / 0 / 0
Регистрация: 16.11.2019
Сообщений: 10
17.11.2019, 01:08  [ТС]
Нужно вывести только цифры. Не надо скидивать уривки кода. Нужен полный ответ. Спасибо
C++
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <string>
 
using namespace std;
 
int kol=0;
 
int main()
{
 char s[] = "h5el7lo,1234wo8l6d60";
 
 __asm
 {  pusha
mov eax, 0 
mov edi, dword ptr [s]
je @exit 
@next:
mov dl,byte ptr [edi] 
lodsb
cmp dl,'0' 
jl @sdvig 
cmp dl,'9' 
jg @sdvig 
inc eax    
jmp @skip  
@sdvig:
push ecx
push edi
@nex:
mov dh,byte ptr [edi+1] 
loop @nex 
pop edi 
pop ecx 
dec edi 
@skip:
inc edi  
mov kol,eax
popa
 
 }
 
 cout << kol;
 getch();
 return 0;
}
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
17.11.2019, 01:23
Sssembler,
добавь к фрагменту из #3 строку
C++
1
cout << s1
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8665 / 4502 / 1670
Регистрация: 01.02.2015
Сообщений: 13,926
Записей в блоге: 13
17.11.2019, 22:35
Sssembler, возможно вы имеете в виду вызов printf из ассемблерной вставки?
Тогда, Microsoft в статье Вызов функций C во встроенном коде на языке ассемблера
показывает следующий пример вызова printf
C
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
// InlineAssembler_Calling_C_Functions_in_Inline_Assembly.cpp
// processor: x86
#include <stdio.h>
 
char format[] = "%s %s\n";
char hello[] = "Hello";
char world[] = "world";
int main( void )
{
   __asm
   {
      mov  eax, offset world
      push eax
      mov  eax, offset hello
      push eax
      mov  eax, offset format
      push eax
      call printf
      //clean up the stack so that main can exit cleanly
      //use the unused register ebx to do the cleanup
      pop  ebx
      pop  ebx
      pop  ebx
   }
}
1
0 / 0 / 0
Регистрация: 16.11.2019
Сообщений: 10
21.11.2019, 18:35  [ТС]
ФедосеевПавел, подскажите как редактировать сообщения или их удалять? Спасибо
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8665 / 4502 / 1670
Регистрация: 01.02.2015
Сообщений: 13,926
Записей в блоге: 13
21.11.2019, 18:42
Правила форума:
2.3 Сообщения и темы, а также другой контент, размещаемый на форуме, по просьбам пользователей не удаляется и не закрывается.
Т.е. вы - не можете.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.11.2019, 18:42
Помогаю со студенческими работами здесь

В заданном тексте заменить символ пробел на символ запятая
В заданном тексте заменить символ пробел на символ запятая. Конечные символы удалить, не заменяя на запятые. Если в тексте встречается...

Заменить любой символ в строке на пробел в xPath
Здравствуйте, не могу решить проблему замены любого символа в текстовой строке на определенный символ (в моем случае пробел) функцией...

Заменить первый пробел в строке на символ переноса
Здравствуйте. Никогда не притрагивался к шарпу. Сейчас на компе из компиляторов только шарп. Помогите, пожалуйста, решить простенькую...

Заменить указанный символ на пробел во всей строке
Приветствую, форумчане. Нужна помощь с одной программкой: Заменить указанный символ на пробел во всей строке (Используя команду scas). ...

Определить количество пробелов и заменить каждый пробел на символ «?»
Определить количество пробелов и заменить каждый пробел на символ «?»


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru