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

📄 sio.asm

📁 日立单片机H8S2144例程.包括AD,DA等程序(用于光源)但对于H8S2144使用者来说有很大的帮助.
💻 ASM
📖 第 1 页 / 共 4 页
字号:
??VAR ??SINT ??SYMBOL(???ch) ??OFFSET(8)
??VAR ??POINTER ??UCHAR ??SYMBOL(???data) ??OFFSET(10)
??VAR ??UINT ??SYMBOL(???size) ??OFFSET(14)
??FUNCEND
??BEGINBLOCK(739)
??VAR ??UINT ??SYMBOL(???c) ??OFFSET(-2)
??CLINE 742
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	SHLL.L	ER0
	MOV.L	#_rs_send_c,ER1
	ADD.L	ER0,ER1
	MOV.W	@ER1,R0
	MOV.W	@(+14,ER6),R1
	CMP.W	R0,R1
	BHI	?00044:8
	MOV.W	@(+14,ER6),R0
	OR.W	R0,R0
	BNE	?00043:8
?00044:
??BEGINBLOCK(743)
??CLINE 744
	XOR.W	R0,R0
	JMP	@_rs_putn_end
??ENDBLOCK(745)
?00043:
??CLINE 747
	XOR.W	R0,R0
	MOV.W	R0,@(-2,ER6)
	BRA	?00046:8
?00045:
	MOV.W	@(-2,ER6),R0
	INC.W	#H'0001,R0
	MOV.W	R0,@(-2,ER6)
?00046:
	MOV.W	@(-2,ER6),R0
	MOV.W	@(+14,ER6),R1
	CMP.W	R1,R0
	BCC	?00047
??BEGINBLOCK(748)
??CLINE 749
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	MOV.L	ER0,ER1
	SHLL.L	ER1
	MOV.L	#_rs_send_wp,ER2
	ADD.L	ER1,ER2
	MOV.W	@ER2,R1
	EXTU.L	ER1
	MOV.L	#H'00000400,ER2
	PUSH.L	ER0
	PUSH.L	ER2
	JSR	@__l_mul
	ADDS.L	#H'00000004,ER7
	POP.L	ER0
	MOV.L	#_rs_send_buf,ER3
	ADD.L	ER0,ER3
	ADD.L	ER1,ER3
	MOV.L	@(+10,ER6),ER0
	MOV.B	@ER0,R1L
	MOV.B	R1L,@ER3
??CLINE 750
	MOV.L	@(+10,ER6),ER0
	INC.L	#H'00000001,ER0
	MOV.L	ER0,@(+10,ER6)
??CLINE 751
	MOV.W	@(+8,ER6),R1
	EXTS.L	ER1
	SHLL.L	ER1
	MOV.L	#_rs_send_wp,ER3
	ADD.L	ER1,ER3
	MOV.W	@ER3,R1
	INC.W	#H'0001,R1
	MOV.W	R1,@ER3
??CLINE 752
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	SHLL.L	ER0
	MOV.L	#_rs_send_wp,ER1
	ADD.L	ER0,ER1
	MOV.W	@ER1,R0
	AND.W	#H'03FF,R0
	MOV.W	R0,@ER1
??CLINE 753
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	SHLL.L	ER0
	MOV.L	#_rs_send_c,ER1
	ADD.L	ER0,ER1
	MOV.W	@ER1,R0
	DEC.W	#H'0001,R0
	MOV.W	R0,@ER1
??ENDBLOCK(754)
	JMP	@?00045
?00047:
??CLINE 756
	MOV.W	@(+8,ER6),R0
	PUSH.W	R0
	JSR	@_rs_txcont_job
	ADDS.L	#H'00000002,ER7
??CLINE 758
	MOV.W	#H'0001,R0
??ENDBLOCK(759)
??CLINE 759
_rs_putn_end:

	MOV.L	ER6,ER7
	POP.L	ER6
	RTS

	segment	TEXT ATR_CODE
public	_IntRXI0
_IntRXI0:
	STM.L	ER0-ER3,@-SP
	STM.L	ER4-ER6,@-SP
                                                                      
??FUNCDEF(???IntRXI0) ??VOID
??FUNCEND
??BEGINBLOCK(775)
??CLINE 776
	XOR.W	R0,R0
	PUSH.W	R0
	JSR	@_rx_job
	ADDS.L	#H'00000002,ER7
??ENDBLOCK(777)
??CLINE 777
_IntRXI0_end:

	LDM.L	@SP+,ER4-ER6
	LDM.L	@SP+,ER0-ER3
	RTE

	segment	TEXT ATR_CODE
public	_IntRXI1
_IntRXI1:
	STM.L	ER0-ER3,@-SP
	STM.L	ER4-ER6,@-SP
                                                                      
??FUNCDEF(???IntRXI1) ??VOID
??FUNCEND
??BEGINBLOCK(789)
??CLINE 790
	MOV.W	#H'0001,R0
	PUSH.W	R0
	JSR	@_rx_job
	ADDS.L	#H'00000002,ER7
??ENDBLOCK(791)
??CLINE 791
_IntRXI1_end:

	LDM.L	@SP+,ER4-ER6
	LDM.L	@SP+,ER0-ER3
	RTE

	segment	TEXT ATR_CODE
public	_IntRXI2
_IntRXI2:
	STM.L	ER0-ER3,@-SP
	STM.L	ER4-ER6,@-SP
                                                                      
??FUNCDEF(???IntRXI2) ??VOID
??FUNCEND
??BEGINBLOCK(803)
??CLINE 804
	MOV.W	#H'0002,R0
	PUSH.W	R0
	JSR	@_rx_job
	ADDS.L	#H'00000002,ER7
??ENDBLOCK(805)
??CLINE 805
_IntRXI2_end:

	LDM.L	@SP+,ER4-ER6
	LDM.L	@SP+,ER0-ER3
	RTE

	segment	TEXT ATR_CODE
public	_rx_job
_rx_job:
	PUSH.L	ER6
	MOV.L	ER7,ER6
                                         
??FUNCDEF(???rx_job) ??VOID
??VAR ??SINT ??SYMBOL(???ch) ??OFFSET(8)
??FUNCEND
??BEGINBLOCK(817)
??CLINE 818
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	SHLL.L	#H'00000002,ER0
	MOV.L	#_ssr,ER1
	ADD.L	ER0,ER1
	MOV.L	@ER1,ER0
	MOV.B	@ER0,R0L
	EXTU.W	R0
	AND.W	#H'0040,R0
	OR.W	R0,R0
	BEQ	?00048
??BEGINBLOCK(819)
??CLINE 820
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	SHLL.L	#H'00000002,ER0
	MOV.L	#_ssr,ER1
	ADD.L	ER0,ER1
	MOV.L	@ER1,ER0
	MOV.B	@ER0,R1L
	AND.B	#H'BF,R1L
	MOV.B	R1L,@ER0
??CLINE 821
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	SHLL.L	ER0
	MOV.L	#_rs_recv_c,ER1
	ADD.L	ER0,ER1
	MOV.W	@ER1,R0
	OR.W	R0,R0
	BEQ	?00049
??BEGINBLOCK(822)
??CLINE 823
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	MOV.L	ER0,ER1
	SHLL.L	ER1
	MOV.L	#_rs_recv_wp,ER2
	ADD.L	ER1,ER2
	MOV.W	@ER2,R1
	EXTU.L	ER1
	MOV.L	ER0,ER2
	MOV.L	#H'00000200,ER3
	PUSH.L	ER2
	PUSH.L	ER3
	JSR	@__l_mul
	ADDS.L	#H'00000004,ER7
	POP.L	ER2
	MOV.L	#_rs_recv_buf,ER4
	ADD.L	ER2,ER4
	ADD.L	ER1,ER4
	SHLL.L	#H'00000002,ER0
	MOV.L	#_rdr,ER1
	ADD.L	ER0,ER1
	MOV.L	@ER1,ER0
	MOV.B	@ER0,R0L
	MOV.B	R0L,@ER4
??CLINE 825
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	SHLL.L	ER0
	MOV.L	#_rs_recv_wp,ER1
	ADD.L	ER0,ER1
	MOV.W	@ER1,R0
	INC.W	#H'0001,R0
	MOV.W	R0,@ER1
??CLINE 826
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	SHLL.L	ER0
	MOV.L	#_rs_recv_wp,ER1
	ADD.L	ER0,ER1
	MOV.W	@ER1,R0
	AND.W	#H'01FF,R0
	MOV.W	R0,@ER1
??CLINE 827
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	SHLL.L	ER0
	MOV.L	#_rs_recv_c,ER1
	ADD.L	ER0,ER1
	MOV.W	@ER1,R0
	DEC.W	#H'0001,R0
	MOV.W	R0,@ER1
??ENDBLOCK(828)
?00049:
??ENDBLOCK(829)
?00048:
??ENDBLOCK(830)
??CLINE 830
_rx_job_end:

	POP.L	ER6
	RTS

	segment	TEXT ATR_CODE
public	_rs_intrx
_rs_intrx:
	PUSH.L	ER6
	MOV.L	ER7,ER6
                                         
??FUNCDEF(???rs_intrx) ??VOID
??VAR ??SINT ??SYMBOL(???ch) ??OFFSET(8)
??VAR ??SINT ??SYMBOL(???on) ??OFFSET(10)
??FUNCEND
??BEGINBLOCK(842)
??CLINE 843
	MOV.W	@(+10,ER6),R0
	CMP.W	#H'0001,R0
	BNE	?00050:8
??BEGINBLOCK(844)
??CLINE 845
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	SHLL.L	#H'00000002,ER0
	MOV.L	#_scr,ER1
	ADD.L	ER0,ER1
	MOV.L	@ER1,ER0
	MOV.B	@ER0,R1L
	OR.B	#H'40,R1L
	MOV.B	R1L,@ER0
??ENDBLOCK(846)
	BRA	?00051:8
?00050:
??BEGINBLOCK(848)
??CLINE 849
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	SHLL.L	#H'00000002,ER0
	MOV.L	#_scr,ER1
	ADD.L	ER0,ER1
	MOV.L	@ER1,ER0
	MOV.B	@ER0,R1L
	AND.B	#H'BF,R1L
	MOV.B	R1L,@ER0
??ENDBLOCK(850)
?00051:
??ENDBLOCK(851)
??CLINE 851
_rs_intrx_end:

	POP.L	ER6
	RTS

	segment	TEXT ATR_CODE
public	_rs_getcheck
_rs_getcheck:
	PUSH.L	ER6
	MOV.L	ER7,ER6
                                         
??FUNCDEF(???rs_getcheck) ??UINT
??VAR ??SINT ??SYMBOL(???ch) ??OFFSET(8)
??FUNCEND
??BEGINBLOCK(863)
??CLINE 864
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	SHLL.L	ER0
	MOV.L	#_rs_recv_c,ER1
	ADD.L	ER0,ER1
	MOV.W	@ER1,R0
	MOV.W	#H'0200,R1
	SUB.W	R0,R1
	MOV.W	R1,R0
??ENDBLOCK(865)
??CLINE 865
_rs_getcheck_end:

	POP.L	ER6
	RTS

	segment	TEXT ATR_CODE
public	_rs_getc
_rs_getc:
	PUSH.L	ER6
	MOV.L	ER7,ER6
	SUBS	#2,ER7
                           
??FUNCDEF(???rs_getc) ??UCHAR
??VAR ??SINT ??SYMBOL(???ch) ??OFFSET(8)
??FUNCEND
??BEGINBLOCK(877)
??VAR ??UCHAR ??SYMBOL(???data) ??OFFSET(-1)
??CLINE 880
	MOV.W	@(+8,ER6),R0
	PUSH.W	R0
	JSR	@_rs_getcheck
	ADDS.L	#H'00000002,ER7
	OR.W	R0,R0
	BNE	?00052:8
??BEGINBLOCK(881)
??CLINE 882
	XOR.B	R0L,R0L
	JMP	@_rs_getc_end
??ENDBLOCK(883)
?00052:
??CLINE 885
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	MOV.L	ER0,ER1
	SHLL.L	ER1
	MOV.L	#_rs_recv_rp,ER2
	ADD.L	ER1,ER2
	MOV.W	@ER2,R1
	EXTU.L	ER1
	MOV.L	#H'00000200,ER3
	PUSH.L	ER0
	PUSH.L	ER3
	JSR	@__l_mul
	ADDS.L	#H'00000004,ER7
	POP.L	ER0
	MOV.L	#_rs_recv_buf,ER4
	ADD.L	ER0,ER4
	ADD.L	ER1,ER4
	MOV.B	@ER4,R0L
	MOV.B	R0L,@(-1,ER6)
??CLINE 886
	MOV.W	@ER2,R1
	INC.W	#H'0001,R1
	MOV.W	R1,@ER2
??CLINE 887
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	SHLL.L	ER0
	MOV.L	#_rs_recv_rp,ER1
	ADD.L	ER0,ER1
	MOV.W	@ER1,R0
	AND.W	#H'01FF,R0
	MOV.W	R0,@ER1
??CLINE 889
	XOR.W	R0,R0
	PUSH.W	R0
	MOV.W	@(+8,ER6),R1
	PUSH.W	R1
	JSR	@_rs_intrx
	ADDS.L	#H'00000004,ER7
??CLINE 890
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	SHLL.L	ER0
	MOV.L	#_rs_recv_c,ER1
	ADD.L	ER0,ER1
	MOV.W	@ER1,R0
	INC.W	#H'0001,R0
	MOV.W	R0,@ER1
??CLINE 891
	MOV.W	#H'0001,R0
	PUSH.W	R0
	MOV.W	@(+8,ER6),R1
	PUSH.W	R1
	JSR	@_rs_intrx
	ADDS.L	#H'00000004,ER7
??CLINE 893
	MOV.B	@(-1,ER6),R0L
??ENDBLOCK(894)
??CLINE 894
_rs_getc_end:

	MOV.L	ER6,ER7
	POP.L	ER6
	RTS

	segment	TEXT ATR_CODE
public	_rs_getch
_rs_getch:
	PUSH.L	ER6
	MOV.L	ER7,ER6
	SUBS	#2,ER7
                           
??FUNCDEF(???rs_getch) ??SINT
??VAR ??SINT ??SYMBOL(???ch) ??OFFSET(8)
??FUNCEND
??BEGINBLOCK(906)
??VAR ??SINT ??SYMBOL(???data) ??OFFSET(-2)
??CLINE 909
	MOV.W	@(+8,ER6),R0
	PUSH.W	R0
	JSR	@_rs_getcheck
	ADDS.L	#H'00000002,ER7
	OR.W	R0,R0
	BNE	?00053:8
??BEGINBLOCK(910)
??CLINE 911
	MOV.W	#H'FFFF,R0
	JMP	@_rs_getch_end
??ENDBLOCK(912)
?00053:
??CLINE 914
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	MOV.L	ER0,ER1
	SHLL.L	ER1
	MOV.L	#_rs_recv_rp,ER2
	ADD.L	ER1,ER2
	MOV.W	@ER2,R1
	EXTU.L	ER1
	MOV.L	#H'00000200,ER3
	PUSH.L	ER0
	PUSH.L	ER3
	JSR	@__l_mul
	ADDS.L	#H'00000004,ER7
	POP.L	ER0
	MOV.L	#_rs_recv_buf,ER4
	ADD.L	ER0,ER4
	ADD.L	ER1,ER4
	MOV.B	@ER4,R0L
	EXTU.W	R0
	MOV.W	R0,@(-2,ER6)
??CLINE 915
	MOV.W	@ER2,R1
	INC.W	#H'0001,R1
	MOV.W	R1,@ER2
??CLINE 916
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	SHLL.L	ER0
	MOV.L	#_rs_recv_rp,ER1
	ADD.L	ER0,ER1
	MOV.W	@ER1,R0
	AND.W	#H'01FF,R0
	MOV.W	R0,@ER1
??CLINE 918
	XOR.W	R0,R0
	PUSH.W	R0
	MOV.W	@(+8,ER6),R1
	PUSH.W	R1
	JSR	@_rs_intrx
	ADDS.L	#H'00000004,ER7
??CLINE 919
	MOV.W	@(+8,ER6),R0
	EXTS.L	ER0
	SHLL.L	ER0
	MOV.L	#_rs_recv_c,ER1
	ADD.L	ER0,ER1
	MOV.W	@ER1,R0
	INC.W	#H'0001,R0
	MOV.W	R0,@ER1
??CLINE 920
	MOV.W	#H'0001,R0
	PUSH.W	R0
	MOV.W	@(+8,ER6),R1
	PUSH.W	R1
	JSR	@_rs_intrx
	ADDS.L	#H'00000004,ER7
??CLINE 922
	MOV.W	@(-2,ER6),R0
??ENDBLOCK(923)
??CLINE 923
_rs_getch_end:

	MOV.L	ER6,ER7
	POP.L	ER6
	RTS

	segment	TEXT ATR_CODE
public	_rs_gets
_rs_gets:
	PUSH.L	ER6
	MOV.L	ER7,ER6
	SUBS	#2,ER7
                           
??FUNCDEF(???rs_gets) ??SINT
??VAR ??SINT ??SYMBOL(???ch) ??OFFSET(8)
??VAR ??POINTER ??UCHAR ??SYMBOL(???data) ??OFFSET(10)
??VAR ??UINT ??SYMBOL(???size) ??OFFSET(14)
??FUNCEND
??BEGINBLOCK(937)
??VAR ??UINT ??SYMBOL(???c) ??OFFSET(-2)
??CLINE 940
	XOR.W	R0,R0
	MOV.W	R0,@(-2,ER6)
	BRA	?00055:8
?00054:
	MOV.W	@(-2,ER6),R0
	INC.W	#H'0001,R0
	MOV.W	R0,@(-2,ER6)
?00055:
	MOV.W	@(-2,ER6),R0
	MOV.W	@(+14,ER6),R1
	CMP.W	R1,R0
	BCC	?00056:8
??BEGINBLOCK(941)
?00057:
??CLINE 942
	MOV.W	@(+8,ER6),R0
	PUSH.W	R0
	JSR	@_rs_getcheck
	ADDS.L	#H'00000002,ER7
	OR.W	R0,R0
	BNE	?00058:8
	BRA	?00057:8
?00058:
??CLINE 943
	MOV.W	@(+8,ER6),R0
	PUSH.W	R0
	JSR	@_rs_getc
	ADDS.L	#H'00000002,ER7
	MOV.L	@(+10,ER6),ER1
	MOV.B	R0L,@ER1
??CLINE 944
	MOV.L	@(+10,ER6),ER0
	MOV.B	@ER0,R1L
	EXTU.W	R1
	CMP.W	#H'000A,R1
	BNE	?00059:8
??BEGINBLOCK(945)
??CLINE 946
	MOV.L	@(+10,ER6),ER0
	XOR.B	R1L,R1L
	MOV.B	R1L,@ER0
??CLINE 947
	MOV.W	#H'0001,R0
	BRA	_rs_gets_end:8
??ENDBLOCK(948)
?00059:
??CLINE 949
	MOV.L	@(+10,ER6),ER0
	INC.L	#H'00000001,ER0
	MOV.L	ER0,@(+10,ER6)
??ENDBLOCK(950)
	JMP	@?00054
?00056:
??CLINE 952
	XOR.W	R0,R0
??ENDBLOCK(953)
??CLINE 953
_rs_gets_end:

	MOV.L	ER6,ER7
	POP.L	ER6
	RTS

	segment	TEXT ATR_CODE
public	_rs_getn
_rs_getn:
	PUSH.L	ER6
	MOV.L	ER7,ER6
	SUBS	#2,ER7
                           
??FUNCDEF(???rs_getn) ??SINT
??VAR ??SINT ??SYMBOL(???ch) ??OFFSET(8)
??VAR ??POINTER ??UCHAR ??SYMBOL(???data) ??OFFSET(10)
??VAR ??UINT ??SYMBOL(???size) ??OFFSET(14)
??FUNCEND
??BEGINBLOCK(966)
??VAR ??UINT ??SYMBOL(???c) ??OFFSET(-2)
??CLINE 969
	MOV.W	@(+8,ER6),R0
	PUSH.W	R0
	JSR	@_rs_getcheck
	ADDS.L	#H'00000002,ER7
	MOV.W	@(+14,ER6),R1
	CMP.W	R1,R0
	BCS	?00061:8
	MOV.W	@(+14,ER6),R0
	OR.W	R0,R0
	BNE	?00060:8
?00061:
??BEGINBLOCK(970)
??CLINE 971
	XOR.W	R0,R0
	BRA	_rs_getn_end:8
??ENDBLOCK(972)
?00060:
??CLINE 974
	XOR.W	R0,R0
	MOV.W	R0,@(-2,ER6)
	BRA	?00063:8
?00062:
	MOV.W	@(-2,ER6),R0
	INC.W	#H'0001,R0
	MOV.W	R0,@(-2,ER6)
?00063:
	MOV.W	@(-2,ER6),R0
	MOV.W	@(+14,ER6),R1
	CMP.W	R1,R0
	BCC	?00064:8
??BEGINBLOCK(975)
??CLINE 976
	MOV.W	@(+8,ER6),R0
	PUSH.W	R0
	JSR	@_rs_getc
	ADDS.L	#H'00000002,ER7
	MOV.L	@(+10,ER6),ER1
	MOV.B	R0L,@ER1
??CLINE 977
	MOV.L	@(+10,ER6),ER0
	INC.L	#H'00000001,ER0
	MOV.L	ER0,@(+10,ER6)
??ENDBLOCK(978)
	BRA	?00062:8
?00064:
??CLINE 980
	MOV.W	#H'0001,R0
??ENDBLOCK(981)
??CLINE 981
_rs_getn_end:

⌨️ 快捷键说明

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