我想学习汇编语言。刚开始,我只打印结果,假设5 + 5到控制台。我在Windows 7 64bit中使用Flat Assembler。
我刚刚开始编写代码,我希望将v1和v2字符串打印到控制台,但我没有成功:
v1 db 'Enter value 1: ', 0
val1 db 80 dup(?)
v2 db 'Enter value 2: ', 0
val2 db 80 dup(?)
编译代码后,我尝试使用fasm.exe hello.ASM
运行它,但会显示注释。我以为我会被要求输入一个值。
我做错了什么?
答案 0 :(得分:5)
你必须编写代码来实际将数据打印到控制台 - 现在,你只是定义了一些数据块。
您通常会使用WriteFile
或(如果您想获得更高级别的人)WriteConsoleOutput
等内容打印数据。以下是一个示例“Hello World”程序作为起点:
.386
.MODEL flat, stdcall
getstdout = -11
WriteFile PROTO NEAR32 stdcall, \
handle:dword, \
buffer:ptr byte, \
bytes:dword, \
written: ptr dword, \
overlapped: ptr byte
GetStdHandle PROTO NEAR32, device:dword
ExitProcess PROTO NEAR32, exitcode:dword
.stack 8192
.data
message db "Hello World!"
msg_size equ $ - offset message
.data?
written dd ?
.code
main proc
invoke GetStdHandle, getstdout
invoke WriteFile, \
eax, \
offset message, \
msg_size, \
offset written, \
0
invoke ExitProcess, 0
main endp
end main