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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2010, 20:10   #1
olhapupkin
Новичок
Джуниор
 
Регистрация: 30.11.2010
Сообщений: 1
По умолчанию Определить, сколько символов кириллицы и латиницы присутствует строке.Строка задается с клавиатуры

Вот есть задание:Определить, сколько символов кириллицы и латиницы присутствует строке.Строка задается с клавиатуры

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


.model small
.stack 100h
.data
str1 db 'оля1бараболя123olha'
;str1 db 255 dup(0)
len = $-str1
msg1 db 'Enter string: ',0Ah,0Dh,'$'
msg2 db 'L: $'
msg3 db 'K: $'
msg4 db 13,10,'$'
msg5 db' Olha lab5',0Ah,0Dh,'$'
.code
Start: mov ax, @data
mov ds, ax
mov es, ax


mov cx,len
mov si, 0
mov bx, 0
mov dx, 0
cmp cx, 0
je e
CountCycle:
MOV AL, str1[SI] ; AL=очередному символу строки

;* проверка на диапазон 041h - 05Ah (заглавные латинские буквы) *
CMP AL, 041h
JB LatSmall ; переход если код символа<041h
CMP AL, 05Ah
JA LatSmall ; переход если код символа>05Ah
inc bx
jmp CountCyclecontinue

;* проверка на диапазон 061h - 07Ah (строчные латинские буквы) *
LatSmall:
CMP AL, 061h
JB KSmall ; переход если код символа<061h
CMP AL, 07Ah
JA KSmall ; переход если код символа>07Ah
inc bx
jmp CountCyclecontinue
;* проверка на диапазон 191-255 (ї-я) *
KSmall:
CMP AL, 191
JB K186 ; переход если код символа<224
CMP AL, 255
JA K186 ; переход если код символа>245
inc dx
jmp CountCyclecontinue
;* проверка на 186 (є) *
K186:
CMP AL, 186
Jne K184 ; переход если код символа<>186
inc dx
jmp CountCyclecontinue
;* проверка на 184 (ё) *
K184:
CMP AL, 184
Jne K175 ; переход если код символа<>184
inc dx
jmp CountCyclecontinue
;* проверка на 175 (Ї) *
K175:
CMP AL, 175
Jne K180 ; переход если код символа<>175
inc dx
jmp CountCyclecontinue
;* проверка на диапазон 178-180 (І-ґ) *
K180:
CMP AL, 178
JB K170 ; переход если код символа<178
CMP AL, 180
JA K170 ; переход если код символа>180
inc dx
jmp CountCyclecontinue
;* проверка на 170 (Є) *
K170:
CMP AL, 170
Jne K168 ; переход если код символа<>170
inc dx
jmp CountCyclecontinue
;* проверка на 168 (Ё) *
K168:
CMP AL, 168
Jne K165 ; переход если код символа<>168
inc dx
jmp CountCyclecontinue
;* проверка на 165 (Ґ) *
K165:
CMP AL, 165
Jne CountCyclecontinue ; переход если код символа<>165
inc dx
jmp CountCyclecontinue
CountCyclecontinue:
inc si
loop CountCycle
e:
push dx

mov ah , 09h
mov dx,offset msg5
int 21h



mov ah , 09h
mov dx,offset msg2
int 21h
mov ax, bx
call outint
pop bx
mov ah , 09h
mov dx,offset msg4
int 21h
mov ah , 09h
mov dx,offset msg3
int 21h
mov ax, bx
call outint
Exit: mov ax, 04c00h
int 21h

OutInt proc
push ax
push bx
push cx
push dx
; если число знаковое, то необходимо расскоментировать следующие строки
; Проверяем число на знак.
test ax, ax
jns oi1

; Если оно отрицательное, выведем минус и оставим его модуль.
mov cx, ax
mov ah, 02h
mov dl, '-'
int 21h
mov ax, cx
neg ax
; Количество цифр будем держать в CX.
oi1:
xor cx, cx
mov bx, 10 ; основание сс. 10 для десятеричной и т.п.
oi2:
xor dx,dx
div bx
; Делим число на основание сс. В остатке получается последняя цифра.
; Сразу выводить её нельзя, поэтому сохраним её в стэке.
push dx
inc cx
; А с частным повторяем то же самое, отделяя от него очередную
; цифру справа, пока не останется ноль, что значит, что дальше
; слева только нули.
test ax, ax
jnz oi2
; Теперь приступим к выводу.
mov ah, 02h
oi3:
pop dx
; Извлекаем очередную цифру, переводим её в символ и выводим.
;; раскоментировать если основание сс > 10, т.е. для вывода требуются буквы
; cmp dl,9
; jbe oi4
; add dl,7
;oi4:
add dl, '0'
int 21h
; Повторим ровно столько раз, сколько цифр насчитали.
loop oi3
pop dx
pop cx
pop bx
pop ax
ret
OutInt endp
end Start ; Конец программы. Начать выполнение программы
; с метки Start
olhapupkin вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана строка текста.Определить какой из символов в ней больше . А или О? Райзат Фриланс 23 26.07.2010 21:20
Дана строка символов, содержащая слова. Определить количество слов, последний и предпоследний символы кот RamZax Паскаль, Turbo Pascal, PascalABC.NET 2 17.06.2010 14:06
Дано натуральное число. Верно ли, что в этом числе нет цифры А. А задается с клавиатуры. Женечка92 Помощь студентам 9 03.04.2010 16:06
Сколько раз слово встречается в строке ksu25 Паскаль, Turbo Pascal, PascalABC.NET 1 25.09.2009 15:53
Дана строка символов до точки. Определить, сколько слов содержат ровно три буквы "К". Evidence Паскаль, Turbo Pascal, PascalABC.NET 0 01.06.2009 20:40