【发布时间】:2023-01-09 18:56:12
【问题描述】:
我正在为 MIPS 程序集分配作业,这是我第一次发布到 stackoverflow,目前我被困在一个部分,我必须将字符串输入数组,然后在输入换行符“\n”时终止输入 我正在使用内存映射 I/O 和轮询。
。数据 数组:.word 0:10 .globl 主 。文本 主要的: la $s2,数组 li $t0, 0xffff0000 # 键盘控制寄存器地址 li $t1, 0 # 初始化 wait_counter = 0 李 $s0,10 李 $s1,0 等待键盘: lw $t2, ($t0) # 读取键盘控制寄存器 andi $t2, $t2, 1 # 提取就绪位 addiu $t1, $t1, 1 # wait_counter++(计算迭代次数) beqz $t2, wait_keyboard # 未就绪时循环返回 lw $a0, 4($t0) # 从键盘获取字符 阿迪 $s1,$s1,1 李$v0,11 系统调用 sw $a0,($s2) 阿迪 $s2,$s2,4
beq $a0,'\n',end
bne $s1,$s0,wait_keyboard
结尾:
#End Program
li $v0,10
syscall
如您所见,我正在使用 beq $a0,'\n',end 指令检查换行符,该指令将在我输入换行符后结束循环。但是,当我输入换行符时,这不起作用一些原因。如果你们能告诉我我在这段代码中做错了什么,我将不胜感激。
我只需要知道如何使用内存映射 I/O 和轮询检查输入中的换行符。
【问题讨论】:
标签: arrays assembly memory input mips