2017-03-25 1 views
1

Le code ci-dessous demande à un utilisateur d'entrer des entiers et le code crachera le même ensemble d'entiers à l'utilisateur.x86 Assemblage Entrée d'un ensemble de nombres entiers

include irvine32.inc 

.data 
    input dword ? 
    prompt1 byte "Input your numbers: ",0 

.code 

mWriteNum Macro input 
    push ecx 
    push eax 
    mov eax, offset input 
    call writedec 
    pop eax 
    push ecx 
endM 

mReadInput MACRO input 
    push ecx 
    push eax 
    mov eax, offset input 
    mov ecx, sizeof input 
    call Readint 
    mov input, eax 
    pop eax 
    pop ecx 
endM 

main proc 

    call clrscr 
    mov edx, offset prompt1 
    call writeString 

    mReadInput input 

    call crlf 
    mWriteNum input 

exit 
main ENDP 
end main 

Cependant, voici ce qui a donné lieu:

Input your numbers: 123 

4210688 

Qu'est-ce que je fais ici? S'il vous plaît aider. Merci

+0

Votre macro _mWriteNum_ se termine par les instructions suivantes: 'pop eax'' push ecx'. J'espère que le dernier 'push ecx' est juste une faute de frappe qui devrait lire' pop ecx'? – Fifoernik

Répondre

2

Comme vous pouvez le voir dans the documentation for WriteDec, vous êtes censé fournir la valeur à imprimer en eax, pas l'adresse de la valeur à imprimer.

+0

Alors, comment dois-je corriger cela? Merci –

+0

En supprimant 'offset' dans nWriteNum. – Michael

+0

Merci !!!!!! –