[lc3]汇编实现分段函数

Piecewise function

Purpose:用汇编语言实现分段函数(如下)的计算并保存结果

Program input: 60integers which are in [0, 100]. The input list is stored in 60 consecutivememory locations -- one score per location -- starting at address x3200. Thelast score is at location x323B.

Program output: The results of f(x) for all 60 x values. The resultsshould be stored in consecutive memory locations -- one result per location --starting at address x3300.

 

Principles:1.令输入的数据减去3或10,然后依靠BR指令实现比较分段的操作

2.函数部分的实现主要是x^3-x相对复杂,本实验采用的累加的方法加以实现,将x累加x次得到x^2,然后对x累加x^2-1次,其中迭代累加也是依赖BR指令得以实现

3.本次实验采用汇编语言,编写完成后生成.asm文件继而生成目标文件,在LC-3 simulator上运行验证

 

Procedure:

       代码分析

 

 

 

.ORIG x3000
		LD R2,INPUT		;R2指向待输入数据地址
		LD R3,OUTPUT	;R2指向数据输出地址
	
AGAIN	LD R5,FLAG		;load结束位置与R2比较,判断结束与否
		NOT R5,R5		;R5寄存器是临时数据的存储,其内容的变化在后面当关注
		ADD R5,R5,#1
		ADD R5,R2,R5
		BRz OVER		;跳转到程序over处
	
	
		LDR R4,R2,#0		;将输入数据存在R4中
		ADD R2,R2,#1	;R2指向下一个输入位置
	
		ADD R5,R4,#-3	
		BRzp TWO		;若R4内容小于3则跳转至函数分段2,否则继续执行

		AND R5,R5,#0
		ADD R5,R5,#2
		STR R5,R3,#0		
		ADD R3,R3,#1	;分段1的功能,结果为2,保存在R3所指,R3自增
		BRnzp AGAIN		;处理了一个输入,无条件跳转,实现循环

TWO	ADD R5,R4,#-10
		BRp THREE		;x>10则跳转至函数分段3,否则继续执行
	
		AND R6,R6,#0
		ADD R6,R4,#0
		AND R5,R5,#0	;清零操作,R6用作迭代计数,R5保存结果
AGAINSE ADD R5,R5,R4
		ADD R6,R6,#-1
		BRp AGAINSE		;循环结束后R5内容为x^2

		ADD R6,R5,#-1
		AND R5,R5,#0	
AGAINTH ADD R5,R5,R4
		ADD R6,R6,#-1
		BRp AGAINTH	;累加得到x^3-x
		STR R5,R3,#0
		ADD R3,R3,#1	;结果保存在R3所指,R3自增
		BRnzp AGAIN		;处理了一个输入,无条件跳转,实现循环

THREE	ADD R5,R4,#1	;分段3的功能
		STR R5,R3,#0
		ADD R3,R3,#1
		BRnzp AGAIN	

OVER	HALT

INPUT  .FILL X3200
OUTPUT .FILL X3300
FLAG   .FILL X323C
        .END

Result:

结果测试

输入数据如下,未显示部分均为x0000

得到结果如下(未显示部分均为x0002),检验可知与从分段函数预测的结果一致

 

由于共有60个数据输入,输出结果应存在x3300~x333B,下图为x333B的截图,发现输出确实在此位置停止

 

综上初步判断实验结果正确

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值