[编程语言][汇编语言]另类的函数调用

低级编程语言和高级编程语言 低级编程语言,并不是简单的编程语言,而是写起来很费事的编程语言,如所有编程语言的"祖宗":汇编语言,写起来极其麻烦,说不定一个 int a=1;它就得写好几行,甚至十几行这样麻烦的编程语言为什么还没消失那,因为它效率高. 阅读详情

在汇编语言中,在主调函数中使用call指令,并且在被调函数中使用ret,这样就实现了函数调用这个过程。本文想展示一个另类的函数调用。下文中的示例代码1为我们通常使用的函数调用,示例代码2为另类的函数调用。

示例代码1如下:


    .equ BOOT_SEG, 0x07C0

    .code16

    .section .text
    .global _start
_start:
    jmp $BOOT_SEG, $main
main:
    mov %cs, %ax
    mov %ax, %ds
    mov %ax, %ss

    mov $0x1, %ax
    mov $0x2, %bx
    call add

    hlt

add:
    push %bp
    mov %sp, %bp
    push %bx
    push %cx
    push %dx
    jmp save_registers

    add %bx, %ax

    pop %dx
    pop %cx
    pop %bx
    mov %bp, %sp
    pop %bp
    ret

    .org 510
    .word 0xAA55

示例代码2如下:


    .equ BOOT_SEG, 0x07C0

    .code16

    .section .text
    .global _start
_start:
    jmp $BOOT_SEG, $main
main:
    mov %cs, %ax
    mov %ax, %ds
    mov %ax, %ss

    mov $0x1, %ax
    mov $0x2, %bx
    call add

    hlt

save_registers:
    push $1f
    push %bp
    mov %sp, %bp
    push %bx
    push %cx
    push %dx

    jmp *4(%bp)

1:  pop %dx
    pop %cx
    pop %bx
    mov %bp, %sp
    pop %bp
    jmp *6(%bp)

add:
    push $1f
    jmp save_registers
1:  add %bx, %ax

    jmp *2(%bp)

    .org 510
    .word 0xAA55
【一天一门编程语言】使用汇编语言实现斐波那契数列 斐波那契数列(Fibonacci Sequence),又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递归的方法定义:F(0) = 0F(1) = 1汇编语言是一种低级语言,它可以表达极少的语句,但这些语句可以被机器(如 CPU)识别和执行。机器语言和汇编语言之间存在着相互转换的关系,有了汇编语言,程序员可以更轻松的编写和维护机器语言。 阅读详情

相关推荐

9、RP2040 汇编语言函数调用与栈的使用详解

本文详细解析了在 RP2040 微控制器上使用汇编语言进行函数调用和栈操作的相关知识。内容涵盖栈的基本概念与操作、函数调用与返回机制、寄存器管理规则、分支指令的使用,以及栈帧的必要性。同时结合实际代码示例,展示了如何编写高效的汇编函数,并提供了优化建议、不同应用场景及常见问题的解决方法。通过深入理解这些内容,开发者可以更好地编写高效、可维护的汇编代码,适用于嵌入式系统开发。

iii12的专栏 77

#有关汇编语言的org指令(许多不为人知的故事):

有关汇编语言的org指令(许多不为人知的故事):也许不知道是从什么时候开始,java这种高级语言已经占领市场,连我毕业的大学,现在都不再教C语言的内容了,为了就业率,但是其实作为一个程序员,我表示深深的遗憾啊,还在用C语言的被当作老怪兽看待,什么自动编译,自动部署,自动化的东西太多了,我觉得程序员们已经深深地陷入了一个圈套:认为凡是高级的就是好的,其实不然,能够弄明白一些底层的东西对理解计算机,理解

u011894856的专栏 1万+

编程语言发展史之:第一代编程语言

作者:禅与计算机程序设计艺术 1.背景介绍 计算机的诞生就是为了解决人类计算能力的不足。在这个过程中产生了最早的编程语言。编程语言是人们为了方便地描述、制造和控制机器而创造的工具。最初的编程语言中只有一种——机器指令。机器码由0和1组成,在程序编写完成后需要将其翻译成电信号才能在计算机上运行。这种方

AI天才研究院 1710

php另类函数

函数名: post_img函数作用: 读取给定字符串中的图片地址函数代码:function post_img($content){$output=”";$soContent = $content;$soImages = ‘~]* />~’ //构建匹配模式preg_match( $soImages, $soContent, $thePics );/* 只匹配第一张图片 ,可以根据自己的需要进行匹配

南三方---网站设计开发录 522

入门汇编语言编程

汇编语言,作为计算机科学的一个基础分支,其历史可以追溯到早期计算机的诞生。它是一种低级编程语言,与机器语言紧密相关,允许程序员直接使用处理器指令集。虽然现代编程越来越多地依赖于高级语言,但汇编语言在系统编程、驱动开发以及性能优化等领域依然扮演着不可或缺的角色。数据段主要用于存储程序中的全局变量和静态变量。在汇编语言中,可以通过定义段来分配内存空间,用于存放数据。例如,在x86汇编语言中,可以使用.data段标识符来定义一个数据段。.data定义一个字大小的变量,值为100。

weixin_32661831的博客 1059

深入理解MIPS汇编语言:函数调用与堆栈操作

本文通过介绍MIPS汇编语言的函数调用机制和堆栈操作,旨在帮助读者理解和掌握在内存中传递参数、分配局部变量空间以及存储嵌套调用和递归调用的返回地址的方法。文章通过详细的示例和解释,强调了编程团队合作时参数传递约定的重要性,并通过硅谷图形公司定义的参数传递约定,为读者展示了如何在栈上传递参数并使用寄存器返回值。...

weixin_35752122的博客 519

每周总结-----不同编程语言互相调用的本质

造成不同编程语言不能之间互相调用的原因是:编译器对每个函数的解释不同,会翻译成不同的符号表 假如有一个函数 int a(int b);c编译器会直接翻译成_a()c++会翻译成_int a(int),这也是c++能支持重载的原因 extern C 是 c++ 的特性,这一点非常重要,所以,C++调用c接口 和 c调用c++接口不一样。它是一种链接约定,不影响对函数的检查参数的转换仍要遵循c++...

专注分享 AI 干货,社交平台会同步更新配套资源(同名),欢迎大家关注 2915

从零开始利用MATLAB进行FPGA设计(一):建立脉冲检测模型的Simulink模型2

上一期分析了MATLAB的黄金算法原理,这一期进行Simulink模块分析。

WZT725的博客 2086

笔记:c程序的另类函数调用

偶然间又看到了一个c程序的骚操作。写出来记录一下。先把代码和运行结果贴出来。 #include <stdio.h> #include <stdlib.h> void fun() { printf("1\n"); } int fun1(int a,int b) { int *p = &a; --p; *p = (int)fun; ...

main_h_的博客 435

【一键搞定】ThinkPHP6.0.2+PHPStudy+Composer极速安装指南——附完整下载包与避坑技巧

本文提供了一份ThinkPHP6.0.2的完整下载包,并详细介绍了如何配合PHPStudy和Composer进行极速安装与配置。指南涵盖了环境准备、Composer国内镜像加速、项目部署及常见避坑技巧,旨在帮助开发者,尤其是内网或网络不佳的用户,快速搭建可运行的TP6开发环境,绕过依赖下载的繁琐步骤。

assembly8low的博客 1006

在win10系统上安装opnet14.5注意事项和步聚

opnet 14.5安装避坑!

miracle_eicont的专栏 1037

汇编 - ORG指令详解

ORG指令 ORG是Origin的缩写:起始地址,源。在汇编语言源程序的开始通常都用一条ORG伪指令来实现规定程序的起始地址。如果不用ORG规定则汇编得到的目标程序将从0000H开始。例如:              ORG 2000H       START:MOV  AX,#00H 汇编语言源程序中若没有ORG伪指令,则程序执行时,指令代码被放到自由内存空间的CS:0处;若有ORG

xyjikl 7万+

浅谈函数调用【函数调用的底层实现逻辑】

函数调用的底层逻辑实现以及汇编相关的知识。

Ethereal的博客 1639

Abaqus梁模型仿真中的常见陷阱与优化策略

本文深入探讨了Abaqus梁模型仿真中的常见陷阱与优化策略,涵盖几何建模、材料属性设置、边界条件处理等关键环节。针对梁截面方向定义、网格划分、复合截面建模等典型问题,提供了实用的Python脚本示例和优化方案,帮助工程师避免计算错误并提升仿真精度。文章特别强调了动力分析中的网格密度要求和材料非线性考虑,为复杂工程应用提供专业指导。

weixin_29099217的博客 461

VisionPro脚本实战:用C#替代QuickBuild,让复杂定位项目代码更清爽

本文探讨了如何通过C#脚本重构VisionPro复杂定位项目,替代臃肿的QuickBuild架构。通过实战案例展示了脚本化开发如何减少60%代码量并提升35%运行效率,使项目更易维护。文章详细介绍了环境搭建、多模板定位重构及高级技巧,帮助开发者突破QuickBuild限制,实现更高效的视觉应用开发。

weixin_30417487的博客 502

汇编语言和高级编程语言区别与联系

C语言是作为一个程序员来说,必须要掌握也是最基础的编程语言。在编程语言发展的历史长河里,出现了各种各样的编程语言,他们由不同的人开发又在不同的领域得到发展,从而发展到现今编程语言领域的百花齐放百家争鸣。作为机器码之上的汇编语言无疑是每个软件工程师必须要了解的编程语言。本文简述了编程语言的发展史,以及汇编语言和高级编程语言的区别和联系。在对比中对编程语言有更深入的理解。 一、编程语言的发展历程 自从...

wangxiaoguaai123的博客 2万+

STM32F103+AX58100 EtherCAT从站SPI移植实战:CubeMX配置避坑指南

本文详细介绍了STM32F103与AX58100 EtherCAT从站控制器的SPI接口移植实战,重点解析CubeMX配置中的关键参数与常见陷阱。内容涵盖硬件连接规范、SPI模式设置、中断优先级规划及协议栈对接技巧,帮助开发者高效实现工业自动化领域的实时通信方案。特别强调CPOL/CPHA配置与AX58100的匹配要求,避免数据错位问题。

weixin_29230865的博客 330

2023编程语言趋势

Python持续霸榜,PHP依旧颓势,Java雄风不再,Rust热度不减,汇编迅速崛起,C语言地位稳固

略懂……略懂…… 3万+

B.3【智能标注】:基于Labelstudio的UIE半监督深度学习的智能标注方案(云端版),提效。

Label Studio 所提供的 Machine Learning Backend 提供了一个比较灵活的辅助人工标注的框架,我们通过它确实可以加快 nlp 数据的标注Label Studio 的 enterprise 版本提供了 Active Learning 的流程,不过从其描述看这个流程并不完美,尤其是 fit 部分,由于 Label Studio 低估了「Train」所花费的时间,所以每次标注都自动训练的流程可能并不会那么顺滑(会在链接时候等待一段时间)

丨汀、的博客 1840

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python是汇编语言吗-汇编语言最新资讯

最新的TIOBE语言流行度指数显示汇编语言再次进入前10。最流行的语言中如Java、C和C++的排名没有变化,从10名之外进入前10的两种语言是Perl和汇编语言,像汇编语言这种最低级语言流行起来有些出人意料。一种解释是能运行汇编语言的设备在增加,你的电动牙刷和咖啡机今天都能运行汇编代码。有些人认为“JavaScript是Web的汇编语言”完全是精神病说的话。为此,我询问了几位JavaScript...

weixin_39887546的博客 4967

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

计算机编程语言(机器语言,汇编语言,高级语言)

计算机语言:计算机语言通常是一个能完整、准确和规则地表达人们的意图,并用以指挥或控制计算机工作的“符号系统”。 计算机语言通常分为三类:即机器语言,汇编语言和高级语言。 1. 机器语言 机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据。它是计算机的设计者通过计算机的硬件结构赋予计算机...

Tiantian的博客 3万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

汇编语言编程软件_编程语言介绍与分类

小猿圈-IT自学人的小圈子什么是编程?为什么要编程?编程 是个动词,编程==写代码,写代码为了什么? 为了让计算机干你想要干的事情,比如,马化腾想跟别人聊天,于是写了个聊天软件,这个软件就是一堆代码的集合,这些代码是什么?这些代码是计算机能理解的语言。那计算能理解的语言是什么呢? 之前,我们已经了解到,它只能理解2进制,0101010...,你总不能人肉输一堆二进制给计算机(虽然最原始的计算机就是...

weixin_39730801的博客 460

编程语言

计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。 电脑每做的一次动作,一个步骤,都是按照以经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。 计算机所能识别的语言只有机器语言,即由0和1构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于记忆和识

为实现梦想! 3121

《 汇编语言的系统学习》一、编程语言、机器语言与汇编语言

《 汇编语言的系统学习》一、编程语言、机器语言与汇编语言

镰刀 & 锤子;热情 & 初心 504

编程语言发展史:汇编语言的出现和发展

当时,计算机硬件刚刚开始发展,机器语言的指令用二进制代码表示,每个指令包含操作码(opcode)和操作数(operand)两部分,操作码表示指令的类型,操作数表示指令的操作对象。随着计算机技术的发展,汇编语言也在不断改进和发展,以适应新的硬件和软件环境。宏指令允许程序员定义一些常用的代码片段,然后在程序中使用这些代码片段,从而减少代码的重复和冗余。在逆向工程中,汇编语言被广泛使用,以便分析和修改目标系统的二进制代码。在汇编语言的应用中,还有一些特殊的领域,例如反汇编语言、漏洞利用和逆向工程。

Kali与编程 765
上一篇: [编译环境][gas]结构体定义
下一篇: [系统操作][Linux]安装字体
cloudblaze
博客等级 码龄17年 81粉丝 125原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值