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

📄 exchange.s

📁 用VC编辑的一个MD5算法
💻 S
字号:
	.module exchange.c
	.area data(ram, con, rel)
_ready::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile ./exchange.c
	.dbsym e ready _ready c
_rx_buffer::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile ./exchange.c
	.blkb 14
	.area idata
	.word 0,0,0,0,0
	.byte 0,0,0,0
	.area data(ram, con, rel)
	.dbfile ./exchange.c
	.dbsym e rx_buffer _rx_buffer A[15:15]c
_rx_index:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile ./exchange.c
	.dbsym s rx_index _rx_index X
_tx_buffer::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile ./exchange.c
	.blkb 34
	.area idata
	.word 0,0,0,0,0
	.word 0,0,0,0,0
	.word 0,0,0,0,0
	.byte 0,0,0,0
	.area data(ram, con, rel)
	.dbfile ./exchange.c
	.dbsym e tx_buffer _tx_buffer A[35:35]c
_tx_index:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile ./exchange.c
	.dbsym s tx_index _tx_index c
	.area text(rom, con, rel)
	.dbfile ./exchange.c
	.dbfunc e OpenExchange _OpenExchange fV
_OpenExchange::
	.dbline -1
	.dbline 19
; #include "exchange.h"
; #include "ddsapi.h"
; #include "globalparams.h"
; 
; 
; #define bTx_232_INT_MASK 0x20
; 
; #define RX_BUFFER_LEN 15
; 
; BOOL ready = FALSE;
; BYTE rx_buffer[RX_BUFFER_LEN] = "";
; static volatile BYTE rx_index = 0;
; 
; #define TX_BUFFER_LEN 35
; BYTE tx_buffer[TX_BUFFER_LEN] = "";
; static BYTE tx_index = 0;
; 
; void OpenExchange(void)
; {
	.dbline 20
;   Rs_Timer_DisableInt();
	push X
	xcall _Rs_Timer_DisableInt
	.dbline 21
;   Rs_Timer_WritePeriod(RS232_BAUDRATE_PERIOD);
	mov A,25
	xcall _Rs_Timer_WritePeriod
	.dbline 22
;   Rs_Timer_Start();
	xcall _Rs_Timer_Start
	pop X
	.dbline 24
;   
;   rx_index = 0;
	mov [_rx_index],0
	.dbline 25
;   Rx_232_EnableInt();
	push X
	xcall _Rx_232_EnableInt
	.dbline 26
;   Rx_232_Start(RX8_PARITY_NONE); 
	mov A,0
	xcall _Rx_232_Start
	pop X
	.dbline 28
;   
;   tx_index = 0xFF;
	mov [_tx_index],-1
	.dbline 29
;   Tx_232_DisableInt();
	push X
	xcall _Tx_232_DisableInt
	.dbline 30
;   Tx_232_Start(TX8_PARITY_NONE);
	mov A,0
	xcall _Tx_232_Start
	pop X
	.dbline 32
;   
;   ready = FALSE;
	mov [_ready],0
	.dbline -2
	.dbline 33
; }
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e CloseExchange _CloseExchange fV
_CloseExchange::
	.dbline -1
	.dbline 36
; 
; void CloseExchange(void)
; {
	.dbline 37
;   Rs_Timer_Stop();  
	push X
	xcall _Rs_Timer_Stop
	pop X
	.dbline -2
	.dbline 38
; }
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.area data(ram, con, rel)
	.dbfile ./exchange.c
L4:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile ./exchange.c
	.area text(rom, con, rel)
	.dbfile ./exchange.c
	.dbfunc e Rs232_Rx_handler _Rs232_Rx_handler fV
	.dbsym s ch L4 c
_Rs232_Rx_handler::
	.dbline -1
	push A
	mov A,[__r0]
	push A
	mov A,[__r1]
	push A
	mov A,[__r3]
	push A
	.dbline 45
; 
; 
; 
; 
; #pragma interrupt_handler Rs232_Rx_handler;
; void Rs232_Rx_handler(void)
; {
	.dbline 48
;   static BYTE ch = 0;
;   
;   ch = Rx_232_RX_BUFFER_REG;
	mov A,REG[50]
	mov [L4],A
	.dbline 50
;   
;   if (!(Rx_232_CONTROL_REG & RX8_RX_NO_ERROR))
	tst REG[51],-32
	jnz L5
	.dbline 51
;   {
	.dbline 52
;     if (  (ch == '\n'))
	cmp [L4],10
	jnz L7
	.dbline 53
;     {
	.dbline 54
;       if (rx_index > 1) ready = FALSE;
	cmp [_rx_index],1
	jc L9
	jz L9
X0:
	.dbline 54
	mov [_ready],0
L9:
	.dbline 55
;       rx_buffer[rx_index] = 0;
	mov [__r1],[_rx_index]
	mov [__r0],0
	add [__r1],<_rx_buffer
	adc [__r0],>_rx_buffer
	mov A,0
	mvi [__r1],A
	.dbline 56
;       rx_index = 0;
	mov [_rx_index],0
	.dbline 57
;     }
	xjmp L8
L7:
	.dbline 59
;     else
;     {
	.dbline 60
;       if (rx_index < (RX_BUFFER_LEN-1))
	cmp [_rx_index],14
	jnc L11
X1:
	.dbline 61
;       {
	.dbline 62
;         rx_buffer[rx_index++] = ch;
	mov [__r1],[_rx_index]
	mov [__r0],0
	mov A,[__r1]
	add A,1
	mov [__r3],A
	mov A,0
	adc A,0
	mov [_rx_index],[__r3]
	add [__r1],<_rx_buffer
	adc [__r0],>_rx_buffer
	mov A,[L4]
	mvi [__r1],A
	.dbline 63
;       }
L11:
	.dbline 64
;     }
L8:
	.dbline 65
L5:
	.dbline -2
	.dbline 66
;   } 
; }
L3:
	pop A
	mov [__r3],A
	pop A
	mov [__r1],A
	pop A
	mov [__r0],A
	pop A
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e Rs232_Tx_handler _Rs232_Tx_handler fV
;    bFlagShadow -> X+0
_Rs232_Tx_handler::
	.dbline -1
	push A
	mov A,[__r0]
	push A
	mov A,[__r1]
	push A
	mov A,[__r3]
	push A
	push X
	mov X,SP
	add SP,1
	.dbline 70
; 
; #pragma interrupt_handler Rs232_Tx_handler;
; void Rs232_Tx_handler(void)
; { 
	.dbline 71
;   if (tx_buffer[tx_index])
	mov [__r1],[_tx_index]
	mov [__r0],0
	add [__r1],<_tx_buffer
	adc [__r0],>_tx_buffer
	mvi A,[__r1]
	jz L14
	.dbline 72
;   {
	.dbline 73
;     Tx_232_TX_BUFFER_REG = tx_buffer[tx_index++];
	mov [__r1],[_tx_index]
	mov [__r0],0
	mov A,[__r1]
	add A,1
	mov [__r3],A
	mov A,0
	adc A,0
	mov [_tx_index],[__r3]
	add [__r1],<_tx_buffer
	adc [__r0],>_tx_buffer
	mvi A,[__r1]
	mov REG[53],A
	.dbline 74
;   }
	xjmp L15
L14:
	.dbline 76
;     else 
;   {
	.dbline 77
	.dbline 77
	mov A,REG[-1]
	and A,-128
	mov [X+0],A
	.dbline 77
		and   F, FEh

	.dbline 77
	and REG[-31],-33
	.dbline 77
	cmp [X+0],0
	jz L16
	.dbline 77
	.dbline 77
		or    F, 01h

	.dbline 77
L16:
	.dbline 77
	.dbline 77
	.dbline 78
	mov [_tx_index],-1
	.dbline 79
L15:
	.dbline -2
	.dbline 80
;     M8C_DisableIntMask (INT_MSK1, bTx_232_INT_MASK); 
;     tx_index = 0xFF;
;   }
; }
L13:
	add SP,-1
	pop X
	pop A
	mov [__r3],A
	pop A
	mov [__r1],A
	pop A
	mov [__r0],A
	pop A
	.dbline 0 ; func end
	reti
	.dbsym l bFlagShadow 0 c
	.dbend
	.dbfunc e ExchangeSend _ExchangeSend fV
;       tx_count -> X+2
;            ptr -> X+0
;            str -> X-5
_ExchangeSend::
	.dbline -1
	push X
	mov X,SP
	add SP,3
	.dbline 83
; 
; void ExchangeSend(const BYTE *str)
; {
	.dbline 84
;   BYTE *ptr = tx_buffer, tx_count = 0;
	mov [X+1],<_tx_buffer
	mov [X+0],>_tx_buffer
	.dbline 84
	mov [X+2],0
L19:
	.dbline 86
L20:
	.dbline 86
;   
;   while(tx_index != 0xFF);  
	cmp [_tx_index],-1
	jnz L19
	.dbline 87
;   tx_index = tx_count= 0;
	mov [X+2],0
	mov [_tx_index],0
	xjmp L23
L22:
	.dbline 90
;   
;   while (*str)
;   {
	.dbline 91
;     *ptr++ = *str++;   
	mov A,[X+1]
	mov [__r1],A
	mov A,[X+0]
	mov [__r0],A
	mov A,[__r1]
	add A,1
	mov [X+1],A
	mov A,[__r0]
	adc A,0
	mov [X+0],A
	mov A,[X-4]
	mov [__r3],A
	mov A,[X-5]
	mov [__r2],A
	mov A,[__r3]
	add A,1
	mov [X-4],A
	mov A,[__r2]
	adc A,0
	mov [X-5],A
	mov A,[__r2]
	push X
	mov X,[__r3]
	romx
	pop X
	mvi [__r1],A
	.dbline 92
;     if (++tx_count > (TX_BUFFER_LEN-2)) break;
	mov A,[X+2]
	add A,1
	mov [X+2],A
	cmp A,33
	jc L25
	jz L25
X2:
	.dbline 92
	xjmp L24
L25:
	.dbline 93
L23:
	.dbline 89
	mov A,[X-4]
	mov [__r1],A
	mov A,[X-5]
	push X
	mov X,[__r1]
	romx
	pop X
	cmp A,0
	jnz L22
L24:
	.dbline 94
;   }
;   *ptr = 0;
	mov A,[X+1]
	mov [__r1],A
	mov A,0
	mvi [__r1],A
	.dbline 96
;   
;   Tx_232_EnableInt();
	push X
	xcall _Tx_232_EnableInt
	pop X
	.dbline 97
;   Tx_232_SendData(tx_buffer[tx_index++]);
	mov [__r1],[_tx_index]
	mov [__r0],0
	mov A,[__r1]
	add A,1
	mov [__r3],A
	mov A,0
	adc A,0
	mov [_tx_index],[__r3]
	add [__r1],<_tx_buffer
	adc [__r0],>_tx_buffer
	mvi A,[__r1]
	push X
	xcall _Tx_232_SendData
	pop X
	.dbline -2
	.dbline 99
;  
; }
L18:
	add SP,-3
	pop X
	.dbline 0 ; func end
	ret
	.dbsym l tx_count 2 c
	.dbsym l ptr 0 pc
	.dbsym l str -5 pc
	.dbend

⌨️ 快捷键说明

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