汇编语言程序设计中,子程序设计时的现场保护和恢复是如何实现的举例说明。

供稿:hz-xin.com     日期:2025-01-13
汇编语言是最低级的编程语言吗?


计算机语言从低级到高级可以分为: 机器语言,即由0、1组成的机器硬件可以识别的语言; 低级语言,即汇编语言 中级语言,如C语言 高级语言,如C++,JAVA,C#等。 汇编语言是将由0、1组成的机器语言用具有简单语义的英文代码表示,以便于理解和程序员编程。汇编语言通常用于对硬件的直接操控。由于汇编语言编写的程序很小,所以通常在程序中最核心的、控制硬件的代码可以采用汇编语言编写,一方面是安全,另一方面提高运行速度。 对于计算机的初学者,应该从中高级语言学起,如c语言,vb,java等,如果你是想要学习如何编程,学习一到两门高级语言已经够用了。 如果你已经掌握了基本的编程技能,最好是可以学习数据结构和操作系统以及计算机硬件的基本工作原理,以便优化你编写的程序,提高安全性和运行效率。 如果你想要从事更高级的开发工作,则可能需要学习汇编语言。 在高校中,计算机科技专业的学生汇编语言是必修课,而软件工程专业的学生则对汇编语言不做要求。 至于汇编与编程的区别是显而易见的,汇编语言是一种用于编写某些程序的语言。而编程则是程序员用某种语言编写程序的过程。 查看原帖>>

从别人回答中摘的:

常见的CPU的CALL指令(“调用”指令)的功能,就是以下两点:
(1)将下一条指令的所在地址(即当时程序计数器PC的内容)入栈,
(2)并将子程序的起始地址送入PC(于是CPU的下一条指令就会转去执行子程序)。

而子程序结尾处通常都要编写一条RET指令(“返回”指令),RET指令的功能就是一条:
从栈中取出一条数据送入PC。

从上面叙述可以看出,正常情况下,RET指令从栈中取出的一条数据,也就是当初被CALL指令所入栈的下一条指令的所在地址。
因此,RET指令后,CPU的下一条指令就回去执行当初的CALL指令的下一条了。

CALL L1
调用子程序即过程调用,为了保护现场,会压栈保存断点,段内调用,说明L1的属性为NEAR,只需保存IP(pc值),SP=SP-2,但是如果是段间调用则需要保存CS和IP
那么SP=SP-4.不管怎么样,在执行完RET后,要恢复现场,即弹出断点,SP=SP+2
(段间调用SP=SP+4)
也就是说过程调用前后,SP总体看不会变,但是其堆栈发生了一系列变化。
SP数值没变!

汇编语言程序设计中,子程序设计时的现场保护和恢复是如何实现的举例说明...
(1)将下一条指令的所在地址(即当时程序计数器PC的内容)入栈,(2)并将子程序的起始地址送入PC(于是CPU的下一条指令就会转去执行子程序)。而子程序结尾处通常都要编写一条RET指令(“返回”指令),RET指令的功能就是一条:从栈中取出一条数据送入PC。从上面叙述可以看出,正常情况下,RET指令...

什么是子程序,如何使用子程序呢???
子程序(subroutine)是一个概括性的术语,任何高级程序所调用的程序,都被称为子程序。它经常被使用在汇编语言层级上。子程序的主体(body)是一个代码区块,当它被调用时就会进入运行。一般程序设计语言包含两种基本的抽象:过程抽象和数据抽象。过程抽象有时也称控制抽象。子程序是最主要过程抽象机制。面...

在汇编语言程序设计中,主程序与子程序之间进行参数传递的方法有哪些
1.寄存器法 寄存器法就是将入口参数和出口参数存放在约定的寄存器中。优点:数据传递书读快、编程较方便、节省内存单元。缺点:当传递参数过多时候,由于寄存器个数有限,及寄存器的频繁使用,将导致寄存器不足。适用:参数较少的子程序 2。约定单元法:约定单元法顾名思义是吧入口参数和出口参数都放在事...

汇编语言程序设计程序结构可分为哪四种
顺序程序结构,分支或选择程序结构,循环程序结构,子程。顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和...

c语言中有参延时函数在使用时需要注意什么?
在C语言中使用有参延时函数时,需要考虑以下几点:参数的类型和范围:延时函数的参数应该是一个整数或者长整型,代表延时的时间,通常以毫秒为单位计算。需要注意的是,参数值过大会导致程序卡死,参数值过小则可能导致延时不够精准。多任务环境下的使用:在多任务环境下,使用延时函数可能会导致系统的调度...

什么是子程序?
子程序是一种程序设计中的基本概念。子程序是一段可执行代码,作为更大程序的一部分,用来执行特定的任务或功能。它在主程序的调用下执行,并传递数据给主程序或者从主程序接收数据。子程序本身不直接启动执行,而是通过主程序中的指令来调用执行。当子程序完成任务后,通常会返回一个控制信号给主程序,...

子程序在C语言中是什么?
函数是一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能。所有的高级语言中都有子程序这个概念,用子程序实现模块的功能。在C语言中,子程序的作用是由一个主函数和若干个函数构成。由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次...

程序设计包括哪些内容?
语言 (Programming Language)是用于编写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言包含三个方面,即语法、语义和语用。语法表示程序的结构或形式,亦即表示构成程序的各个记号之间的组合规则,但不...

家务活总也做不完,给自己充电学习的时间都没有!怎么办!?
固定时间,明确家务目标。每天找出固定的时间做家务,其他时间用来学习。哪怕今天的家务没有完成也放到明天的固定时间再做。学会接受不完美。有一句话叫“家务活是永远干不完的”,如果睁一支眼、闭一支眼,不要事事做完美,你会发现其实生活还是一样美好。寻找生活和工作中的碎片时间。并不是只有较长的...

恰恰和桃桃去候鸟保护区,他们俩去的路上用三分之一小时,回家的路上用...
去的速度更快。因为速度=路程÷时间,而来去的路程是相等的,在将两者的用时以相同的计量单位衡量,有去保护区的用时1\/3小时=(1\/3)*60分钟=20分钟,显然,它要小于回来的用时,综上,它的速度要更快一些。