?? test5.pro
字號:
/************************************************************************************
* Test5 本程序是加解密數據塊程序,用于進一步驗證RISC_ CPU的功能。
* 注意:必須在成功地運行前兩個測試程序后才運行本程序 。否則很難發現問題所在。
* 加密算法是將被加密數據乘以5然后按位異或16'b0011100011011011
* 解密算法是將加了密的數據先異或16'b0011100011011011,然后乘以5的逆16'hCCCD
************************************************************************************/
//ram中變量初始值如下
// 0000000000000001 // 1800 SHU1: 11000_0000_0000 //常數1
// 0000000001000011 // 1801 SHU79: 11000_0000_0001 //移動程序數
// 0000000000000000 // 1802 N: 11000_0000_0010 //循環變量
// 0000000000000001 // 1803 N2 11000_0000_0011 //乘積
// 0000000000000000 // 1804 FACTORA: 11000_0000_0100 //臨時變量,保存加解密的數
// 1100110011001101 // 1805 KEY1: 11000_0000_0101 //解密用的乘數密鑰
// 0011100011011011 // 1806 KEY2 : 11000_0000_0110 //加解密用來異或作為一個密鑰
// 0000000000000001 // 1807 TEST1: 11000_0000_0111 //用來測試用的值
// 0000000000000000 // 1808 A: 11000_0000_1000 //中間變量
// 0000000000100000 // 1809 LIMIT: 11000_0000_1001 //加密數據塊長度
// 0000000000000000 // 180a //保留
// 0000000000000000 // 180b //保留
//180c-185b 給執行的程序預留的空間
//1860-187f d0計算機產生的16位隨機數,加密前的數
//1880-189f m0加密后的數據放到這里
//18a0-18bf e0解密后的數據放到這里
//-------------------------------test5.pro開始--------------------------------------------------------------------
// 機器碼 ram rom 匯編助記符 注釋
// 地址 地址
@00 // 將S1到S21中間程序移動到ram中
101_00000_0001_1101 // 00 LDA S1Y
110_11000_0000_1100 // 01 STO S1
101_00000_0001_1110 // 02 LDA S1Y+1
110_11000_0000_1101 // 03 STO S1+1
101_00000_0001_1111 // 04 LDA S1Y+2
110_11000_0000_1110 // 05 STO S1+2
101_00000_0010_0000 // 06 LDA S1Y+3
110_11000_0000_1111 // 07 STO S1+3
101_00000_0010_0001 // 08 LDA S1Y+4
110_11000_0001_0000 // 09 STO S1+4
101_00000_0010_0010 // 0a LDA S1Y+5
110_11000_0001_0001 // 0b STO S1+5
101_00000_0010_0011 // 0c LDA S1Y+6
110_11000_0001_0010 // 0d STO S1+6
101_00000_0010_0100 // 0e LDA S1Y+7
110_11000_0001_0011 // 0f STO S1+7
101_00000_0010_0101 // 10 LDA S1Y+8
110_11000_0001_0100 // 11 STO S1+8
101_00000_0010_0110 // 12 LDA S1Y+9
110_11000_0001_0101 // 13 STO S1+9
101_00000_0010_0111 // 14 LDA S1Y+10
110_11000_0001_0110 // 15 STO S1+10
101_00000_0010_1000 // 16 LDA S1Y+11
110_11000_0001_0111 // 17 STO S1+11
101_00000_0010_1001 // 18 LDA S1Y+12
110_11000_0001_1000 // 19 STO S1+12
101_00000_0010_1010 // 1a LDA S1Y+12
110_11000_0001_1001 // 1b STO S1+12
111_11000_0000_1100 // 1c JMP S1 ;跳轉到ram的S1程序執行
// 將S21后的程序移動到ram中
101_00000_0010_1011 //180c 1d S1:LDA YS21
110_11000_0001_1010 //180d 1e S2:STO S21
101_11000_0000_1100 //180e 1f LDA S1
010_11000_0000_0000 //180f 20 ADD SHU1
110_11000_0000_1100 //1810 21 STO S1
101_11000_0000_1101 //1811 22 LDA S2
010_11000_0000_0000 //1812 23 ADD SHU1
110_11000_0000_1101 //1813 24 STO S2
101_11000_0000_0010 //1814 25 LDA N
010_11000_0000_0000 //1815 26 ADD SHU1
110_11000_0000_0010 //1816 27 STO N
100_11000_0000_0001 //1817 28 XOR SHU20
001_00000_0000_0000 //1818 29 SKZ
111_11000_0000_1100 //1819 2a JMP S1
// 加密程序
101_11000_0000_0010 //181a 2b S21:LDA N
100_11000_0000_0010 //181b XOR N
110_11000_0000_0010 //181c STO N
101_11000_0110_0000 //181d S3:LDA d0
110_11000_0000_0100 //181e STO FACTORA
010_11000_0000_0100 //181f ADD FACTORA
110_11000_0000_0011 //1820 STO N2
101_11000_0000_0011 //1821 S4:LDA N2
010_11000_0000_0011 //1822 ADD N2
010_11000_0000_0100 //1823 ADD FACTORA
100_11000_0000_0110 //1824 XOR KEY2
110_11000_1000_0000 //1825 S5:STO m0
101_11000_0001_1101 //1826 LDA S3
010_11000_0000_0000 //1827 ADD SHU1
110_11000_0001_1101 //1828 STO S3
101_11000_0010_0101 //1829 LDA S5
010_11000_0000_0000 //182a ADD SHU1
110_11000_0010_0101 //182b STO S5
101_11000_0000_0010 //182c LDA N
010_11000_0000_0000 //182d ADD SHU1
110_11000_0000_0010 //182e STO N
100_11000_0000_1001 //182f XOR LIMIT
001_00000_0000_0000 //1830 SKZ
111_11000_0001_1101 //1831 JMP S3
// 解密程序
101_11000_0000_0000 //1832 LDA SHU1
100_11000_0000_0000 //1833 XOR SHU1
110_11000_0000_0010 //1834 STO N
101_11000_1000_0000 //1835 S6:LDA m0
100_11000_0000_0110 //1836 XOR KEY2
110_11000_0000_0100 //1837 STO FACTORA
110_11000_0000_1000 //1838 STO A
101_11000_0000_0000 //1839 S7:LDA SHU1
110_11000_0000_0111 //183a STO TEST1
100_11000_0000_0111 //183b XOR TEST1
110_11000_0000_0011 //183c STO N2
101_11000_0000_0111 //183d S8:LDA TEST1
011_11000_0000_0101 //183e AND KEY1
001_00000_0000_0000 //183f SKZ
111_11000_0100_0010 //1840 JMP S9
111_11000_0100_0101 //1841 JMP S10
101_11000_0000_1000 //1842 S9:LDA A
010_11000_0000_0011 //1843 ADD N2
110_11000_0000_0011 //1844 STO N2
101_11000_0000_1000 //1845 S10:LDA A
010_11000_0000_1000 //1846 ADD A
110_11000_0000_1000 //1847 STO A
101_11000_0000_0111 //1848 LDA TEST1
010_11000_0000_0111 //1849 ADD TEST1
110_11000_0000_0111 //184a STO TEST1
001_00000_0000_0000 //184b SKZ
111_11000_0011_1101 //184c JMP S8
101_11000_0000_0011 //184d LDA N2
110_11000_1010_0000 //184e S11:STO e0
101_11000_0011_0101 //184f LDA S6
010_11000_0000_0000 //1850 ADD SHU1
110_11000_0011_0101 //1851 STO S6
101_11000_0100_1110 //1852 LDA S11
010_11000_0000_0000 //1853 ADD SHU1
110_11000_0100_1110 //1854 STO S11
101_11000_0000_0010 //1855 LDA N
010_11000_0000_0000 //1856 ADD SHU1
110_11000_0000_0010 //1857 STO N
100_11000_0000_1001 //1858 XOR LIMIT
001_00000_0000_0000 //1859 SKZ
111_11000_0011_0101 //185a JMP S6
000_00000_0000_0000 //185b END: HLT
//-----------------------------test5.pro結束--------------------------------------------
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -