首页 > 代码库 > 让cpu运行程序(三)
让cpu运行程序(三)
cpu的汇编程序设计
反映CPU功能的是它的指令系统,而指令系统设计得好不好,一般是反映在用这些指令编写的程序上。如果较多问题都能够用一个CPU的指令集编写的程序来处理,说明这个CPU的功能强大,反之就说明CPU的功能欠缺。
要检测我们设计的CPU是否达到了预期的目标,需要我们编写一定数量的汇编程序来对其进行测试。测试的时候,还必须将汇编程序转化成机器指令程序,不然CPU就无法识别。由此看来,学习计算机CPU设计制作,必须要学会汇编程序设计,还要能够将汇编程序翻译成机器指令程序。翻译汇编程序为机器指令程序的过程中,要知道程序出现的变量,需要安排到数据存储器的什么地方,还要将程序的存放首地址确定下来,然后确定好每一个程序标号的位置。因而,将汇编程序转化成机器指令程序,不仅仅是翻译的问题,还要进行规划,编排。所以人们将各种计算机语言翻译成机器语言的过程叫编译,其意思是说连编排带翻译。
这里我们就用上面设计的15条CPU指令系统,来编写一个能够求出64*53结果的程序。以这个程序为例,来说明汇编程序设计和编译的基本方法。作为练习,我们特意用加法来完成乘法运算,目的是运用更多的指令来编程,以便练习汇编程序设计与编译的方法。
例 3-1 编程计算64×53。
根据64*53问题所述要求,我们编写的汇编程序如下:
1 start: Sdal 1 ; 将1送da 2 3 Str one ; 放入one单元 4 5 Sub one ; da置0 6 7 Str result ; result内放0 8 9 Sdal 64 ; 将64送da 10 11 Str x ; da值存入x单元 12 13 Sdal 53 ; 将53送da 14 15 Str y ; da值存入y单元 16 17 loop: Lda y ; y值送da 18 19 Jz exit ; da为0转到exit执行 20 21 Sub one ; da-1 22 23 Str y ; da值存入y单元 24 25 Lda result ; da取result的值 26 27 Add x ; result+x 28 29 Str result ; 结果存入result 30 31 Jmp loop ; 转到loop执行 32 33 exit: Out result ; 输出result内容 34 35 Stp ; 停止
汇编程序的基本单位是语句,一个语句的前面可以有标号,习惯上标号的后面要加冒号,以示与指令的区别。汇编程序中不论标号还是指令操作对象,一律使用标识符来表示。汇编程序的语句是以空格做为结束符,分号是注释符号,其后面的文字都不是程序有效内容。在汇编程序设计中,人们习惯将汇编指令的操作对象称为变量。
让cpu运行程序(三)