3
A
回答
2
只需通过使用Win32 API:通过写STD_OUTPUT_HANDLE(从STD_INPUT_HANDLE阅读)。 See GetStdHandle() in MSDN作为出发点... 使用MASM HLL构造来帮助您(INVOKE是您的朋友,用于调用Win32函数并传递参数)。
7
正如filofel所说,使用Win32 API。这里有一个小的hello world例子:
.386
.MODEL flat, stdcall
STD_OUTPUT_HANDLE EQU -11
GetStdHandle PROTO, nStdHandle: DWORD
WriteConsoleA PROTO, handle: DWORD, lpBuffer:PTR BYTE, nNumberOfBytesToWrite:DWORD, lpNumberOfBytesWritten:PTR DWORD, lpReserved:DWORD
ExitProcess PROTO, dwExitCode: DWORD
.data
consoleOutHandle dd ?
bytesWritten dd ?
message db "Hello World",13,10
lmessage dd 13
.code
main PROC
INVOKE GetStdHandle, STD_OUTPUT_HANDLE
mov consoleOutHandle, eax
mov edx,offset message
pushad
mov eax, lmessage
INVOKE WriteConsoleA, consoleOutHandle, edx, eax, offset bytesWritten, 0
popad
INVOKE ExitProcess,0
main ENDP
END main
要装配:
ml.exe helloworld.asm /link /subsystem:console /defaultlib:kernel32.lib /entry:main
我们捕获输入,你会同样进行,使用API函数,如ReadConsoleInput
。我把这个作为练习留给你。
2
“控制台”在现代Windows世界中可能相当模糊。如果通过控制台程序,你确实是指DOS程序,你可以使用DOS INT 21 API,这比调用Win32要简单得多。我没有MASM,但这是一个简单的例子,如何阅读一个字符并写出一个字符。有关更多DOS功能,请参阅this。
MOV AH,1 ; code for "read a character"
INT 21H ; character gets put in AL
MOV AH,2 ; code for "write a character"
MOV DL,'A' ; ascii code goes in DL
INT 21H
0
下载,并链接到Irvine32库,他们会为你提供是非常人性化的输入和输出功能。
相关问题
- 1. 使用GUI进行控制台输入和输出java
- 2. Xcode 6.1控制台输入/输出
- 3. 捕捉控制台输入输出
- 4. 基本控制台输入和输出
- 5. 在控制台中输入输入
- 6. 控制台输出
- 7. 如何在控制台输出@user?
- 8. 在win32上没有使用MASM与程序组装的控制台输出
- 9. C++在控制台上更改输出
- 10. Unix:在控制台输出上的Grep
- 11. 输入值在控制台
- 12. 如何从jtextArea或JEditorPane获取控制台输入和输出
- 13. 如何在缓冲区控制台输出中输出?
- 14. 负数MASM输入和输出
- 15. 如何在iPhone上查看控制台上的输出
- 16. 如何保持控制台输出固定在控制台的最后一行?
- 17. 如何编辑控制台输出
- 18. 如何输出LogCat到控制台?
- 19. 如何读取Xcode控制台输出?
- 20. 如何输出到iPhone的控制台?
- 21. 如何传输控制台上显示的输出并进行格式化以使其显示在网页上?
- 22. 如何从控制台输入数字
- 23. 显示在多个控制台上的进程的输出
- 24. 控制台上没有输出
- 25. 控制台上的TestNg输出
- 26. 在Windows中使用C++进行颜色控制台输出
- 27. 在VS中捕获控制台输出以进行调试?
- 28. 控制台输出格式
- 29. SharePoint控制台输出
- 30. Symfony控制台输出
使用MASM32排除使用16位DOS API调用。 – 2010-04-28 05:05:58
如果您使用LINK16而不是LINK,我相信您可以从MASM32目标文件生成16位DOS程序。 – 2010-04-29 00:58:59