高级语言程序与汇编语言程序

  汇编语言的编写、调试比较复杂,不具有可移植性,因此,在软件开发中往往使用高级语言。但是,汇编语言又有着高级语言所不具有的优点:占有存储空间小,运行速度快,能直接控制硬件。因而经常是程序的大部分用高级语言编写,而在某些关键部分,对速度要求很高的部分,运行次数很多的部分,直接控制硬件的部分,则用汇编语言编写。这就提出了汇编语言与高级语言的连接问题。
 一、 BASIC程序与汇编语言的连接
  1.USR(n函数),
  (])用DATA语句存放汇编子程序的机器码。
  (2)用DEF SEO语句定义汇编子程序机器码的装入段地址。
  (3)用READ语句从DATA语句中读汇编子程序的机器码。
  (4)用POKE函数,将汇编子程序的机器码进入指定的内存单元中。
  (5)用call语句调用, 或用UsR函数调用。
   2.CALL语句
  (1)用DEF SEG语句定义汇编子程序机器码的装入段地址。
  (2)用BLOAD语句装入原先存在磁盘内的 编子程序机器码文件。
  (3)用call语句弱用。
  二、 C语言程序与汇编语言程序的连接
  在用C语言编写的程序中,与汇编语言程序一样,可以进行细微地处理,因此在许多情况都没有必要与汇编语言程序相连接
  C语言程序中使用汇编语言程序定义的变量和函数时,在C语言程序中应该用extern说明,在汇编语言程序中应该用PUBLIC说明。
  汇编语言程序结束时应该用RET指令返回,而且由于采用堆栈来传送参数,因而返回时往往采用带参数的返回指令,以便跳过参数区。
  组描述是用GROUP伪指令把几个段组合成一组,这些段具有共同的起始地址。这样就允许通过用同一段寄存器访问一组中的各段。
  进.退栈操作是为了保存现场。另外,如果汇编语言程序中需要用到某些寄存器,则需将这些寄存器压入堆栈,待程序将要结束时,再退出堆栈。
  参数传递包括两个方面,一个是从TURBO C语言程序向汇编子模块传递参数,另一个是从汇编语言向TURBO C调用程序返回参数。TURBO C程序向汇编语言程序的参数传递是通过栈操作进行的。先传递的参数被最后压入堆栈,即参数按从右到左的顺序被压入堆栈(这与C语言的版本有关)。
  汇编语言程序中的结果返回给TURBO C主程序是通过AX和DX寄存器来完成的。

版权声明:aysz01 发表于 2024-09-08 14:42:52。
转载请注明:高级语言程序与汇编语言程序 | 电工学习网

暂无评论

暂无评论...