IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Подсчет букв и цифр в массиве.
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 30
Пол: Мужской
Реальное имя: Михаил

Репутация: -  0  +


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

Вот задание: Дан массив состоящий из букв и цифр. Подсчитать в нем колличество букв и цифр. При написании программы использовать модель памяти Small.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Что ж вас, совсем ничему не учат? Вот основа программы, здесь не хватает только одной - единственной процедуры WriteDEC, которая получает через регистр AL байт, и печатает его десятичное представление (я ж не могу тебе программу предоставлять полностью, без усилий с твоей стороны, правда? Хотя бы процедуру напиши).

	.model small
.data

sLetters db 10, 13, 'Letters: ', '$'
sDigits db 10, 13, 'Digits: ', '$'

Arr db 'h3llo 12345 w0rld ', '$'
ArrLen = $ - Arr

bLetters db 0
bDigits db 0

.code

WriteDEC proc
; AL - байт для отображения
...
WriteDEC endp

start:
mov ax,@data
mov ds,ax
mov es, ax

mov cx, ArrLen
mov di, offset Arr
L1:
mov al, [di]
cmp AL, '0'
jb L2
cmp AL, '9'
ja CheckLetter
inc bDigits
jmp L2

CheckLetter:
cmp al, 'a'
jb L2
cmp al, 'z'
ja L2
inc bLetters

L2:
inc di
loop L1

mov dx, offset sLetters
mov ah, 9h
int 21h
mov al, bLetters
call WriteDEC

mov dx, offset sDigits
mov ah, 9h
int 21h
mov al, bDigits
call WriteDEC

mov ah, 4ch
int 21h
end start
Если что непонятно - спрашивай...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.04.2024 11:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name