diff --git a/programs/develop/examples/example/trunk/example.asm b/programs/develop/examples/example/trunk/example.asm index 0afc088e60..0e0efc4e77 100644 --- a/programs/develop/examples/example/trunk/example.asm +++ b/programs/develop/examples/example/trunk/example.asm @@ -10,16 +10,16 @@ format binary as "" ; Binary file format without extension use32 ; Tell compiler to use 32 bit instructions -org 0x0 ; the base address of code, always 0x0 +org 0 ; the base address of code, always 0x0 ; The header db 'MENUET01' -dd 0x01 +dd 1 dd START dd I_END -dd 0x100000 -dd 0x7fff0 +dd MEM +dd STACKTOP dd 0, 0 ; The code area @@ -132,7 +132,12 @@ text db "It looks like you have just compiled " title db "Example application", 0 I_END: - + rb 4096 +align 16 +STACKTOP: + +MEM: + ; The area after I_END is free for use as the application memory, ; just avoid the stack. ; @@ -143,13 +148,13 @@ I_END: ; ; + Free for use in the application ; -; 0x7ff00 - Start of stack area -; 0x7fff0 - End of stack area - defined in the header +; STACKTOP - Start of stack area - defined in the header +; STACKTOP-4096 - End of stack area ; ; + Free for use in the application ; -; 0xFFFFF - End of freely useable memory - defined in the header +; MEM - End of freely useable memory - defined in the header ; ; All of the the areas can be modified within the application with a ; direct reference. -; For example, mov [0x80000],byte 1 moves a byte above the stack area. \ No newline at end of file +; For example, mov [STACKTOP-1],byte 1 moves a byte above the stack area. \ No newline at end of file diff --git a/programs/develop/examples/example/trunk/rus/example.asm b/programs/develop/examples/example/trunk/rus/example.asm index c28b97a893..50aadd8387 100644 --- a/programs/develop/examples/example/trunk/rus/example.asm +++ b/programs/develop/examples/example/trunk/rus/example.asm @@ -26,16 +26,16 @@ ;--------------------------------------------------------------------- use32 ; включить 32-битный режим ассемблера - org 0x0 ; адресация с нуля + org 0 ; адресация с нуля db 'MENUET01' ; 8-байтный идентификатор MenuetOS - dd 0x01 ; версия заголовка (всегда 1) + dd 1 ; версия заголовка (всегда 1) dd START ; адрес первой команды dd I_END ; размер программы - dd 0x1000 ; количество памяти - dd 0x1000 ; адрес вершины стэка - dd 0x0 ; адрес буфера для параметров - dd 0x0 ; зарезервировано + dd MEM ; количество памяти + dd STACKTOP ; адрес вершины стэка + dd 0 ; адрес буфера для параметров + dd 0 ; зарезервировано include "macros.inc" ; макросы облегчают жизнь ассемблерщиков! @@ -127,9 +127,9 @@ draw_window: ; вывод текстовой строки mov ecx, [sc.work_text] ; цвет фона or ecx, 0x90000000 ; и тип строки - mcall 4, <10, 20>, 0x90000000, message + mcall 4, <10, 20>, , message + - mcall 12, 2 ; функция 12.2, закончили рисовать ret ; выходим из процедуры @@ -152,4 +152,17 @@ title db ' ;--------------------------------------------------------------------- -I_END: ; метка конца программы +I_END: ; метка конца программы + rb 4096 ; память для стека +align 16 +STACKTOP: ; метка вершины стека (при заполнении стек + ; растет в сторону уменьшения адресов, потому + ; память для него в коде программы встречается + ; раньше чем его вершина) +MEM: ; метка указывающая на конец программы плюс + ; размер используемой ею оперативной памяти +; Адрес метки MEM всегда должен быть больше чем адрес метки I_END. +; Метка STACKTOP должна располагается после метки I_END и перед меткой +; MEM. STACKTOP может находится и перед I_END, но это не правильно. +; Имена меток могут быть с любыми названиями, главное соблюдать +; правильный порядок их расположения. \ No newline at end of file