|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.11.2010, 20:10 | #1 |
Новичок
Джуниор
Регистрация: 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 |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Дана строка текста.Определить какой из символов в ней больше . А или О? | Райзат | Фриланс | 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 |