Ассемблер — это просто хадкорный ассемблер

         

Ассемблерные вставки как тестовый стенд


Как же сложно программировать на чистом ассемблере! Минимально работающая программа содержит чертовую уйму разнообразных конструкций, сложным образом взаимодействующих друг с другом и открывающих огонь без предупреждения. Одним махом мы отрезаем себя от привычного окружения. Сложить два числа на ассемблере не проблема, но вот вывести их результат на экран…

Ассемблерные вставки— другой дело. В то время как классические руководства по ассемблеру (Зубков, Юров), буквально с первых же строк буквально бросают читателя в пучину системного программирования, устрашая его ужасающей сложностью архитектуры процессора и операционной системы, ассемблерные вставки оставляет читателя в привычном ему окружении языков Си (и/или Паскаль) и постепенно, безо всяких резких скачков, знакомит его с внутренним миром процессора. Они же позволяют начать изучение непосредственно ассемблера с 32-разрядного защищенного режима процессора: дело в том, что в чистом виде защищенный режим настолько сложен, что не может быть усвоен даже гением, и потому практически все руководства начинают изложение с описание морально устаревшего 16-разрядного реального режима, что не только оказывается бесполезным балластом, но и замечательным средством запутывания ученика (помните, "забудьте все, чему вас учили раньше…"); По своему личному опыту и опыту моих друзей могу сказать, что такая методика обучения превосходят все остальные как минимум по двум категориям: а) скорость – буквально через три-четыре дня интенсивных занятий человек, ранее никогда не знавший ассемблера, начинает сносно на нем программировать; б) легкость освоения – изучение ассемблера происходит практически безо всякого напряжения и усилий, ни в какой момент обучения ученика не заваливают ворохом неподъемной и непроходимой информации: каждый последующий шаг интуитивно понятен и с дороги познания заботливо убраны все потенциальные препятствия.

Ну так чего же мы ждем? Для объявления ассемблерных вставок в Microsoft Visual C++ служит ключевое слово __asm, а простейшая ассемблерная программа выглядит так:


main()

{

       int a = 1;           // объявляем переменную a

и кладем туда значение 1

       int b = 2;           // объявляем переменную a

и кладем туда значение 1

       int c;               // объявляем переменную c, но не инициализируем ее

      

       // начало ассемблерной вставки



       __asm{

              mov eax, a    ;// загружаем значение переменной a

в регистр EAX

              mov ebx, b    ;// загружаем значение переменной b

в регистр EBX

              add eax, ebx  ;// складываем EAX

с EBX, записывая результат в EAX

              mov c, eax    ;// загружаем значение EAX в переменную c

       }

       // конец ассемблерной вставки

      

       // выводим содержимое c на экран

       // с помощью привычной нам функции printf

       printf("a + b = %x + %x = %x\n",a,b,c);

}

Листинг 4 ассемблерная вставка складывающая два числа


Содержание раздела