奎克的藏经阁 · 原书印刷页

编码 隐匿在计算机软硬件背后的语言 · 第 383 页

PDF 物理页索引 399 · 编码隐匿在计算机软硬件背后的语言

书名
编码 隐匿在计算机软硬件背后的语言
作者
未记录
印刷页
383
PDF 物理页
399(从 0 开始)
章节
编码隐匿在计算机软硬件背后的语言
UUID
38270854-596f-4a26-8183-db8c968c6020
来源类型
original_book
页面 SHA-256
027b39681778efc8e0bb4374e4bebe8a4c500a9f632ff9fa03bc718b4c384930

MVI(Move Immediate)语句将数值 9 转移到寄存器 C。CALL 5 语句实现 CP/M 的函数调用功能。函数5的作用是:显示以寄存器对DE给出的地址为起始处的字符串,直到遇到\$结束(可以看到,在程序的结尾处使用了美元符号“\$”作为文本的结束标志,这种方式看起来很奇怪,但CP/M就是采取的这种方式)。最后的RET语句用来结束程序,并把控制权交还给CP/M(实际上,这只是结束CP/M程序的方法之一)。END语句用来指明汇编语言文件已经结束。

现在我们已经有了一个包含7行语句的文本文件,下一步要做的就是对其进行汇编,即将其转换成机器语言代码。以前这项工作是通过手工完成的,但现在我们的机器运行的是CP/M系统,可以利用CP/M中一个叫做 ASM.COM的模块来完成这项工作。该模块是 CP/M的汇编器(assembler)。可以在 CP/M的命令行中使用下面的语句运行 ASM.COM文件:

ASM PROGRAM1.ASM

ASM 对 PROGRAM1.ASM 文件进行汇编,产生一个名为 PROGRAM1.COM的新文件,PROGRAM1.COM包含了与我们编写的汇编程序相对应的机器码(实际上,该过程还包含另一个步骤,但在该操作中并不重要)。现在就可以使用CP/M的命令行来运行PROGRAM1.COM文件,程序运行的结果是显示字符串“Hello!”然后结束。

PROGRAM1.COM文件包含以下16个字节:

$$
\begin{array} { r l r l r l r l r l r l r l r l r l } { { 1 } 1 } & { { } 0 9 } & { 0 1 } & { 0 \mathrm { E } } & { 0 9 } & { { } \mathrm { C D } } & { 0 5 } & { { } 0 0 } & { { } \mathrm { C 9 } } & { 4 8 } & { { } 6 5 } & { { } 6 \mathrm { C } } & { { } 6 \mathrm { C } } & { { } 6 \mathrm { F } } & { { } 2 1 } & { { } 2 4 } \end{array}
$$

开始的3个字节是LXI指令,其后的两个字节是MVI指令,接下来的三个字节是CALL指令,紧随其后的一个字节是RET指令,最后的7个字节是ASCII码,包括5个字母“Hello”,感叹号“!”以及美元符号“\$”。

像ASM.COM这样的汇编器程序所做的工作是:读取一个汇编语言文件(source-code,通常称做源代码文件),将其转换得到一个包含机器码的文件—可执行文件(executablefile)。从宏观的角度来看,汇编器是非常简单的,因为构成汇编语言的助记符和机器码之问是一-对应的。汇编器拥有-一张包括所有可能助记符及其参数的表,它逐行读取汇编语言程序,把每一行都分解成为助记符和参数,然后把这些短小的单词和字符与表中的内容匹配。通过这种匹配的过程,每一个语句都会找到与其对应的机器码指令。

24 高级语言与低级语言

383