All pastes #987778 Raw Edit

Mine

public text v1 · immutable
#987778 ·published 2008-04-16 23:08 UTC
rendered paste body
68K GAS  encrypt.a68 			page 1
Encrypt

   1               	.TITLE "Encrypt"
   2               	.PSIZE 35,200
   3               	
   4               	/*****************************************************************
   5               	
   6               	FILENAME: Encrypt.a68
   7               	AUTHOR (STUDENT NAME): Marc Tessier
   8               	STUDENT NUMBER: 040576114(MT)
   9               	E-MAIL ADDRESS: tess0072@algonquincollege.com
  10               	LAB SECTION: 313
  11               	ASSIGNMENT NUMBER AND NAME: Assignment 3 
  12               	PROFESSOR'S NAME: Robert E. Allison
  13               	Purpose: Design a basic cryptography program
  14               	
  15               	*****************************************************************/
  16               	
  17               	/************ INCLUDES ******************************************/
  18               	              
  21               	.LIST
  22               	
  23               	/************ CONSTANT DATA *************************************/
  24               	
  25               	.TEXT     1
  26               	
  27               	/************* VARIABLE DATA ************************************/
  28               	
  29               	.DATA
  30               	
  31               	/************* PROCESS INSTRUCTIONS *****************************/
  32               	
  33               	.TEXT 0
  34               	.GLOBAL Encrypt
68K GAS  encrypt.a68 			page 2
Encrypt

  35               	
  36               	/************* START ********************************************/
  37               	
  38               	/************* STACK DETAILS *************************************
  39               	
  40               		SP + 24 = Key
  41               		SP + 20 = Cleartext
  42               		SP + 16 = Cyphertext
  43               	 	SP + 12 = JSR [Address]
  44               		SP + 8 = Movem A1
  45               		SP + 4 = Movem A2
  46               		SP + 0 = Longword for A6
  47               		SP - 4 = key String address
  48               		SP - 8 = Cleartext String address
  49               	
  50               	*****************************************************************/
  51               	
  52               	/************* HOW-TO-USE ****************************************
  53               		
  54               		...
  55               		PEA	Key
  56               		PEA	Cleartext
  57               		PEA	Cyphertext
  58               		JSR	StrCat
  59               		ADD.L	#12,SP
  60               		...
  61               	
  62               		Result: A0 = Encrypted
  63               	
  64               	*****************************************************************/
  65               	
  66               	Encrypt:
68K GAS  encrypt.a68 			page 3
Encrypt

  67 0000 48E7 0060 		MOVEM.L A1-A2,-(sp)
  68 0004 4E56 FFF8 		LINK	A6,#-8
  69               	
  70 0008 226E 0018 		MOVEA.L	(24,A6),A1	| Store Key A1
  71 000c 2D49 FFFC 		MOVE.L	A1,(-4,A6)	| Store localy
  72 0010 246E 0014 		MOVEA.L	(20,A6),A2	| Store ClearText A2
  73 0014 2D4A FFF8 		MOVE.L 	A2,(-8,A6)	| Store localy	
  74 0018 204A      		MOVE.L	A2,A0
  75 001a 4EB9 0000 		JSR 	StrLen		| Get length of ClearText
  75      0000 
  76 0020 2200      		MOVE.L 	D0,D1		| Store length of cleartext in D1
  77 0022 2049      		MOVE.L 	A1,A0
  78 0024 4EB9 0000 		JSR 	StrLen		| Store length of key in D0
  78      0000 
  79 002a 206E 0018 		MOVEA.L	(24,A6),A0	| Store Key A0
  80 002e 4EBA 0034 		JSR 	LengthExtend	| Extended Key to length of cleartext
  81 0032 206E 0010 		MOVEA.L (16,A6),A0	| Store CypherText A0
  82 0036 226E 0018 		MOVEA.L	(24,A6),A1	| Store Key A1
  83 003a 246E 0014 		MOVEA.L	(20,A6),A2	| Store ClearText A2
  84               	
  85               	EncryptLoop:
  86 003e 0C12 0000 		CMP.B	#0x00,(A2)	| Are we at the end of the cleartext
  87 0042 6700 0046 		BEQ.W	EncryptEnd
  88 0046 1012      		MOVE.B	(A2),D0		| Move this char of cleartext into D0
  89 0048 E918      		ROL.B	#4,D0		| Rotate 4 bits
  90 004a 1211      		MOVE.B	(A1),D1		| Move this char of length-extended key into D1
  91 004c B300      		EOR.B	D1,D0		| Exclusive or Key char with Rotated Cleartext char
  92 004e 123C 0002 		MOVE.B	#2,D1		
  93 0052 4EB9 0000 		JSR	HexToAscii	| Convert Cypher to printable characters
  93      0000 
  94 0058 5289      		ADD.L	#1,A1		| Increment
  95 005a 14BC 0000 		MOVE.B	#0X00,(A2)	| Hide cleartext
68K GAS  encrypt.a68 			page 4
Encrypt

  96 005e 528A      		ADD.L	#1,A2
  97 0060 4EFA FFDC 		JMP	EncryptLoop
  98               	
  99               	LengthExtend:
 100 0064 B200      		CMP.B	D0,D1
 101 0066 6C00 0020 		BGE.W	LengthExtendEnd
 102 006a 2F08      		MOVE.L 	A0,-(SP)
 103 006c 2F08      		MOVE.L 	A0,-(SP)
 104 006e 3F3C 0080 		MOVE.W	#128,-(SP)
 105 0072 4EB9 0000 		JSR	StrCat
 105      0000 
 106 0078 DFFC 0000 		ADD.L	#10,SP
 106      000A 
 107 007e 4EB9 0000 		JSR 	StrLen
 107      0000 
 108 0084 4EFA FFDE 		JMP 	LengthExtend
 109               	
 110               	LengthExtendEnd:
 111 0088 4E75      		RTS
 112               	
 113               	EncryptEnd:
 114 008a 4E5E      		UNLK	A6
 115 008c 4CDF 0600 		MOVEM.L (SP)+,A1-A2
 116 0090 4E75      		RTS
 117               	
68K GAS  encrypt.a68 			page 5
Encrypt

DEFINED SYMBOLS
         encrypt.a68:99     e0:00000064 LengthExtend
         encrypt.a68:85     e0:0000003e EncryptLoop
         encrypt.a68:113    e0:0000008a EncryptEnd
         encrypt.a68:110    e0:00000088 LengthExtendEnd
                               e0:00000000 .text
                               e1:00000092 .data
                               e2:00000092 .bss
         encrypt.a68:66     e0:00000000 Encrypt

UNDEFINED SYMBOLS
StrLen
HexToAscii
StrCat