Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly QTSpim中的程序集代码未正确接受用户输入_Assembly_Mips_Qtspim - Fatal编程技术网

Assembly QTSpim中的程序集代码未正确接受用户输入

Assembly QTSpim中的程序集代码未正确接受用户输入,assembly,mips,qtspim,Assembly,Mips,Qtspim,我正在为我的汇编语言类编写一个代码,它接受用户输入并将其存储在内存中,然后为用户再次打印出来。我不知道问题出在哪里,但每当我调用系统调用代码来读取用户输入时,它总是跳过前两个字母。下面是我的代码 .data myname: .asciiz "Please Type Your Name:" ram1: .word 4 ram2: .word 4 blank: .asciiz "\n" .text .globl main main: li $v0, 4 #lo

我正在为我的汇编语言类编写一个代码,它接受用户输入并将其存储在内存中,然后为用户再次打印出来。我不知道问题出在哪里,但每当我调用系统调用代码来读取用户输入时,它总是跳过前两个字母。下面是我的代码

.data

myname: .asciiz "Please Type Your Name:"
ram1:   .word 4
ram2:   .word 4
blank:  .asciiz "\n"

.text
.globl main

main:

    li $v0, 4        #loads the system call code to print a string
    la $a0, myname
    syscall

    la $a0, ram1
    li $a1, 20
    li $v0, 8        #this is the opcode that reads a user input in the console
    syscall

    li   $v0, 4      #loads the call code to print a string
    la   $a0, blank
    andi $a1, $a1, 0
    syscall
    syscall
    syscall

    la $a0, myname
    syscall
    la $a0, ram1
    syscall
我知道系统调用代码8需要2个参数才能正常运行,这是我添加的。如有任何见解,将不胜感激


干杯

为什么只为缓冲区保留一个字(四个字节)?很多人的名字都比这个长。为什么在你的程序中的一个点上有三个
syscall
指令在一行中?我为我的缓冲区保留了8个字节,这就是为什么有ram1和ram2。三条系统调用指令用于打印用户输入和最终输出之间的空格。这是本作业说明的一部分。