Linux x86 ASM – 获取用户输入

发布时间:2020-10-17 发布网站:编程之家
编程之家收集整理的这篇文章主要介绍了Linux x86 ASM – 获取用户输入编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
希望这是一个简单的问题:

首先,我想知道是否有人知道如何在Linux上使用x86 NASM语法汇编来获取用户输入.现在,我有:

section .data
    greet:       db 'Hello!',0Ah,'What is your name?',0Ah  ;simple greeting
    greetL:      equ $-greet                                  ;greet length
    colorQ:      db 'What is your favorite color?'            ;color question
    colorL:      equ $-colorQ                                 ;colorQ length
    suprise1:    db 'No way '                               
    suprise1L    equ $-suprise1
    suprise3:    db ' is my favorite color,too!',0Ah

section .bss 
    name:        resb 20                                      ;user's name
    color:       resb 15                                      ;user's color

section .text
    global _start
_start:

    greeting:
         mov eax,4
         mov ebx,1
         mov ecx,greet
         mov edx,greetL
         int 80                                               ;print greet

    getname:
         mov eax,3
         mov ebx,0
         mov ecx,name
         mov edx,20
         int 80                                               ;get name

    askcolor:
         ;asks the user's favorite color using colorQ

    getcolor: 
         mov eax,20
         int 80

    thesuprise:
         mov eax,suprise1
         mov edx,suprise1L
         int 80 

         mov eax,20
         int 80 

         ;write the color

         ;write the "suprise" 3

         mov eax,1
         mov ebx,0
         int 80

所以它的作用是要求一个名字和颜色,然后说:“没办法 – 名字 – – 颜色 – 也是我最喜欢的颜色.

我需要帮助的是如何找到用户输入上面的“名称”和“颜色”变量多长时间.否则,我之间会得到一堆长而讨厌的空间,因为我只知道它们的最大尺寸是我之前声明的.

感谢您的帮助.

解决方法

read系统调用返回eax寄存器中读取的字节数.如果这个数字是< 0,有某种读取错误.

总结

以上是编程之家为你收集整理的Linux x86 ASM – 获取用户输入全部内容,希望文章能够帮你解决Linux x86 ASM – 获取用户输入所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入编程之家官方QQ群:1065694478