一些匯編語言的總結

一、匯編語言的介紹

1、匯編語言和處理器指令集高度相關,不同指令集的匯編語言不兼容。

2、匯編語言是對機器語言的一種抽象,用英文字符來代表運算和控制指令,用英文字母和數字代表操作數。


二、常用的匯編語言

有 x86的匯編語言,ARM匯編語言,開源指令集。


三、匯編指令的格式

格式如下:
1、每次占據一行。

2、采用下列格式:

操作碼  操作數1, 操作數2案例:   mov  al, 33
mov是操作碼,al, 33 是操作數。

注意:
操作碼代表基本操作,例如相加、相減、相除、移位、比較、賦值等運算。

操作數代表運算數據存放位置,或者常數指定。


四、操作碼注意事項

操作碼代表運算和控制操作,有的需要2個操作數,有的只需要1個操作數,要查官方文檔。

不同版本可能操作碼不一樣。

通俗解釋:操作數就是加減乘除,輸入輸出等操作,只不過每次只能做一個運算或者操作,不能一心兩用。


五、操作數注意事項

1、操作數一般是寄存器、數據棧和常量來充當。

2、操作數如果使用寄存器,那么需要指定寄存器的名字。
一般處理器寄存器很多種,每個占據2字節或者4字節。

3、操作數如果是數據棧,那么需要告訴數據棧的偏移量,也就是在字節序列的索引位置。

因為按照字節存放,有些數據占據4個字節,有的占據8個字節,需要指定開始讀取的索引位置。

4、常量是編程時指定的。

通俗解釋:操作數就是用來計算的數字,可能存在內存里等待臨時確定,可能直接常數指定。


六、寄存器的注意事項

1、寄存器是處理器能直接讀取和寫入數據的存儲設備。

2、寄存器是處理器和外部內存、外部存儲設備(磁盤)交換數據的平臺。

3、處理器用寄存器和外部設備通信,用總線來連接外部設備。

4、每當處理器需要數據,那么內存就把數據復制到寄存器,處理器從寄存器讀取。

5、每當處理器輸出數據,就把數據寫入寄存器,內存就從寄存器讀取數據。

通俗解釋:寄存器就是處理器工作的平臺,內存把數據放到平臺上,等處理完后,內存再把數據從平臺拿走。


七、用中斷來調用外部功能

1、中斷是處理器用來停止當前指令,保存當前狀態,開始執行另一個程序的指令時作出的操作。

2、處理器需要和外部設備進行數據交換時調用中斷程序。(例如磁盤讀寫,網絡網卡讀寫,顯示文字和圖像,讀取鼠標和鍵盤的輸入)

3、BIOS提供了主板支持的中斷程序,處理器只需要在寄存器設置中斷程序的功能編號,然后調用該中斷程序。

通俗解釋:處理器想要外部數據了,就調用主板提供的中斷程序。


八、顯存的作用

顯存是存放圖像二進制數據的存儲空間,是處理器直接輸出圖像信號的對象。

顯示器從顯存中讀取圖像數據來顯示,同時用一定周期讀取顯存刷新圖像。

通俗解釋:處理器往顯存里放圖像的二進制數據,顯示器就從顯存里取數據顯示。


九、數據棧和指令棧

1、匯編語言把指令和數據分開,分別放在指令棧和數據棧中。

2、指令執行時,按照地址增加的順序讀取指令,執行指令(因為指令連續存放)。

3、用指令計數器來保存當前執行的指令在指令棧的下標位置。

4、匯編語言把內存空間,顯存空間連續排列,用地址來編號,每個字節一個地址,用整數遞增。

5、數據棧也是一個連續存放的內存空間,每個空間有地址,方便用地址來讀寫數據。

按照變量類型來連續讀幾個字節(例如int整型連續讀4個字節)。

通俗解釋:把指令和數據分開,各自單獨放一起,連續存放,像計數一樣,加一個單位就獲取一個指令,或者加一個單位就獲取一個數據。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/20254.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20254.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/20254.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

YOLOv10漲點改進:卷積魔改 | 分布移位卷積(DSConv),提高卷積層的內存效率和速度

??????本文改進內容: YOLOv10如何魔改卷積進一步提升檢測精度?提出了一種卷積的變體,稱為DSConv(分布偏移卷積),其可以容易地替換進標準神經網絡體系結構并且實現較低的存儲器使用和較高的計算速度。 DSConv將傳統的卷積內核分解為兩個組件:可變量化內核(VQK)和…

iOS編程入門:揭秘神秘的開發世界

iOS編程入門:揭秘神秘的開發世界 在數字化時代的浪潮中,iOS編程成為了許多開發者熱衷探索的領域。想要入門iOS編程,不僅需要掌握基礎知識,還需理解其獨特的生態系統。本文將通過四個方面、五個方面、六個方面和七個方面&#xff…

golang中通過反射獲取結構體Tag標簽定義的內容 函數和測試用例

當我們在go語言中定義結構體的時候, 經常需要給某些字段打上一個Tag標簽, 如 Name string json:"name" , 那這個標簽有和作用呢? 這個作用可大了,最為常用的是json序列化和反序列化, 還有各種ORM 的實體對象定義&…

C# yolov8 TensorRT +ByteTrack Demo

C# yolov8 TensorRT ByteTrack Demo 目錄 效果 說明 項目 代碼 Form2.cs YoloV8.cs ByteTracker.cs 下載 參考 效果 說明 環境 NVIDIA GeForce RTX 4060 Laptop GPU cuda12.1cudnn 8.8.1TensorRT-8.6.1.6 版本和我不一致的需要重新編譯TensorRtExtern.dll&…

微調醫療大模型,與通用大模型效果對比

下面是一份CT描述: “肝臟大小、形態未見明確異常。肝S2見一結節狀低密度影,大小約13x11mm,增強掃描呈明顯漸進性強化,延遲期呈等密度。余肝實質內未見異常密度影或強化灶。肝內大血管及其分支走行未見異常,肝門區層次…

ip地址告訴別人安全嗎?ip地址告訴別人會有什么風險

IP地址告訴別人安全嗎?在數字化時代,IP地址作為網絡連接的關鍵標識符,承載著重要的安全意義。然而,很多人可能并不清楚,輕易地將自己的IP地址告訴他人可能帶來一系列安全風險。那么,IP地址告訴別人會有什么…

文件夾損壞0字節:全面解析、恢復技巧與預防策略

在數字時代,數據的完整性和安全性至關重要。然而,我們時常會遭遇文件夾損壞并顯示為0字節的棘手問題。這種情況一旦發生,用戶可能會面臨數據丟失的風險。本文將詳細探討文件夾損壞0字節的現象,分析其背后的原因,并提供…

Redis-重定向

實驗環境(3主3從的Redis-Cluster) 一、Redis重定向基礎篇 1、MOVED重定向 Redis Custer 中,客戶端可以向集群中任意節點發送請求。此時當前節點先對 Key 進行 CRC 16 計算,然后按 16384 取模確定 Slot 槽。確定該 Slot 槽所對應的…

為什么使用短鏈系統?

短鏈接(Short Link)是指將一個原始的長 URL(Uniform Resource Locator)通過特定的算法或服務轉化為一個更短、易于記憶的 URL。短鏈接通常只包含幾個字符,而原始的長 URL 可能會非常長。 短鏈接的原理非常簡單&#x…

FPGA編程與PLC編程的區別:深入解析與對比

FPGA編程與PLC編程的區別:深入解析與對比 在工業自動化和控制系統領域,FPGA(現場可編程門陣列)編程和PLC(可編程邏輯控制器)編程都是關鍵的編程技術,但它們在應用、功能、結構和編程方法上存在…

IEEE編程語言排行榜:深度解析編程語言的四大維度、五大趨勢、六大熱門與七大挑戰

IEEE編程語言排行榜:深度解析編程語言的四大維度、五大趨勢、六大熱門與七大挑戰 在信息技術領域,編程語言排行榜一直是衡量各種編程語言流行度和影響力的重要指標。IEEE(電氣電子工程師協會)作為全球最具影響力的科技專業組織之…

【Java數據結構】詳解LinkedList與鏈表(二)

目錄 1.????前言~🥳🎉🎉🎉 2.反轉一個單鏈表 3. 找到鏈表的中間節點 4.輸入一個鏈表,輸出該鏈表中倒數第k個結點。 5.合并兩個有序鏈表 6.鏈表分割 7. 判定鏈表的回文結構 8.輸入兩個鏈表,找…

棧與隊列練習題(2024/5/31)

1有效的括號 給定一個只包括 (,),{,},[,] 的字符串 s ,判斷字符串是否有效。 有效字符串需滿足: 左括號必須用相同類型的右括號閉合。左括號必須以正確的順序閉合。每個右括號都有一個對應的…

云服務和云備份的區別是什么?

隨著云計算的興起,云備份與云服務被越來越多的企業和個人所關注,在云計算中云服務與云備份之間還是有一定的區別的,本文就來介紹一下云服務和云備份之間的區別。 云服務和云備份主要的區別在備份對象、推薦場景和數據一致性等方面。 備份對象…

打印機的ip不同且連不上

打印機的ip不同且連不上 1.問題分析2.修改網段3.驗證網絡 1.問題分析 主要是打印機的網段和電腦不在同一個網段 2.修改網段 3.驗證網絡

Web前端三大主流框:React、Vue 和 Angular

在當今快速發展的 Web 開發領域,選擇合適的前端框架對于項目的成功至關重要。React、Vue 和 Angular 作為三大主流前端框架,憑借其強大的功能和靈活的特性,贏得了眾多開發者的青睞。本文將對這三大框架進行解析,幫助開發者了解它們…

dubbo復習:(12)服務器端的異步和客戶端的異步調用

一、服務器端接口的定義和實現&#xff1a; package cn.edu.tju.service;import java.util.concurrent.CompletableFuture;public interface AsyncService {/*** 同步調用方法*/String invoke(String param);/*** 異步調用方法*/CompletableFuture<String> asyncInvoke(…

C/C++學習筆記 C讀取文本文件

1、簡述 要讀取文本文件&#xff0c;需要按照以下步驟操作&#xff1a; 首先&#xff0c;使用該函數打開文本文件fopen()。其次&#xff0c;使用fgets()或fgetc()函數從文件中讀取文本。第三&#xff0c;使用函數關閉文件fclose()。 2、每次從文件中讀取一個字符 要從文本文…

整理一下win7系統java、python等各個可安裝版本

最近使用win7系統&#xff0c;遇到了很多版本不兼容的問題&#xff0c;把我現在安裝好的可使用的分享給大家 jdk 1.8 maven-3.9.6 centos 7 python 3.7.4 docker DockerToolbox-18.01.0-ce win10是直接一個docker軟件&#xff0c;win7要安裝這三個 datagrip-2020.2.3 d…

2.1Docker安裝MySQL8.0

2.1 Docker安裝MySQL8.0 1.拉取MySQL docker pull mysql:latest如&#xff1a;拉取MySQL8.0.33版本 docker pull mysql:8.0.332. 啟動鏡像 docker run -p 3307:3306 --name mysql8 -e MYSQL_ROOT_PASSWORDHgh75667% -d mysql:8.0.33-p 3307:3306 把mysql默認的3306端口映射…