J'ai créé ce programme qui prend deux entrées et les imprime (simple, oui, mais c'est pour la pratique). Il compile et fonctionne bien, mais il ne fait pas ce que je voulais. Voici mon code:x86 assembly - masm32: Problèmes d'attente de réponse
.386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
.data
num1 db "Enter a number:", 0
num2 db "Enter another number:", 0
.data?
buffer1 dd 100 dup(?)
buffer2 dd 100 dup(?)
.code
start:
lea eax, num1
push eax
call StdOut
lea ebx, buffer1
push ebx
call StdIn
hlt
lea eax, num2
push eax
call StdOut
lea edx, buffer2
push edx
call StdIn
xor eax, eax
xor ebx, ebx
xor edx, edx
lea eax, buffer1
push eax
call StdOut
lea ebx, buffer2
push ebx
call StdOut
push 0
call ExitProcess
end start
Il affiche cette sortie:
Enter a number: Enter another number:
Il devrait faire:
Enter a number:
; wait for input.
Enter another number:
; wait for input.
; continue with program.
Pourquoi faut-il imprimer sur une seule ligne? J'ai essayé d'y mettre halt
pour arrêter le processus, mais Windows arrête le programme et dit the program is not responding
.
EDIT:
Voici le code que je l'ai dit je modifier dans:
xor eax, eax
xor ebx, ebx
xor edx, edx
lea eax, buffer1
push eax
call StdOut
lea ebx, buffer2
push ebx
call StdOut
Quand je lance ce avec le code précédent, il dit "This program is not responding."
Pourquoi est-ce?
Toute aide serait appréciée.
Cordialement,
Progrmr
Pourquoi ne serait-il imprimer sur une seule ligne? Thats ce qu'il fait, vous devez ajouter 13, 10 après votre texte. De plus, votre tampon pour contenir du texte devrait être db pas dd sauf si vous voulez vraiment un tampon de 400 octets. – Gunner
Cela le déplace vers une autre ligne, merci. Mais il n'attend toujours pas d'entrée, il montre à la fois num1 et num2 et n'attend pas d'entrée. Pourquoi? – Progrmr