⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test5.pro

📁 16位的RISC_CPU
💻 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 + -