Wartość rejestru danych wyjściowych w NASM

nowy facet tutaj, a ja już mam pytanie.

Dostosowuję przykładowy kod używany w książkach montażowych Jeffa Duntemanna i chcę wydrukować wartość całkowitą zapisaną w rejestrze danych do terminala?

Poniższy kod robi, że drukuje łańcuchy w porządku, wrzuca wartość w porządku ECX, ale gdy dojdzie do następujących:

                pop ecx
                mov eax,4                          
                mov ebx,1                          
                mov edx, ecx

                int 80h  

Nie wyświetla zawartości edx na terminalu, chociaż myślę, że poleciłem to z mov eax, 4 itd.

Czy ktoś jest w stanie dać mi jakieś „wskazówki” (gra słów przeznaczona)?

Kod do odwołania (zmieniony od 17.06.2012):

SECTION .data
    submessage: db "I am subtracting 5 from 10!", 10
    msglen: equ $-submessage

    ansmsg: db "Answer is:", 10
    msglen2: equ $-ansmsg
    EOL: db 10

SECTION .bss
    msg: resd 2                                         ; reserve space for 2 dwords

SECTION .text

global _start

_start: nop

;Displays test on shell
                    mov eax,4                           ;print to terminal     
                    mov ebx,1                                      
                    mov ecx, submessage
                    mov edx, msglen
                    int 80h                             ;"I am subtracting 5 from 10!"

                    mov eax,4                           ;print to terminal   
                    mov ebx,1                                            
                    mov ecx, ansmsg
                    mov edx, msglen2
                    int 80h                             ;"Answer is..."

;Subtraction operation below:                  
                            mov edx, 10
                            sub edx, 5
                            mov [msg], edx                ; store 5 in msg


; now we need to print  msg to terminal                            


                            mov eax, 4                  ;print to terminal 
                            mov ebx, 1
                            mov dword [msg+1], 0xa      ;helps prints something out! 

                    ;Encountered problem here= prints out 'Answe' instead of integer '5'

                            push dword 2                ; store size of msg
                            push dword [msg]            ; push to stack contents of msg 
                            int 80h                    

                            add esp, 3                  ;clean stack (2 push calls *4)
                            int 80h

; I like labels :)

sys_exit:                            mov eax,1                   ;exit status
                                    mov ebx,0                        
                                    int 80h  
                                        nop

PS- Jeśli moje wcięcie linii jest do bani, chciałbym wiedzieć, jak mogę to poprawić; Zespół uczący się IMHO staje się bardziej atrakcyjny, gdy przejdziesz przez wstępną naukę „garb” :)

questionAnswers(2)

yourAnswerToTheQuestion