This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:multiasm:papc:chapter_6_9 [2026/02/27 01:52] – [Programming in Assembler for Linux] jtokarz | en:multiasm:papc:chapter_6_9 [2026/05/13 09:06] (current) – [Programming in Assembler for Linux] ktokarz | ||
|---|---|---|---|
| Line 68: | Line 68: | ||
| Calling system functions, such as the system message box, requires understanding the arguments passed to them. As there is no direct assembler help, documentation of the Windows system API for C++ is helpful. | Calling system functions, such as the system message box, requires understanding the arguments passed to them. As there is no direct assembler help, documentation of the Windows system API for C++ is helpful. | ||
| Code below presents the necessary components of the assembler app to call system functions (library includes are configured on the project level): | Code below presents the necessary components of the assembler app to call system functions (library includes are configured on the project level): | ||
| - | < | + | < |
| .data | .data | ||
| STD_INPUT_HANDLE = -10 | STD_INPUT_HANDLE = -10 | ||
| Line 135: | Line 135: | ||
| if (!dllHandle) | if (!dllHandle) | ||
| { | { | ||
| - | std::cerr << " | + | |
| - | return 1; | + | return 1; |
| } | } | ||
| MyProc myAsmProcedure = (MyProc)GetProcAddress(dllHandle, | MyProc myAsmProcedure = (MyProc)GetProcAddress(dllHandle, | ||
| if (!myAsmProcedure) | if (!myAsmProcedure) | ||
| { | { | ||
| - | std::cerr << " | + | |
| - | FreeLibrary(dllHandle); | + | FreeLibrary(dllHandle); |
| - | return 2; | + | return 2; |
| } | } | ||
| std::cout << myAsmProcedure(); | std::cout << myAsmProcedure(); | ||
| Line 247: | Line 247: | ||
| Assembler code exposes functions to the linker using the '' | Assembler code exposes functions to the linker using the '' | ||
| - | < | + | < |
| section .data | section .data | ||
| section .bss | section .bss | ||