I am very new to assembly and was trying to create a simple program which uses jg. Here is the code-
BITS 64
section .text
    global _start
_start:
    mov rdi, 1
    cmp rdi, 0
    jg greater
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, msg_len
    syscall
    mov rax, 60
    mov rdi, 0
    syscall
greater:
    mov rax, "More!!!"
    mov rdx, 10
    mov [msg], rax
    mov [msg_len], rdx
section .bss
msg: resb 12
msg_len: resb 1
I don't see any kind of error in it. The program even works well if jg greater not used. For example this program works well-
BITS 64
section .text
    global _start
_start:
    mov rdi, 1
    cmp rdi, 0
    ; jg greater
    mov rax, "More!!!"
    mov rdx, 10
    mov [msg], rax
    mov [msg_len], rdx
    mov rax, 1
    mov rdi, 1
    mov rsi, msg
    mov rdx, msg_len
    syscall
    mov rax, 60
    mov rdi, 0
    syscall
greater:
    mov rax, "More!!!"
    mov rdx, 10
    mov [msg], rax
    mov [msg_len], rdx
section .bss
msg: resb 12
msg_len: resb 1
Where is the error then? I think I must have misunderstood some concept.
Thanks in advance.
 
    