等待按键组装NASM,Linux

时间:2015-08-24 23:35:50

标签: linux assembly nasm x86-64 system-calls

我正在使用x86-64的Assembly中的Hello World工作。

我设法创建了一个按下Enter键时完成的按钮,但是当按下任意键时我必须完成它。

这是等待ENTER键的代码:

mov rax, 0
mov rdi, 0
mov rdx, 1
syscall

我不能使用任何int xh或类似的东西。只有系统调用。

谢谢!

2 个答案:

答案 0 :(得分:3)

我已回答a similar question before,并提供了可直接使用系统调用的C代码,以执行您想要的操作。

以下是该代码到nasm的翻译,略有变化,以反映您只是检查是否按下了任何键,而不是特定的键:

Plane

基本思路是您必须编辑终端设置,阅读字符并重置设置。

答案 1 :(得分:1)

我对Cel Skeggs的答案中的代码做了一些改动。

这是一个完整的程序,可以一次打印一个读取键,然后在ENTER上退出。

@app.route('/trend', methods=['POST', 'GET'])
def run_tasks():
    for i in range(0, 1):
        app.apscheduler.add_job(func=getTrendingEntities, trigger='cron', args=[i], id='j'+str(i), second = 5)

    return "Code run perfect"

@app.route('/loc', methods=['POST', 'GET'])
def getIntentAndSummary(self, request):

    if request.method == "POST":

        reqStr = request.data.decode("utf-8", "strict")
        reqStrArr = reqStr.split()
        reqStr = ' '.join(reqStrArr)
        text_1 = []
        requestBody = json.loads(reqStr)
        if requestBody.get('m') is not None:
                text_1.append(requestBody.get('m'))
        return jsonify(text_1)

if (__name__ == "__main__"):
    app.run(port = 8000)