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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2010, 09:52   #1
mohita
 
Регистрация: 24.11.2010
Сообщений: 3
Вопрос Определить кол-во вхождений символа в си-строку.

Определить количество вхождений символа в си-строку

assume CS:CodeSg, DS:DataSg, SS:StackSg
CodeSg segment use16 'CODE'

begin:
;
mov ax,DataSg
mov ds,ax
;
push ds
pop es
lea si, string1
mov al,[si]
lea di string2
mov cx,9
next: repne scasb
jcxz exit
pop di
pop cx
mov cx,1
repe cmpsb
jcxz
jnz
exit:

mov AX, 4C00h
int 21h
;
CodeSg ends
;------------------------------------
DataSg segment use16 'DATA'

string1 db "111145640",0, 10 dup(?)
string2 db "1",0,2 dup (?)

DataSg ends
;------------------------------------
StackSg segment stack use16 'STACK'
db 256 dup(0)
StackSg ends
;------------------------------------
end begin
mohita вне форума Ответить с цитированием
Старый 24.11.2010, 10:40   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

mohita
есть более универсальный вариант -- подсчитать сколько раз любой элемент встречается в строке
Код:
.data
count db 256 dup (0); 256 по количеству символов ASCII
string db "111145640",0; строка для поиска
.code
lea si, string; в SI начало строки
xor bx,bx; ВХ=0
@@: mov bl,[si]; очередной символ в BL
test bl,bl; это последний символ?
jz exit
inc byte ptr count[bx]; увеличиваем счетчик символов в нужной позиции
inc si; переходим к следующему символу
jmp @b 
exit:

Последний раз редактировалось Mikl___; 24.11.2010 в 10:54.
Mikl___ вне форума Ответить с цитированием
Старый 27.11.2010, 15:20   #3
Эльмирочка
 
Регистрация: 10.12.2009
Сообщений: 4
По умолчанию Долбаясь пару дней выход был найден....Алилуя...

.386
assume CS:CodeSg, DS:DataSg, SS:StackSg
CodeSg segment use16 'CODE'

begin: mov ax,DataSg
mov ds,ax
;
push ds
pop es
Эльмирочка вне форума Ответить с цитированием
Старый 29.11.2010, 04:28   #4
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Эльмирочка
это ты к чему? Алгоритм я описал, а уж mov ds,ax пользователь дописать в состоянии сам. Или какой смысл от изучения языка если всё за тебя будут делать чужие дяди?
Mikl___ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка символа в строку ArniLand Общие вопросы C/C++ 1 28.04.2010 18:11
Найти кол-во вхождений подстроки в строку Kuzya59 Общие вопросы Delphi 4 21.09.2009 12:46
Функция для определения числа вхождений подстроки в строку motorway Microsoft Office Excel 1 15.07.2009 23:28
Определить количество вхождений строки S1 в строку S2 Berckyt Microsoft Office Word 5 16.03.2009 00:27
Подсчитать кол-во вхождений символа Си++ Alexion124 Помощь студентам 9 05.01.2009 00:03