Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2012, 00:54   #1
sunny_alice
Пользователь
 
Регистрация: 16.04.2011
Сообщений: 46
По умолчанию Ассемблерные вставки в СИ

Помогите, пожалуйста, решить проблему.

Задача: написать программу на Си с использованием ассемблерных вставок и команды CPUID.
Проблема: неправильно интерпретируется нотация ассемблерной вставки. Вернее, она-то как раз правильно, это я неправильно что-то делаю.

Перед регистрами ставим %, перед константами-числами $, а перед переменными? В данном случае, как я понимаю, надо вывести строку по частям из регистров, куда ее записывает команда cpuid. Не понимаю, почему ругается везде, где "movl dword ptr ...".

lr3.c: Assembler messages:
lr3.c:11: Error: junk `ptr VendorSign' after expression
lr3.c:12: Error: junk `ptr [VendorSign+4]' after expression
lr3.c:12: Error: too many memory references for `mov'
lr3.c:13: Error: junk `ptr [VendorSign+8]' after expression
lr3.c:13: Error: too many memory references for `mov'
lr3.c:14: Error: junk `ptr MaxEAX' after expression
lr3.c:14: Error: too many memory references for `mov'

Код:
#include <stdio.h>
#include <string.h>

void main() {
  char VendorSign[13];   //We need somewhere to store our vendorstring
  unsigned long MaxEAX;  //This will be used to store the maximum EAX
                         //possible to call CPUID with.

  asm ("xor %eax, %eax \n cpuid \n movl dword ptr VendorSign, %ebx \n movl dword ptr [VendorSign+4], edx \n movl dword ptr [VendorSign+8], ecx \n movl dword ptr MaxEAX, eax");

  VendorSign[12]=0;
  printf("Vendor string: %s\n", VendorSign);
  printf("Maximum EAX value: %lu\n", MaxEAX);
 }
sunny_alice вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DJGPP и Ассемблерные вставки ufo1og Общие вопросы C/C++ 4 25.02.2011 19:07
ассемблерные вставки в c++ chupchupps Помощь студентам 1 09.02.2011 11:54
ассемблерные вставки в Паскале. mt92 Помощь студентам 5 21.06.2010 14:03
delphi ассемблерные вставки tanek Помощь студентам 8 19.04.2010 18:35
Ассемблерные вставки Assassin Помощь студентам 1 26.05.2008 08:19