Ошибка сегментации Push / Pop в сборке x86

я используюelf64 скомпилировать мой код сборки x86: у меня есть эта подпрограмма:

printNumber:
    mov EAX, EDX ; EDX contain some value like "35"
    mov ESI, 10 ; to divide by 10
    MOV ECX,0 ; counter
    whileDiv:
            cmp EAX, 0 
            je endWhileDiv
            xor rdx, rdx ; clean RDX
            idiv ESI ; EAX=EAX/10  and EDX = EAX%10

            push rdx ; this line generate a segmentation fault

            add ECX, 1; count how many items i has added into stack
            jmp whileDiv
    endWhileDiv:
    ret 

Я пытаюсь вставить все цифры числа в мой стек, используя push, но у меня ошибка сегментации. Когда я комментирую эту строку:

 push rdx ; this line generate a segmentation fault

Я больше не буду принимать «Ошибка сегментации»

Я использую «push rdx» вместо «push EDX», потому что я использую 64-битный режим в NASM, и когда я пытаюсь использовать: «push EDX», я получаю эту ошибку: «инструкция не поддерживается в 64-битной Режим"

Пожалуйста, кто-нибудь может подсказать, почему это происходит и как решить?

PS: извините за мой плохой английский

Ответы на вопрос(3)

Ваш ответ на вопрос