Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Просто ###


Автор: Kg1 13.11.2010, 19:28
нужно было написать вот это
В памяти дана строка символов, находящаяся по адресу А и длиной N. Проверьте встречаются ли в строке символы кириллицы. В зависимости от проверки выведете на экран Y или N. В ячейку В выведите их количество.

написал вот это и только для букв от "A"  до "п". Дальше писать не стал серавно зацикливается

Код

           MOV          SI, A (1000)                //адрес начала строки
          MOV          BL, N      (9)        // длина строки
           MOV          DI, 0                // кол-во букв кириллицы
           MOV          BX, B  (1100)            // адрес B для хранения Y/N
                     M1:
           MOV          AX, [SI]           // прочитаем первую букву строки
           CMP          AX,80               //сравниваю первый элемент и ASCII код буквы А
                     N2:
           inc            DI                    //  если AX больше переходим по метке
           NOP                                // конец n2
                      N1: 
          CMP          AX,AF             // сравниваю элемент и ASCII код буквы п
           JBE             N2                  //   если AX меньше то переходим по метке
           NOP                                  // конец n1
           JAE            N1                    //  если AX >= 80     переходим по метке N1 если нет идем дальше
           INC             SI                      //  переходим к следующему элементу строки
           DEC            bl                   //  уменьшаем BL на 1
          CMP           bl, 0             // сравниваем BL с 0
           loop           M1                // если число в BL  превышает  0 то прыгаем на метку
                      M2:                     //метка 
          MOV           [BX], DI   
           INC              BX                 // перейдем к следующему элементу
          MOV          [BX], 4E        // выведем в BX значение 4E (N)    
          NOP                              // конец метки M2
                       M3:
          MOV           [BX], DI   
          INC              BX                 // перейдем к следующему элементу
          MOV          [BX], 59         // выведем в BX значение  59 (Y)
            NOP                               // конец M3
           CMP           DI,0               //  проверяем есть ли кирилица
           JE                M2               // если DI равно 0 то перейдем по метке m2  если нет идем дальше
           JA               M3                 // если Di не равно 0 то переходим по m3
          RET
         NOP


критикуйте жесще я сам не понял что написал!!!

Автор: iff 13.11.2010, 23:09
Цитата(Kg1 @  13.11.2010,  19:28 Найти цитируемый пост)
символы кириллицы

В какой кодировки?

Добавлено через 1 минуту и 3 секунды
Я так понимаю в досовской?

Автор: Kg1 14.11.2010, 00:46
Да вней самой ASCII

Автор: iff 14.11.2010, 14:45
Алгоритм:
Код

Флаг = "N"
[B] = 0
i = A

Цикл N раз
   Если [i] < "А", то к Лат
   Если [i] > "ё", то к Лат
   Если [i] <= "п", то к Кир
   Если [i] < "р", то к Лат
 Кир:
   Флаг = "Y"
   Инкремент [B]
 Лат:
   Инкремент i
Конец Цикла

Вывести Флаг

Автор: Kg1 14.11.2010, 22:01
я уже написал.
спасибо

Автор: iff 15.11.2010, 16:42
можешь здесь выложить код получившейся программы?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)