内容速览
一、实验内容
- 首先将C 代码例子转化为DLX 代码,然后用DLX 代码进行简单的算术运算。
- 提交DLX 代码的汇编文件。
- 依据你自己的汇编文件进行模拟,参考《WinDLX教程》的内容,记录模拟的相关结果。
Tips:其实就是用DLX汇编语言实现加减乘除的运算
二、实验环境
1. Windows XP
2. WINDLX
你的windlx打开应该长这样:
三、实现代码及分析
1、用DLX实现两数相加
输入格式为输出格式为:
输入第一个值:12
输入第二个值:56
和= 68
C代码例子:
void main()
{
unsigned int num1, num2;
scanf("\nEnter the 1st number: %d", &num1);
scanf("\nEnter the 2nd number: %d", &num2);
printf("The sum = %d", num1+num2);
}
改写后的DLX汇编代码 add.s
;add.s
; Program begin at symbol main
; requires module INPUT
; Load two programs (add.s and input.s)
; Note: load add.s first then follow by inputs.
; Execute, press (F5)
;--------------------------------------------------------------------------
.data
Prompta: .asciiz "\nEnter your number_a (> 1): "
Promptb: .asciiz "\nEnter your number_b (> 1): "
PrintFt: .asciiz "The result is: %d"
.align 2
PrintPar: .word PrintFt
PrintSum: .space 4
.text
.global main
main:
addui r1,r0,Prompta ;put a in r1
jal InputUnsigned ;input a
addu r2,r1,r0 ;input a in r2
addui r1,r0,Promptb ;put b in r1
jal InputUnsigned ;input b
addu r1,r2,r1 ;r1=r1+r2
sw PrintSum,r1 ;put r1 in PrintSum
addui