/* Reference implementation of WAGE8 (l_ad=2, l_m=16) Written by: Yunjie Yi */ ; asmY.asm ; ; Created: 2018/9/19 16:21:28 ; Author : Yunjie Yi ; ; Warnning: before run, set R19 - R16, R23 - R20, and a,b,c, R13(u) .include "m128def.inc" main: ;; Initialize the stack pointer begin -------------- INIT: ldi r28, high(RAMEND) ; Initialize the stack pointer high byte out SPH, r28 ldi r28, low(RAMEND) ; Initialize the stack pointer low byte out SPL, r28 ;; Initialize the stack pointer end-------------------- ;;;;;; VECTOR 1 BEGIN£ºWG LDI R20, 0x00 STS $521, R20 LDI R20, 0x12 STS $522, R20 LDI R20, 0x0A STS $523, R20 LDI R20, 0x4B STS $524, R20 LDI R20, 0x66 STS $525, R20 LDI R20, 0x0C STS $526, R20 LDI R20, 0x48 STS $527, R20 LDI R20, 0x73 STS $528, R20 LDI R20, 0x79 STS $529, R20 LDI R20, 0x3E STS $52A, R20 LDI R20, 0x61 STS $52B, R20 LDI R20, 0x51 STS $52C, R20 LDI R20, 0x01 STS $52D, R20 LDI R20, 0x15 STS $52E, R20 LDI R20, 0x17 STS $52F, R20 LDI R20, 0x0E STS $530, R20 LDI R20, 0x7E STS $531, R20 LDI R20, 0x33 STS $532, R20 LDI R20, 0x68 STS $533, R20 LDI R20, 0x36 STS $534, R20 LDI R20, 0x42 STS $535, R20 LDI R20, 0x35 STS $536, R20 LDI R20, 0x37 STS $537, R20 LDI R20, 0x5E STS $538, R20 LDI R20, 0x53 STS $539, R20 LDI R20, 0x4C STS $53A, R20 LDI R20, 0x3F STS $53B, R20 LDI R20, 0x54 STS $53C, R20 LDI R20, 0x58 STS $53D, R20 LDI R20, 0x6E STS $53E, R20 LDI R20, 0x56 STS $53F, R20 LDI R20, 0x2A STS $540, R20 LDI R20, 0x1D STS $541, R20 LDI R20, 0x25 STS $542, R20 LDI R20, 0x6D STS $543, R20 LDI R20, 0x65 STS $544, R20 LDI R20, 0x5B STS $545, R20 LDI R20, 0x71 STS $546, R20 LDI R20, 0x2F STS $547, R20 LDI R20, 0x20 STS $548, R20 LDI R20, 0x06 STS $549, R20 LDI R20, 0x18 STS $54A, R20 LDI R20, 0x29 STS $54B, R20 LDI R20, 0x3A STS $54C, R20 LDI R20, 0x0D STS $54D, R20 LDI R20, 0x7A STS $54E, R20 LDI R20, 0x6C STS $54F, R20 LDI R20, 0x1B STS $550, R20 LDI R20, 0x19 STS $551, R20 LDI R20, 0x43 STS $552, R20 LDI R20, 0x70 STS $553, R20 LDI R20, 0x41 STS $554, R20 LDI R20, 0x49 STS $555, R20 LDI R20, 0x22 STS $556, R20 LDI R20, 0x77 STS $557, R20 LDI R20, 0x60 STS $558, R20 LDI R20, 0x4F STS $559, R20 LDI R20, 0x45 STS $55A, R20 LDI R20, 0x55 STS $55B, R20 LDI R20, 0x02 STS $55C, R20 LDI R20, 0x63 STS $55D, R20 LDI R20, 0x47 STS $55E, R20 LDI R20, 0x75 STS $55F, R20 LDI R20, 0x2D STS $560, R20 LDI R20, 0x40 STS $561, R20 LDI R20, 0x46 STS $562, R20 LDI R20, 0x7D STS $563, R20 LDI R20, 0x5C STS $564, R20 LDI R20, 0x7C STS $565, R20 LDI R20, 0x59 STS $566, R20 LDI R20, 0x26 STS $567, R20 LDI R20, 0x0B STS $568, R20 LDI R20, 0x09 STS $569, R20 LDI R20, 0x03 STS $56A, R20 LDI R20, 0x57 STS $56B, R20 LDI R20, 0x5D STS $56C, R20 LDI R20, 0x27 STS $56D, R20 LDI R20, 0x78 STS $56E, R20 LDI R20, 0x30 STS $56F, R20 LDI R20, 0x2E STS $570, R20 LDI R20, 0x44 STS $571, R20 LDI R20, 0x52 STS $572, R20 LDI R20, 0x3B STS $573, R20 LDI R20, 0x08 STS $574, R20 LDI R20, 0x67 STS $575, R20 LDI R20, 0x2C STS $576, R20 LDI R20, 0x05 STS $577, R20 LDI R20, 0x6B STS $578, R20 LDI R20, 0x2B STS $579, R20 LDI R20, 0x1A STS $57A, R20 LDI R20, 0x21 STS $57B, R20 LDI R20, 0x38 STS $57C, R20 LDI R20, 0x07 STS $57D, R20 LDI R20, 0x0F STS $57E, R20 LDI R20, 0x4A STS $57F, R20 LDI R20, 0x11 STS $580, R20 LDI R20, 0x50 STS $581, R20 LDI R20, 0x6A STS $582, R20 LDI R20, 0x28 STS $583, R20 LDI R20, 0x31 STS $584, R20 LDI R20, 0x10 STS $585, R20 LDI R20, 0x4D STS $586, R20 LDI R20, 0x5F STS $587, R20 LDI R20, 0x72 STS $588, R20 LDI R20, 0x39 STS $589, R20 LDI R20, 0x16 STS $58A, R20 LDI R20, 0x5A STS $58B, R20 LDI R20, 0x13 STS $58C, R20 LDI R20, 0x04 STS $58D, R20 LDI R20, 0x3C STS $58E, R20 LDI R20, 0x34 STS $58F, R20 LDI R20, 0x1F STS $590, R20 LDI R20, 0x76 STS $591, R20 LDI R20, 0x1E STS $592, R20 LDI R20, 0x14 STS $593, R20 LDI R20, 0x23 STS $594, R20 LDI R20, 0x1C STS $595, R20 LDI R20, 0x32 STS $596, R20 LDI R20, 0x4E STS $597, R20 LDI R20, 0x7B STS $598, R20 LDI R20, 0x24 STS $599, R20 LDI R20, 0x74 STS $59A, R20 LDI R20, 0x7F STS $59B, R20 LDI R20, 0x3D STS $59C, R20 LDI R20, 0x69 STS $59D, R20 LDI R20, 0x64 STS $59E, R20 LDI R20, 0x62 STS $59F, R20 LDI R20, 0x6F STS $5A0, R20 ;;;;;; VECTOR 2 BEGIN£º¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª r LDI R20, 0x00 STS $621, R20 LDI R20, 0x78 STS $622, R20 LDI R20, 0x01 STS $623, R20 LDI R20, 0x79 STS $624, R20 LDI R20, 0x02 STS $625, R20 LDI R20, 0x7A STS $626, R20 LDI R20, 0x03 STS $627, R20 LDI R20, 0x7B STS $628, R20 LDI R20, 0x04 STS $629, R20 LDI R20, 0x7C STS $62A, R20 LDI R20, 0x05 STS $62B, R20 LDI R20, 0x7D STS $62C, R20 LDI R20, 0x06 STS $62D, R20 LDI R20, 0x7E STS $62E, R20 LDI R20, 0x07 STS $62F, R20 LDI R20, 0x7F STS $630, R20 LDI R20, 0x08 STS $631, R20 LDI R20, 0x70 STS $632, R20 LDI R20, 0x09 STS $633, R20 LDI R20, 0x71 STS $634, R20 LDI R20, 0x0A STS $635, R20 LDI R20, 0x72 STS $636, R20 LDI R20, 0x0B STS $637, R20 LDI R20, 0x73 STS $638, R20 LDI R20, 0x0C STS $639, R20 LDI R20, 0x74 STS $63A, R20 LDI R20, 0x0D STS $63B, R20 LDI R20, 0x75 STS $63C, R20 LDI R20, 0x0E STS $63D, R20 LDI R20, 0x76 STS $63E, R20 LDI R20, 0x0F STS $63F, R20 LDI R20, 0x77 STS $640, R20 LDI R20, 0x10 STS $641, R20 LDI R20, 0x68 STS $642, R20 LDI R20, 0x11 STS $643, R20 LDI R20, 0x69 STS $644, R20 LDI R20, 0x12 STS $645, R20 LDI R20, 0x6A STS $646, R20 LDI R20, 0x13 STS $647, R20 LDI R20, 0x6B STS $648, R20 LDI R20, 0x14 STS $649, R20 LDI R20, 0x6C STS $64A, R20 LDI R20, 0x15 STS $64B, R20 LDI R20, 0x6D STS $64C, R20 LDI R20, 0x16 STS $64D, R20 LDI R20, 0x6E STS $64E, R20 LDI R20, 0x17 STS $64F, R20 LDI R20, 0x6F STS $650, R20 LDI R20, 0x18 STS $651, R20 LDI R20, 0x60 STS $652, R20 LDI R20, 0x19 STS $653, R20 LDI R20, 0x61 STS $654, R20 LDI R20, 0x1A STS $655, R20 LDI R20, 0x62 STS $656, R20 LDI R20, 0x1B STS $657, R20 LDI R20, 0x63 STS $658, R20 LDI R20, 0x1C STS $659, R20 LDI R20, 0x64 STS $65A, R20 LDI R20, 0x1D STS $65B, R20 LDI R20, 0x65 STS $65C, R20 LDI R20, 0x1E STS $65D, R20 LDI R20, 0x66 STS $65E, R20 LDI R20, 0x1F STS $65F, R20 LDI R20, 0x67 STS $660, R20 LDI R20, 0x20 STS $661, R20 LDI R20, 0x58 STS $662, R20 LDI R20, 0x21 STS $663, R20 LDI R20, 0x59 STS $664, R20 LDI R20, 0x22 STS $665, R20 LDI R20, 0x5A STS $666, R20 LDI R20, 0x23 STS $667, R20 LDI R20, 0x5B STS $668, R20 LDI R20, 0x24 STS $669, R20 LDI R20, 0x5C STS $66A, R20 LDI R20, 0x25 STS $66B, R20 LDI R20, 0x5D STS $66C, R20 LDI R20, 0x26 STS $66D, R20 LDI R20, 0x5E STS $66E, R20 LDI R20, 0x27 STS $66F, R20 LDI R20, 0x5F STS $670, R20 LDI R20, 0x28 STS $671, R20 LDI R20, 0x50 STS $672, R20 LDI R20, 0x29 STS $673, R20 LDI R20, 0x51 STS $674, R20 LDI R20, 0x2A STS $675, R20 LDI R20, 0x52 STS $676, R20 LDI R20, 0x2B STS $677, R20 LDI R20, 0x53 STS $678, R20 LDI R20, 0x2C STS $679, R20 LDI R20, 0x54 STS $67A, R20 LDI R20, 0x2D STS $67B, R20 LDI R20, 0x55 STS $67C, R20 LDI R20, 0x2E STS $67D, R20 LDI R20, 0x56 STS $67E, R20 LDI R20, 0x2F STS $67F, R20 LDI R20, 0x57 STS $680, R20 LDI R20, 0x30 STS $681, R20 LDI R20, 0x48 STS $682, R20 LDI R20, 0x31 STS $683, R20 LDI R20, 0x49 STS $684, R20 LDI R20, 0x32 STS $685, R20 LDI R20, 0x4A STS $686, R20 LDI R20, 0x33 STS $687, R20 LDI R20, 0x4B STS $688, R20 LDI R20, 0x34 STS $689, R20 LDI R20, 0x4C STS $68A, R20 LDI R20, 0x35 STS $68B, R20 LDI R20, 0x4D STS $68C, R20 LDI R20, 0x36 STS $68D, R20 LDI R20, 0x4E STS $68E, R20 LDI R20, 0x37 STS $68F, R20 LDI R20, 0x4F STS $690, R20 LDI R20, 0x38 STS $691, R20 LDI R20, 0x40 STS $692, R20 LDI R20, 0x39 STS $693, R20 LDI R20, 0x41 STS $694, R20 LDI R20, 0x3A STS $695, R20 LDI R20, 0x42 STS $696, R20 LDI R20, 0x3B STS $697, R20 LDI R20, 0x43 STS $698, R20 LDI R20, 0x3C STS $699, R20 LDI R20, 0x44 STS $69A, R20 LDI R20, 0x3D STS $69B, R20 LDI R20, 0x45 STS $69C, R20 LDI R20, 0x3E STS $69D, R20 LDI R20, 0x46 STS $69E, R20 LDI R20, 0x3F STS $69F, R20 LDI R20, 0x47 STS $6A0, R20 ;;;;;; VECTOR 3 BEGIN£º¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª¡ª s-box LDI R20, 0x2E STS $721, R20 LDI R20, 0x1C STS $722, R20 LDI R20, 0x6D STS $723, R20 LDI R20, 0x2B STS $724, R20 LDI R20, 0x35 STS $725, R20 LDI R20, 0x07 STS $726, R20 LDI R20, 0x7F STS $727, R20 LDI R20, 0x3B STS $728, R20 LDI R20, 0x28 STS $729, R20 LDI R20, 0x08 STS $72A, R20 LDI R20, 0x0B STS $72B, R20 LDI R20, 0x5F STS $72C, R20 LDI R20, 0x31 STS $72D, R20 LDI R20, 0x11 STS $72E, R20 LDI R20, 0x1B STS $72F, R20 LDI R20, 0x4D STS $730, R20 LDI R20, 0x6E STS $731, R20 LDI R20, 0x54 STS $732, R20 LDI R20, 0x0D STS $733, R20 LDI R20, 0x09 STS $734, R20 LDI R20, 0x1F STS $735, R20 LDI R20, 0x45 STS $736, R20 LDI R20, 0x75 STS $737, R20 LDI R20, 0x53 STS $738, R20 LDI R20, 0x6A STS $739, R20 LDI R20, 0x5D STS $73A, R20 LDI R20, 0x61 STS $73B, R20 LDI R20, 0x00 STS $73C, R20 LDI R20, 0x04 STS $73D, R20 LDI R20, 0x78 STS $73E, R20 LDI R20, 0x06 STS $73F, R20 LDI R20, 0x1E STS $740, R20 LDI R20, 0x37 STS $741, R20 LDI R20, 0x6F STS $742, R20 LDI R20, 0x2F STS $743, R20 LDI R20, 0x49 STS $744, R20 LDI R20, 0x64 STS $745, R20 LDI R20, 0x34 STS $746, R20 LDI R20, 0x7D STS $747, R20 LDI R20, 0x19 STS $748, R20 LDI R20, 0x39 STS $749, R20 LDI R20, 0x33 STS $74A, R20 LDI R20, 0x43 STS $74B, R20 LDI R20, 0x57 STS $74C, R20 LDI R20, 0x60 STS $74D, R20 LDI R20, 0x62 STS $74E, R20 LDI R20, 0x13 STS $74F, R20 LDI R20, 0x05 STS $750, R20 LDI R20, 0x77 STS $751, R20 LDI R20, 0x47 STS $752, R20 LDI R20, 0x4F STS $753, R20 LDI R20, 0x4B STS $754, R20 LDI R20, 0x1D STS $755, R20 LDI R20, 0x2D STS $756, R20 LDI R20, 0x24 STS $757, R20 LDI R20, 0x48 STS $758, R20 LDI R20, 0x74 STS $759, R20 LDI R20, 0x58 STS $75A, R20 LDI R20, 0x25 STS $75B, R20 LDI R20, 0x5E STS $75C, R20 LDI R20, 0x5A STS $75D, R20 LDI R20, 0x76 STS $75E, R20 LDI R20, 0x41 STS $75F, R20 LDI R20, 0x42 STS $760, R20 LDI R20, 0x27 STS $761, R20 LDI R20, 0x3E STS $762, R20 LDI R20, 0x6C STS $763, R20 LDI R20, 0x01 STS $764, R20 LDI R20, 0x2C STS $765, R20 LDI R20, 0x3C STS $766, R20 LDI R20, 0x4E STS $767, R20 LDI R20, 0x1A STS $768, R20 LDI R20, 0x21 STS $769, R20 LDI R20, 0x2A STS $76A, R20 LDI R20, 0x0A STS $76B, R20 LDI R20, 0x55 STS $76C, R20 LDI R20, 0x3A STS $76D, R20 LDI R20, 0x38 STS $76E, R20 LDI R20, 0x18 STS $76F, R20 LDI R20, 0x7E STS $770, R20 LDI R20, 0x0C STS $771, R20 LDI R20, 0x63 STS $772, R20 LDI R20, 0x67 STS $773, R20 LDI R20, 0x56 STS $774, R20 LDI R20, 0x50 STS $775, R20 LDI R20, 0x7C STS $776, R20 LDI R20, 0x32 STS $777, R20 LDI R20, 0x7A STS $778, R20 LDI R20, 0x68 STS $779, R20 LDI R20, 0x02 STS $77A, R20 LDI R20, 0x6B STS $77B, R20 LDI R20, 0x17 STS $77C, R20 LDI R20, 0x7B STS $77D, R20 LDI R20, 0x59 STS $77E, R20 LDI R20, 0x71 STS $77F, R20 LDI R20, 0x0F STS $780, R20 LDI R20, 0x30 STS $781, R20 LDI R20, 0x10 STS $782, R20 LDI R20, 0x22 STS $783, R20 LDI R20, 0x3D STS $784, R20 LDI R20, 0x40 STS $785, R20 LDI R20, 0x69 STS $786, R20 LDI R20, 0x52 STS $787, R20 LDI R20, 0x14 STS $788, R20 LDI R20, 0x36 STS $789, R20 LDI R20, 0x44 STS $78A, R20 LDI R20, 0x46 STS $78B, R20 LDI R20, 0x03 STS $78C, R20 LDI R20, 0x16 STS $78D, R20 LDI R20, 0x65 STS $78E, R20 LDI R20, 0x66 STS $78F, R20 LDI R20, 0x72 STS $790, R20 LDI R20, 0x12 STS $791, R20 LDI R20, 0x0E STS $792, R20 LDI R20, 0x29 STS $793, R20 LDI R20, 0x4A STS $794, R20 LDI R20, 0x4C STS $795, R20 LDI R20, 0x70 STS $796, R20 LDI R20, 0x15 STS $797, R20 LDI R20, 0x26 STS $798, R20 LDI R20, 0x79 STS $799, R20 LDI R20, 0x51 STS $79A, R20 LDI R20, 0x23 STS $79B, R20 LDI R20, 0x3F STS $79C, R20 LDI R20, 0x73 STS $79D, R20 LDI R20, 0x5B STS $79E, R20 LDI R20, 0x20 STS $79F, R20 LDI R20, 0x5C STS $7A0, R20 ;; RC1_________________________________ LDI R20, 0x3F STS $821, R20 LDI R20, 0x0F STS $822, R20 LDI R20, 0x03 STS $823, R20 LDI R20, 0x40 STS $824, R20 LDI R20, 0x10 STS $825, R20 LDI R20, 0x04 STS $826, R20 LDI R20, 0x41 STS $827, R20 LDI R20, 0x30 STS $828, R20 LDI R20, 0x0C STS $829, R20 LDI R20, 0x43 STS $82A, R20 LDI R20, 0x50 STS $82B, R20 LDI R20, 0x14 STS $82C, R20 LDI R20, 0x45 STS $82D, R20 LDI R20, 0x71 STS $82E, R20 LDI R20, 0x3C STS $82F, R20 LDI R20, 0x4F STS $830, R20 LDI R20, 0x13 STS $831, R20 LDI R20, 0x44 STS $832, R20 LDI R20, 0x51 STS $833, R20 LDI R20, 0x34 STS $834, R20 LDI R20, 0x4D STS $835, R20 LDI R20, 0x73 STS $836, R20 LDI R20, 0x5C STS $837, R20 LDI R20, 0x57 STS $838, R20 LDI R20, 0x15 STS $839, R20 LDI R20, 0x65 STS $83A, R20 LDI R20, 0x79 STS $83B, R20 LDI R20, 0x3E STS $83C, R20 LDI R20, 0x2F STS $83D, R20 LDI R20, 0x0B STS $83E, R20 LDI R20, 0x42 STS $83F, R20 LDI R20, 0x70 STS $840, R20 LDI R20, 0x1C STS $841, R20 LDI R20, 0x47 STS $842, R20 LDI R20, 0x11 STS $843, R20 LDI R20, 0x24 STS $844, R20 LDI R20, 0x49 STS $845, R20 LDI R20, 0x32 STS $846, R20 LDI R20, 0x6C STS $847, R20 LDI R20, 0x5B STS $848, R20 LDI R20, 0x56 STS $849, R20 LDI R20, 0x35 STS $84A, R20 LDI R20, 0x6D STS $84B, R20 LDI R20, 0x7B STS $84C, R20 LDI R20, 0x5E STS $84D, R20 LDI R20, 0x37 STS $84E, R20 LDI R20, 0x0D STS $84F, R20 LDI R20, 0x63 STS $850, R20 LDI R20, 0x58 STS $851, R20 LDI R20, 0x16 STS $852, R20 LDI R20, 0x25 STS $853, R20 LDI R20, 0x69 STS $854, R20 LDI R20, 0x3A STS $855, R20 LDI R20, 0x6E STS $856, R20 LDI R20, 0x3B STS $857, R20 LDI R20, 0x4E STS $858, R20 LDI R20, 0x33 STS $859, R20 LDI R20, 0x4C STS $85A, R20 LDI R20, 0x53 STS $85B, R20 LDI R20, 0x54 STS $85C, R20 LDI R20, 0x55 STS $85D, R20 LDI R20, 0x75 STS $85E, R20 LDI R20, 0x7D STS $85F, R20 LDI R20, 0x7F STS $860, R20 LDI R20, 0x1F STS $861, R20 LDI R20, 0x07 STS $862, R20 LDI R20, 0x01 STS $863, R20 LDI R20, 0x20 STS $864, R20 LDI R20, 0x08 STS $865, R20 LDI R20, 0x02 STS $866, R20 LDI R20, 0x60 STS $867, R20 LDI R20, 0x18 STS $868, R20 LDI R20, 0x06 STS $869, R20 LDI R20, 0x21 STS $86A, R20 LDI R20, 0x28 STS $86B, R20 LDI R20, 0x0A STS $86C, R20 LDI R20, 0x62 STS $86D, R20 LDI R20, 0x78 STS $86E, R20 LDI R20, 0x1E STS $86F, R20 LDI R20, 0x27 STS $870, R20 LDI R20, 0x09 STS $871, R20 LDI R20, 0x22 STS $872, R20 LDI R20, 0x68 STS $873, R20 LDI R20, 0x1A STS $874, R20 LDI R20, 0x66 STS $875, R20 LDI R20, 0x39 STS $876, R20 LDI R20, 0x2E STS $877, R20 LDI R20, 0x2B STS $878, R20 LDI R20, 0x4A STS $879, R20 LDI R20, 0x72 STS $87A, R20 LDI R20, 0x7C STS $87B, R20 LDI R20, 0x5F STS $87C, R20 LDI R20, 0x17 STS $87D, R20 LDI R20, 0x05 STS $87E, R20 LDI R20, 0x61 STS $87F, R20 LDI R20, 0x38 STS $880, R20 LDI R20, 0x0E STS $881, R20 LDI R20, 0x23 STS $882, R20 LDI R20, 0x48 STS $883, R20 LDI R20, 0x12 STS $884, R20 LDI R20, 0x64 STS $885, R20 LDI R20, 0x59 STS $886, R20 LDI R20, 0x36 STS $887, R20 LDI R20, 0x2D STS $888, R20 LDI R20, 0x6B STS $889, R20 LDI R20, 0x5A STS $88A, R20 LDI R20, 0x76 STS $88B, R20 LDI R20, 0x3D STS $88C, R20 LDI R20, 0x6F STS $88D, R20 LDI R20, 0x1B STS $88E, R20 LDI R20, 0x46 STS $88F, R20 ;; RC0___________________ LDI R20, 0x7F STS $921, R20 LDI R20, 0x1F STS $922, R20 LDI R20, 0x07 STS $923, R20 LDI R20, 0x01 STS $924, R20 LDI R20, 0x20 STS $925, R20 LDI R20, 0x08 STS $926, R20 LDI R20, 0x02 STS $927, R20 LDI R20, 0x60 STS $928, R20 LDI R20, 0x18 STS $929, R20 LDI R20, 0x06 STS $92A, R20 LDI R20, 0x21 STS $92B, R20 LDI R20, 0x28 STS $92C, R20 LDI R20, 0x0A STS $92D, R20 LDI R20, 0x62 STS $92E, R20 LDI R20, 0x78 STS $92F, R20 LDI R20, 0x1E STS $930, R20 LDI R20, 0x27 STS $931, R20 LDI R20, 0x09 STS $932, R20 LDI R20, 0x22 STS $933, R20 LDI R20, 0x68 STS $934, R20 LDI R20, 0x1A STS $935, R20 LDI R20, 0x66 STS $936, R20 LDI R20, 0x39 STS $937, R20 LDI R20, 0x2E STS $938, R20 LDI R20, 0x2B STS $939, R20 LDI R20, 0x4A STS $93A, R20 LDI R20, 0x72 STS $93B, R20 LDI R20, 0x7C STS $93C, R20 LDI R20, 0x5F STS $93D, R20 LDI R20, 0x17 STS $93E, R20 LDI R20, 0x05 STS $93F, R20 LDI R20, 0x61 STS $940, R20 LDI R20, 0x38 STS $941, R20 LDI R20, 0x0E STS $942, R20 LDI R20, 0x23 STS $943, R20 LDI R20, 0x48 STS $944, R20 LDI R20, 0x12 STS $945, R20 LDI R20, 0x64 STS $946, R20 LDI R20, 0x59 STS $947, R20 LDI R20, 0x36 STS $948, R20 LDI R20, 0x2D STS $949, R20 LDI R20, 0x6B STS $94A, R20 LDI R20, 0x5A STS $94B, R20 LDI R20, 0x76 STS $94C, R20 LDI R20, 0x3D STS $94D, R20 LDI R20, 0x6F STS $94E, R20 LDI R20, 0x1B STS $94F, R20 LDI R20, 0x46 STS $950, R20 LDI R20, 0x31 STS $951, R20 LDI R20, 0x2C STS $952, R20 LDI R20, 0x4B STS $953, R20 LDI R20, 0x52 STS $954, R20 LDI R20, 0x74 STS $955, R20 LDI R20, 0x5D STS $956, R20 LDI R20, 0x77 STS $957, R20 LDI R20, 0x1D STS $958, R20 LDI R20, 0x67 STS $959, R20 LDI R20, 0x19 STS $95A, R20 LDI R20, 0x26 STS $95B, R20 LDI R20, 0x29 STS $95C, R20 LDI R20, 0x2A STS $95D, R20 LDI R20, 0x6A STS $95E, R20 LDI R20, 0x7A STS $95F, R20 LDI R20, 0x7E STS $960, R20 LDI R20, 0x3F STS $961, R20 LDI R20, 0x0F STS $962, R20 LDI R20, 0x03 STS $963, R20 LDI R20, 0x40 STS $964, R20 LDI R20, 0x10 STS $965, R20 LDI R20, 0x04 STS $966, R20 LDI R20, 0x41 STS $967, R20 LDI R20, 0x30 STS $968, R20 LDI R20, 0x0C STS $969, R20 LDI R20, 0x43 STS $96A, R20 LDI R20, 0x50 STS $96B, R20 LDI R20, 0x14 STS $96C, R20 LDI R20, 0x45 STS $96D, R20 LDI R20, 0x71 STS $96E, R20 LDI R20, 0x3C STS $96F, R20 LDI R20, 0x4F STS $970, R20 LDI R20, 0x13 STS $971, R20 LDI R20, 0x44 STS $972, R20 LDI R20, 0x51 STS $973, R20 LDI R20, 0x34 STS $974, R20 LDI R20, 0x4D STS $975, R20 LDI R20, 0x73 STS $976, R20 LDI R20, 0x5C STS $977, R20 LDI R20, 0x57 STS $978, R20 LDI R20, 0x15 STS $979, R20 LDI R20, 0x65 STS $97A, R20 LDI R20, 0x79 STS $97B, R20 LDI R20, 0x3E STS $97C, R20 LDI R20, 0x2F STS $97D, R20 LDI R20, 0x0B STS $97E, R20 LDI R20, 0x42 STS $97F, R20 LDI R20, 0x70 STS $980, R20 LDI R20, 0x1C STS $981, R20 LDI R20, 0x47 STS $982, R20 LDI R20, 0x11 STS $983, R20 LDI R20, 0x24 STS $984, R20 LDI R20, 0x49 STS $985, R20 LDI R20, 0x32 STS $986, R20 LDI R20, 0x6C STS $987, R20 LDI R20, 0x5B STS $988, R20 LDI R20, 0x56 STS $989, R20 LDI R20, 0x35 STS $98A, R20 LDI R20, 0x6D STS $98B, R20 LDI R20, 0x7B STS $98C, R20 LDI R20, 0x5E STS $98D, R20 LDI R20, 0x37 STS $98E, R20 LDI R20, 0x0D STS $98F, R20 ;;;;;; ;; Load total 37*7 bits into designated memory location------- LDI R20, 0x00 ;;S36 STS $A24, R20 LDI R20, 0x00 ;; S35 --------D8 STS $A23, R20 LDI R20, 0x00 ;; S34 --------D7 STS $A22, R20 LDI R20, 0x00 ;; S33 STS $A21, R20 LDI R20, 0x00 ;; S32 STS $A20, R20 LDI R20, 0x00 ;; S31 STS $A1F, R20 LDI R20, 0x00 ;; S30 STS $A1E, R20 LDI R20, 0x00 ;; S29 STS $A1D, R20 LDI R20, 0x00 ;; S28 --------D6 STS $A1C, R20 LDI R20, 0x00 ;; S27 --------D5 STS $A1B, R20 LDI R20, 0x00 ;; S26 STS $A1A, R20 LDI R20, 0x00 ;; S25 STS $A19, R20 LDI R20, 0x00 ;; S24 STS $A18, R20 LDI R20, 0x00 ;; S23 STS $A17, R20 LDI R20, 0x00 ;; S22 STS $A16, R20 LDI R20, 0x00 ;; S21 STS $A15, R20 LDI R20, 0x00 ;; S20 STS $A14, R20 LDI R20, 0x00 ;; S19 STS $A13, R20 LDI R20, 0x00 STS $A12, R20 LDI R20, 0x00 ;; S17 =N15 STS $A11, R20 LDI R20, 0x00 ;; S16 --------D3 STS $A10, R20 LDI R20, 0x00 ;; S15 --------D2 STS $A0F, R20 LDI R20, 0x00 ;; S14 STS $A0E, R20 LDI R20, 0x00 ;; S13 STS $A0D, R20 LDI R20, 0x00 ;; S12 STS $A0C, R20 LDI R20, 0x00 ;; S11 STS $A0B, R20 LDI R20, 0x00 ;; S10 STS $A0A, R20 LDI R20, 0x00 ;; S9 --------D1 STS $A09, R20 LDI R20, 0x00 ;; S8 --------D0 STS $A08, R20 LDI R20, 0x00 ;; S7 STS $A07, R20 LDI R20, 0x00 ;; S6 STS $A06, R20 LDI R20, 0x00 ;; S5 STS $A05, R20 LDI R20, 0x00 ;; S4 STS $A04, R20 LDI R20, 0x00 ;; S3 STS $A03, R20 LDI R20, 0x00 ;; S2 STS $A02, R20 LDI R20, 0x00 ;; S1 STS $A01, R20 LDI R20, 0x00 ;; S0 STS $A00, R20 ;;main function: CALL FFUNAE ;; end of main functionW start: ;; infinity loop used to isolate the main and functions rjmp start ;;this is the mode FFUNAE: ;;AE mode for the Sli-light 8 bit. CALL FFUN3 CALL FFUNKEY CALL FFUNAD CALL FFUNM CALL FFUNKEY RET ;;load data LOADVAL: ;;PASS R27, R26, which store the initial address of the loaded content. LD R10, X INC R26 LD R11, X INC R26 LD R12, X INC R26 LD R13, X INC R26 LD R14, X INC R26 LD R15, X INC R26 LD R16, X INC R26 LD R17, X INC R26 LD R18, X INC R26 LD R19, X LDS R9, $A24 ;; S36 --------D9 LDS R8, $A23 ;; S35 --------D8 LDS R7, $A22 ;; S34 --------D7 LDS R6, $A1C ;; S28 --------D6 LDS R5, $A1B ;; S27 --------D5 LDS R4, $A12 ;; S18 --------D4 LDS R3, $A10 ;; S16 --------D3 LDS R2, $A0F ;; S15 --------D2 LDS R1, $A09 ;; S9 --------D1 LDS R0, $A08 ;; S8 --------D0 LDS R29, $A00 RET ;;save data STOREVAL: STS $A24, R9 ;; S36 --------D9 STS $A23, R8 ;; S35 --------D8 STS $A22, R7 ;; S34 --------D7 STS $A1C, R6 ;; S28 --------D6 STS $A1B, R5 ;; S27 --------D5 STS $A12, R4 ;; S18 --------D4 STS $A10, R3 ;; S16 --------D3 STS $A0F, R2 ;; S15 --------D2 STS $A09, R1 ;; S9 --------D1 STS $A08, R0 ;; S8 --------D0 STS $A00, R29 RET ;;this is the key absorption part in the mode FFUNKEY: LDI R27, 0x0B ;xor with key0 LDI R26, 0x00 CALL LOADVAL EOR R9,R19 EOR R8,R18 EOR R7,R17 EOR R6,R16 EOR R5,R15 EOR R4,R14 EOR R3,R13 EOR R2,R12 EOR R1,R11 EOR R0,R10 CALL STOREVAL CALL FFUN3 LDI R27, 0x0B LDI R26, 0x10 CALL LOADVAL EOR R9,R19 EOR R8,R18 EOR R7,R17 EOR R6,R16 EOR R5,R15 EOR R4,R14 EOR R3,R13 EOR R2,R12 EOR R1,R11 EOR R0,R10 CALL STOREVAL CALL FFUN3 RET ;;this is the AD absorption part in the mode FFUNAD: LDI R31, 0x01 ;domain seperator LDI R27, 0x0D ;xor with key0 LDI R26, 0x00 CALL LOADVAL EOR R9,R19 EOR R8,R18 EOR R7,R17 EOR R6,R16 EOR R5,R15 EOR R4,R14 EOR R3,R13 EOR R2,R12 EOR R1,R11 EOR R0,R10 EOR R29, R31 ;;add domain seperator CALL STOREVAL CALL FFUN3 LDI R31, 0x01 ;domain seperator LDI R27, 0x0D LDI R26, 0x10 CALL LOADVAL EOR R9,R19 EOR R8,R18 EOR R7,R17 EOR R6,R16 EOR R5,R15 EOR R4,R14 EOR R3,R13 EOR R2,R12 EOR R1,R11 EOR R0,R10 EOR R29, R31 ;;add domain seperator CALL STOREVAL CALL FFUN3 RET ;;this is the message absorption part in the mode FFUNM: LDI R20, 0x00 LDI R21, 0x10;;ROUND TIMEs,should be 111 finally WHILMM: CP R20, R21; Compare n(START at 0) with limit(=5) BRSH NEXTMM LDI R31, 0x02 ;domain seperator LDI R27, 0x0E ;xor with key0 LDI R26, 0x00 CALL LOADVAL EOR R9,R19 EOR R8,R18 EOR R7,R17 EOR R6,R16 EOR R5,R15 EOR R4,R14 EOR R3,R13 EOR R2,R12 EOR R1,R11 EOR R0,R10 EOR R29, R31 ;;add domain seperator CALL STOREVAL PUSH R20 PUSH R21 CALL FFUN3 POP R21 POP R20 INC R20 rjmp WHILMM ; Go back to beginning of WHILE loop NEXTMM: RET ;;this is permutation box FFUN3: LDI R20, 0x00 LDI R21, 0x6F;;ROUND TIMEs,should be 111 finally WHIL1: CP R20, R21; Compare n(START at 0) with limit(=5) BRSH NEXTD1 CALL FFUN rjmp WHIL1 ; Go back to beginning of WHILE loop NEXTD1: LDI R27, 0x0A ;; Load required* data to registers from memory LDI R26, 0x00 ;; a24 X LDI R29, 0x0A ;; Load required* data to registers from memory LDI R28, 0x6F ;; a6f Y LDI R20, 0x00 LDI R21, 0x25;;ROUND TIMEs,should be 37 = 23HEX finally WHILMOVE: CP R20, R21; Compare n(START at 0) with limit(=5) BRSH NEXTDMOVE LD R16, Y ;;S36 ;;MOVE Y to X ST X, R16 INC R26 INC R28 INC R20 rjmp WHILMOVE ; Go back to beginning of WHILE loop NEXTDMOVE: RET ;;this is WG permutation round FFUN: ;;DATA: A24, TABLE: 521 (WG), 621(r), 721(s-box), 821(RC1), 921(RC0) and R25, we better use R22 R23 R24 as temp regs LDI R22, 0x00 ;;get result of WG - 521 LDI R23, 0x00 ;;get result of r -621 LDI R24, 0x00 ;;get results of s-box one by one -721 LDI R27, 0x0A ;; Load required* data to registers from memory LDI R26, 0x24 ADD R26, R20 LD R16, X ;;S36 SUBI R26, 2 LD R15, X ;;S34 SUBI R26, 3 LD R14, X ;;S31 SUBI R26, 1 LD R13, X ;;S30 SUBI R26, 3 LD R12, X ;;S27 SUBI R26, 1 LD R11, X ;;S26 SUBI R26, 2 LD R10, X ;;S24 SUBI R26, 5 LD R9, X ;;;S19 SUBI R26, 1 LD R8, X ;S18 SUBI R26, 3 LD R7, X ;;S15 SUBI R26, 2 LD R6, X ;;S13 SUBI R26, 1 LD R5, X ;;S12 SUBI R26, 1 LD R4, X ;;S11 SUBI R26, 3 LD R3, X ;;S8 SUBI R26, 2 LD R2, X ;;S6 SUBI R26, 1 LD R1, X ;;S5 SUBI R26, 5 LD R0, X ;;S0 ;;GET WG result begin-------------- LDI R27, 0x05 ;; Store fg to the next data location in the memory. LDI R26, 0x21 ADD R26, R16 ;; move index to the value correponsing to S36 LD R16, X ;;load value from the WG table to R16 ;;GET WG result end -------------- ;;GET r result begin-------------- LDI R27, 0x06 ;; Store fg to the next data location in the memory. LDI R26, 0x21 ADD R26, R0 ;; move index to the value correponsing to S0 LD R0, X ;;load value from the r table to R0 ;;GET r result end-------------- ;;GET RC0 LDI R27, 0x08 ;; GET RC1 for fb_out LDI R26, 0x21 ADD R26, R20 ;; move index to the value correponsing to S0 LD R22, X ;; get fb-out stored in R22-------- EOR R22, R16 ;;36 EOR R22, R14 ;;31 EOR R22, R13 ;;30 EOR R22, R11 ;;26 EOR R22, R10 ;;24 EOR R22, R9 ;;19 EOR R22, R6 ;;13 EOR R22, R5 ;;12 EOR R22, R3 ;;8 EOR R22, R2 ;;6 EOR R22, R0 ;;ready to save R22 which is fg now to the new memory place ;; get fb-out stored in R22 end-------- ;;Begin updateing terms, (30, 24, 19, 11, 5), with s-box of (34, 27, 18, 15, 8) LDI R27, 0x07 LDI R26, 0x21 ;; update 1st value s30 ADD R26, R15 ;; get S-BOX index LD R24, X ;;load value from the S table EOR R13, R24 LDI R26, 0x21 ;; update 2nd value s24 ADD R26, R12 ;; get S-BOX index LD R24, X ;;load value from the S table EOR R10, R24 LDI R26, 0x21 ;; update 4th value s11 ADD R26, R7 ;; get S-BOX index LD R24, X ;;load value from the S table EOR R4, R24 LDI R26, 0x21 ;; update 5th value s5 ADD R26, R3 ;; get S-BOX index LD R24, X ;;load value from the S table to R22 EOR R1, R24 LDI R27, 0x05 LDI R26, 0x21 ;;Update 3rd value s19 ADD R26, R8 ;; get WG index LD R24, X ;;load value from the S table EOR R9, R24 ;;S19 XOR WAP(18) LDI R27, 0x09 LDI R26, 0x21 ADD R26, R20 ;; get RC0 index LD R24, X ;;load RC0 from the RC0 table EOR R9, R24 ;;S19 XOR WAP(18) XOR RC0 ;;End updateing terms, (30, 24, 19, 11, 5), with s-box of (34, 27, 18, 15, 8) LDI R27, 0x0A ;; Load required* data to registers from memory LDI R26, 0x24 ADD R26, R20 SUBI R26, 6 ST X, R13 SUBI R26, 6 ST X, R10 SUBI R26, 5 ST X, R9 SUBI R26, 8 ST X, R4 SUBI R26, 6 ST X, R1 LDI R26, 0x24 ;; Load required* data to registers from memory INC R20 ADD R26, R20 ST X, R22 RET ;AND operation begin