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

В текстовом файле подсчитать количество вхождений каждого символа

30.05.2011, 18:41. Показов 2498. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В написании проги на ассемблере, суть общения на форуме хотелось бы самому с вашими подсказками написать прогу.
1.Открыть файл(пусть там только текст пару строк)
2.прочитать файл.
3. подсчитать сколько каждого символа в файле.
4.Вывести это все на экран.

Добавлено через 3 минуты
Assembler
1
2
3
4
5
6
7
8
9
10
11
.model tiny
        .code
        .386
 
        org 100h
start:
        mov     ax, ????
        mov     dx, db '123.txt',0
 
        int     21h
        jc      exit
что нужно тут поставить? (в смысле там где вопросики) КАК прочитать файл и определить что файл закончился?!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.05.2011, 18:41
Ответы с готовыми решениями:

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

Определить количество вхождений каждого символа в данный текст
Всем привет!!))) Мне необходимо написать програму на Assemblerе для подсчьота количества вхождения определеного символа введенного из...

Определить количество вхождений символа в си-строку
assume CS:CodeSg, DS:DataSg, SS:StackSg CodeSg segment use16 'CODE' begin: ; mov ax,DataSg mov ds,ax ; push ds pop es

9
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
30.05.2011, 19:35
https://www.cyberforum.ru/asse... /assembler

3-я тема сверху (качай лит-ру, читай, там всё описано)
0
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 6
30.05.2011, 20:15  [ТС]
Цитата Сообщение от zzzyyyxxx Посмотреть сообщение
https://www.cyberforum.ru/asse... /assembler

3-я тема сверху (качай лит-ру, читай, там всё описано)
Ну просто аффигенно помогло ваше высказывание сразу продвинулся так.
0
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
30.05.2011, 20:57
Просто когда сам чего-то ищешь то можно по ходу дела найти много интерестного и полезного, ну да ладно, это твоё решение.

Здесь я написал только открытие, чтение файла и вывод содержимого на экран. Как вникнешь в суть продолжим....

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
49
50
51
52
53
54
55
56
code segment
assume cs:code,ds:data
start:
    mov ax,data
    mov ds,ax
    
    push offset message_not_found       ;сообщение об ошибке
    push 256                        ;кол-во символов для чтения
    push offset buffer          ;куда прочитать
    push offset image           ;имя файла
    call OPEN_FILE      
    
    
    mov ah,9
    mov dx,offset buffer
    int 21h
    
    mov ah,10h
    int 16h 
    
    mov ah,4ch
    int 21h
;процедура [открыть и прочесть файл]
OPEN_FILE proc
    mov ax,3d00h            ;открыть файл для чтения и записи
    mov si,sp
    mov dx,word ptr ss:[si+2]       ;смещение имени файла
    int 21h
    jc no_open          ; если файл не открылся
    
    mov bx,ax               ; идентификатор файла в ВХ
    mov dx,word ptr ss:[si+4]
    mov cx,word ptr ss:[si+6]
    mov ah,3fh          ; чтение файла
    int 21h
    
    mov al,1
    ret 
no_open:                    ;если искомого файла не существует
    
    mov ah,9
    mov dx,word ptr ss:[si+8]   ;то сообщение об ошибке
    int 21h 
    mov dx,word ptr ss:[si+2]
    int 21h 
    xor ax,ax
    ret 
OPEN_FILE endp
code ends
 
data segment
    image       db 'file.txt'           
    buffer      db 256 dup (0),'$'
    message_not_found   db 'FILE NOT FOUND!     $'
data ends
end start
0
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 6
30.05.2011, 21:09  [ТС]
не прокатит такой алгоритм нужно открыть файл а длинна его не указана т.е. нужно как-бы определить конец файла,а не задавать жесткое ограничение типо 256 символов?!
0
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
30.05.2011, 21:25
так и в чём проблема? замени свой data segment на этот:

Assembler
1
2
3
4
5
data segment
        image           db 'file.txt'  
        message_not_found       db 'FILE NOT FOUND!     $'
       buffer          db 0
data ends
и установи при вызове процедуры max значение регистра, и вся память которая следует за концом твоей программы бедет использована для хранения прочтённого файла.
0
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 6
30.05.2011, 21:53  [ТС]
Цитата Сообщение от zzzyyyxxx Посмотреть сообщение
так и в чём проблема? замени свой data segment на этот:

Assembler
1
2
3
4
5
data segment
        image           db 'file.txt'  
        message_not_found       db 'FILE NOT FOUND!     $'
       buffer          db 0
data ends
и установи при вызове процедуры max значение регистра, и вся память которая следует за концом твоей программы бедет использована для хранения прочтённого файла.
файл прочитался, хотя еще вопросы остались(кодировки можно как-то изменитьа то русский язык не понимает он)

Добавлено через 12 минут
Цитата Сообщение от zzzyyyxxx Посмотреть сообщение
mov ax,3d00h ;открыть файл для чтения и записи(3d00h Это что такое еще в книге не нашел?)
mov si,sp(в si помещаем значение sp тоже еще не нашел )
mov dx,word ptr ss:[si+2] ;смещение имени файла(зачем это смещение)
int 21h(это прерывание)
jc no_open ; если файл не открылся(типо прыжок на метку ноопен)
mov bx,ax ; идентификатор файла в ВХ
mov dx,word ptr ss:[si+4](это что такое )
mov cx,word ptr ss:[si+6](это что такое )
mov ah,3fh ; чтение файла(дос процедура)
int 21h
(прерывание)
0
 Аватар для zzzyyyxxx
768 / 312 / 11
Регистрация: 27.05.2011
Сообщений: 703
30.05.2011, 21:59
Для решения этого вопроса может пригодится команда [XLAT].

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
                                                      XLAT Табличная трансляция
Команда xlat осуществляет выборку байта из массива байтов, который в этом случае называют таблицей трансляции. В регистре ВХ должен находиться относительный адрес таблицы, а в регистре AL - смещение в таблице к выбираемому байту (его индекс). Выбранный байт загружается в регистр AL, замещая находившееся в нем смещение. Длина таблицы может достигать 256 байт. Таблица должна находиться в сегменте данных, адресуемом через сегментный регистр DS. Замена сегмента не допускается. Команда xlat не имеет параметров, но требует предварительной настройки регистров ВХ и AL. Команда не воздействует на флаги процессора.
 
;Пример демонстрирует преобразование первых 14 скен-кодов 
;(фактически это скен-коды клавиш верхнего ряда 
;клавиатуры) в коды ASCII соответствующих символов 
; В полях данных:
table db 0,27, ' 1234567890- = \';Таблица кодов ASCII 
;В программном сегменте 
lea BX,table
mov AL,5 ;Скен-код 5 клавиши <4/$> 
xlat ;AL=34h, код ASCII символа 4
P.S.: Без обид, но помоеу тебе ещё рановато заморачиваться такими идеями, надо понять основу.
0
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 6
07.06.2011, 09:20  [ТС]
теперь вопрос а как собственно подсчитать и выдать вхождение каждого символа в строку?

Добавлено через 1 минуту
Цитата Сообщение от zzzyyyxxx Посмотреть сообщение
Для решения этого вопроса может пригодится команда [XLAT].

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
                                                      XLAT Табличная трансляция
Команда xlat осуществляет выборку байта из массива байтов, который в этом случае называют таблицей трансляции. В регистре ВХ должен находиться относительный адрес таблицы, а в регистре AL - смещение в таблице к выбираемому байту (его индекс). Выбранный байт загружается в регистр AL, замещая находившееся в нем смещение. Длина таблицы может достигать 256 байт. Таблица должна находиться в сегменте данных, адресуемом через сегментный регистр DS. Замена сегмента не допускается. Команда xlat не имеет параметров, но требует предварительной настройки регистров ВХ и AL. Команда не воздействует на флаги процессора.
 
;Пример демонстрирует преобразование первых 14 скен-кодов 
;(фактически это скен-коды клавиш верхнего ряда 
;клавиатуры) в коды ASCII соответствующих символов 
; В полях данных:
table db 0,27, ' 1234567890- = \';Таблица кодов ASCII 
;В программном сегменте 
lea BX,table
mov AL,5 ;Скен-код 5 клавиши <4/$> 
xlat ;AL=34h, код ASCII символа 4
P.S.: Без обид, но помоеу тебе ещё рановато заморачиваться такими идеями, надо понять основу.
мне кажется что XTAL мне в данной проге не нужно я ж не считываю нажатия на клаву, а выбираю из имеющейся строки символы?!

Добавлено через 2 минуты
если я правильно понимаю то нужно взять первый символ из строки его прочитать и записать в буфер, затем сравнить с каждым символом нашего файлика(как только совпадение в счетчик единичку все до конца прочитали через пробел в буфер внести содержимое счетчика и перейти на след строку) , затем цикл.
0
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 6
08.06.2011, 12:00  [ТС]
Вообщем помогите кто может?!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.06.2011, 12:00
Помогаю со студенческими работами здесь

Подсчитать количество единиц в коде символа
помогите решить 1) Логические операции. Процедуры. Способы передачи параметров Составить программу, которая введет символ с...

Посчитать количество повторений каждого символа в строке, введенной с клавиатуры
Посчитать количество повторений каждого символа в строке, введенной с клавиатуры

Подсчитать количество вхождений буквы «о» в строке «прямой поиск в текстовой строке»
Подсчитать количество вхождений буквы «о» в строке «прямой поиск в текстовой строке» Заменить в вышеприведенной стоке слово «прямой» на...

Подсчитать количество вхождений каждого символа в файл
надо подсчитать количество каждого символа в файле #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include...

Подсчитать количество вхождений каждого символа в строку
например у Вас есть строка: asddsg В выходной файле, куда Вы запишите результаты работы программы будет: a – 1 s – 2 d – 2 g – 1


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »