rendered paste body68K 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