На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> Сравнить две текстовые строки
    В Win32ASM я не очень... Как сравнить две текстовые строки? Желательно с примерчиком.
      Это из Win32API
      int lstrcmp(
      LPCTSTR lpString1, // address of first string
      LPCTSTR lpString2 // address of second string
      );
      Это из исходников LINUX
      extern inline int strcmp(const char * cs,const char * ct)
      {
      register int __res;
      __asm__ __volatile__(
      "cld\n"
      "1:\tlodsb\n\t"
      "scasb\n\t"
      "jne 2f\n\t"
      "testb \%\%al,\%\%al\n\t"
      "jne 1b\n\t"
      "xorl \%\%eax,\%\%eax\n\t"
      "jmp 3f\n"
      "2:\tsbbl \%\%eax,\%\%eax\n\t"
      "orb $1,\%\%eax\n"
      "3:"
      :"=a" (__res):"S" (cs),"D" (ct):"si","di");
      return __res;
      }
        Пардон, забыл сказать, строковые функции лежат в kernel32.dll. То есть надо включить kernel32.inc А на счет примера, там все просто
          А всё-таки хотелось бы примерчик. Тем более, что говорил я про ASM, а ответ, если не ошибся, на Cи, который для меня -- китайская грамота.
            .386
            .model flat, stdcall
            option casemap:none
            include \masm32\include\windows.inc
            include \masm32\include\kernel32.inc
            include \masm32\include\user32.inc
            includelib \masm32\lib\user32.lib
            includelib \masm32\lib\kernel32.lib
            .data
            MsgCaption db "Caption",0
            MsgBoxText db "Caption",0
            Eqv db "EQUILL !!!", 0
            Neqv db "NOT EQUILL !!!", 0
            .code
            start:
            invoke lstrcmp, addr MsgCaption, addr MsgBoxText
            .if eax == 0
            invoke MessageBox, NULL, addr Eqv, addr MsgCaption, MB_OK
            .else
            invoke MessageBox, NULL, addr Neqv, addr MsgCaption, MB_OK
            .endif
            invoke ExitProcess,NULL
            end start
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0255 ]   [ 16 queries used ]   [ Generated: 29.03.24, 07:22 GMT ]