ItzhakEfraimov

Untitled

May 30th, 2020
446
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     .MODEL SMALL
  2.     .STACK 100h
  3.     .DATA
  4.     .CODE
  5. PUBLIC _encode
  6. PUBLIC _decode
  7. ;
  8. ; void encode(char code_array[], char msg[], char encoded_msg[]);
  9. ;               [BP+4]              [BP+6]          [BP+8]
  10. _encode PROC NEAR
  11.     PUSH BP
  12.     MOV BP,SP
  13.    
  14.     PUSH AX
  15.     PUSH BX
  16.     PUSH DI
  17.     PUSH SI
  18.    
  19.     MOV BX,[BP+4]   ; code_array
  20.     MOV DI,[BP+6]   ; msg
  21.     MOV SI,[BP+8]   ; encoded_msg
  22.    
  23.     L1:
  24.     MOV AX,[DI]     ; AX = msg[i]
  25.     CMP AX,'\0'     ; msg[i] != '\0'
  26.     JE L1_Exit
  27.     ADD BX,AX
  28.     MOV DX,[BX]
  29.     MOV [SI],DX
  30.     SUB BX,AX
  31.     INC BX
  32.     INC DI
  33.     INC SI
  34.  
  35.     L1_Exit:
  36.     POP SI
  37.     POP DI
  38.     POP BX
  39.     POP BP
  40.     RET
  41. _encode ENDP
  42. _decode PROC NEAR
  43.     PUSH BP
  44.     MOV BP,SP
  45.  
  46.     POP BP
  47.     RET
  48. _decode ENDP
  49.  
  50.     END
RAW Paste Data