汇编小程序

汇编语言基础程序(持续更修…)

  • 数组求和

    ExitProcess PROTO.dataarr WORD 1,2,3,4,5,6,7,8,9,10
    .code 
    main PROCmov rbx, 0mov rcx, LENGTHOF arr ;获取arr元素个数mov rsi, OFFSET arr   ;获取arr的首地址
    Addsum:add bl, [rsi]         ;获取rsi寄存器中保存地址对应的值x,bl += xadd rsi, TYPE WORD    ;获取arr数组的下一个元素地址loop Addsummov rax, rbx
    main ENDP
    END
    
  • 字符串复制

    ExitProcess PROTO.datasrc_str BYTE "this is a test",0dst_str  BYTE  50 DUP(?)
    .code 
    main PROCmov rcx, LENGTHOF src_str ;获取src_str元素个数mov rsi, OFFSET src_str   ;获取src_str的首地址mov rbx, OFFSET dst_str ;获取dst_str首地址
    copy_string:mov r8, rbxmov al, [rsi]mov [rbx], aladd rsi, 1    ;获取arr数组的下一个元素地址add rbx, 1loop copy_stringmov r8, rbx
    main ENDP
    END
    
  • 交换双字变量的高低16位

    ExitProcess PROTO.datathree DWORD 11112222h
    .code 
    main PROCmov r8, OFFSET three + 2mov eax, three ;ax 2222mov bx, WORD PTR [r8] ;bx 1111xchg WORD PTR three, bxxchg WORD PTR [r8], ax
    main ENDP
    END
    
  • 利用运行时堆栈反转字符串

    ;64位汇编程序模板 (Template)
    ;声明一个ExitProcess函数
    ExitProcess PROTO.datamy_str BYTE "this is a test",0my_strlen WORD ($ - my_str) - 1
    .code 
    main PROCmov rbx, OFFSET my_strmovzx rcx , my_strlenmov rsi, 0
    push_str:movzx rax, my_str[rsi]push raxinc rsiloop push_strmovzx rcx , my_strlenmov rsi, 0
    pop_str:pop raxmov my_str[rsi], alinc rsiloop pop_str
    main ENDP
    END
    
  • 从主过程中调用其他过程实现属组求和

    ExitProcess PROTO.dataarr WORD 1234h, 2345h, 3456h, 4567harrSum WORD 0arrSum2 WORD 1
    .code Sum_arry PROCpush rcxmov rsi, 0mov rax, 0
    L1:mov ax, arr[rsi]add arrSum, axinc rsiloop L1mov arrSum, axpop rcxret
    Sum_arry ENDPmain PROCmov rcx, LENGTHOF arrcall Sum_arry
    main ENDP
    END
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/841032.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用MATLAB写测试(1)初识unittests

如何使用MATLAB写测试(1)初识unittests WHAT: 本文介绍如何在MATLAB中写简单的单元测试。 WHY: 在学生时代,我作为一名工科生喜欢用MATLAB的首要原因是可以进行快速的开发。无论是对算法的验证,调试&am…

【git pull 和 push详解】

git pull 和 push详解 1.背景2.命令和解释2.1 git pull简介详情 2.2 git push简介Git Push 参数及详细解释 1.背景 在分布式开发环境中,git pull和git push的使用确保了团队成员之间的代码一致性,减少了不同步导致的问题。它们简化了版本管理&#xff0c…

关于burp的intruder返回包空白问题

记录一下被自己蠢笑的问题 burp返回包为空怎么办,在查询无果后经过多次试验,确实没有效果 看那三个点还以为加载呢,攻击完了怎么一个显示没有 于是…… 鼠标到三个点,往下一拉 哈哈哈哈哈哈哈,真是被自己给蠢到了

[5] CUDA线程调用与存储器架构

CUDA线程调用与存储器架构 前几节简单讲了如何编写CUDA程序,利用GPU的处理能力并行执行多个线程和块。之前所有程序里的线程是相互独立的,没有多个线程之间的通信多是实际应用程序需要中间线程之间的通信,本文将仔细讲解线程调用以及CUDA的分…

@JsonFormat注解出现日期序列化以及反序列化问题(日期比实际日期少一天)

文章目录 前言一、场景如下所示二、问题分析三、JsonFormat注解是什么以下是 JsonFormat 注解的一些常用属性: 四、解决问题解决方式:只需要指定对应的时区就好效果如下: 五、JsonFormat 注解时出现日期问题总结 前言 在一次的偶然机会下发现…

Python基于PyQt6制作GUI界面——按钮

示例对应的制作的 ui文件 界面如下所示。 <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>Form</class><widget class"QWidget" name"Form"><property name"geom…

ColossalAI Open-Sora 1.1 项目技术报告 (视频生成)

项目信息 项目地址&#xff1a;https://github.com/hpcaitech/Open-Sora技术报告&#xff1a; Open-Sora 1&#xff1a;https://github.com/hpcaitech/Open-Sora/blob/main/docs/report_01.mdOpen-Sora 1.1&#xff1a;https://github.com/hpcaitech/Open-Sora/blob/main/docs…

swift中json和字典Dict或者数组相互转换,JSONSerialization的强大使用

在Swift中&#xff0c;你可以使用JSONSerialization类将JSON字符串转换为字典。要将 Swift 字典转换为 JSON 字符串&#xff0c;我们可以使用JSONSerialization类的data(withJSONObject:options:)方法。这个方法将字典转换为二进制数据&#xff0c;然后我们可以使用String(data…

Day23:Leetcode:530.二叉搜索树的最小绝对差 + 501.二叉搜索树中的众数 + 236. 二叉树的最近公共祖先

LeetCode&#xff1a;530.二叉搜索树的最小绝对差 问题描述 解决方案&#xff1a; 1.思路 中序遍历 2.代码实现 class Solution {int pre;int ans;public int getMinimumDifference(TreeNode root) {ans Integer.MAX_VALUE;pre -1;dfs(root);return ans;}public void d…

TCP协议三次握手、四次挥手

目录 TCP协议三次握手的方式建立连接TCP协议四次挥手的方式关闭连接 TCP协议三次握手的方式建立连接 第一次握手&#xff08;SYN&#xff09;&#xff1a;客户端向服务器发送SYN报文&#xff0c;请求建立连接。该报文包含客户端选择的初始序列号&#xff08;ISN&#xff09;&a…

Unity射击游戏开发教程:(26)创建绕圈跑的效果

unity游戏 在本文中,我将介绍如何为敌人创建圆周运动。gif 中显示的确切行为是敌人沿着屏幕向下移动,直到到达某个点,一旦到达该点,它就会绕圈移动。

从浮点数定义到FP8: AI模型中不同的数据类型

背景&#xff1a;AI模型中不同的数据类型对硬件算力和内存的需求是不同的&#xff0c;为了提高模型在硬件平台的吞吐量&#xff0c;减少数据通信带宽需求&#xff0c;往往倾向于将高位宽数据运算转向较低位宽的数据运算。本文通过重新回顾计算机中整数和浮点数的定义&#xff0…

(delphi11最新学习资料) Object Pascal 学习笔记---第13章第3节 (内存管理技巧 )

13.3 内存管理技巧 Object Pascal中的内存管理遵循三个简单的规则&#xff1a;您必须创建每个对象并分配您需要的每个内存块&#xff1b;您必须销毁您创建和分配的每个对象和内存块&#xff1b;每个对象仅销毁一次。对于动态元素&#xff08;即不在堆栈和全局内存区域中的元素…

解决1万条数据前端渲染不卡的问题

万级数据前端渲染优化 解决思路requestAnimationFrame完整代码 解决思路 将数据分组&#xff0c;通过定时器或requestAnimationFrame两种方式分组渲染到Dom上 requestAnimationFrame 渲染数据-动画requestAnimationFram方法 使用requestAnimationFrame可以将动画的每一帧绘制…

HCIP-Datacom-ARST自选题库__ISIS简答【3道题】

1.IS-1S是链路状态路由协议&#xff0c;便用SPF算法进行路由计算。某园区同时部署了IPv4和IPV6井运行IS-IS实现网络的互联互通&#xff0c;如图所示&#xff0c;该网络IPv4和IPV6开销相同&#xff0c;R1和R4只支持IPV4。缺省情况下&#xff0c;计算形成的IPv6最短路径树中&…

MySQL-笔记-10.关系模式的规范化理论

目录 10.1 规范化内容和异常 问题1:数据冗余 问题2:更新异常 问题3:插入异常 问题4:删除异常 10.2 函数依赖 10.2.1 函数依赖的定义 10.2.2 函数依赖与属性之间类型有关 10.2.3 函数依赖的类型 10.2.3.1 平方函数依赖、非平凡函数依赖 10.2.3.2 完全函数依赖、部分函数…

python数据分析——字符串和文本数据2

参考资料&#xff1a;活用pandas库 1、字符串格式化 &#xff08;1&#xff09;格式化字符串 要格式化字符串&#xff0c;需要编写一个带有特殊占位符的字符串&#xff0c;并在字符串上调用format方法向占位符插入值。 # 案例1 varflesh wound s"Its just a {}" p…

solidworks画螺母学习笔记

螺母 单位mm 六边形 直径16mm&#xff0c;水平约束&#xff0c;内圆直径10mm 拉伸 选择两侧对称&#xff0c;厚度7mm 拉伸切除 画相切圆 切除深度7mm&#xff0c;反向切除 拔模角度45 镜像切除 倒角 直径1mm 异形孔向导 螺纹线 偏移打勾&#xff0c;距离为2mm…

Parquet文件格式详解(含行、列式存储区别)

Parquet文件格式详解 Parquet 是一种列式存储格式&#xff0c;旨在高效地存储和处理大规模数据集。它被设计用于在大数据生态系统中进行数据存储和分析&#xff0c;如 Apache Hadoop 和 Apache Spark。 行式存储 vs 列式存储 在了解 Parquet 文件格式之前&#xff0c;先来对…

java:static关键字用法

在静态方法中不能访问类的非静态成员变量和非静态方法&#xff0c; 因为非静态成员变量和非静态方法都必须依赖于具体的对象才能被调用。 从上面代码里看出&#xff1a; 1.静态方法不能调用非静态成员变量。静态方法test2()中调用非静态成员变量address&#xff0c;编译失败…