Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[asm] Кол-во латинских букв

29K
03 июля 2008 года
dim88
9 / / 02.11.2007
Доброго времени суток!
Нужна Ваша помощь. Необходимо написать на ассемблере ф-цию для подсчета количества латинских букв в строке s..

Спасибо)
37K
03 июля 2008 года
Sharaevskiy Vitaliy
11 / / 06.05.2008
То есть строка может содержать и не латинские буквы??...Или просто посчитать количество букв в строке (если они все латинские)??
29K
03 июля 2008 года
dim88
9 / / 02.11.2007
Судя по заданию, так оно и есть О_о

Необх. написать ф-цию на встроенном asm (сама прога на с++), которая будет считать кол-во лат. букв.

А потом, посчитав буквы, сравнить 5 строк (длина не больше 10) и найти ту, где лат. букв больше всего О_О
37K
03 июля 2008 года
Sharaevskiy Vitaliy
11 / / 06.05.2008
Можно реализовать по следующему алгоритму : все заглавные латинские буквы лежат в диапазоне 041h - 05Ah, а строчные 061h - 07Ah...остается лишь проверить, пренадлежит символ этим диапазонам...
Вот фрагмент на АСМе (ТАСМ), который это делает. Вход - адрес начала строки в SI, выход - кол-во латинских букв в CX...если надо, могу оформить в виде нормальной процедуры...если что, присылай свой код С++, будем делать вставку

Код:
LEA SI, LINE_1   ; SI=адресу начала строки
   
;* начало цикла *
    XOR CX, CX   ; CX=0
 CountCycle:           
    MOV AL, [SI]   ; AL=очередному символу строки
    OR AL, AL   ; AL=0?
    JZ SHORT EndCountCycle   ; да - выход из цикла подсчета
    INC SI   ; нет - SI=SI+1
   
;* проверка на диапазон 041h - 05Ah (заглавные латинские буквы) *    
    CMP AL, 041h
    JB SHORT CountCycle   ; переход если код символа<041h  
    CMP AL, 05Ah
    JA SHORT SmallSymbol  ; переход если код символа>05Ah  
 
;* символ в диапазоне 041h - 05Ah (заглавные латинские буквы) *
    INC CX   ; СХ=СХ+1
    JMP SHORT CountCycle   ; переход к проверке след.символа строки  
   
;* проверка на диапазон 061h - 07Ah (строчные латинские буквы) *
SmallSymbol:  
    CMP AL, 061h
    JB SHORT CountCycle   ; переход если код символа<061h  
    CMP AL, 07Ah
    JA SHORT CountCycle  ; переход если код символа>07Ah
   
;* символ в диапазоне 061h - 07Ah (строчные латинские буквы) *
    INC CX   ; СХ=СХ+1
    JMP SHORT CountCycle   ; переход к проверке след.символа строки  
   
EndCountCycle:
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог