| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| en:edu:zmitac:s1:apl:lab:lab1 [2024/11/26 13:18] – [Tasks to be done for the report] ktokarz | en:edu:zmitac:s1:apl:lab:lab1 [2026/09/16 11:58] (current) – Accessibility: add WCAG-compliant alt texts to all nine figures mcp_agent |
|---|
| |
| ===== Laboratory 1 ===== | ===== Laboratory 1 ===== |
| Programming in Assembler Laboratory, exercise 1 | Configuration of the Visual Studio for simple assembler application written in MASM. |
| |
| ==== Introduction ==== | ===== Introduction ===== |
| In this exercise, you will create a console application in pure assembler for x64 (Intel/AMD processors, 64 bits) that will interact with the Windows operating system (Windows 7, 8, 8.1, 10, 11) by calling its functions via the Windows API. | In this exercise, you will create a console application in pure assembler for x64 (Intel/AMD processors, 64 bits) that will interact with the Windows operating system (Windows 7, 8, 8.1, 10, 11) by calling its functions via the Windows API. |
| |
| Create a new project: a command-line (console) application for C++, native (__not C++ .NET__) figure {{ref>jalabstep1}} | Create a new project: a command-line (console) application for C++, native (__not C++ .NET__) figure {{ref>jalabstep1}} |
| <figure jalabstep1> | <figure jalabstep1> |
| {{:pl:edu:zmitac:n1z:ja:virtualbox_msedge_-_win10_12_03_2021_08_01_48.png?1000|}} | {{:pl:edu:zmitac:n1z:ja:virtualbox_msedge_-_win10_12_03_2021_08_01_48.png?1000|Visual Studio "Create a new project" dialogue with the C++ language filter applied and the "Console App" template highlighted in the template list; the Next button is located in the bottom right corner.}} |
| <caption>Creating a C++ project, native code</caption> | <caption>Creating a C++ project, native code</caption> |
| </figure> | </figure> |
| Delete the generated .cpp file (from VS) and then add a new .asm file (this can be done by clicking on the project (not the solution!) and selecting to add a new element figure {{ref>jalabstep21}}, then select the text file and change its name and extension figure {{ref>jalabstep22}}: | Delete the generated .cpp file (from VS) and then add a new .asm file (this can be done by clicking on the project (not the solution!) and selecting to add a new element figure {{ref>jalabstep21}}, then select the text file and change its name and extension figure {{ref>jalabstep22}}: |
| <figure jalabstep21> | <figure jalabstep21> |
| {{:pl:edu:zmitac:n1z:ja:virtualbox_msedge_-_win10_12_03_2021_08_07_27.png?1000|}} | {{:pl:edu:zmitac:n1z:ja:virtualbox_msedge_-_win10_12_03_2021_08_07_27.png?1000|Visual Studio project context menu opened from the Solution Explorer, with the "Add" submenu expanded and the "New Item..." entry (shortcut Ctrl+Shift+A) highlighted.}} |
| <caption>Adding a new element</caption> | <caption>Adding a new element</caption> |
| </figure> | </figure> |
| <figure jalabstep22> | <figure jalabstep22> |
| {{:pl:edu:zmitac:n1z:ja:virtualbox_msedge_-_win10_12_03_2021_08_08_50.png?1000|}} | {{:pl:edu:zmitac:n1z:ja:virtualbox_msedge_-_win10_12_03_2021_08_08_50.png?1000|Visual Studio "Add New Item" dialogue with the Visual C++ Utility category selected, the "Text File (.txt)" template chosen and the Name field set to source.asm; the Add button is located in the bottom right corner.}} |
| <caption>Adding a new element - asm file</caption> | <caption>Adding a new element - asm file</caption> |
| </figure> | </figure> |
| |
| <figure jalabstep31> | <figure jalabstep31> |
| {{:pl:edu:zmitac:n1z:ja:virtualbox_msedge_-_win10_12_03_2021_08_17_17.png?1000|}} | {{:pl:edu:zmitac:n1z:ja:virtualbox_msedge_-_win10_12_03_2021_08_17_17.png?1000|Visual Studio project context menu with the "Build Dependencies" entry highlighted and its submenu expanded, showing the single option "Build Customizations...".}} |
| <caption>Choosing the project build customization menu</caption> | <caption>Choosing the project build customization menu</caption> |
| |
| |
| <figure jalabstep32> | <figure jalabstep32> |
| {{:pl:edu:zmitac:n1z:ja:virtualbox_msedge_-_win10_12_03_2021_08_17_40.png?1000|}} | {{:pl:edu:zmitac:n1z:ja:virtualbox_msedge_-_win10_12_03_2021_08_17_40.png?1000|Visual Studio "Visual C++ Build Customization Files" dialogue listing the available customisation files with their paths; only the "masm(.targets, .props)" check box is ticked, and the OK button is located at the bottom.}} |
| <caption>Choosing the MASM compiler</caption> | <caption>Choosing the MASM compiler</caption> |
| |
| Next, change the type of application being built from ''x86'' (32-bit application) to ''x64'' (64-bit application): Build->Configuration Manager menu figure {{ref>jalabstep4}}. | Next, change the type of application being built from ''x86'' (32-bit application) to ''x64'' (64-bit application): Build->Configuration Manager menu figure {{ref>jalabstep4}}. |
| <figure jalabstep4> | <figure jalabstep4> |
| {{:pl:edu:zmitac:n1z:ja:virtualbox_msedge_-_win10_12_03_2021_08_21_07.png?1000|}} | {{:pl:edu:zmitac:n1z:ja:virtualbox_msedge_-_win10_12_03_2021_08_21_07.png?1000|Visual Studio "Configuration Manager" dialogue with the active solution configuration set to Debug and the active solution platform set to x64; the project row shows the AssemblerLab1 project with configuration Debug, platform x64 and the Build check box ticked.}} |
| <caption>Environment configuration - building the 64-bit version</caption> | <caption>Environment configuration - building the 64-bit version</caption> |
| </figure> | </figure> |
| |
| <figure jalabstep51> | <figure jalabstep51> |
| {{:en:edu:zmitac:s1:apl:lab:virtualbox_msedge_-_win10_18_11_2024_09_06_12.png?1000|}} | {{:en:edu:zmitac:s1:apl:lab:virtualbox_msedge_-_win10_18_11_2024_09_06_12.png?1000|Visual Studio project Property Pages dialogue for the Active(Debug) configuration and Active(x64) platform, with the Configuration Properties, Linker, Advanced section selected; the "Entry Point" property in the first row is highlighted and contains the value hello_world_asm.}} |
| <caption>Configuration of the program entry point</caption> | <caption>Configuration of the program entry point</caption> |
| </figure> | </figure> |
| Details in figure {{ref>jalabstep52}}. | Details in figure {{ref>jalabstep52}}. |
| <figure jalabstep52> | <figure jalabstep52> |
| {{:pl:edu:zmitac:n1z:ja:virtualbox_msedge_-_win10_12_03_2021_08_50_25.png?1000|}} | {{:pl:edu:zmitac:n1z:ja:virtualbox_msedge_-_win10_12_03_2021_08_50_25.png?1000|Visual Studio project Property Pages dialogue with the Configuration Properties, Linker, Input section selected and the "Additional Dependencies" editor window open; the upper text field contains legacy_stdio_definitions.lib and legacy_stdio_wide_specifiers.lib, one per line, and the "Inherited values" list below starts with kernel32.lib and user32.lib.}} |
| <caption>Configuring additional libraries</caption> | <caption>Configuring additional libraries</caption> |
| </figure> | </figure> |
| In some cases, the ''.asm'' file is not automatically recognized as a source file with assembler code. Therefore, you must explicitly inform the environment about this. To do this, right-click the file name in the project tree and select ''Properites'', then in the ''General'' section, select ''Item Type'' and set its value to ''Microsoft Macro Assembler''. Details in figure {{ref>jalabstep6}}. | In some cases, the ''.asm'' file is not automatically recognized as a source file with assembler code. Therefore, you must explicitly inform the environment about this. To do this, right-click the file name in the project tree and select ''Properites'', then in the ''General'' section, select ''Item Type'' and set its value to ''Microsoft Macro Assembler''. Details in figure {{ref>jalabstep6}}. |
| <figure jalabstep6> | <figure jalabstep6> |
| {{:pl:edu:zmitac:n1z:ja:virtualbox_msedge_-_win10_27_03_2021_19_44_41.png?1000|}} | {{:pl:edu:zmitac:n1z:ja:virtualbox_msedge_-_win10_27_03_2021_19_44_41.png?1000|Visual Studio Property Pages dialogue for the file source.asm with the Configuration Properties, General section selected; the "Item Type" drop-down list is expanded and the "Microsoft Macro Assembler" entry is selected.}} |
| <caption>Marking an ASM file as a source file with assembler code</caption> | <caption>Marking an ASM file as a source file with assembler code</caption> |
| </figure> | </figure> |