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

📄 tcpip.asm

📁 主要介绍一些常用的关于TCP/IP的命令集,有助于工程人员快速地查阅
💻 ASM
字号:
*
*hit651 voice platform software
*=================== tcpip.asm ========================
*2004.1.3 hit651
		.mmregs
		.def send_data,send_ack
		.def create_ip_packet,creat_tx_ipcrc,creat_tx_udpcrc
		
		.ref send_packet
		.include ref.inc
		.include union.inc
		.include macro.inc
		.text

************************** send ack *****************************
send_ack:
		
		PSHM AR2
		MOV servernodeid,txbuf.ethernet.destnodeid,3
		
		ST #0x0008,*(txbuf.ethernet.protocal)
		ST #0x571b,*(txbuf.udp.sourceport)
		ST #0x571b,*(txbuf.udp.destport)
		MOV myip_addr,txbuf.ip.sourceip,2
		MOV serverip_addr,txbuf.ip.destip,2
		

		
		ST #0x1100,*(txbuf.ip.protocal)	
											
		ST #0x1c00,*(txbuf.udp.len)		;20 of data + 8 of head	
		
		LD #0x0055,A
		ADD *(ack_number),A
		STL A,*(txbuf.udp.data)
				
		ST 0x1c00,*(txbuf.ip.crc)
		ST #0,*(txbuf.udp.crc)
		
		CALL creat_tx_udpcrc
		
		ST #(28>>1),*(send_packet_len)
		CALL create_ip_packet
		
		POPM AR2
		RET
*
************************** send data *****************************
send_data:
		
		PSHM AR2
		MOV servernodeid,txbuf.ethernet.destnodeid,3
		
		ST #0x0008,*(txbuf.ethernet.protocal)
		ST #0x571b,*(txbuf.udp.sourceport)
		ST #0x571b,*(txbuf.udp.destport)
		MOV myip_addr,txbuf.ip.sourceip,2
		MOV serverip_addr,txbuf.ip.destip,2
		
;		ST #0xffff, *(txbuf.ip.destip)
;		ST #0xffff, *(txbuf.ip.destip+1)
		
		ST #0x1100,*(txbuf.ip.protocal)	
											;1468=0x05bc
		ST #datalen_,*(txbuf.udp.len)		;1460 of data + 8 of head	
		
		STM txbuf.udp.data,AR2
		STM txdatabuf,AR3
		
		RPT #(10-1)
		ST 0x5858,*AR2+
		RPT #((datalen>>1)-4-10-1)
		MVDD *AR3+,*AR2+
		
		ST #datalen_,*(txbuf.ip.crc)
		ST #0,*(txbuf.udp.crc)
		
		CALL creat_tx_udpcrc
		
		ST #(datalen>>1),*(send_packet_len)
		CALL create_ip_packet
		
		POPM AR2
		RET
*
************************* creat_ip_packet ************************
*
create_ip_packet:
		
		ST #0x0045,*(txbuf.ip.verhl)
		ST #0x0,*(txbuf.ip.crc)
		ADDM #0x0800,*(txbuf.ip.frameindex)
;		ST #0x1234,*(txbuf.ip.frameindex)
		ST #0x0040,*(txbuf.ip.segment)
		LDU *(send_packet_len),A
		ADD #10,A
		STL A,1,*(send_packet_len)
		LD A,1,A
		STL A,-8,*(txbuf.ip.len)
		LD A,8,A
		ADD *(txbuf.ip.len),A
		STL A,*(txbuf.ip.len)
		
		CALL creat_tx_ipcrc
		
		ADDM #14,*(send_packet_len)

		MOV send_packet_len,txbuf.ethernet.len,1
		CALL send_packet
		
		RET
*
************************* creat_tx_ipcrc ************************
*
*STM txbuf.ip.verhl,AR1              
*
*
creat_tx_ipcrc:

		PSHM AL
		PSHM AH
		PSHM AG
		PSHM AR1
		
		STM txbuf.ip.verhl,AR1
		RPTZ A,#(10-1)
		ADDS *AR1+,A
		
c_t_2:		
		STL A,*(txbuf.ip.crc)
		LD A,-16,A
		BC c_t_1,AEQ				;A=0 goto c_t_1
		
		ADDS *(txbuf.ip.crc),A
		B c_t_2						;goto c_t_2
		
c_t_1:
		XORM #0xffff,*(txbuf.ip.crc)
		
		POPM AR1
		POPM AG
		POPM AH
		POPM AL
		
		RET
*
************************* creat_tx_udpcrc ************************
*
*STM tcp_tx_buf,AR1              
*
*
creat_tx_udpcrc:

		.newblock
		PSHM AL
		PSHM AH
		PSHM AG
		PSHM AR2
		PSHM AR3
		PSHD *(i)
				
		MOVX txbuf.ip.crc,i,1
		STM txbuf.ip.protocal,AR3
		LD *(i),A
		ADD #12,A						
		LD A,-1,A
		SUB #1,A
		STL A,*(i)
		LD #0,A
		RPT *(i)
		ADDS *AR3+,A
				
$2:		
		STL A,*(txbuf.udp.crc)
		LD A,-16,A
		BC $1,AEQ					
		
		ADDS *(txbuf.udp.crc),A
		B $2						
		
$1:
		XORM #0xffff,*(txbuf.udp.crc)
		
		
		POPD *(i)
		POPM AR3
		POPM AR2
		POPM AG
		POPM AH
		POPM AL
		
		RET	
		.end	

⌨️ 快捷键说明

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