Он также закрывается, потому что все программы закрываются после завершения работы. Вы можете добавить бесконечный цикл в конце выполнения, чтобы остановить его закрытие. Сделайте что-то вроде этого:
%include "io64.h"
section .text
global CMAIN
CMAIN:
mov eax, 4
endLoop:
pause ; don't overheat your CPU as much while busy-waiting
jmp endLoop
; never reached unless you use a debugger to get out of the infinite loop
xor rax, rax
ret
Это заставит программу зацикливаться на endLoop, поэтому она никогда не завершится и не закроется.
Выполнение системного вызова, который спит, было бы намного более энергоэффективным способом заставить программу никогда не завершаться. Ожидание ввода с клавиатуры - еще один распространенный метод в программах на C ++ в системах, в которых по умолчанию запускается программа в новом окне, которое закрывается после завершения.
Или установите точку останова внутри вашей программы.