MONTAJE X86 - MASM32: Cómo crear una variable de cadena vacía para transferir la entrada e imprimir

StackOverflow https://stackoverflow.com//questions/10678791

Pregunta

Quiero crear un programa que reciba entrada y imprima el resultado, pero no puedo crear una variable vacía que pueda tomar una entrada de cadena.Aquí está lo que quiero decir:

.data 
        emptyvar db ???? ; I don't know what to do here
.data? 
        buffer dd 100 dup(?)
.code
start:
        lea eax, buffer
        push eax
        call StdIn ; get input
        ; NOW HERE IS WHAT I DON'T KNOW WHAT TO DO:
        ; I know have input, what I want to do is print that result. But where 
        ; do I store the input and how do I print the result?

Sé que puedo almacenar un entero en una variable vacía, y podría imprimir eso, pero ¿cómo puedo crear una variable de cadena vacía?

Cualquier ayuda sería muy apreciada,

Saludos,

progrmr

¿Fue útil?

Solución

.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
msg1 db 'Please type your name',13,10,0
msg2 db 'Nice to see you ',0

.data?
buffer db 100 dup(?)
.code

start:
invoke StdOut,ADDR msg1
invoke StdIn,ADDR buffer,100 ; receive text input
invoke StdOut,ADDR msg2
invoke StdOut,ADDR buffer
invoke ExitProcess,0
END start

Otros consejos

stdin devuelve un puntero a la cadena.Solo ponte el puntero a EAX.[EAX] ahora debería contener el primer carácter

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top