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

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

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

Author24 — интернет-сервис помощи студентам
У меня считает только количество цифр, нужно еще их вивести их значение. С++
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', или на ...

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

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

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

9
0 / 0 / 0
Регистрация: 16.11.2019
Сообщений: 10
16.11.2019, 13:09  [ТС] 2
Крашится и нужно вывести цифры, попробуйте сделать
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
16341 / 7660 / 1076
Регистрация: 11.11.2010
Сообщений: 13,706
16.11.2019, 13:32 3
Лучший ответ Сообщение было отмечено 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  [ТС] 4
а что будет выводить? где сама програма это лишь кусок кода
0
Ушел с форума
Автор FAQ
16341 / 7660 / 1076
Регистрация: 11.11.2010
Сообщений: 13,706
17.11.2019, 01:07 5
Sssembler,
так ты и допиши кусок кода, который будет что-либо выводить
0
0 / 0 / 0
Регистрация: 16.11.2019
Сообщений: 10
17.11.2019, 01:08  [ТС] 6
Нужно вывести только цифры. Не надо скидивать уривки кода. Нужен полный ответ. Спасибо
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
16341 / 7660 / 1076
Регистрация: 11.11.2010
Сообщений: 13,706
17.11.2019, 01:23 7
Sssembler,
добавь к фрагменту из #3 строку
C++
1
cout << s1
0
Модератор
Эксперт по электронике
8553 / 4403 / 1653
Регистрация: 01.02.2015
Сообщений: 13,675
Записей в блоге: 9
17.11.2019, 22:35 8
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  [ТС] 9
ФедосеевПавел, подскажите как редактировать сообщения или их удалять? Спасибо
0
Модератор
Эксперт по электронике
8553 / 4403 / 1653
Регистрация: 01.02.2015
Сообщений: 13,675
Записей в блоге: 9
21.11.2019, 18:42 10
Правила форума:
2.3 Сообщения и темы, а также другой контент, размещаемый на форуме, по просьбам пользователей не удаляется и не закрывается.
Т.е. вы - не можете.
0
21.11.2019, 18:42
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.11.2019, 18:42
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru