计算机组成原理-实验六-MIPS汇编器与模拟器实验

本实验要用到汇编器PCSpim,软件我放到百度网盘里面了

链接: https://pan.baidu.com/s/1dtY9xkC9MWD1jVuDkLN4aQ

密码: d9wu

实验要求:

1)编写test.asm文件,在PCSpim中打开它,并使用单步执行和连续执行方式运行该程序,不需要设置为裸机执行方式(Bare Machine)。

test.asm代码

main:		li $v0, 5
			syscall
			move $t0, $v0
			li $v0, 5
			syscall
			move $t1, $v0
			bgt $t0, $t1, t0_bigger
			move $t2, $t1
			b endif
t0_bigger:	move $t2, $t0
endif:		move $a0, $t2
			li $v0, 1
			syscall
			jr $ra;

2)编写R_CPU_Test.asm文件,并在PCSpim中单步运行,观察各个寄存器的值是否和预期的一致。注意:为了能正确执行R_CPU_Test.asm程序,要将模拟器设置为裸机执行方式。

R_CPU_Test.asm代码(#预期结果)

nor  $1 ,$0 ,$0 ;	#$1 =FFFF_FFFF  
sltu $2 ,$0 ,$1 ;	#$2 =0000_0001  
add  $3 ,$2 ,$2 ;	#$3 =0000_0002  
add  $4 ,$3 ,$2 ;	#$4 =0000_0003  
add  $5 ,$4 ,$3 ;	#$5 =0000_0005  
add  $6 ,$5 ,$3 ;	#$6 =0000_0007  
sllv $7 ,$6 ,$2 ;	#$7 =0000_000E  
add  $9 ,$5 ,$6 ;	#$9 =0000_000C  
sllv $8 ,$6 ,$9 ;	#$8 =0000_7000  
xor  $9 ,$1 ,$8 ;	#$9 =FFFF_8FFF  
add  $10,$9 ,$1 ;	#$10=FFFF_8FFE  
sub  $11,$8 ,$7 ;	#$11=0000_6FF2  
sub  $12,$7 ,$8 ;	#$12=FFFF_900E  
and  $13,$9 ,$12;	#$13=FFFF_800E  
or   $14,$9 ,$12;	#$14=FFFF_9FFF  
or   $15,$6 ,$7 ;	#$15=0000_000F  
nor  $16,$6 ,$7 ;	#$16=FFFF_FFF0  
add  $17,$7 ,$3 ;	#$17=0000_0010  
sllv $18,$8 ,$17;	#$18=7000_0000  
sllv $19,$3 ,$17;	#$19=0002_0000  
sllv $20,$19,$7 ;	#$20=8000_0000  
add  $21,$20,$1 ;	#$21=7FFF_FFFF  
or   $22,$18,$21;	#$22=7FFF_FFFF  
add  $23,$20,$22;	#$23=FFFF_FFFF  
sub  $24,$20,$22;	#$24=0000_0001  
sub  $25,$22,$20;	#$25=FFFF_FFFF  
xor  $26,$18,$1 ;	#$26=8FFF_FFFF  
sltu $27,$22,$20;	#$27=0000_0001  
sltu $28,$26,$20;	#$28=0000_0000  
add  $29,$22,$2 ;	#$29=8000_0000  
sub  $30,$20,$2 ;	#$30=7FFF_FFFF  
add  $31,$11,$26;	#$30=9000_6FF1  

3)将上述程序的指令代码逐条摘录出来,复制至ROM IP关联文件*.coe中,供后继实验使用。

PCSpim使用教程:



测试结果:

Test.asm装载之后,一直点单步运行,程序要求我们在控制台输入两个数,之后输出结果。


虽然看不懂汇编,根据输入输出,可以猜测,程序的功能就是找出较小数。


R_CPU_Test.asm装载之后,单步运行,发现到了0x00400014就跑不动了。点击go,跳转到0x00400024继续单步运行。发现寄存器结果与预期完全一致。

寄存器状态
寄存器 内容 寄存器 内容 寄存器 内容
$0 0x00000000 $11 0x00006ff2 $22 0x70000000
$1 0xffffffff $12 0xffff900e $23 0xf0000000
$2 0x00000001 $13 0xffff800e $24 0x00000000
$3 0x00000002 $14 0xffff9fff $25 0x00000000
$4 0x00000003 $15 0x0000000f $26 0x3000ff13
$5 0x00000005 $16 0xfffffff0 $27 0xffffffff
$6 0x00000007 $17 0x00000010 $28 0x00000000
$7 0x0000000e $18 0x70000000 $29 0x70000001
$8 0x00007000 $19 0x00020000 $30 0x00000000
$9 0xffff8fff $20 0x80000000 $31 0x30016f05
$10 0xffff8ffe $21 0x00000000    

保存日志文件(Save Log File)


R_CPU_Test.coe机器码

memory_initialization_radix=16;
memory_initialization_vector=00000827 0001102b 00421820 00622020 00832820 00a33020 00463804 00a64820 01264004 
00284826 01215020 01075822 00e86022 012c6824 012c7025 00c77825 00c78027 00e38820 02289004 02239804 00f3a004 
0281a820 0255b025 0296b820 0296c022 02d4c822 0241d026 02d4d82b 0354e02b 02c2e820 0282f022 017af820;
心得体会:
PCSpim这个软件需要一点点时间摸索,其他的事情并不是很难



猜你喜欢

转载自blog.csdn.net/qq_41357569/article/details/80626240