📄 sacm_dvr1600_user_c.asm
字号:
R1=[_RECORD_SA] // QImode move
R2=[_RECORD_SA+1] // QImode move
R3=12 // QImode move
[SP--]=R3 // QImode move
push R1,R2 to [sp] // pushhi
call __rshu2 // call with return value
SP = SP + 3 //SP
R3=R1 // QImode move
[BP]=R3 // QImode move
L9:
R3=[BP]
R4=0
//split [bp+2], R3
[bp+2]=R3 // QImode move
[bp+3]=R4 // QImode move
//split R1, [_RECORD_EA]
R1=[_RECORD_EA] // QImode move
R2=[_RECORD_EA+1] // QImode move
R3=12 // QImode move
[SP--]=R3 // QImode move
push R1,R2 to [sp] // pushhi
call __rshu2 // call with return value
SP = SP + 3 //SP
//split R3, [bp+2]
R3=[bp+2] // QImode move
R4=[bp+3] // QImode move
CMP R4,R2 // HImode 1st compare
JA L14 // HImode LEU
NSJNZ L12
CMP R3,R1
NSJNA L12
L14:
pc=L10 // Indirect jump
L12:
.debug
.dw '.stabn 0x44,0,66,',0,0
.dd LM22-_USER_DVR1600_SaveResource_Init
.dw 0x0d,0x0a
.code
LM22:
R1=[BP] // QImode move
[SP--]=R1 // QImode move
call _ERASE_ST39VF040_Sector // call without return value
SP = SP + 1 //SP
.debug
.dw '.stabn 0x44,0,67,',0,0
.dd LM23-_USER_DVR1600_SaveResource_Init
.dw 0x0d,0x0a
.code
LM23:
R1=1 // QImode move
[28690]=R1 // QImode move
.debug
.dw '.stabn 0x44,0,64,',0,0
.dd LM24-_USER_DVR1600_SaveResource_Init
.dw 0x0d,0x0a
.code
LM24:
L11:
R1=[BP] // QImode move
R2=R1+1
[BP]=R2 // QImode move
pc=L9 // Indirect jump
L10:
.debug
.dw '.stabn 0x44,0,69,',0,0
.dd LM25-_USER_DVR1600_SaveResource_Init
.dw 0x0d,0x0a
.code
LM25:
//split R1, [_RECORD_SA]
R1=[_RECORD_SA] // QImode move
R2=[_RECORD_SA+1] // QImode move
R3=R1+4 // HImode RD=RS+#IMM16
R4=R2+0, Carry
//split [_ResAddr], R3
[_ResAddr]=R3 // QImode move
[_ResAddr+1]=R4 // QImode move
.debug
.dw '.stabn 0x44,0,70,',0,0
.dd LM26-_USER_DVR1600_SaveResource_Init
.dw 0x0d,0x0a
.code
LM26:
LBE2:
.debug
.dw '.stabn 0x44,0,70,',0,0
.dd LM27-_USER_DVR1600_SaveResource_Init
.dw 0x0d,0x0a
.code
LM27:
L8:
sp+=4
pop bp from [sp]
retf
.endp // end of USER_DVR1600_SaveResource_Init
.debug
.dw '.stabs "UserParam:p4",160,0,0,7',0x0d,0x0a
.CODE
.debug
.dw '.stabn 0xc0,0,0,',0,0
.dd LBB2-_USER_DVR1600_SaveResource_Init
.dw 0x0d,0x0a
.code
.debug
.dw '.stabs "Sector:4",128,0,0,0',0x0d,0x0a
.CODE
.debug
.dw '.stabn 0xe0,0,0,',0,0
.dd LBE2-_USER_DVR1600_SaveResource_Init
.dw 0x0d,0x0a
.code
.debug
.dw '.stabf ',0,0
.dd LME3-_USER_DVR1600_SaveResource_Init
.dw 0x0d,0x0a
.code
LME3:
.code
.debug
.dw '.stabs "USER_DVR1600_SaveResource:F19",36,0,0,',0,0,offset _USER_DVR1600_SaveResource,seg _USER_DVR1600_SaveResource,0x0d,0x0a
.CODE
.public _USER_DVR1600_SaveResource
_USER_DVR1600_SaveResource: .proc
.debug
.dw '.stabn 0x44,0,80,',0,0
.dd LM28-_USER_DVR1600_SaveResource
.dw 0x0d,0x0a
.code
LM28:
// 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,81,',0,0
.dd LM29-_USER_DVR1600_SaveResource
.dw 0x0d,0x0a
.code
LM29:
L16:
R1=[BP] // QImode move
R3=[BP] // QImode move
R2=R3+1
R3=[BP] // QImode move
R2=[BP] // QImode move
R1=R2+1
R2=[BP] // QImode move
R2=[BP] // QImode move
R3=R2+1
R2=R3 // QImode move
R4=[R2] // QImode move
R2=R4+(-1)
R3=R2 // QImode move
R2=R1 // QImode move
[R2]=R3 // QImode move
CMP R3,(-1) // QImode compare
NSJNZ L18 //QImode NE
pc=L17 // Indirect jump
L18:
.debug
.dw '.stabn 0x44,0,83,',0,0
.dd LM30-_USER_DVR1600_SaveResource
.dw 0x0d,0x0a
.code
LM30:
R3=[BP] // QImode move
R1=[R3] // QImode move
R3=R1 // QImode move
R2=[R3] // QImode move
[SP--]=R2 // QImode move
R1=R1+1
R2=[BP] // QImode move
[R2]=R1 // QImode move
//split R1, [_ResAddr]
R1=[_ResAddr] // QImode move
R2=[_ResAddr+1] // QImode move
push R1,R2 to [sp] // pushhi
call _Write_ST39VF040_One_Word // call without return value
SP = SP + 3 //SP
.debug
.dw '.stabn 0x44,0,84,',0,0
.dd LM31-_USER_DVR1600_SaveResource
.dw 0x0d,0x0a
.code
LM31:
//split R1, [_ResAddr]
R1=[_ResAddr] // QImode move
R2=[_ResAddr+1] // QImode move
R3=R1+2 // HImode RD=RS+#IMM16
R4=R2+0, Carry
//split [_ResAddr], R3
[_ResAddr]=R3 // QImode move
[_ResAddr+1]=R4 // QImode move
.debug
.dw '.stabn 0x44,0,85,',0,0
.dd LM32-_USER_DVR1600_SaveResource
.dw 0x0d,0x0a
.code
LM32:
//split R1, [_ResAddr]
R1=[_ResAddr] // QImode move
R2=[_ResAddr+1] // QImode move
//split R3, [_RECORD_EA]
R3=[_RECORD_EA] // QImode move
R4=[_RECORD_EA+1] // QImode move
CMP R2,R4 // HImode 1st compare
JA L22 // HImode LEU
NSJNZ L19
CMP R1,R3
NSJNA L19
L22:
.debug
.dw '.stabn 0x44,0,87,',0,0
.dd LM33-_USER_DVR1600_SaveResource
.dw 0x0d,0x0a
.code
LM33:
call _SACM_DVR1600_Stop // call without return value
.debug
.dw '.stabn 0x44,0,88,',0,0
.dd LM34-_USER_DVR1600_SaveResource
.dw 0x0d,0x0a
.code
LM34:
pc=L17 // Indirect jump
L19:
.debug
.dw '.stabn 0x44,0,90,',0,0
.dd LM35-_USER_DVR1600_SaveResource
.dw 0x0d,0x0a
.code
LM35:
pc=L16 // Indirect jump
L17:
.debug
.dw '.stabn 0x44,0,91,',0,0
.dd LM36-_USER_DVR1600_SaveResource
.dw 0x0d,0x0a
.code
LM36:
.debug
.dw '.stabn 0x44,0,91,',0,0
.dd LM37-_USER_DVR1600_SaveResource
.dw 0x0d,0x0a
.code
LM37:
L15:
sp+=1
pop bp from [sp]
retf
.endp // end of USER_DVR1600_SaveResource
.debug
.dw '.stabs "p_Buf:p20",160,0,0,4',0x0d,0x0a
.CODE
.debug
.dw '.stabs "Words:p4",160,0,0,5',0x0d,0x0a
.CODE
.debug
.dw '.stabf ',0,0
.dd LME4-_USER_DVR1600_SaveResource
.dw 0x0d,0x0a
.code
LME4:
.code
.debug
.dw '.stabs "USER_DVR1600_SaveResource_End:F19",36,0,0,',0,0,offset _USER_DVR1600_SaveResource_End,seg _USER_DVR1600_SaveResource_End,0x0d,0x0a
.CODE
.public _USER_DVR1600_SaveResource_End
_USER_DVR1600_SaveResource_End: .proc
.debug
.dw '.stabn 0x44,0,100,',0,0
.dd LM38-_USER_DVR1600_SaveResource_End
.dw 0x0d,0x0a
.code
LM38:
// total=3, vars=3
// frame_pointer_needed: 1
push bp to [sp]
sp-=3
bp=sp+1
R1=BP+6
[bp+2]=R1 // QImode move
.debug
.dw '.stabn 0x44,0,101,',0,0
.dd LM39-_USER_DVR1600_SaveResource_End
.dw 0x0d,0x0a
.code
LM39:
LBB3:
.debug
.dw '.stabn 0x44,0,102,',0,0
.dd LM40-_USER_DVR1600_SaveResource_End
.dw 0x0d,0x0a
.code
LM40:
//split R1, [_ResAddr]
R1=[_ResAddr] // QImode move
R2=[_ResAddr+1] // QImode move
//split R3, R1
R3=R1 // QImode move
R4=R2 // QImode move
R3-=[_RECORD_SA] // HImode RD-=[#IM16]
R4-=[_RECORD_SA+1], Carry
//split [BP], R3
[BP]=R3 // QImode move
[bp+1]=R4 // QImode move
.debug
.dw '.stabn 0x44,0,103,',0,0
.dd LM41-_USER_DVR1600_SaveResource_End
.dw 0x0d,0x0a
.code
LM41:
R1=[BP] // QImode move
[SP--]=R1 // QImode move
//split R1, [_RECORD_SA]
R1=[_RECORD_SA] // QImode move
R2=[_RECORD_SA+1] // QImode move
push R1,R2 to [sp] // pushhi
call _Write_ST39VF040_One_Word // call without return value
SP = SP + 3 //SP
.debug
.dw '.stabn 0x44,0,104,',0,0
.dd LM42-_USER_DVR1600_SaveResource_End
.dw 0x0d,0x0a
.code
LM42:
//split R3, [BP]
R3=[BP] // QImode move
R4=[bp+1] // QImode move
R1 = R4 //special case for logical right shift 16 bits
R2 = 0
R3=R1 // QImode move
[SP--]=R3 // QImode move
//split R3, [_RECORD_SA]
R3=[_RECORD_SA] // QImode move
R4=[_RECORD_SA+1] // QImode move
R1=R3+2 // HImode RD=RS+#IMM16
R2=R4+0, Carry
push R1,R2 to [sp] // pushhi
call _Write_ST39VF040_One_Word // call without return value
SP = SP + 3 //SP
.debug
.dw '.stabn 0x44,0,105,',0,0
.dd LM43-_USER_DVR1600_SaveResource_End
.dw 0x0d,0x0a
.code
LM43:
LBE3:
.debug
.dw '.stabn 0x44,0,105,',0,0
.dd LM44-_USER_DVR1600_SaveResource_End
.dw 0x0d,0x0a
.code
LM44:
L23:
sp+=3
pop bp from [sp]
retf
.endp // end of USER_DVR1600_SaveResource_End
.debug
.dw '.stabn 0xc0,0,0,',0,0
.dd LBB3-_USER_DVR1600_SaveResource_End
.dw 0x0d,0x0a
.code
.debug
.dw '.stabs "ResSize:5",128,0,0,0',0x0d,0x0a
.CODE
.debug
.dw '.stabn 0xe0,0,0,',0,0
.dd LBE3-_USER_DVR1600_SaveResource_End
.dw 0x0d,0x0a
.code
.debug
.dw '.stabf ',0,0
.dd LME5-_USER_DVR1600_SaveResource_End
.dw 0x0d,0x0a
.code
LME5:
.iram
.public _ResAddr
_ResAddr:
.dw 2 dup(0)
.external _SACM_DVR1600_Stop
.external _Write_ST39VF040_One_Word
.external _ERASE_ST39VF040_Sector
.external _Read_ST39VF040_One_Word
.external __rshu2
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -