Проблема с TLINK32

Тема в разделе "TASM", создана пользователем phobos__, 13 фев 2012.

  1. phobos__

    phobos__ New Member

    Публикаций:
    0
    Регистрация:
    11 май 2010
    Сообщения:
    16
    Здравствуйте все!
    Возникла проблема с tlink32, Fatal Error, причем tasm32 пишет, что все без ошибок. Собственно, все было вызвано вот такой строкой, никто не подскажет, как можно было бы по другому описать их:
    Код (ASM):
    1. mov al,byte pte [buffer+si]
    2. cmp byte ptr [buffer1+di],al
    (программирую игру быки\коровы)(Win32 программирование)

    Если кто-нить поделится идеями как можно по-другому написать эти строки был бы очень признателен.
     
  2. kweed

    kweed New Member

    Публикаций:
    0
    Регистрация:
    17 июн 2009
    Сообщения:
    81
    mov al,byte pte [buffer+esi]
    cmp byte ptr [buffer1+edi],al
     
  3. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Ну не знаю. Как по мне, замена на cmpsb достойнее.
     
  4. phobos__

    phobos__ New Member

    Публикаций:
    0
    Регистрация:
    11 май 2010
    Сообщения:
    16
    Спасибо за ответ, kweed, но, к сожалению, не помогло. Компилятор пишет несовместимые типы регистров.((
     
  5. phobos__

    phobos__ New Member

    Публикаций:
    0
    Регистрация:
    11 май 2010
    Сообщения:
    16
    I_inc - спасибо за ответ. В таком случае команды будут выглядеть приблизительно как?
    Код (ASM):
    1. lea si,buffer1
    2. lea di,buffer2
    3. rep cmpsb
    вот так?
     
  6. kweed

    kweed New Member

    Публикаций:
    0
    Регистрация:
    17 июн 2009
    Сообщения:
    81
    Возможно, проблема в buffer или buffer1, попробуйте переименовать.
     
  7. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    phobos__
    Зависит от контекста. Приведите полный код, тогда можно будет сказать однозначно.
     
  8. kweed

    kweed New Member

    Публикаций:
    0
    Регистрация:
    17 июн 2009
    Сообщения:
    81
    lea 16-бит регистр - заполнит только нижнюю часть регистра.. А что сверху? Вообще, почему мы используем si, di в 32-битном режиме?
    ИМХО, лучше не парится, и написать все на Си. Автор темы, как я вижу, не вполне компетентен.
     
  9. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    535
    Мож у топикстартера просто директив не хватает вначале? ну, там, .386, .model flat и т.п.
     
  10. phobos__

    phobos__ New Member

    Публикаций:
    0
    Регистрация:
    11 май 2010
    Сообщения:
    16
    Да директивы то все есть.

    Пишу на ассемблере, потому что это единств язык программировани,который знаю немного.
     
  11. Dmitry_Milk

    Dmitry_Milk Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    535
    Тогда почему
    ?
     
  12. kweed

    kweed New Member

    Публикаций:
    0
    Регистрация:
    17 июн 2009
    Сообщения:
    81
    phobos__
    1. Используйте MASM: http://www.masm32.com/install.htm
    2. Найдите дельное руководство по ассемблеру, например: Зубков. Ассемблер для DOS, Windows и UNIX.
    3. Выучите С/С++ и пишите в свое удовольствие ;)