当前位置: 首页 > news >正文

x86 汇编语言介绍001

1,搭建编程环境

1.1 NASM 基本信息

示例使用的汇编器为 nasm

主页:    

https://www.nasm.us/https://www.nasm.us/

下载最新的稳定版源代码

wget https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/nasm-2.16.01.tar.gz

1.2解压并编译安装

tar zxf nasm-2.16.01.tar.gz
cd cd nasm-2.16.01/
./configure
make -j
sudo make install

执行make -j前的文件夹内容:

执行make -j 后的文件夹内容:

安装

不安装的话也可以使用,只是每次需要跑到这个nasm的文件夹里来使用它。

简单测试:

2,示例测试 Hello World x86

2.1 源代码 及说明:

源码文件名可能有所改动,可以调整回来。

;assembly language hello world
;hello_asm_lan_world.asm
section .datamsg db "hello asm lan world!", 0
section .bss
section .textglobal main
main:mov rax, 1      ;mov rdi, 1      ;mov rsi, msg    ;mov rdx, 20     ;syscallmov rax, 60     ;mov rdi, 0      ;syscall

2.2 汇编,链接并执行

汇编命令:

nasm hello_asm_lan_world.asm -f elf64 -g -l hello_asm_lan_world.lst

由于nasm只是个汇编器,会把汇编语言翻译成机器码,生成 *.o 文件,还没有链接,于是不能执行;

链接:

$ gcc -o hello_asm_lan_world hello_asm_lan_world.o -no-pie

运行:

写一个Makefile:

all: hello_asm_lan_worldhello_asm_lan_world: hello_asm_lan_world.ogcc -o $@ $< -no-piehello_asm_lan_world.o: hello_asm_lan_world.asmnasm $< -f elf64 -g -l hello_asm_lan_world.lst -o $@.PHONY: cleanclean:-rm -f hello_asm_lan_world *.o *.lst

规则行的起始处要用tab键

效果:

相关文章:

x86 汇编语言介绍001

1&#xff0c;搭建编程环境 1.1 NASM 基本信息 示例使用的汇编器为 nasm 主页&#xff1a; https://www.nasm.us/https://www.nasm.us/ 下载最新的稳定版源代码 wget https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/nasm-2.16.01.tar.gz 1.2解压并编译安装 tar zx…...

Oracle(2-5)Usage and Configuration of the Oracle Shared Server

文章目录 一、基础知识1、 Server Configurations服务器配置2、Dedicated server process专用服务器进程3、Oracle Shared ServerOracle共享服务器4、Benefits of Shared Server 共享服务器的优点5、Processing a Request 处理请求6、Configuring Shared Server 配置共享服务器…...

语音合成综述Speech Synthesis

一、语音合成概述 语音信号的产生分为两个阶段&#xff0c;信息编码和生理控制。首先在大脑中出现某种想要表达的想法&#xff0c;然后由大脑将其编码为具体的语言文字序列&#xff0c;及语音中可能存在的强调、重读等韵律信息。经过语言的组织&#xff0c;大脑通过控制发音器…...

Docker+ Jenkins+Maven+git自动化部署

环境&#xff1a;Centos7 JDK1.8 Maven3.3.9 Git 2.40 Docker 20.10.17 准备工作&#xff1a; 安装Docker Centos7默认的yum安装的docker是1.13&#xff0c;版本太低&#xff0c;很多镜像都要Docker版本要求&#xff0c;升级Docker版本。 卸载已安装Docker: yum …...

MySQL- 创建可以远程访问的root账户

创建用户 默认的root用户只能当前节点localhost访问&#xff0c;是无法远程访问的&#xff0c;所以&#xff0c;我们要创建一个root账户&#xff0c;帮助用户远程访问。 create user root% IDENTIFIED WITH mysql_native_password BY 1234;这个命令是在MySQL数据库管理系统中…...

Godot

前言 为什么要研究开源引擎 主要原因有&#xff1a; 可以享受“信创”政策的红利&#xff0c;非常有利于承接政府项目。中美脱钩背景下&#xff0c;国家提出了“信创”政策。这个政策的核心就是&#xff0c;核心技术上自主可控。涉及的产业包括&#xff1a;芯片、操作系统、数据…...

【Docker】Docker与Kubernetes:区别与优势对比

前言 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。   kubernetes&#xff0c;简称K8s&a…...

通过内网穿透本地MariaDB数据库,实现在公网环境下使用navicat图形化工具

公网远程连接MariaDB数据库【cpolar内网穿透】 文章目录 公网远程连接MariaDB数据库【cpolar内网穿透】1. 配置MariaDB数据库1.1 安装MariaDB数据库1.2 测试局域网内远程连接 2. 内网穿透2.1 创建隧道映射2.2 测试随机地址公网远程访问3. 配置固定TCP端口地址3.1 保留一个固定的…...

1 Python实现23种计模式

23种计模式之Python实现&#xff08;史上最全最通俗易懂&#xff09; 第一篇 Python与设计模式&#xff1a;前言 第二篇&#xff08;23种设计模式&#xff09; 1 创建类设计模式&#xff08;5种&#xff09; 单例模式 工厂模式 简单工厂模式 抽象工厂模式 建造者模式 原型…...

力扣:179. 最大数(Python3)

题目&#xff1a; 给定一组非负整数 nums&#xff0c;重新排列每个数的顺序&#xff08;每个数不可拆分&#xff09;使之组成一个最大的整数。 注意&#xff1a;输出结果可能非常大&#xff0c;所以你需要返回一个字符串而不是整数。 来源&#xff1a;力扣&#xff08;LeetCode…...

js逆向-某敏感网站登录参数分析

声明 本文仅供学习参考&#xff0c;如有侵权可私信本人删除&#xff0c;请勿用于其他途径&#xff0c;违者后果自负&#xff01; 如果觉得文章对你有所帮助&#xff0c;可以给博主点击关注和收藏哦&#xff01; 前言 目标网站&#xff1a;aHR0cHM6Ly9tZGZnaGcuNXhwb2lqaHRm…...

docker 安装常用环境

什么是容器 作为稍懂服务器的人都知道服务器是有系统的&#xff0c;一般来说是linux系统&#xff0c;我们可以在里边操作各种&#xff0c;比如说安装nginx、部署服务、数据库等。简单来说&#xff0c;容器理解成一个超精简的linux系统&#xff0c;可以进入这个系统进行安装各种…...

git clone慢的解决办法

在网站 https://www.ipaddress.com/ 分别搜索&#xff1a; github.global.ssl.fastly.net github.com 得到ip&#xff1a; 打开hosts文件 sudo vim /etc/hosts 在hosts文件末尾添加 140.82.114.3 github.com 151.101.1.194 github.global-ssl.fastly.net 151.101.65.194 g…...

Picasso网络原生PICA Token通过XCM集成进入Moonriver生态

波卡上的首选多链开发平台Moonbeam宣布Moonriver和Picasso&#xff08;分别为Moonbeam和Composable Finance的Kusama对应平行链&#xff09;已达成XCM集成。该集成将Picasso的PICA Token引入Moonriver生态系统使用&#xff0c;并允许用户在Picasso网络上使用MOVR。两条平行链都…...

STM32 CAN通信自定义数据包多帧连发乱序问题

场景&#xff1a; can标准帧中每一帧只能传输8字节&#xff0c;而应用中传输一包的内容往往超过8字节&#xff0c;因此需要把一个包拆成多个帧发送&#xff0c;接收端才把收到的多帧重新组装成一个完整的包 问题描述 在一问一答的两块板间通信&#xff0c;多帧连发是能够按照…...

STM32 配置中断常用库函数

单片机学习 目录 一、配置AFIO相关库函数 1.1函数GPIO_AFIODeInit 1.2函数GPIO_EventOutputConfig 1.3函数GPIO_EventOutputCmd 1.4函数GPIO_EXTILineConfig 二、配置EXTI相关库函数 2.1函数EXTI_DeInit 2.2函数EXTI_Init 2.3函数EXTI_StructInit 2.4函数 EXTI_Gener…...

性能测试常见的指标详解

一、什么是性能测试 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。 我们可以认为性能测试是&#xff1a;通过在测试环境下对系统或构件的性能进行探测&#xff0c;用以验证在生产环境下系统性能是否达到预估的性能需求…...

【键盘变成了快捷键,怎么办?】

**最便捷的操作&#xff1a;**拔掉键盘有线插头&#xff0c;将键盘驱动进行卸载&#xff0c;重新插上键盘即可 键盘驱动如何卸载: 以win10为例&#xff0c;点击开始菜单栏选择设置 选择左上角系统 选择系统中&#xff0c;点击最下方关于&#xff0c;点击右侧的设备管理器 选…...

LeetCode Hot100 105.从前序与中序遍历序列构造二叉树

题目&#xff1a;给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 代码&#xff1a; class Solution {private Map<Integer, Integer> indexM…...

今天先水一章

水贴&#xff0c;可自动忽略...

别再只背课文了!用《新概念英语》Lesson 39的‘鲁莽司机’故事,带你理解软件开发的‘风险无视’陷阱

从《新概念英语》Lesson 39看技术决策中的风险盲区&#xff1a;当工程师变成"鲁莽司机" Bruce的故事在技术圈里每天都在重演——那个对油表报警视若无睹、对路面裂缝毫不在意的司机&#xff0c;像极了我们身边那些对系统告警置之不理、对技术债视而不见的开发团队。当…...

递归算法:合并与反转链表的艺术

合并两个有序链表合并两个有序链表是将两个升序排列的链表合并成一个新的升序链表。使用递归方法时&#xff0c;核心思路是&#xff1a;比较两个链表的头节点值&#xff0c;选择较小的节点作为新链表的头&#xff0c;然后递归地合并剩余部分。如果其中一个链表为空&#xff0c;…...

深度剖析成都奥迪 A6L 的 AP 卡钳升级之路

# 深度剖析成都奥迪A6L的AP卡钳升级之路 在汽车改装领域&#xff0c;制动系统的升级对于提升车辆性能与安全性至关重要。对于成都的奥迪A6L车主而言&#xff0c;AP卡钳升级成为优化驾驶体验的热门选择。但一个关键问题浮现&#xff1a;奥迪AP卡钳升级在成都哪里做呢&#xff1f…...

客户反馈闭环体系怎么搭?6 个模块讲透流程设计思路

很多企业并不缺客户反馈&#xff0c;真正缺的是一条能跑通的闭环链路。客服在记&#xff0c;销售在提&#xff0c;客户成功在跟&#xff0c;产品也在收&#xff0c;但信息一旦分散&#xff0c;后面就很容易断掉&#xff1a;有人收&#xff0c;没人判&#xff1b;有人判&#xf…...

别再死记硬背了!用‘冯诺依曼’和‘TCP/IP’模型,手把手拆解你浏览器访问GitHub的全过程

从输入URL到页面加载&#xff1a;浏览器访问GitHub的完整技术解析 当你在浏览器地址栏输入"https://github.com"并按下回车时&#xff0c;这台看似简单的操作背后隐藏着一系列精密的计算机系统协作。本文将用技术视角还原这个过程的每个关键环节&#xff0c;让你理解…...

SpringBoot多模块开发,启动类扫描不到SDK的Bean?试试这3种注入方式(含实战避坑)

SpringBoot多模块开发中Bean注入难题的3种实战解决方案 最近在重构一个电商后台系统时&#xff0c;我把通用功能抽离成了独立SDK模块。本以为引入依赖就能万事大吉&#xff0c;结果主项目启动时频频报NoSuchBeanDefinitionException。这才意识到&#xff0c;在多模块架构中&…...

springboot中医“知源”小程序(文档+源码)_kaic

系统实现用户前台功能&#xff08;前端&#xff09;用户注册模块用户在填写数据的时候必须与注册页面上的验证相匹配否则会注册失败&#xff0c;注册页面的表单验证是通过JavaScript进行验证的&#xff0c;用户名的长度必须在6到18之间&#xff0c;邮箱必须带有符号&#xff0c…...

C# Winform实战:手把手教你实现一个带右键菜单的截图OCR工具(附百度AI Key申请指南)

C# Winform实战&#xff1a;打造智能截图OCR工具的全流程解析 在信息爆炸的时代&#xff0c;我们每天都会遇到需要快速提取图片中文字的场景——可能是网页上的付费内容、纸质文档的电子化&#xff0c;或是会议白板上的灵感记录。传统的手动输入效率低下&#xff0c;而现有工具…...

5步精通ruoyi-vue-pro邮件系统:从模板化发送到全链路监控的实战指南

5步精通ruoyi-vue-pro邮件系统&#xff1a;从模板化发送到全链路监控的实战指南 【免费下载链接】ruoyi-vue-pro &#x1f525; 官方推荐 &#x1f525; RuoYi-Vue 全新 Pro 版本&#xff0c;优化重构所有功能。基于 Spring Boot MyBatis Plus Vue & Element 实现的后台管…...

手把手教你搞定Xilinx Ultrascale+ FPGA的LVDS通道对齐(含14bit转8bit实战)

Xilinx Ultrascale FPGA的LVDS通道对齐实战&#xff1a;从14bit到8bit的高效转换 在高速数据采集系统中&#xff0c;LVDS接口因其优异的抗干扰能力和高速传输特性成为ADC与FPGA间通信的首选方案。然而&#xff0c;面对非标准位宽&#xff08;如14bit&#xff09;的ADC数据输出&…...