正在加载图片...
Chia°dow 第24章高级语言和低级语言 用机器码编程就像用牙签吃东西,刺的块很小且做起来很费力,吃一顿饭要花很长时间。 同样,每个机器码字节只是完成可以想像得到的最小且最简单的计算工作一一从内存装入 个数至处理器,与把它另一个数相加,再把结果存回到内存—一所以,很难想像机器码如何 完成一整项的工作。 至此,我们至少已从第22章开始处的原始模型阶段有了一些进步,从前我们一直用控制 面板上的开关输入二进制数据到内存。在第22章里,介绍了如何写简单的程序用键盘输入并 在视频显示器上检查机器码的十六进制字节码。这当然不错,但还不是改进的终点。 正如我们所知道的,机器码字节与某些短的助记符相关联,如MOV、ADD、CALL和 HLT,因此,可以用一些模糊类似的英语来引用机器码。这些助记符通常与操作数写在一起, 进一步表明机器码指令的功能。例如:8080机器码字节46h使得微处理器把寄存器对HL中的 16位数寻址的内存单元所存放的内容传送到寄存器B。这可以很简明地写成 当然,用汇编语言编写程序比用机器码要容易得多,但微处理器并不能理解汇编语言。 我们已经讲过如何在纸上编写汇编程序,只有当想在微处理器上运行汇编语言程序的时候, 才会手工汇编程序,意思是把汇编语言语句转换成机器码字节并输入到内存。 如果能让计算机来做这项转换工作就更好了。如果你正在8080计算机上运行CPM操作系 统,则你已经具有了所需要的工具。下面介绍它是如何工作的 首先,建立一个文本文件,包含有你用汇编语言编写的程序。可以用CP/M程序 ED COM 来完成这项工作。该程序是一个文本编辑器,可用来创建、修改文本文件。现假设创建的文 本文件名称为 PROGRAMI.ASM。ASM文件类型表明该文件是汇编语言程序文件,该文件看 起来就像下面这样: ORG 100 MVI C,9 CALL 5 Text: DB Hello! s END 文件中有几个语句以前没有见过。第一个是ORG( origin)语句,该语句不对应于任何一条 080指令,它表示下一条语句的地址从地址0100h处开始。前面讲过,这就是CP/M程序装入 到内存的地址。 下一个语句是LXI( load extended immediate)指令,它装入一个16位数到寄存器对DE 本例中,16位数由标号Text给出。标号在程序的下部,DB( Data Byte)语句之前。DB也是 以前未见到的,DB语句后面可以是几个逗号隔开的字节或(就像本例中)在单引号里的一些 符下载 第24章 高级语言和低级语言 用机器码编程就像用牙签吃东西,刺的块很小且做起来很费力,吃一顿饭要花很长时间。 同样,每个机器码字节只是完成可以想像得到的最小且最简单的计算工作—从内存装入一 个数至处理器,与把它另一个数相加,再把结果存回到内存—所以,很难想像机器码如何 完成一整项的工作。 至此,我们至少已从第 2 2章开始处的原始模型阶段有了一些进步,从前我们一直用控制 面板上的开关输入二进制数据到内存。在第 2 2章里,介绍了如何写简单的程序用键盘输入并 在视频显示器上检查机器码的十六进制字节码。这当然不错,但还不是改进的终点。 正如我们所知道的,机器码字节与某些短的助记符相关联,如 M O V、A D D、C A L L和 H LT,因此,可以用一些模糊类似的英语来引用机器码。这些助记符通常与操作数写在一起, 进一步表明机器码指令的功能。例如: 8 0 8 0机器码字节4 6 h使得微处理器把寄存器对 H L中的 1 6位数寻址的内存单元所存放的内容传送到寄存器 B。这可以很简明地写成: MOV B,[HL] 当然,用汇编语言编写程序比用机器码要容易得多,但微处理器并不能理解汇编语言。 我们已经讲过如何在纸上编写汇编程序,只有当想在微处理器上运行汇编语言程序的时候, 才会手工汇编程序,意思是把汇编语言语句转换成机器码字节并输入到内存。 如果能让计算机来做这项转换工作就更好了。如果你正在 8 0 8 0计算机上运行C P / M操作系 统,则你已经具有了所需要的工具。下面介绍它是如何工作的。 首先,建立一个文本文件,包含有你用汇编语言编写的程序。可以用 C P / M程序E D . C O M 来完成这项工作。该程序是一个文本编辑器,可用来创建、修改文本文件。现假设创建的文 本文件名称为P R O G R A M 1 . A S M。A S M文件类型表明该文件是汇编语言程序文件,该文件看 起来就像下面这样: ORG 0100h LXI DE, Text MVI C,9 CALL 5 RET Text: DB 'Hello!$' END 文件中有几个语句以前没有见过。第一个是 O R G(o r i g i n)语句,该语句不对应于任何一条 8 0 8 0指令,它表示下一条语句的地址从地址 0 1 0 0 h处开始。前面讲过,这就是 C P / M程序装入 到内存的地址。 下一个语句是L X I(load extended immediate)指令,它装入一个 1 6位数到寄存器对D E。 本例中,1 6位数由标号Te x t给出。标号在程序的下部, D B(Data Byte)语句之前。 D B也是 以前未见到的,D B语句后面可以是几个逗号隔开的字节或(就像本例中)在单引号里的一些 字符
向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有