无论如何一个简易的CPU是写完成了,运行了一个简单的例子,1到100的和,最终得出结果5050,好激动。
汇编程序sum.s如下:
.org 0x7c00 xor $r1,$r1,$r1 ori $r1,$r1,1 xor $r2,$r2,$r2 xor $r3,$r3,$r3 ori $r3,$r3,100 load $r4,flag flag:add $r2,$r2,$r1 addi $r1,$r1,1 gt $r1,$r3,end jmp $r4 end: int 1 halt
首先,驱动程序例程(main.c)调用assembly把sum.s汇编成sum.o
然后加载程序把sum.o加载到0x7c00处(实现经典吗。)
#include "includes.h" int main() { h = InitializeTable(100); Initcpu(); InitMemory(); InitScreen(); Assembly("sum.s","sum.o"); PrintHashTable(h); unsigned int file_size = Loader("sum.o",0x7c00); PrintMemory(0x7c00,file_size); Runcpu(); getch(); closegraph(); return 0; }
注意最后一行:The sum is:5050
GUI模式。注意reg[2] = 0x13ba,也就是十进制的5050。
下一步是带保护模式的CPU,我已经累觉不爱了。
原文:http://www.cnblogs.com/likeyiyy/p/3551577.html