Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 10.03.2010
Сообщений: 18

Помогите, расставить комментарии (fasm)

06.05.2012, 20:20. Показов 1869. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, нарыл в интернете один интересный исходник и с толкнулся с проблемами в работе, так-как фасм еще не знаю, буду благодарен если кто-то закоментит код.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
format PE GUI 4.0
entry codestart
 
include 'win32a.inc'
 
  IDD_MAIN                     =  100
  WM_CAP_DRIVER_CONNECT        =  WM_USER + 10
  WM_CAP_DRIVER_DISCONNECT     =  WM_USER + 11
  WM_CAP_FILE_SAVEDIB          =  WM_USER + 25
  WM_CAP_SET_PREVIEW           =  WM_USER + 50
  WM_CAP_SET_PREVIEWRATE       =  WM_USER + 52
  WM_CAP_SET_SCALE             =  WM_USER + 53
  ID_START                     =  201
  ID_STOP                      =  202
  ID_CLICK                     =  203
  _camtitle                    db 'FASMWEBCAM'
 
  _filename  db 'IMAGE.BMP'    ; Filename
  nDevice    dd   0            ; Device Number -> It can range from 0 through 9
  nFPS       dd 100            ; Frames per second. Must be 1000/FPS. E.g. 20 FPS = 50
 
section '.data' data readable writeable
  hInstance     dd ?
  hWebcam       dd ?
 
section '.code' code readable executable
  codestart:
    invoke  GetModuleHandle, 0
    mov     [hInstance], eax
    invoke  DialogBoxParam, eax, IDD_MAIN, HWND_DESKTOP, MainDlg, 0
    invoke  ExitProcess, 0
 
  proc MainDlg hdlg, msg, wparam, lparam
    push    ebx esi edi
    cmp     [msg], WM_INITDIALOG
    je      .wminitdlg
    cmp     [msg], WM_COMMAND
    je      .wmcommand
    cmp     [msg], WM_CLOSE
    je      .wmclose
    xor     eax, eax
    jmp     .finish
    .wminitdlg:
      invoke  capCreateCaptureWindow, _camtitle, WS_VISIBLE + WS_CHILD, 10, 10,\
                                        266, 252, [hdlg], 0
      mov     [hWebcam], eax
      jmp     .finish
    .wmcommand:
      cmp     [wparam], BN_CLICKED shl 16 + ID_START
      je      .startbutton
      cmp     [wparam], BN_CLICKED shl 16 + ID_STOP
      je      .stopbutton
      cmp     [wparam], BN_CLICKED shl 16 + ID_CLICK
      je      .clickbutton
    .wmclose:
      invoke  SendMessage, [hWebcam], WM_CAP_DRIVER_DISCONNECT, _camtitle, 0
      invoke  EndDialog, [hdlg], 0
    .finish:
      pop     edi esi ebx
      ret
    .startbutton:
      invoke  SendMessage,  [hWebcam], WM_CAP_DRIVER_CONNECT, [nDevice], 0
      invoke  SendMessage,  [hWebcam], WM_CAP_SET_SCALE, TRUE, 0
      invoke  SendMessage,  [hWebcam], WM_CAP_SET_PREVIEWRATE, [nFPS], 0
      invoke  SendMessage,  [hWebcam], WM_CAP_SET_PREVIEW, TRUE, 0
      jmp     .finish
    .stopbutton:
      invoke  SendMessage, [hWebcam], WM_CAP_DRIVER_DISCONNECT, _camtitle, 0
      jmp     .finish
    .clickbutton:
      invoke  SendMessage, [hWebcam], WM_CAP_FILE_SAVEDIB, 0, _filename
      jmp     .finish
  endp
 
section '.idata' import data readable writeable
 
  library kernel, 'KERNEL32.DLL',\
          user,   'USER32.DLL',\
          avicap, 'AVICAP32.DLL'
 
  import  kernel,\
          GetModuleHandle,'GetModuleHandleA',\
          ExitProcess,    'ExitProcess'
 
  import  user,\
          DialogBoxParam, 'DialogBoxParamA',\
          EndDialog,      'EndDialog',\
          SendMessage,    'SendMessageA'
 
  import  avicap,\
          capCreateCaptureWindow, 'capCreateCaptureWindowA'
 
section '.rsrc' resource data readable
  directory     RT_DIALOG, dialogs
  resource      dialogs,\
                IDD_MAIN, LANG_ENGLISH + SUBLANG_DEFAULT, main_dialog
  dialog        main_dialog, 'FASM Webcam', 0, 0, 190, 200, WS_CAPTION + WS_POPUP + WS_SYSMENU +\
                                                            DS_MODALFRAME + DS_CENTER
                dialogitem 'BUTTON', 'START', ID_START,  10, 170, 50, 20, WS_VISIBLE + WS_TABSTOP
                dialogitem 'BUTTON', 'STOP',  ID_STOP,   70, 170, 50, 20, WS_VISIBLE + WS_TABSTOP
                dialogitem 'BUTTON', 'CLICK', ID_CLICK, 130, 170, 50, 20, WS_VISIBLE + WS_TABSTOP
  enddialog
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.05.2012, 20:20
Ответы с готовыми решениями:

fasm+палиндромы. помогите разобраться.
Здравствуйте. Пишу на fasm'е программу для поиска всех палиндромов от 0 до 10^9 с выводом в файл. Проблема в том, что программа перебирает...

Расставить комментарии в коде
modell Small .stack 100h .data n dw 10 s db 0 b db 1 .code start mov ax,@data mov dx,ax

Вызываю dll (написанную на vc++2008) из Fasm. Через 40 секунд вылет из программы.Без вызова dll из Fasm программа не вылетает.
Программа на vc++2008: #include "MathFuncsDll.h" #include <stdexcept> using namespace std; namespace MathFuncs { ...

3
 Аватар для HITMAN
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
06.05.2012, 20:24
rolex123, зачем ещё тему создал?
Скачал бы Command line parameters код попроще как писал в прошлой теме!
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
07.05.2012, 06:58
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
format PE GUI 4.0 ;формат - приложение винды
entry codestart ;точка входа
 
include 'win32a.inc' ;подключаем заголовочный файл
 
  IDD_MAIN                     =  100
  WM_CAP_DRIVER_CONNECT        =  WM_USER + 10
  WM_CAP_DRIVER_DISCONNECT     =  WM_USER + 11
  WM_CAP_FILE_SAVEDIB          =  WM_USER + 25
  WM_CAP_SET_PREVIEW           =  WM_USER + 50
  WM_CAP_SET_PREVIEWRATE       =  WM_USER + 52
  WM_CAP_SET_SCALE             =  WM_USER + 53;объявляем константы для номеров сообщений
  ID_START                     =  201
  ID_STOP                      =  202
  ID_CLICK                     =  203;объявляем идентификаторы пункта меню
  _camtitle                    db 'FASMWEBCAM'
 
  _filename  db 'IMAGE.BMP'    ; Filename
  nDevice    dd   0            ; Device Number -> It can range from 0 through 9
  nFPS       dd 100            ; Frames per second. Must be 1000/FPS. E.g. 20 FPS = 50
 ;объявляения переменных
section '.data' data readable writeable ;раздел данных для чтения/записи
  hInstance     dd ?
  hWebcam       dd ?;неопределенные данные
 
section '.code' code readable executable ;раздел запускаемого кода
  codestart:;а здесь точка входа
    invoke  GetModuleHandle, 0;получаем идентификатор процессора
    mov     [hInstance], eax;сохраняем
    invoke  DialogBoxParam, eax, IDD_MAIN, HWND_DESKTOP, MainDlg, 0;создаем окошко диалоговое
    invoke  ExitProcess, 0:кончаем программу с кодом выхода 0
 
  proc MainDlg hdlg, msg, wparam, lparam ;окнонная процедура для диалогового окна
    push    ebx esi edi ;сохраняем регистры, которые менять будем
    cmp     [msg], WM_INITDIALOG;если событие инициализации диалога
    je      .wminitdlg;переходим на соответствующий обработчик. Далее такие же образцы кода.
    cmp     [msg], WM_COMMAND
    je      .wmcommand
    cmp     [msg], WM_CLOSE
    je      .wmclose
    xor     eax, eax;если же это сообщение мы не обрабатываем, то переходим на вызов стандартного оконного обработчика
    jmp     .finish
    .wminitdlg:
      invoke  capCreateCaptureWindow, _camtitle, WS_VISIBLE + WS_CHILD, 10, 10,\
                                        266, 252, [hdlg], 0
      mov     [hWebcam], eax:здесь код инициализации
      jmp     .finish
    .wmcommand:
      cmp     [wparam], BN_CLICKED shl 16 + ID_START;это код проверки, что за кнопку нажали и переходим на требуемый обработчик
      je      .startbutton
      cmp     [wparam], BN_CLICKED shl 16 + ID_STOP
      je      .stopbutton
      cmp     [wparam], BN_CLICKED shl 16 + ID_CLICK
      je      .clickbutton
    .wmclose:
      invoke  SendMessage, [hWebcam], WM_CAP_DRIVER_DISCONNECT, _camtitle, 0;отключаем драйвер
      invoke  EndDialog, [hdlg], 0;кончаем окно
    .finish:
      pop     edi esi ebx;здесь все регистры вытаскиваем и выходим
      ret
    .startbutton:
      invoke  SendMessage,  [hWebcam], WM_CAP_DRIVER_CONNECT, [nDevice], 0
      invoke  SendMessage,  [hWebcam], WM_CAP_SET_SCALE, TRUE, 0
      invoke  SendMessage,  [hWebcam], WM_CAP_SET_PREVIEWRATE, [nFPS], 0
      invoke  SendMessage,  [hWebcam], WM_CAP_SET_PREVIEW, TRUE, 0;здесь мы заводим драйвер
      jmp     .finish
    .stopbutton:
      invoke  SendMessage, [hWebcam], WM_CAP_DRIVER_DISCONNECT, _camtitle, 0;отключаем драйвер
      jmp     .finish
    .clickbutton:
      invoke  SendMessage, [hWebcam], WM_CAP_FILE_SAVEDIB, 0, _filename;сохраняем по кнопке
      jmp     .finish
  endp
 
section '.idata' import data readable writeable; секция импортированных данных
 
  library kernel, 'KERNEL32.DLL',\
          user,   'USER32.DLL',\
          avicap, 'AVICAP32.DLL':объявление констант названий библиотек и их подключение
 
  import  kernel,\
          GetModuleHandle,'GetModuleHandleA',\
          ExitProcess,    'ExitProcess';функции импортированные из каждой библиотеки
 
  import  user,\
          DialogBoxParam, 'DialogBoxParamA',\
          EndDialog,      'EndDialog',\
          SendMessage,    'SendMessageA'
 
  import  avicap,\
          capCreateCaptureWindow, 'capCreateCaptureWindowA'
 
section '.rsrc' resource data readable;раздел ресурсов. Здесь объявление диалога.
  directory     RT_DIALOG, dialogs
  resource      dialogs,\
                IDD_MAIN, LANG_ENGLISH + SUBLANG_DEFAULT, main_dialog
  dialog        main_dialog, 'FASM Webcam', 0, 0, 190, 200, WS_CAPTION + WS_POPUP + WS_SYSMENU +\
                                                            DS_MODALFRAME + DS_CENTER
                dialogitem 'BUTTON', 'START', ID_START,  10, 170, 50, 20, WS_VISIBLE + WS_TABSTOP
                dialogitem 'BUTTON', 'STOP',  ID_STOP,   70, 170, 50, 20, WS_VISIBLE + WS_TABSTOP
                dialogitem 'BUTTON', 'CLICK', ID_CLICK, 130, 170, 50, 20, WS_VISIBLE + WS_TABSTOP
  enddialog;ну вот и конец диалога.
Что-то понял?
1
1 / 1 / 0
Регистрация: 10.03.2010
Сообщений: 18
07.05.2012, 13:34  [ТС]
Цитата Сообщение от programmisto Посмотреть сообщение
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
format PE GUI 4.0 ;формат - приложение винды
entry codestart ;точка входа
 
include 'win32a.inc' ;подключаем заголовочный файл
 
  IDD_MAIN                     =  100
  WM_CAP_DRIVER_CONNECT        =  WM_USER + 10
  WM_CAP_DRIVER_DISCONNECT     =  WM_USER + 11
  WM_CAP_FILE_SAVEDIB          =  WM_USER + 25
  WM_CAP_SET_PREVIEW           =  WM_USER + 50
  WM_CAP_SET_PREVIEWRATE       =  WM_USER + 52
  WM_CAP_SET_SCALE             =  WM_USER + 53;объявляем константы для номеров сообщений
  ID_START                     =  201
  ID_STOP                      =  202
  ID_CLICK                     =  203;объявляем идентификаторы пункта меню
  _camtitle                    db 'FASMWEBCAM'
 
  _filename  db 'IMAGE.BMP'    ; Filename
  nDevice    dd   0            ; Device Number -> It can range from 0 through 9
  nFPS       dd 100            ; Frames per second. Must be 1000/FPS. E.g. 20 FPS = 50
 ;объявляения переменных
section '.data' data readable writeable ;раздел данных для чтения/записи
  hInstance     dd ?
  hWebcam       dd ?;неопределенные данные
 
section '.code' code readable executable ;раздел запускаемого кода
  codestart:;а здесь точка входа
    invoke  GetModuleHandle, 0;получаем идентификатор процессора
    mov     [hInstance], eax;сохраняем
    invoke  DialogBoxParam, eax, IDD_MAIN, HWND_DESKTOP, MainDlg, 0;создаем окошко диалоговое
    invoke  ExitProcess, 0:кончаем программу с кодом выхода 0
 
  proc MainDlg hdlg, msg, wparam, lparam ;окнонная процедура для диалогового окна
    push    ebx esi edi ;сохраняем регистры, которые менять будем
    cmp     [msg], WM_INITDIALOG;если событие инициализации диалога
    je      .wminitdlg;переходим на соответствующий обработчик. Далее такие же образцы кода.
    cmp     [msg], WM_COMMAND
    je      .wmcommand
    cmp     [msg], WM_CLOSE
    je      .wmclose
    xor     eax, eax;если же это сообщение мы не обрабатываем, то переходим на вызов стандартного оконного обработчика
    jmp     .finish
    .wminitdlg:
      invoke  capCreateCaptureWindow, _camtitle, WS_VISIBLE + WS_CHILD, 10, 10,\
                                        266, 252, [hdlg], 0
      mov     [hWebcam], eax:здесь код инициализации
      jmp     .finish
    .wmcommand:
      cmp     [wparam], BN_CLICKED shl 16 + ID_START;это код проверки, что за кнопку нажали и переходим на требуемый обработчик
      je      .startbutton
      cmp     [wparam], BN_CLICKED shl 16 + ID_STOP
      je      .stopbutton
      cmp     [wparam], BN_CLICKED shl 16 + ID_CLICK
      je      .clickbutton
    .wmclose:
      invoke  SendMessage, [hWebcam], WM_CAP_DRIVER_DISCONNECT, _camtitle, 0;отключаем драйвер
      invoke  EndDialog, [hdlg], 0;кончаем окно
    .finish:
      pop     edi esi ebx;здесь все регистры вытаскиваем и выходим
      ret
    .startbutton:
      invoke  SendMessage,  [hWebcam], WM_CAP_DRIVER_CONNECT, [nDevice], 0
      invoke  SendMessage,  [hWebcam], WM_CAP_SET_SCALE, TRUE, 0
      invoke  SendMessage,  [hWebcam], WM_CAP_SET_PREVIEWRATE, [nFPS], 0
      invoke  SendMessage,  [hWebcam], WM_CAP_SET_PREVIEW, TRUE, 0;здесь мы заводим драйвер
      jmp     .finish
    .stopbutton:
      invoke  SendMessage, [hWebcam], WM_CAP_DRIVER_DISCONNECT, _camtitle, 0;отключаем драйвер
      jmp     .finish
    .clickbutton:
      invoke  SendMessage, [hWebcam], WM_CAP_FILE_SAVEDIB, 0, _filename;сохраняем по кнопке
      jmp     .finish
  endp
 
section '.idata' import data readable writeable; секция импортированных данных
 
  library kernel, 'KERNEL32.DLL',\
          user,   'USER32.DLL',\
          avicap, 'AVICAP32.DLL':объявление констант названий библиотек и их подключение
 
  import  kernel,\
          GetModuleHandle,'GetModuleHandleA',\
          ExitProcess,    'ExitProcess';функции импортированные из каждой библиотеки
 
  import  user,\
          DialogBoxParam, 'DialogBoxParamA',\
          EndDialog,      'EndDialog',\
          SendMessage,    'SendMessageA'
 
  import  avicap,\
          capCreateCaptureWindow, 'capCreateCaptureWindowA'
 
section '.rsrc' resource data readable;раздел ресурсов. Здесь объявление диалога.
  directory     RT_DIALOG, dialogs
  resource      dialogs,\
                IDD_MAIN, LANG_ENGLISH + SUBLANG_DEFAULT, main_dialog
  dialog        main_dialog, 'FASM Webcam', 0, 0, 190, 200, WS_CAPTION + WS_POPUP + WS_SYSMENU +\
                                                            DS_MODALFRAME + DS_CENTER
                dialogitem 'BUTTON', 'START', ID_START,  10, 170, 50, 20, WS_VISIBLE + WS_TABSTOP
                dialogitem 'BUTTON', 'STOP',  ID_STOP,   70, 170, 50, 20, WS_VISIBLE + WS_TABSTOP
                dialogitem 'BUTTON', 'CLICK', ID_CLICK, 130, 170, 50, 20, WS_VISIBLE + WS_TABSTOP
  enddialog;ну вот и конец диалога.
Что-то понял?
Принцип работы теперь понял, огромное спасибо. Теперь сяду и разберу каждую строчку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.05.2012, 13:34
Помогаю со студенческими работами здесь

Расставить комментарии
сегодня в 20:10 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace...

Расставить комментарии
#include <stdio.h> #include <string.h> #include <ctype.h> int main() { char string; gets(string); char val =...

Расставить комментарии в коде
#include <vcl.h> #pragma hdrstop #include "Unit1.h" //---------------------------------------------------------------------------...

Расставить комментарии в коде
Дали готовый код и нужно в нем разобраться,а я вообще его не понимаю и нет времени, помогите разобраться посторочно!!! #include...

Пожалуйста расставить комментарии
Помогите очень нужно или поможете разобрать код.#include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru