Asm控制台输入/输出

时间:2013-12-09 21:55:45

标签: assembly io console

我正在尝试使用程序集在控制台中创建一个基本的“游戏”(输入/输出)。由于我不熟悉汇编,我不太清楚低级语言的工作原理:我已经习惯了C ++ / C#环境。

我想要实现的是用户输入他们的名字,并且控制台输出它是否与变量myName相同。如果我在我的代码中犯了错误,我将非常感激,如果你能纠正它们

.text
.global main

main:
myName db "Name"
call readline 
cmp myName, ebx
je same
jne notsame

same:
mov eax, "We have the same name"
jmp print

notsame:
mov eax, "We have different names"
jmp print

readline:
; read console line
mov ebx, line ; line is whatever the input is
ret

print:
; do something with eax

编辑:这会更好吗?

.text
.global main

main:
myName db "Name"
call readline 
pop ebx
cmp myName, ebx
je same
jne notsame

same:
push "We have the same name"
jmp print

notsame:
push "We have different names"
jmp print

readline:
; read console line
push line ; line is whatever the input is
ret

print:
pop eax
; do something with eax

1 个答案:

答案 0 :(得分:0)

这是家庭作业吗?

代码是各种各样的。首先,控制台输入不是标量 - 它是文本字符串。也就是说,一组任意字符。你不能期望它适合单个寄存器。您需要声明一个缓冲区并将其传递给控制台读取例程,以便将字符放在那里。其次,要比较字符串,您需要按字符执行该字符 - 字符串不是整数。因此,循环是必要的。阅读这些内容。

第三,你真的需要告诉每个人你的操作系统是什么。控制台I / O的细节取决于此。在Linux上,它是系统调用。在Windows上,它是Win32 API。