MIPS64--14天从入门到放弃(2)

MIPS64--14天从入门到放弃(2)

      • I/O区域的内存映射
      • 代码实现
      • 结语

上次搞完了简单的 A+B problem,这次来搞一个更加经典的题目,那就是屏幕输出 Hello,World!,这次我们仅需要搞懂MIPS64是如何进行屏幕输出的即可。

I/O区域的内存映射

Addresses of CONTROL and DATA registers
CONTROL: .word32 0x10000
DATA: .word32 0x10008
Set
CONTROL = 1, Set DATA to Unsigned Integer to be output
Set
CONTROL = 2, Set DATA to Signed Integer to be output
Set CONTROL
= 3, Set DATA to Floating Point to be output
Set
CONTROL = 4, Set DATA to address of string to be output
Set
CONTROL = 5, Set DATA+5 to x coordinate, DATA+4 to y coordinate, and DATA to
RGB colour to be output
Set
CONTROL = 6, Clears the terminal screen
Set
CONTROL = 7, Clears the graphics screen
Set CONTROL
= 8, read the DATA (either an integer or a floating-point) from the keyboard
Set
CONTROL = 9, read one byte from DATA, no character echo.

代码实现

我们这次将要使用的是将字符串输出的终端屏幕上去,则只需将Control的值设置为4即可

.data
str: .asciiz "Hello,World!"
CR: .word32 0x10000
DR: .word32 0x10008
.text
main:
LWU R31,CR(R0)
LWU R30,DR(R0)
DADDI R29,R0,4     
DADDI R28,R0,str   
SD R28,(R30)
SD R29,(R31)
halt

SD R28,(R30)
因为我们这次是进行屏幕输出,所以要先将要输出的数据放入到DATA

SD R29,(R31)
然后对Control进行赋值,使其进行字符串输出操作

倘若我们要进行屏幕读取操作,那么就应当反过来,先将Control的值进行修改(从而从屏幕中读取数据存储到DATA中),然后再将DATA中的数据存到所需求的寄存器中。

结语

这操作看似繁琐实则简单,当理解之后多加运用并多观察程序的具体运行方式(按f7)便可从容掌握。

你可能感兴趣的:(实验报告,Mips64,mips)