【汇编】模块化程序

您所在的位置:网站首页 jalr指令作用 【汇编】模块化程序

【汇编】模块化程序

2024-07-12 20:02:19| 来源: 网络整理| 查看: 265

10.1 call指令和ret指令 call指令

在这里插入图片描述 call指令相当于c++中的调用函数的指令,若要调用,直接用call 函数名即可调用已有函数。

call 函数名 在这里插入图片描述 call far ptr 标号实现段间转移,而不是段内转移: push CS push IP jmp far ptr 标号

在这里插入图片描述

寄存器中的call指令

call 寄存器相当于将当前的IP入栈,把寄存器当前的地址存放在IP中。

在这里插入图片描述

内存中的call指令

call 内存单元相当于将当前的IP或者CS:IP入栈,把内存单元中存储的当前的地址存放在IP中。 存内存单元时看是word还是dword,单字的话只转移IP,双字转移CS:IP. 在这里插入图片描述

ret

ret指令取自return,和c++中return作用相同。在函数中使用。 把之前call push的IP pop出来,实现程序的返回转移。 在这里插入图片描述

CALL和RET指令跳转过程

下图中,从20002开始,cs:ip通过地址总线进入代码段进行取值,取出0005E8,IP此时指向20005,数据从数据总线中保存到指令缓冲寄存器中,指令缓冲寄存器发现指令是跳转指令,将当前的IP入栈,此时是段内跳转,用20005+0005=2000A ,IP指向到2000A地址执行指令。 执行到ret后指令缓冲寄存器发现是ret,对之前保存IP出栈,让IP指向20005,这就是call和ret的调用全过程。 在这里插入图片描述

10.2 具有子程序的源程序框架

在上面,笔者在谈到call和ret之间时有一个重要媒介,就是栈的操作,在call和ret操作时都需要出栈和入栈,所以在正常调用call和ret时要定义栈的空间,来进行出栈入栈的操作。 在这里插入图片描述 在这里插入图片描述

10.3 mul指令

在mul乘法指令中,8位乘法和16位乘法在使用被乘数、乘数以及结果存储上有区别。 8位乘法:被乘数默认存储在AL中,乘数为8位寄存器或者内存字节单元,结果存放在16位寄存器AX中。 16位乘法:被乘数默认存储在AX中,乘数为16位寄存器或者内存字节单元,结果存放在32位寄存器DX(高位)+AX(低位)中。 在这里插入图片描述 在这里插入图片描述

10.4 模块化程序设计

模块化其实就是C++中的函数调用,通过这call和ret命令,可以实现自定义调用,可以进行递归调用等。 看下图中要执行计算的操作,考虑计算中用什么来对参数进行传递? 可以用寄存器、内存单元、栈进行参数的传递。

在这里插入图片描述

寄存器存储参数及结果

在这里插入图片描述

内存单元存储参数及结果

因为寄存器的数量有限,资源很宝贵,所以我们可以使用内存单元来存储相应的参数和结果。 在这里插入图片描述

栈存储参数及结果

对于内存单元的修改可能对正常运行的某部分功能进行修改从而导致出现错误。 则在程序开始前我们可以对栈的空间先进行定义,用栈来存储,就解决了功能的问题。 在这里插入图片描述 下图中ret 4代表着pop最后四个字节的数值。 在这里插入图片描述

10.5 寄存器的冲突问题

像下图,一开始定下的data的空间,db定义了12个字空间的大小,但是在程序中,如果我们要实现循环,像下面这样数肯定是不现实的。 在这里插入图片描述 在下面程序中cx既担任了控制循环的角色,又要进行si位置数据的保存,用jcxz判断cx是否为0,造成了寄存器冲突。 在这里插入图片描述 解决这个问题我们可以使用栈,通过在子程序中使用的寄存器都先入栈,之后按反顺序出栈,最后返回,即可解决寄存器冲突的问题。 过程:

子程序: 子程序中使用的寄存器入栈 子程序内容 子程序使用的寄存器出栈 返回(ret、retf)

在这里插入图片描述

实例

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭