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

📄 main.s

📁 用VC编辑的一个MD5算法
💻 S
📖 第 1 页 / 共 2 页
字号:
	.dbfile ./table.h
	.dbfile ./main.c
	.dbsym s accum _accum l
_dphase:
	.blkb 4
	.area idata
	.word 65,35160
	.area data(ram, con, rel)
	.dbfile ./main.c
	.dbsym s dphase _dphase l
_adr:
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile ./main.c
	.dbsym s adr _adr i
	.area text(rom, con, rel)
	.dbfile ./main.c
	.dbfunc e main _main fV
_main::
	.dbline -1
	push X
	mov X,SP
	add SP,6
	.dbline 32
; #include "ddsapi.h"
; #include "table.h"
; #include "exchange.h"
; #include <stdlib.h>
; 
;  
; #define SB(var, num) *(((BYTE*)&var)+num)
; #define SIGN_BIT 0x08
; #define QUATER_BIT 0x04
; #define TABLE_MASK 0x03FF
; 
; #define FREQ_MULT 4295
; #define INIT_FREQ 1000
; #define MAX_FREQ  30000
; 
; extern volatile BOOL ready;
; extern char rx_buffer[];
; 
; static DWORD accum = 0, dphase = INIT_FREQ*FREQ_MULT;
; static WORD adr = 0;
; static BYTE msb, lsb;
;  
; #pragma  ioport   DAC_MSB_CR0:   0x080
; BYTE              DAC_MSB_CR0;
; 
; #pragma  ioport   DAC_LSB_CR0:   0x090  
; BYTE              DAC_LSB_CR0;
; //you must change these values accordingly to your DAC9 placement,
; //alternatively you can use the fixed version of the DAC_WriteStall2B()
; 
; void main()
; {
	.dbline 33
;   DAC_Start(DAC_FULLPOWER);
	push X
	mov A,3
	xcall _DAC_Start
	.dbline 34
;   PGA_FIL1_Start(PGA_FIL1_HIGHPOWER);
	mov A,3
	xcall _PGA_FIL1_Start
	.dbline 35
;   PGA_FIL2_Start(PGA_FIL2_HIGHPOWER);
	mov A,3
	xcall _PGA_FIL2_Start
	.dbline 36
;   PGA_OUT_Start(PGA_OUT_HIGHPOWER);
	mov A,3
	xcall _PGA_OUT_Start
	.dbline 37
;   SPIS_Start(SPIS_LSB_FIRST);
	mov A,-128
	xcall _SPIS_Start
	pop X
	.dbline 39
;   
;   PGA_FIL2_GAIN_CR1 |= 0x40;
	or REG[122],64
	.dbline 40
;   PGA_FIL2_GAIN_CR2 &= ~0x40;
	and REG[123],-65
	.dbline 44
;   //enable comparator bus and disable the output latch
;   // but comparator bus is column clock synchronized still
;   
;   OpenExchange();
	xcall _OpenExchange
	.dbline 45
;   M8C_EnableGInt;
		or    F, 01h

	.dbline 47
;   
;   ExchangeSend("The DDS generator is ready.\n\r");
	mov A,>L2
	push A
	mov A,<L2
	push A
	xcall _ExchangeSend
	add SP,-2
	xjmp L4
L3:
	.dbline 50
;   
;   while(1)
;   { 
	.dbline 51
;     msb = strlen(rx_buffer)-2;
	mov A,>_rx_buffer
	push A
	mov A,<_rx_buffer
	push A
	xcall _strlen
	add SP,-2
	sub [__r1],2
	sbb [__r0],0
	mov [_msb],[__r1]
	.dbline 52
;     switch (rx_buffer[msb])
	mov [__r1],[_msb]
	mov [__r0],0
	add [__r1],<_rx_buffer
	adc [__r0],>_rx_buffer
	mvi A,[__r1]
	mov [X+1],A
	mov [X+0],0
	cmp [X+0],0
	jnz X2
	cmp [X+1],70
	jz L9
X2:
	cmp [X+0],0
	jnz X3
	cmp [X+1],71
	jz L14
X3:
	mov A,[X+0]
	xor A,-128
	mov [__rY],A
	mov A,0
	xor A,-128
	mov [__rZ],A
	mov [__rX],0
	mov A,[X+1]
	sub A,70
	or [__rX],A
	mov A,[__rY]
	sbb A,[__rZ]
	or [__rX],A
	jc L7
X4:
L18:
	cmp [X+0],0
	jnz X5
	cmp [X+1],102
	jz L9
X5:
	cmp [X+0],0
	jnz X6
	cmp [X+1],103
	jz L14
X6:
	xjmp L7
X0:
	.dbline 53
;     {
L9:
	.dbline 56
;       case 'f':
;       case 'F':
;         rx_buffer[msb] = 0;
	mov [__r1],[_msb]
	mov [__r0],0
	add [__r1],<_rx_buffer
	adc [__r0],>_rx_buffer
	mov A,0
	mvi [__r1],A
	.dbline 57
;         dphase = FREQ_MULT*atof(rx_buffer);
	mov A,>_rx_buffer
	push A
	mov A,<_rx_buffer
	push A
	xcall _atof
	add SP,-2
	mov A,[__r0]
	push A
	mov A,[__r1]
	push A
	mov A,[__r2]
	push A
	mov A,[__r3]
	push A
	mov A,69
	push A
	mov A,-122
	push A
	mov A,56
	push A
	mov A,0
	push A
	xcall __fpmul
	pop A
	mov [__r3],A
	pop A
	mov [__r2],A
	pop A
	mov [__r1],A
	pop A
	mov [__r0],A
	add SP,-4
	mov A,79
	push A
	mov A,0
	push A
	push A
	push A
	mov A,[__r0]
	push A
	mov A,[__r1]
	push A
	mov A,[__r2]
	push A
	mov A,[__r3]
	push A
	xcall __fpcmp
	add SP,-8
	cmp A,-1
	jz L11
	mov A,79
	push A
	mov A,0
	push A
	push A
	push A
	mov A,[__r0]
	push A
	mov A,[__r1]
	push A
	mov A,[__r2]
	push A
	mov A,[__r3]
	push A
	xcall __fpsub
	pop A
	mov [__r7],A
	pop A
	mov [__r6],A
	pop A
	mov [__r5],A
	pop A
	add SP,-4
	push A
	mov A,[__r5]
	push A
	mov A,[__r6]
	push A
	mov A,[__r7]
	push A
	xcall __fp2long
	pop A
	mov [__r7],A
	pop A
	mov [__r6],A
	pop A
	mov [__r5],A
	pop A
	mov [__r4],A
	mov A,[__r7]
	mov [X+5],A
	mov A,[__r6]
	adc A,0
	mov [X+4],A
	mov A,[__r5]
	adc A,0
	mov [X+3],A
	mov A,[__r4]
	adc A,-128
	mov [X+2],A
	xjmp L12
L11:
	mov A,[__r0]
	push A
	mov A,[__r1]
	push A
	mov A,[__r2]
	push A
	mov A,[__r3]
	push A
	xcall __fp2long
	pop A
	mov [__r3],A
	pop A
	mov [__r2],A
	pop A
	mov [__r1],A
	pop A
	mov [X+2],A
	mov A,[__r1]
	mov [X+3],A
	mov A,[__r2]
	mov [X+4],A
	mov A,[__r3]
	mov [X+5],A
L12:
	mov A,[X+2]
	mov [_dphase],A
	mov A,[X+3]
	mov [_dphase+1],A
	mov A,[X+4]
	mov [_dphase+2],A
	mov A,[X+5]
	mov [_dphase+3],A
	.dbline 58
;         ExchangeSend("The frequency was set well.\n\r");
	mov A,>L13
	push A
	mov A,<L13
	push A
	xcall _ExchangeSend
	add SP,-2
	.dbline 59
;       break;
	xjmp L7
L14:
	.dbline 63
;       
;       case 'g':
;       case 'G':
;         rx_buffer[msb] = 0;
	mov [__r1],[_msb]
	mov [__r0],0
	add [__r1],<_rx_buffer
	adc [__r0],>_rx_buffer
	mov A,0
	mvi [__r1],A
	.dbline 64
;         lsb = atoi(rx_buffer);
	mov A,>_rx_buffer
	push A
	mov A,<_rx_buffer
	push A
	xcall _atoi
	add SP,-2
	mov [_lsb],[__r1]
	.dbline 65
;         if (lsb < GAIN_LEVELS) 
	cmp [_lsb],22
	jnc L7
X8:
	.dbline 66
;         {
	.dbline 67
;           PGA_OUT_SetGain(gain_table[lsb]);
	mov [__r1],[_lsb]
	mov [__r0],0
	asl [__r1]
	rlc [__r0]
	add [__r1],<_gain_table
	adc [__r0],>_gain_table
	mov A,[__r0]
	push X
	push A
	mov X,[__r1]
	romx
	pop A
	inc X
	adc A,0
	romx
	xcall _PGA_OUT_SetGain
	pop X
	.dbline 68
;           ExchangeSend("The gain was set well.\n\r");
	mov A,>L17
	push A
	mov A,<L17
	push A
	xcall _ExchangeSend
	add SP,-2
	.dbline 69
;          }
	.dbline 70
;       break;
	.dbline 73
;       
;       default:
;       break;
L7:
	.dbline 76
;     }
;    
;     ready = TRUE;
	mov [_ready],1
	xjmp L20
L19:
	.dbline 79
;     
;     while(ready)
;     {
	.dbline 80
;       accum += dphase;
	mov A,[_dphase+3]
	add [_accum+3],A
	mov A,[_dphase+2]
	adc [_accum+2],A
	mov A,[_dphase+1]
	adc [_accum+1],A
	mov A,[_dphase]
	adc [_accum],A
	.dbline 81
;       SB(adr,0) = SB(accum,0);
	mov [_adr],[_accum]
	.dbline 82
;       SB(adr,1) = SB(accum,1);
	mov [_adr+1],[_accum+1]
	.dbline 83
;       if (SB(accum,0) & QUATER_BIT) adr ^= 0xFFFF;
	tst [_accum],4
	jz L24
	.dbline 83
	xor [_adr+1],-1
	xor [_adr],-1
L24:
	.dbline 84
;       adr &= TABLE_MASK;
	and [_adr+1],-1
	and [_adr],3
	.dbline 86
;      
;       msb = lsb = sin_table[adr];
	mov A,[_adr+1]
	add A,<_sin_table
	mov [__r1],A
	mov A,[_adr]
	adc A,>_sin_table
	push X
	mov X,[__r1]
	romx
	pop X
	mov [__r0],A
	mov [_lsb],A
	mov [_msb],[_lsb]
	.dbline 88
;       
;       msb >>= 3;
	mov A,[_msb]
	asr A
	asr A
	asr A
	and A,31
	mov [_msb],A
	.dbline 89
;       msb |= 0x80;
	or [_msb],-128
	.dbline 91
;       
;       lsb &= 0x07;
	and [_lsb],7
	.dbline 92
;       lsb <<= 2;
	asl [_lsb]
	asl [_lsb]
	.dbline 93
;       lsb  |= 0x80;
	or [_lsb],-128
	.dbline 95
;       
;       if (SB(accum,0) & SIGN_BIT) 
	tst [_accum],8
	jz L26
	.dbline 96
;         msb |= 0x20;
	or [_msb],32
	mov A,[_msb]
	xjmp L27
L26:
	.dbline 98
;       else 
;         lsb |= 0x20;
	or [_lsb],32
	mov A,[_lsb]
L27:
	.dbline 100
		or  reg[65h], 01h

	.dbline 101
	mov A,[_msb]
	mov REG[-128],A
	.dbline 102
		and reg[65h], FEh

	.dbline 103
	mov A,[_lsb]
	mov REG[-112],A
	.dbline 106
L20:
	.dbline 78
	cmp [_ready],0
	jnz L19
	.dbline 108
L4:
	.dbline 49
	xjmp L3
X1:
	.dbline -2
	.dbline 109
;         
;     M8C_Stall;
;     DAC_MSB_CR0 = msb;
;     M8C_Unstall;
;     DAC_LSB_CR0 = lsb;    
;     //instead it, the fixed version DAC_WriteStall2B(lsb, msb) can be used
;     //but you have less time reserve
;    }
;      
;  }  
; }
L1:
	add SP,-6
	pop X
	.dbline 0 ; func end
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile ./main.c
_lsb:
	.blkb 1
	.dbsym s lsb _lsb c
_msb:
	.blkb 1
	.dbsym s msb _msb c
	.area lit(rom, con, rel)
L17:
	.byte 'T,'h,'e,32,'g,'a,'i,'n,32,'w,'a,'s,32,'s,'e,'t
	.byte 32,'w,'e,'l,'l,46,10,13,0
L13:
	.byte 'T,'h,'e,32,'f,'r,'e,'q,'u,'e,'n,'c,'y,32,'w,'a
	.byte 's,32,'s,'e,'t,32,'w,'e,'l,'l,46,10,13,0
L2:
	.byte 'T,'h,'e,32,'D,'D,'S,32,'g,'e,'n,'e,'r,'a,'t,'o
	.byte 'r,32,'i,'s,32,'r,'e,'a,'d,'y,46,10,13,0

⌨️ 快捷键说明

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