📄 dessamp.lst
字号:
00240 ; $$$ not yet implemented
00241 return
00242
00243 endif ; do_parallel
00244
00245
00246 if do_serial
00247
0028 00248 getcmd:
0028 303E 00249 movlw '>'
0029 2063 00250 call xmit
00251
002A 300C 00252 movlw cmd ; get ten bytes from host
002B 0084 00253 movwf FSR
002C 300A 00254 movlw 10
002D 008F 00255 movwf temp
00256
002E 204C 00257 getc1: call getdig
002F 0080 00258 movwf INDF
0030 0E80 00259 swapf INDF
0031 204C 00260 call getdig
0032 0480 00261 iorwf INDF
MPASM 01.50 Released DESSAMP.ASM 5-5-1997 16:06:32 PAGE 6
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00262
0033 0A84 00263 incf FSR ; advance to next byte
0034 0B8F 00264 decfsz temp
0035 282E 00265 goto getc1
00266
00267 if echo_input
0036 300D 00268 movlw 0x0d
0037 2063 00269 call xmit
0038 300A 00270 movlw 0x0a
0039 2063 00271 call xmit
00272 endif ; echo_input
00273
00274 if do_parity
00275
00276 ; test parity, return zero flag clear if error
00277 call parchk
00278 xorwf parity,W
00279 btfsc STATUS,Z
00280 return
00281
00282 movlw parerr
00283 movwf result
00284 bcf STATUS,Z
00285 return
00286
00287 else
00288
003A 1503 00289 bsf STATUS,Z
003B 0008 00290 return
00291
00292 endif ; do_parity
00293
00294
003C 00295 sendresult:
003C 300C 00296 movlw cmd
003D 0084 00297 movwf FSR
003E 300A 00298 movlw 10
003F 008F 00299 movwf temp
00300
0040 0E00 00301 sr1: swapf INDF,W
0041 205D 00302 call xmitdig
0042 0800 00303 movf INDF,W
0043 205D 00304 call xmitdig
0044 0A84 00305 incf FSR
0045 0B8F 00306 decfsz temp
0046 2840 00307 goto sr1
00308
0047 300D 00309 movlw 0x0d
0048 2063 00310 call xmit
0049 300A 00311 movlw 0x0a
004A 2063 00312 call xmit
00313
004B 0008 00314 return
MPASM 01.50 Released DESSAMP.ASM 5-5-1997 16:06:32 PAGE 7
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00315
00316
004C 00317 getdig:
004C 2077 00318 call recv
00319
00320 if echo_input
004D 0090 00321 movwf temp2
004E 2063 00322 call xmit
004F 0810 00323 movf temp2,W
00324 endif ; echo_input
00325
0050 3ED0 00326 addlw 256-'0'
0051 1C03 00327 btfss STATUS,C
0052 284C 00328 goto getdig
0053 3EF6 00329 addlw 255-9
0054 1803 00330 btfsc STATUS,C
0055 2858 00331 goto getd1
0056 3E0A 00332 addlw 10
0057 0008 00333 return
00334
0058 3EF3 00335 getd1: addlw 255-12
0059 1803 00336 btfsc STATUS,C
005A 284C 00337 goto getdig
005B 3E10 00338 addlw 16
005C 0008 00339 return
00340
00341
005D 00342 xmitdig:
005D 390F 00343 andlw 0x0f
005E 3EF6 00344 addlw 0xf6
005F 1803 00345 btfsc STATUS,C
0060 3E07 00346 addlw 0x07
0061 3E3A 00347 addlw 0x3a
0062 2863 00348 goto xmit
00349
00350 include "uarthd.inc"
00001 ; half duplex UART code by Rich Ottosen
00002
00003 cblock
00000011 00004 bitcnt
00000012 00005 dlycnt
00000013 00006 serreg
00007 endc
00008
00009
00000017 00010 speed equ 26-3 ; 9600 bps
00011
00012
00013 ;transmit character in w as 8 bits, no parity, 1 stop
00014 ; this routine has the start, stop and data bits inverted because an inverting
00015 ; rs-232 buffer is not used.
00016
0063 0093 00017 xmit: movwf serreg
MPASM 01.50 Released DESSAMP.ASM 5-5-1997 16:06:32 PAGE 8
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
0064 300A 00018 movlw 10 ;put # of data bits + start bit + # stop bits
0065 0091 00019 movwf bitcnt ; into counter
0066 1403 00020 bsf STATUS,C ;set up the stop bit
0067 1505 00021 bsf txd ;send start bit
00022
0068 3017 00023 xmt10: movlw speed ;delay 1 bit time
0069 0092 00024 movwf dlycnt
006A 0000 00025 xd1: nop ; 1 cycle
006B 0B92 00026 decfsz dlycnt ; 1
006C 286A 00027 goto xd1 ; 2 =4 cycles
00028
006D 0391 00029 decf bitcnt ;count the data bits
006E 1903 00030 btfsc STATUS,Z
006F 2876 00031 goto xmt30 ; and exit when done
0070 0C93 00032 rrf serreg ;get data bit into carry
0071 1803 00033 btfsc STATUS,C ;if carry is set
0072 1105 00034 bcf txd ; then xmit a zero
0073 1C03 00035 btfss STATUS,C ;if carry is clear
0074 1505 00036 bsf txd ; then transmit a one
0075 2868 00037 goto xmt10
00038
0076 3400 00039 xmt30: retlw 0 ;return nothing
00040
00041
00042 ;receive a character as 8 bits, no parity, 1 stop and put in "serreg" and W
00043 ; this routine has the start, stop and data bits inverted because an inverting
00044 ; rs-232 buffer is not used.
00045
0077 3009 00046 recv: movlw 9 ;put # of data bits + 1 stop
0078 0091 00047 movwf bitcnt ; into counter
0079 1C85 00048 rc05: btfss rxd ;wait for the start bit
007A 2879 00049 goto rc05
00050
007B 3017 00051 rdly1: movlw speed ;delay 1/2 bit time
007C 0092 00052 movwf dlycnt
007D 1003 00053 bcf STATUS,C ; by dividing "speed" by 2
007E 0C92 00054 rrf dlycnt
007F 0000 00055 rd1: nop ; 1 cycle
0080 0B92 00056 decfsz dlycnt ; 1
0081 287F 00057 goto rd1 ; 2 =4 cycles
00058
0082 1C85 00059 btfss rxd ;is start still active?
0083 2877 00060 goto recv ; try again if not
00061
0084 3017 00062 rc10: movlw speed ;delay 1 bit time
0085 0092 00063 movwf dlycnt
0086 0000 00064 rd2: nop ; 1 cycle
0087 0B92 00065 decfsz dlycnt ; 1
0088 2886 00066 goto rd2 ; 2 =4 cycles
00067
0089 0391 00068 decf bitcnt ;count the data bits
008A 1903 00069 btfsc STATUS,Z
008B 2892 00070 goto rc40 ; and exit when done
MPASM 01.50 Released DESSAMP.ASM 5-5-1997 16:06:32 PAGE 9
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00071
008C 1C85 00072 btfss rxd ;if data is a zero
008D 1403 00073 bsf STATUS,C ; then set the carry
008E 1885 00074 btfsc rxd ;if data is a one
008F 1003 00075 bcf STATUS,C ; then clear the carry
0090 0C93 00076 rrf serreg ;get carry into data bit
0091 2884 00077 goto rc10
00078
0092 0813 00079 rc40: movf serreg,W
0093 0008 00080 return
00081
00351
00352 endif
00353
00354
00355 ;-----------------------------------------------------------------------------
00356 ; parity checking
00357 ;-----------------------------------------------------------------------------
00358
0094 00359 parchk:
0094 300C 00360 movlw cmd
0095 0084 00361 movwf FSR
0096 3009 00362 movlw 9
0097 008F 00363 movwf temp
0098 0103 00364 clrw
0099 0600 00365 parck0: xorwf INDF,W
009A 0A84 00366 incf FSR
009B 0B8F 00367 decfsz temp
009C 2899 00368 goto parck0
009D 0008 00369 return
00370
00371
00372 ;-----------------------------------------------------------------------------
00373 ; commands
00374 ;-----------------------------------------------------------------------------
00375
009E 00376 version:
009E 3000 00377 movlw 00h
009F 0094 00378 movwf keyl
00A0 3007 00379 movlw 07h
00A1 0095 00380 movwf keyl+1
00A2 00381 echo:
00A2 0008 00382 return
00383
00384
00385 if triple_des
00386
00387 triple:
00388 movlw sboxbase>>8 ; set up to call s-boxes
00389 movwf PCLATH
00390
00391 call ip
00392
MPASM 01.50 Released DESSAMP.ASM 5-5-1997 16:06:32 PAGE 10
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00393 call getkey
00394 call descore
00395
00396 movlw 8
00397 addwf EEADR
00398
00399 call getkey
00400 call desinvcore
00401
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -