【汇编语言之数据比较的减法运算】

本文探讨了在汇编语言中,特别是在缺乏加减进位指令的情况下,如何通过复杂的指令组合实现运算,以处理声音信号幅度。作者举例说明了在不同情况下的步骤和操作,如R_Temp0与R_Temp2的比较和调整。

一、前言

之所以想写一篇关于汇编的运算,其一是因为网上关于这方面的参考少之又少。其二是因为对于汇编语言涉及到运算方面的话,在处理一些问题的时候相较于C语言难度要大上不少,初学者或者一些入门的程序员在运用上还不太熟悉。特别是当IC的汇编指令缺少加减进位指令时去做运算,一定要理解了指令的用法才能写出来的。

二、参考代码

L_CompStart:
	MOV	A,R_Temp0
	SUB	A,R_Temp2
	JBC	Z
	JMP	L_Step0
	JBC	C
	JMP	L_Step1
	MOV	A,R_Temp2
	SUB	A,R_Temp0
	JBC	C
	JMP	L_Step2
	RET

;R_Temp0 = R_Temp2,则只看低8位
L_Step0:
	CLR	R_TempH
	MOV	A,R_Temp1
	SUB	A,R_Temp3
	JBC	Z
	RET
	JBC	C
	JMP	$+4
	MOV	A,R_Temp3
	SUB	A,R_Temp1
	JBC	C
	MOV	R_TempL,A
	RET

;R_Temp2 > R_Temp0
L_Step1:
	MOV	A,R_Temp1
	SUB	A,R_Temp3
	MOV	R_TempL,A
	MOV	A,@0
	JBS	C
	MOV	A,@1
	SUB	R_Temp2,A
	
	MOV	A,R_Temp0
	SUB	A,R_Temp2
	MOV	R_TempH,A
	RET

;R_Temp0 > R_Temp2
L_Step2:
	MOV	A,R_Temp3
	SUB	A,R_Temp1
	MOV	R_TempL,A
	MOV	A,@0
	JBS	C
	MOV	A,@1
	SUB	R_Temp0,A
	
	MOV	A,R_Temp2
	SUB	A,R_Temp0
	MOV	R_TempH,A
	RET
	
	


总结

以上例子我通常运用在对声音信号的幅度处理上,通过对比2次或者多次数据的差值大小来确定当前是否处于稳定态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值