home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / intel8051 / i51ncod.asm < prev    next >
Assembly Source File  |  2020-01-01  |  862b  |  35 lines

  1. ; encode the character A into the global data array P2/R0
  2. ; r0 is size pointer
  3. encode:    mov    r4,a        ; store char
  4.     mov    dptr,#param + P_qctl
  5.     movx    a,@dptr        ; get Qctl from parameter table
  6.     mov    r2,a        ; r2 has control prefix to use
  7.     mov    a,r4        ; get char
  8.     anl    a,#127        ; mask out hi bit
  9.     mov    r1,a        ; A7
  10.     cjne    r1,#32,ncod1    ; if A7 < 32 ?
  11.     sjmp    ncod2        ; is equal
  12. ncod1:    jc    ncod3        ; is less
  13. ncod2:    cjne    r1,#127,ncod4    ; or A7 = 127 ?
  14. ncod3:    mov    a,r2        ; get quote
  15.     movx    @r0,a        ; insert control quote
  16.     inc    r0        ; size++
  17.     mov    a,r4        ; get char
  18.     tuctl            ; + 32
  19.     mov    r4,a        ; store char
  20.     sjmp    ncod5        ; done
  21. ncod4:    mov    a,r1        ; get A7
  22.     cjne    a,2,ncod5    ; if char = control prefix
  23.     mov    a,r2        ; get quote
  24.     movx    @r0,a        ; insert control quote
  25.     inc    r0        ; size++
  26. ncod5:    mov    a,r4        ; get char
  27.     movx    @r0,a        ; insert character
  28.     inc    r0        ; size++
  29.     clr    a        
  30.     movx    @r0,a        ; terminate string
  31.     ret
  32. ;
  33.  
  34.