正在加载图片...
inapub.com 4章高要语言和语言253 下载 MvI( move immediate)语句把数9送到寄存器C。CALL5语句进行CP/M功能调用。功 能9的意思是:显示一个字符串,起始地址由寄存器对DE给出,遇到美元符号结束。(注意, 文本以美元符号作为字符串的结束是很奇怪的,但CP/M就采用这种方法。)最后的RET语句 用来结束程序并把控制权返还给CPM(这实际上是结束CPM程序的几种方法之一)。END语 句表示汇编语言文件结束 即然已经有了7行文本的文本文件,下一步是汇编该文件,即把它转换成机器码。以前是 用手工来完成,自从运行CPM后,可以用包含在CP/M中的名为 ASM. COM的程序来完成。这 个程序是CPM汇编程序,在CP/M命令行运行 ASM. COM,方法为 ASM程序汇编 PROGRAMLASM文件并创建新的文件,名为 PROGRAM1COM,它含有 与编写的汇编语言程序相对应的机器码(实际上,在这个过程中还有另外一步,但在这里并 不重要)。现在,在CP/M命令行就可以运行 PROGRAM1COM,结果显示字符“Hell”,然 后结束。 PROGRAM1COM文件包含有下面16个字节 前面3个字节是LXI指令,紧接着2个字节是MVI指令,再后面3个字节是CALL指令,然后是 RET指令,最后7个字节是“ Hello”、感叹号和美元符号的ASCⅡ码 像 ASM COM这样的汇编程序所做的工作是:读入一个汇编语言程序(常称作源代码文件) 产生一个包含有机器码的文件——可执行文件。从大的方面来看,汇编程序是相当简单的程 序,因为在汇编语言助记符与机器码之间存在一一对应的关系。汇编程序把每一个文本行分 成助记符和参数,然后把这些单词和字符与一张表相对照,该表中存有所有可能的助记符和 参数。通过这种对照就可以找到每个语句所对应的机器码指令。 注意汇编程序是如何得出LXI指令必须把寄存器对DE设置为地址010%h的。如果LⅪI指令 本身在0100h处(CP/M把程序装入内存运行时的地址),则0109h是就Text字符串的开始地址。 通常,使用汇编程序的程序员并不需要关心程序各部分的地址 当然,第一个编写汇编程序的人必须手工汇编程序。在同一台计算机上编写新的(或改 进)汇编程序的人可以用汇编语言编程然后用最初的汇编程序来汇编。一旦新的汇编程序经 过了汇编,它也可用来汇编自身 当一个新的微处理器诞生,就需要新的汇编程序。新的汇编程序可以在已有的计算机 上编写,利用原有的汇编程序来汇编。这种汇编称之为交叉汇编,即用在计算机A上的汇编程 序来生成在计算机B上运行的代码。 尽管汇编程序消除了汇编语言编程缺少创造性这一问题(手工汇编部分),但汇编语言还 存在两个主要问题,第一个(也许你已经猜测到了)是汇编语言程序冗长、乏味。因为你是 在微处理器芯片级编程,所以必须要考虑每一个细节。 第二个问题是汇编语言不可移植。如果为 Intel8080编写汇编语言程序,则不适用于在 Motorola的6800上运行,必须用6800的汇编语言重新编程。也许,这不像编写最初的汇编语 言程序那么困难,因为已经解决了主要的组织和算法问题,但是,仍然有许多工作要做。 上一章解释了现代微处理器芯片如何集成机器码指令来进行浮点运算,这当然已经很方 便了,但还不是十分令人满意。一种选择是彻底放弃与处理器相关的实现每个基本算术操作M V I(move immediate)语句把数9送到寄存器C。CALL 5 语句进行C P / M功能调用。功 能9的意思是:显示一个字符串,起始地址由寄存器对 D E给出,遇到美元符号结束。(注意, 文本以美元符号作为字符串的结束是很奇怪的,但 C P / M就采用这种方法。)最后的R E T语句 用来结束程序并把控制权返还给 C P / M(这实际上是结束C P / M程序的几种方法之一)。E N D语 句表示汇编语言文件结束。 即然已经有了7行文本的文本文件,下一步是汇编该文件,即把它转换成机器码。以前是 用手工来完成,自从运行 C P / M后,可以用包含在C P / M中的名为A S M . C O M的程序来完成。这 个程序是C P / M汇编程序,在C P / M命令行运行A S M . C O M,方法为: ASM PROGRAM1.ASM A S M程序汇编P R O G R A M 1 . A S M文件并创建新的文件,名为 P R O G R A M 1 . C O M,它含有 与编写的汇编语言程序相对应的机器码(实际上,在这个过程中还有另外一步,但在这里并 不重要)。现在,在C P / M命令行就可以运行 P R O G R A M 1 . C O M,结果显示字符“ H e l l o !”,然 后结束。 P R O G R A M 1 . C O M文件包含有下面1 6个字节: 11 09 01 0E 09 CD 05 00 C9 48 65 6C 6C 6F 21 24 前面3个字节是L X I指令,紧接着 2个字节是M V I指令,再后面 3个字节是C A L L指令,然后是 R E T指令,最后7个字节是“H e l l o”、感叹号和美元符号的A S C I I码。 像A S M . C O M这样的汇编程序所做的工作是:读入一个汇编语言程序(常称作源代码文件), 产生一个包含有机器码的文件—可执行文件。从大的方面来看,汇编程序是相当简单的程 序,因为在汇编语言助记符与机器码之间存在一一对应的关系。汇编程序把每一个文本行分 成助记符和参数,然后把这些单词和字符与一张表相对照,该表中存有所有可能的助记符和 参数。通过这种对照就可以找到每个语句所对应的机器码指令。 注意汇编程序是如何得出 L X I指令必须把寄存器对 D E设置为地址0 1 0 9 h的。如果L X I指令 本身在0 1 0 0 h处(C P / M把程序装入内存运行时的地址),则0 1 0 9 h是就Te x t字符串的开始地址。 通常,使用汇编程序的程序员并不需要关心程序各部分的地址。 当然,第一个编写汇编程序的人必须手工汇编程序。在同一台计算机上编写新的(或改 进)汇编程序的人可以用汇编语言编程然后用最初的汇编程序来汇编。一旦新的汇编程序经 过了汇编,它也可用来汇编自身。 每当一个新的微处理器诞生,就需要新的汇编程序。新的汇编程序可以在已有的计算机 上编写,利用原有的汇编程序来汇编。这种汇编称之为交叉汇编,即用在计算机A上的汇编程 序来生成在计算机B上运行的代码。 尽管汇编程序消除了汇编语言编程缺少创造性这一问题(手工汇编部分),但汇编语言还 存在两个主要问题,第一个(也许你已经猜测到了)是汇编语言程序冗长、乏味。因为你是 在微处理器芯片级编程,所以必须要考虑每一个细节。 第二个问题是汇编语言不可移植。如果为 Initel 8080编写汇编语言程序,则不适用于在 M o t o r o l a的6 8 0 0上运行,必须用 6 8 0 0的汇编语言重新编程。也许,这不像编写最初的汇编语 言程序那么困难,因为已经解决了主要的组织和算法问题,但是,仍然有许多工作要做。 上一章解释了现代微处理器芯片如何集成机器码指令来进行浮点运算,这当然已经很方 便了,但还不是十分令人满意。一种选择是彻底放弃与处理器相关的实现每个基本算术操作 第24章 高级语言和低级语言 253 下载
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有