⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 distance.asm

📁 此程序为出租车计价器
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	call __divf2	// call with return value
	SP=SP+4
	push R1,R2 to [sp]	// pushhf
	R1=[bp+1]	// HFmode RD=[BP+#IM6]
	R2=[bp+2]
	push R1,R2 to [sp]	// pushhf
	call __addf2	// call with return value
	SP=SP+4
	[bp+1]=R1	// HFmode [BP+#IM6]=RS
	[bp+2]=R2
	R3=[bp+1]	// HFmode RD=[BP+#IM6]
	R4=[bp+2]
	R1=R3	// HFmode register to register move
	R2=R4
	pc=L6	// Indirect jump
.debug
	.dw '.stabn 0x44,0,87,',0,0
	.dd LM33-_Dis_GetDistance
	.dw 0x0d,0x0a
.code
LM33:
.debug
	.dw '.stabn 0x44,0,87,',0,0
	.dd LM34-_Dis_GetDistance
	.dw 0x0d,0x0a
.code
LM34:
L6:

	sp+=5
	pop bp from [sp]
	retf
	.endp	// end of Dis_GetDistance

.debug
	.dw '.stabf ',0,0
	.dd LME5-_Dis_GetDistance
	.dw 0x0d,0x0a
.code
LME5:
.code
.debug
	.dw '.stabs "Dis_GetSpeed:F4",36,0,0,',0,0,offset _Dis_GetSpeed,seg _Dis_GetSpeed,0x0d,0x0a
.CODE
.public _Dis_GetSpeed
_Dis_GetSpeed:	.proc
.debug
	.dw '.stabn 0x44,0,96,',0,0
	.dd LM35-_Dis_GetSpeed
	.dw 0x0d,0x0a
.code
LM35:
	// total=0, vars=0
	// frame_pointer_needed: 1
	push bp to [sp]
	bp=sp+1

	R2=BP+3
.debug
	.dw '.stabn 0x44,0,97,',0,0
	.dd LM36-_Dis_GetSpeed
	.dw 0x0d,0x0a
.code
LM36:
	R3=[_uiSpeed]	// QImode move
	R1=R3	// QImode move
	pc=L7	// Indirect jump
.debug
	.dw '.stabn 0x44,0,98,',0,0
	.dd LM37-_Dis_GetSpeed
	.dw 0x0d,0x0a
.code
LM37:
.debug
	.dw '.stabn 0x44,0,98,',0,0
	.dd LM38-_Dis_GetSpeed
	.dw 0x0d,0x0a
.code
LM38:
L7:

	pop bp from [sp]
	retf
	.endp	// end of Dis_GetSpeed

.debug
	.dw '.stabf ',0,0
	.dd LME6-_Dis_GetSpeed
	.dw 0x0d,0x0a
.code
LME6:
.code
.debug
	.dw '.stabs "Dis_GetRunTime:F5",36,0,0,',0,0,offset _Dis_GetRunTime,seg _Dis_GetRunTime,0x0d,0x0a
.CODE
.public _Dis_GetRunTime
_Dis_GetRunTime:	.proc
.debug
	.dw '.stabn 0x44,0,107,',0,0
	.dd LM39-_Dis_GetRunTime
	.dw 0x0d,0x0a
.code
LM39:
	// total=1, vars=1
	// frame_pointer_needed: 1
	push bp to [sp]
	sp-=1
	bp=sp+1

	R1=BP+4
	[BP]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,108,',0,0
	.dd LM40-_Dis_GetRunTime
	.dw 0x0d,0x0a
.code
LM40:
	R1=0	// QImode move
	[SP--]=R1	// QImode move
	call _Cal_ReadTimer	// call with return value
	SP=SP+1
	R3=1	// QImode move
	[SP--]=R3	// QImode move
	push R1,R2 to [sp]	// pushhi
	call __rshu2	// call with return value
	SP=SP+3
	R3=R1	// HImode register to register move
	R4=R2
	R1=R3	// HImode register to register move
	R2=R4
	pc=L8	// Indirect jump
.debug
	.dw '.stabn 0x44,0,109,',0,0
	.dd LM41-_Dis_GetRunTime
	.dw 0x0d,0x0a
.code
LM41:
.debug
	.dw '.stabn 0x44,0,109,',0,0
	.dd LM42-_Dis_GetRunTime
	.dw 0x0d,0x0a
.code
LM42:
L8:

	sp+=1
	pop bp from [sp]
	retf
	.endp	// end of Dis_GetRunTime

.debug
	.dw '.stabf ',0,0
	.dd LME7-_Dis_GetRunTime
	.dw 0x0d,0x0a
.code
LME7:
.code
.debug
	.dw '.stabs "Dis_In_IRQ_DistanceServiceLoop:F19",36,0,0,',0,0,offset _Dis_In_IRQ_DistanceServiceLoop,seg _Dis_In_IRQ_DistanceServiceLoop,0x0d,0x0a
.CODE
.public _Dis_In_IRQ_DistanceServiceLoop
_Dis_In_IRQ_DistanceServiceLoop:	.proc
.debug
	.dw '.stabn 0x44,0,118,',0,0
	.dd LM43-_Dis_In_IRQ_DistanceServiceLoop
	.dw 0x0d,0x0a
.code
LM43:
	// total=4, vars=4
	// frame_pointer_needed: 1
	push bp to [sp]
	sp-=4
	bp=sp+1

	R1=BP+7
.debug
	.dw '.stabn 0x44,0,119,',0,0
	.dd LM44-_Dis_In_IRQ_DistanceServiceLoop
	.dw 0x0d,0x0a
.code
LM44:
	R3=[_ulPulseForSpeed]	// HImode RD=[Label]
	R4=[_ulPulseForSpeed+1]
	[bp+2]=R3	// HImode [BP+#IM6]=RS
	[bp+3]=R4
	R3=[bp+2]	// HImode RD=[BP+#IM6]
	R4=[bp+3]
	R3=R3+1	// HImode RD=RS+#IMM16
	R4=R4+0, Carry
	[BP++]=R3	// [RD]=RS HImode, RD!=RS+1
	[BP--]=R4
	R3=[BP++]	// RD=[RS] HImode, RD!=RS
	R4=[BP--]
	[_ulPulseForSpeed]=R3	// HImode [Label]=RS
	[_ulPulseForSpeed+1]=R4
.debug
	.dw '.stabn 0x44,0,120,',0,0
	.dd LM45-_Dis_In_IRQ_DistanceServiceLoop
	.dw 0x0d,0x0a
.code
LM45:
	R3=[_uiPulseNum]	// QImode move
	R2=R3+1
	R3=R2	// QImode move
	[_uiPulseNum]=R3	// QImode move
	CMP R3,[_c_uiPulsePerKM]	// QImode compare
	JZ L11	// QImode NE
	PC=L10
L11:
.debug
	.dw '.stabn 0x44,0,122,',0,0
	.dd LM46-_Dis_In_IRQ_DistanceServiceLoop
	.dw 0x0d,0x0a
.code
LM46:
	R2=0	// QImode move
	[_uiPulseNum]=R2	// QImode move
.debug
	.dw '.stabn 0x44,0,123,',0,0
	.dd LM47-_Dis_In_IRQ_DistanceServiceLoop
	.dw 0x0d,0x0a
.code
LM47:
	R2=[_uiDistance]	// QImode move
	R3=1	// QImode move
	[_uiDistance]=R2+R3
L10:
.debug
	.dw '.stabn 0x44,0,125,',0,0
	.dd LM48-_Dis_In_IRQ_DistanceServiceLoop
	.dw 0x0d,0x0a
.code
LM48:
.debug
	.dw '.stabn 0x44,0,125,',0,0
	.dd LM49-_Dis_In_IRQ_DistanceServiceLoop
	.dw 0x0d,0x0a
.code
LM49:
L9:

	sp+=4
	pop bp from [sp]
	retf
	.endp	// end of Dis_In_IRQ_DistanceServiceLoop

.debug
	.dw '.stabf ',0,0
	.dd LME8-_Dis_In_IRQ_DistanceServiceLoop
	.dw 0x0d,0x0a
.code
LME8:
.code
.debug
	.dw '.stabs "Dis_In_IRQ_SpeedServiceLoop:F19",36,0,0,',0,0,offset _Dis_In_IRQ_SpeedServiceLoop,seg _Dis_In_IRQ_SpeedServiceLoop,0x0d,0x0a
.CODE
.public _Dis_In_IRQ_SpeedServiceLoop
_Dis_In_IRQ_SpeedServiceLoop:	.proc
.debug
	.dw '.stabn 0x44,0,134,',0,0
	.dd LM50-_Dis_In_IRQ_SpeedServiceLoop
	.dw 0x0d,0x0a
.code
LM50:
	// total=9, vars=9
	// frame_pointer_needed: 1
	push bp to [sp]
	sp-=9
	bp=sp+1

	R1=BP+12
	[BP]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,135,',0,0
	.dd LM51-_Dis_In_IRQ_SpeedServiceLoop
	.dw 0x0d,0x0a
.code
LM51:
	R3=[_ulPulseForSpeed]	// HImode RD=[Label]
	R4=[_ulPulseForSpeed+1]
	[bp+1]=R3	// HImode [BP+#IM6]=RS
	[bp+2]=R4
	R3=[bp+1]	// HImode RD=[BP+#IM6]
	R4=[bp+2]
	R1=R3	// HImode register to register move
	R2=R4
	R3=3	// QImode move
	[SP--]=R3	// QImode move
	push R1,R2 to [sp]	// pushhi
	call __lshiu2	// call with return value
	SP=SP+3
	[bp+7]=R1	// HImode [BP+#IM6]=RS
	[bp+8]=R2
	R4=[bp+7]	// QImode move
	[bp+3]=R4	// QImode move
	R3=[bp+3]	// QImode move
	R4=[bp+1]	// QImode move
	R3-=R4
	[bp+3]=R3	// QImode move
	R1=[bp+3]	// QImode move
	R3=1	// QImode move
	[bp+4]=R3	// QImode move
	R4=[bp+3]	// QImode move
	R3=[bp+7]	// QImode move
	CMP R4,R3	// QImode compare
	JNA L15	// QImode GTU
	PC=L13
L15:
	R4=0	// QImode move
	[bp+4]=R4	// QImode move
L13:
	R4=[bp+8]	// QImode move
	R3=R4	// QImode move
	R4=[bp+2]	// QImode move
	R3-=R4
	R2=R3	// QImode move
	R4=[bp+4]	// QImode move
	R3-=R4
	R2=R3	// QImode move
	R3=5	// QImode move
	[SP--]=R3	// QImode move
	push R1,R2 to [sp]	// pushhi
	call __lshiu2	// call with return value
	SP=SP+3
	[bp+7]=R1	// HImode [BP+#IM6]=RS
	[bp+8]=R2
	R3=[bp+7]	// QImode move
	[bp+5]=R3	// QImode move
	R4=[bp+5]	// QImode move
	R3=[bp+1]	// QImode move
	R4+=R3	// addqi3_r0r
	[bp+5]=R4	// QImode move
	R1=[bp+5]	// QImode move
	R4=1	// QImode move
	[bp+6]=R4	// QImode move
	R3=[bp+5]	// QImode move
	R4=[bp+7]	// QImode move
	CMP R3,R4	// QImode compare
	JNB L16	// QImode LTU
	PC=L14
L16:
	R3=0	// QImode move
	[bp+6]=R3	// QImode move
L14:
	R4=[bp+8]	// QImode move
	R3=R4	// QImode move
	R4=[bp+2]	// QImode move
	R3+=R4	// addqi3_r0r
	R2=R3	// QImode move
	R4=[bp+6]	// QImode move
	R3+=R4	// addqi3_r0r
	R2=R3	// QImode move
	R3=5	// QImode move
	[SP--]=R3	// QImode move
	push R1,R2 to [sp]	// pushhi
	call __lshiu2	// call with return value
	SP=SP+3
	R3=[_c_uiPulsePerKM]
	R4=0
	push R3,R4 to [sp]	// pushhi
	push R1,R2 to [sp]	// pushhi
	call __divu2	// call with return value
	SP=SP+4
	R3=R1	// QImode move
	[_uiSpeed]=R3	// QImode move
.debug
	.dw '.stabn 0x44,0,136,',0,0
	.dd LM52-_Dis_In_IRQ_SpeedServiceLoop
	.dw 0x0d,0x0a
.code
LM52:
	R1=0	// HImode immediate to register move
	R2=0
	[_ulPulseForSpeed]=R1	// HImode [Label]=RS
	[_ulPulseForSpeed+1]=R2
.debug
	.dw '.stabn 0x44,0,137,',0,0
	.dd LM53-_Dis_In_IRQ_SpeedServiceLoop
	.dw 0x0d,0x0a
.code
LM53:
.debug
	.dw '.stabn 0x44,0,137,',0,0
	.dd LM54-_Dis_In_IRQ_SpeedServiceLoop
	.dw 0x0d,0x0a
.code
LM54:
L12:

	sp+=9
	pop bp from [sp]
	retf
	.endp	// end of Dis_In_IRQ_SpeedServiceLoop

.debug
	.dw '.stabf ',0,0
	.dd LME9-_Dis_In_IRQ_SpeedServiceLoop
	.dw 0x0d,0x0a
.code
LME9:
.debug
	.dw '.stabs "c_uiPulsePerKM:G4",32,0,0,',0,0,offset _c_uiPulsePerKM,seg _c_uiPulsePerKM,0x0d,0x0a
.CODE
.ram
.public _c_uiPulsePerKM
_c_uiPulsePerKM:
	.dw 0
.debug
	.dw '.stabs "uiDistance:G4",32,0,0,',0,0,offset _uiDistance,seg _uiDistance,0x0d,0x0a
.CODE
.ram
.public _uiDistance
_uiDistance:
	.dw 0
.debug
	.dw '.stabs "uiPulseNum:G4",32,0,0,',0,0,offset _uiPulseNum,seg _uiPulseNum,0x0d,0x0a
.CODE
.ram
.public _uiPulseNum
_uiPulseNum:
	.dw 0
.debug
	.dw '.stabs "ulPulseForSpeed:G5",32,0,0,',0,0,offset _ulPulseForSpeed,seg _ulPulseForSpeed,0x0d,0x0a
.CODE
.ram
.public _ulPulseForSpeed
_ulPulseForSpeed:
	.dw 2 dup(0)
.debug
	.dw '.stabs "uiSpeed:G4",32,0,0,',0,0,offset _uiSpeed,seg _uiSpeed,0x0d,0x0a
.CODE
.ram
.public _uiSpeed
_uiSpeed:
	.dw 0
.debug
	.dw '.stabs "ulRunTime:G5",32,0,0,',0,0,offset _ulRunTime,seg _ulRunTime,0x0d,0x0a
.CODE
.ram
.public _ulRunTime
_ulRunTime:
	.dw 2 dup(0)
.external _Cal_ReadTimer
.external _Cal_ClearTimer
.external _ClearINTStatus
.external _Cal_StartTimer
.external _SetINTStatus
.external _C_PulsePerKM
.external __divu2
.external __lshiu2
.external __rshu2
.external __addf2
.external __divf2
.external __cvi2f2
	.end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -