Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Cи: Ассемблеровская вставка  (Прочитано 4795 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Jei
Гость
« : 20-10-2009 16:29 » new

Прошу у Вас помощи.
Первый раз работаю с ассемблеровской вставкой в Си. Совсем запутался. Помогите, пожалуйста, сделать такую вставку.
Введена строка. Необходимо написать функцию на ассемблере для нахождения символа с наибольшем кодом ASCII и вывести их на экран с помощью ассемблера. Заранее спасибо!

Программа:
Код:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<iostream.h>

char *asmfunc(char *S, int n)   // функция нахождения символа с      
                                               //максимальным кодом ASCII в  
                                                     //строке S, n- длина строки

{
 char *r = 0;

L0:
 asm {  
  mov SI,S;                // заносим в SI строку S
  mov DL,n;               // заносим в DL длину строки
 }

L1:
 asm {
  mov AL,0;       //  проверка на
  add AL,[SI];   // конец строки, если конец, то уходим на L3
  je L3;
   }

……. Не знаю что делать для того чтобы организовать поиск символа с наиб кодом

L2:
 asm mov r, ….;    // необходимо вывести символ с наибольшим кодом в строке


L3:
 return r;
}



void main ()
{
char ss[200],sim;
char *r;
int i, och,n;

asm {                 // очистка экрана – сделано по заданию
  mov AH, 0;
  mov AL, 2;
  int 10H;
  }

printf ("\n vvedite text s tochkoi: \n");      // ввод строки

for (i=0; ((sim=getchar()) !='.'); i++) ss[i]=sim;
ss[i]='\0';

n=strlen(ss);
r=asmfunc(ss,n);


//////////////////////povtor programmy    
  // снова по заданию для очистки экрана
cout << "\n\n ochisit akran vvedite 1 ili 0 pov=:";
cin >> och;

if (och==1)
{ asm {
  mov AH, 0;
  mov AL, 2;
  int 10H;
  }
}

 getch ();
}
« Последнее редактирование: 20-10-2009 17:39 от Finch » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines