首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从控制台读取时崩溃- masm32

从控制台读取时崩溃- masm32
EN

Stack Overflow用户
提问于 2012-03-27 19:05:05
回答 1查看 2.3K关注 0票数 0

我创建了一个名为t.exe的masm程序,它应该从cmd读取输入并输出它。我知道这可能是另一种方法,但我想用“`Readconsole”来实现

“这是密码:

代码语言:javascript
复制
.386 
.model flat, stdcall 
option casemap:none 
include \masm32\include\windows.inc 
include \masm32\include\kernel32.inc 
includelib \masm32\lib\kernel32.lib 
include \masm32\include\masm32.inc
includelib \masm32\lib\masm32.lib

STD_INPUT_HANDLE EQU -10 

.data?
ByteAry dd 8 dup (?)
var dd ?
.code 
start: 
invoke GetStdHandle, STD_INPUT_HANDLE
invoke ReadConsole,eax,offset ByteAry,sizeof ByteAry,offset var,0
invoke StdOut,ByteAry
invoke ExitProcess,0 
end start

我试着运行它,但我得到了一个微软错误和程序退出("t.exe遇到了一个问题,需要关闭。我们很抱歉给您带来不便“)。事实上,如果有人知道一本好书要从masm开始..。我需要它,因为我挣扎的数据类型,请不要冒犯评论:)

EN

回答 1

Stack Overflow用户

发布于 2012-11-10 19:45:33

使用WinAPI函数ReadConsole和WriteConsole的代码:

代码语言:javascript
复制
.586
.model flat, stdcall

option casemap:none

include windows.inc
include kernel32.inc

includeLib kernel32.lib

.data

.data?
consoleOutHandle dd ?
consoleInHandle dd ?
bytearray db 32 dup(?)
ReadWritten dd ? 

.code

start:
push STD_OUTPUT_HANDLE
call GetStdHandle

mov consoleOutHandle, eax

push STD_INPUT_HANDLE
call GetStdHandle

mov consoleInHandle, eax

push 0
push offset ReadWritten
push sizeof bytearray
push offset bytearray
push consoleInHandle
call ReadConsole

push 0
push offset ReadWritten
push sizeof bytearray
push offset bytearray
push consoleOutHandle
call WriteConsole

push 0
call ExitProcess

end start
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9895966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档