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
英文地址,請注明出處:http://en.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的密碼