MMIX编程任务求助:将输入空格替换为换行符
嘿,别慌!离截止还有时间,咱们快速搞定这个空格转换行的问题~
解决MMIX中空格替换为换行的问题
你的需求很明确:读取输入的每个字符并原样返回,但要把所有空格替换成换行符。你的现有代码已经搭好了数据段的基础,接下来只需要在输入输出的循环里加个简单的判断逻辑就行。
现有代码补充与修改
我把你给出的代码补全并调整,核心是在读取每个字节后判断是否为空格,再决定输出内容:
LOC Data_Segment % 设置数据存储位置 GREG @ % 预留一个全局寄存器 Wordbuffer BYTE 0 % 存储输入字符的字节变量 LOC Code_Segment % 切换到代码执行段 Main: GETC Wordbuffer % 从输入读取一个字符到Wordbuffer CMP $0, Wordbuffer % 判断是否到达输入结束(EOF,值为0) BEQ Exit % 如果是EOF,跳转到退出逻辑 CMP $32, Wordbuffer % 判断当前字符是否是空格(ASCII码为32) BEQ PrintNewline % 如果是空格,跳转到输出换行的分支 PUTC Wordbuffer % 非空格字符直接输出原内容 JMP Main % 回到循环继续读取下一个字符 PrintNewline: PUTC $10 % 输出换行符(ASCII码为10) JMP Main % 回到读取循环 Exit: HALT % 程序终止
关键逻辑说明
- 循环读取输入:用
GETC逐个抓取输入字符,直到遇到EOF(值为0)才退出循环,确保处理所有输入内容。 - 空格判断分支:通过
CMP指令对比当前字符和空格的ASCII值,相等就跳转到输出换行的代码块。 - 输出处理:非空格字符直接用
PUTC输出,空格则替换成换行符输出,完全符合作业要求。
测试小提示
你可以把这段代码整合到你的现有程序里,用MMIX模拟器测试:比如输入Hello World 123,应该得到这样的输出:
Hello World 123
赶紧试试,祝你顺利交作业!
内容的提问来源于stack exchange,提问作者Sancho Jimenez
相关产品推荐
相关产品推荐

