Windows环境下C语言汇编语言编辑器及环境安装

安装MinGw:

 1.下载安装文件

MinGW - 适用于 Windows 的极简主义 GNU 下载 |SourceForge.net

点击下载

下载之后就是如下图的安装文件

2.安装

双击安装文件进行安装,点击Install下一步

选择安装位置,默认是安装在C盘,点击Change可以自定义安装路径,

但是要注意安装路径中不能有空格,比如:C:/Program Files/MinGW这样的路径就不行,因为Program Files中有空格,安装界面也会提示警告,点击Choose an Alternative就可以重新选择安装路径。

点击Continue,继续安装

继续安装的界面如下,等待安装完成。

点击Continue继续,

就会打开如下安装窗口,选择如下包安装

点击左上角菜单栏,Update Catalogue 

 

会弹出如下窗口,点击Review Changes

之后会弹出如下窗口,点击Apply

安装完成后,点击Close

3设置环境变量

把MinGW安装路径的bin文件夹目录添加到环境变量中

打开Cmd,输入gcc测试是否添加成功,出现如下信息则表示添加成功!

安装Notepad++/Sublimtext:

1.下载安装文件

从以下网址下载,使用最新版本即可

Notepad++:Downloads | Notepad++ (notepad-plus-plus.org)
Sublimtext:Sublime Text - 文本编辑,正确完成

下载完成后是这样两个文件,可按需安装

执行C程序测试:

新建一个C语言的工作目录,并新建一个c语言文件,如下:

使用Sublimtext打开,写入以下代码:

#include <stdio.h>int main()
{printf("Hello World");
}

使用gcc编译代码,将代码文件夹在Cmd窗口打开,使用命令gcc HelloWorld.c

编译完成后,此文件夹就会出现以下执行程序

在cmd中运行此程序

安装NASM:

1.下载安装

从以下网址中下载NASM

NASMhttps://www.nasm.us/点击版本下载:

 

下载完成后,得到如下文件:

2.安装:

点击下载好的文件,开始安装(可以使用管理员运行,也可以双击运行,在学习使用上没区别),点击Next继续

选择好安装路径,点击Next继续

点击Install继续

3.设置环境变量

将NASM的安装目录添加到环境变量中

在Cmd测试,出现如下信息,代表环境变量设置成功!

安装SASM:

SASM是一个帮助我们轻松构建汇编程序的汇编器,通过使用 SASM,可以暂时不必学习链接的概念,它还可以轻松地打印字符串和数字,否则需要编写自己的例程或下载特殊的例程来打印到屏幕。最重要的是,可以在一个窗口中运行和测试程序。

1.下载安装

下载地址如下:

下载 Dmitriy Manushin 的 SASM (informer.com)

下载完成后,得到如下文件:

 

2.安装:

选择安装语言,点击OK继续

点击Next继续

同意许可,点击Next继续

选择合适安装路径,点击Next继续

点击Next继续

可选是否生成桌面图标,点击Next继续

点击Install下载

在下载完成后,就可以打开SASM窗口如下:

执行汇编程序测试:

1.使用NASM编译测试:

创建一个汇编语言的工程目录,并新建一个汇编文件,如下:

使用Sublimtext打开,并键入如下代码:

section .datamsg db 'Hello, World!', 0   ; 字符串以0结尾section .textglobal _main                ; 入口点声明(MinGW需用_main)extern _printf              ; 引用C标准库函数_main:push msg                    ; 参数压栈(32位)call _printf                ; 调用printfadd esp, 4                  ; 清理栈(32位)ret

 使用NASM编译汇编文件,

注:-f win64:生成64位目标文件(64位MinGW需选此格式)
       -o xxxx.obj:输入为xxxx.obj文件

在当前文件夹就会生成一个.obj文件

使用MinGW链接编辑后的文件为可执行程序文件.exe,gcc自动调用ld链接器,并链接C运行时库。

 

使用MinGW链接成64位的就出现了以上的问题,原因就是我们下载安装的是32位的MinGW,nasm编译的.obj文件与MinGW版本不匹配导致的,所以nasm要把汇编编译成32位的,再使用MinGW链接成32位的程序即可。

2.使用SASM编译测试

新建一个SASM工程,并键入以下代码:

%include "io.inc"section .datamsg db 'Hello,World!!',0section .textglobal CMAIN
CMAIN:mov ebp, esp;for correct debugging;write your code herePRINT_STRING msgxor eax, eaxret

运行工程, 输出Hello World,如下:

参考书籍:
《Developing A Computer Operating System From Scratch》

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

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

相关文章

【数据分析】分段逻辑回归示例分析(模拟数据)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包步骤 1:模拟数据步骤 2:构建逻辑回归和分段模型步骤 3:计算预测值和置信区间步骤 4:提取 OR 和统计值步骤 5:绘图展示结步骤 6:输出图片原始代码总结系统信息参考介绍…

Webpack 构建过程详解

Webpack 是一个功能强大的模块打包工具,它能够将项目中的各种资源(如 JavaScript、CSS、图片等)打包成一个或多个文件,以便于在浏览器中运行。本文将以 Webpack 5 为例介绍它的构建过程: 1. 初始化阶段 在这个阶段,Webpack 从配置文件和命令行参数中读取并解析配置。然…

Flutter基础(UI监听)

文本按钮&#xff08;TextButton&#xff09; 文本按钮是没有边框的按钮&#xff0c;当点击时会有涟漪效果。 TextButton(onPressed: () {// 点击按钮后要执行的代码print(文本按钮被点击了);},child: Text(点击我), ) 手势检测器&#xff08;GestureDetector&#xff09; …

Linux 下的 regulator 子系统

1、简介 regulator 框架是 Linux 内核中用于管理电压和电流调节器&#xff08;如 LDO、DCDC 转换器等&#xff09;的一个子系统。它提供了一个抽象层&#xff0c;使得驱动程序和内核的其他部分可以以一致的方式与调节器进行交互&#xff0c;而无需了解底层硬件的细节。 主要功能…

12345政务热线系统:接诉即办,赋能智慧城市治理

一、12345热线&#xff1a;民情直通车&#xff0c;治理新引擎 “12345”政务热线是党委政府了解社情民意、解决群众合理诉求、倾听批评建议、改进工作作风的重要渠道。当前&#xff0c;全国各城市已基本建成12345政务服务热线体系&#xff0c;形成“接诉即办”的高效响应机制。…

【SpringBoot核心】Spring Boot + MyBatis 深度整合与最佳实践

目录 引言Spring Boot 基础回顾MyBatis 核心概念解析Spring Boot 整合 MyBatisMyBatis 高级特性Spring Boot + MyBatis 最佳实践性能优化与扩展实战案例:电商系统开发常见问题与解决方案总结与展望1. 引言 1.1 技术背景与现状 在现代企业级应用开发中,数据持久化是一个核心…

力扣第77题-组合-力扣第78题-子集

力扣链接:77. 组合 - 力扣&#xff08;LeetCode&#xff09; 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4],[3,4],[2,3],[1,2],[1,3…

嵌入式MTD设备与Flash管理解析

理解MTD是嵌入式系统中处理Flash存储的关键一步&#xff01;我来帮你梳理清楚&#xff1a; MTD 是什么&#xff1f; MTD 是 Memory Technology Device 的缩写&#xff0c;中文常译为内存技术设备。它是 Linux 内核及其衍生系统&#xff08;如嵌入式 Linux&#xff09;中用于管…

基于 GEE 利用 Sentinel-2 数据计算并下载植被指数数据

目录 1 植被指数 2 完整代码 3 运行结果 1 植被指数 植被指数全名NDVI归一化差值植被指数GNDVI绿色归一化差值植被指数EVI增强植被指数EVI2双波段增强植被指数DVI差值植被指数GDVI绿色差植被值指数RVI比值植被指数SAVI土壤调整植被指数OSAVI优化土壤调整植被指数MSAVI修改…

python基础23(2025.6.29)分布式爬虫(增量式爬虫去重)redis应用_(未完成!)

本次写一个爬取网易新闻的案例。因为redis能处理高并发&#xff0c;存储数据也可以&#xff0c;故不用mysql。而且新闻网站容易更新很多&#xff0c;而mysql只能持久化存储。 import scrapy import re import json import redis # 用它来去除重复, 记录访问过的urlclass Wang…

Springboot 集成 SpringState 状态机

Springboot 集成 SpringState 状态机 1.SpringState 简介2.状态机示例2.1 项目结构和依赖包2.2 定义事件类和状态类2.3 Spring 事件监听器2.4 状态机持久化类2.4.1 Redis 状态机持久化容器2.4.2 Redis 配置2.4.3 状态机监听器 2.5 装机器容器2.6 状态机事件发送器2.7 状态机配置…

实战四:基于PyTorch实现猫狗分类的web应用【2/3】

​一、需求描述 实战四分为三部分来实现&#xff0c;第二部分是基于PyTorch的猫狗图像可视化训练的教程&#xff0c;实现了一个完整的猫狗分类模型训练流程&#xff0c;使用预训练的ResNet50模型进行迁移学习&#xff0c;并通过SwanLab进行实验跟踪。 效果图 ​二、实现思路 …

对比几个测试云的一些速度

最近被hosting vps主机的速度给困扰了&#xff0c;干脆放下手中的活 测试下 test.php放在网站根目录即可 代码如下&#xff1a; <?php /*** 最终版服务器性能测试工具* 测试项目&#xff1a;CPU运算性能、内存读写速度、硬盘IO速度、网络下载速度*/// 配置参数&#xff…

UE5 Grid3D 学习笔记

一、Neighbor Grid 3D 的核心作用 NeighborGrid3D 是一种基于位置的哈希查找结构&#xff0c;将粒子按空间位置划分到网格单元&#xff08;Cell&#xff09;中&#xff0c;实现快速邻近查询&#xff1a; 空间划分&#xff1a;将模拟空间划分为多个三维网格单元&#xff08;Cel…

Spring AI ——在springboot应用中实现基本聊天功能

文章目录 前言测试环境项目构建依赖引入指定openai 相关配置基于 application.yml 配置 Open AI 属性application.yml编写测试类测试请求基于读取后配置请求编写测试接口测试效果展示流式输出前言 AI 技术越来越火爆,作为Java开发人员也不能拖了后腿。 前段时间使用LangChain…

条件概率:不确定性决策的基石

条件概率是概率论中的核心概念&#xff0c;用于描述在已知某一事件发生的条件下&#xff0c;另一事件发生的概率。它量化了事件之间的关联性&#xff0c;是贝叶斯推理、统计建模和机器学习的基础。 本文由「大千AI助手」原创发布&#xff0c;专注用真话讲AI&#xff0c;回归技术…

搭建Flink分布式集群

1. 基础环境&#xff1a; 1.1 安装JDK 本次使用 jdk-11.0.26_linux-x64_bin.tar.gz 解压缩 tar -zxvf jdk-11.0.26_linux-x64_bin.tar.gz -C /usr/local/java/ 配置环境变量&#xff1a; vi /etc/profileJAVA_HOME/usr/local/java/jdk-11.0.26 CLASSPATH.:${JAVA_HOME}/li…

基于ssm校园综合服务系统微信小程序源码数据库文档

摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;校园综合服务被用户普遍使用&#xff0c;为方便用户能够可…

桌面小屏幕实战课程:DesktopScreen 17 HTTPS

飞书文档http://https://x509p6c8to.feishu.cn/docx/doxcn8qjiNXmw2r3vBEdc7XCBCh 源码参考&#xff1a; /home/kemp/work/esp/esp-idf/examples/protocols/https_request 源码下载方式参考&#xff1a; 源码下载方式 获取网站ca证书 openssl s_client -showcerts -connec…

uniapp上传gitee

右键点击项目&#xff0c;选择git提交&#xff0c;会弹出这样的弹窗 在Message输入框里面输入更新的内容&#xff0c;选择更新过的文件&#xff0c;然后点击commit 然后点击push 后面会让你填写gitee的用户名和密码 用户名就是邮箱 密码就是登录gitee的密码