該項目是模擬由CPU和內存組成的簡單計算機系統。 CPU和內存是通過交流的單獨過程模擬的。內存包含CPU將執行的一個程序,然後模擬將結束。
對於CPU:
用於內存:
對於計時器:
用於中斷處理:
指令集:
- > 1 =負載值#將值加載到AC中
- > 2 = load addr#將地址處的值加載到AC中
- > 3 = loadind addr#從給定地址中的地址加載值中的值。 (例如,如果Loadind 500和500包含100,則從100中加載)。
- > 4 = loadIdxx addr#將值(地址+x)加載到AC中。 (例如,如果LoadIdxx 500和X包含10,則從510加載)。
- > 5 = loadiDxy addr#將值加載到(地址+y)中
- > 6 = loadSpx#從(SP+X)加載到AC中(如果SP為990,而X為1,負載為991)。
- > 7 =存儲addr#將AC中的值存儲到地址中
- > 8 =獲取#從1到100的隨機int進入AC
- > 9 = put port#如果端口= 1,請將AC作為屏幕上的int寫入;如果端口= 2,請將AC作為char寫在屏幕上
- > 10 = addx#將x中的值添加到AC中
- > 11 = addy#將y中的值添加到交流
- > 12 = subx#從AC中減去X中的值
- > 13 = suby#從AC中減去y中的值
- > 14 = CopyTox#將AC中的值複製到X
- > 15 = copyfromx#將x中的值複製到AC
- > 16 = CopyToy#將AC中的值複製到Y
- > 17 =複製#將Y中的值複製到AC
- > 18 = copyTosp#將AC中的值複製到SP
- > 19 = copyfromsp#將SP中的值複製到AC
- > 20 =跳躍addr#跳到地址
- > 21 = JumpifeQual addr#僅在AC中的值為零時跳到地址
- > 22 = JumpiFnoteQual addr#僅在AC中的值不為零時跳到地址
- > 23 =呼叫addr#將返回地址推到堆棧,跳到地址
- > 24 = RET#從堆棧中的POP返回地址,跳到地址
- > 25 = incx#遞增x中的值
- > 26 = decx#降低x中的值
- > 27 =推#推到堆棧
- > 28 = pop#pop從stack到AC
- > 29 = int#執行系統調用
- > 30 = IRET#從系統呼叫返回
- > 50 =結束#結束執行
=================================================================================
示例文件夾包含5個示例文件。
sample1.txt
sample2.txt
sample3.txt
sample4.txt
sample5.txt
=================================================================================
編譯和執行項目的步驟: