[BX]和loop指令,debug和masm匯編編譯器對指令的不同處理,循環,大小寄存器的包含關系,操作數據長度與寄存器的關系,段前綴

[bx]是什么

[bx]這個表達方式和[0]很像,他們倆的功能也很像。之前就提到了,[0]表示一個內存單元,他的偏移地址是0。從這邊我們可以引出內存單元的定義:要有內存單元的地址,要有內存單元的長度(類型,例如字單元和字節單元)

那么[bx]其實也和[0]差不多,其中0代表偏移地址是0,那么[dx]中的dx就是代表他的偏移地址在dx中,所以按照內存單元的定義來說,[dx]也表示一個內存單元,這個內存單元的偏移地址在bx中。

?這邊要區分開bx和[bx],bx是類似寄存器的東西,他是有地址的,這個地址可以放數據的,[bx]則表示一個內存單元,有地址有長度

如果還是不太理解可以看一下書里面97頁的實驗。?

loop是什么

從字面上看loop就是循環的意思,執行loop指令的時候會執行兩步操作,先會把cx中存放的內容減一,再判斷cx的值,如果不為零則繼續執行標號處的指令,如果為零則跳出循環繼續執行標號處下一條的指令。
從這兩步操作我們可以知道,cx中存放的內容是loop循環的次數,所以在使用loop循環之前,我們要先給cx賦值需要的循環次數。?
至于標號,我們之前也沒碰到過,其實就是在指令前面加一個字符:用來表示標號,類似這樣子

這邊就給cx放入內容11,標號s,之后執行loop s就會重復11次標號s的指令。

儲存循環次數的寄存器有三個從小到大依次是c1,cx,ecx,分別是二進制的8、16、32位。

debug和masm匯編編譯器對指令的不同處理

之前我們大多實在debug的環境下也就是dosbox提供的dos環境去調試匯編語言,但并不是所有的調試器編譯器對匯編語言的解釋都是一樣的,就像這個小標題一樣。

這邊就寫一點點:書本中舉例的是 mov ax,[0] 這條指令。對于debug調試器來說就不多說了,和前面說到的都一樣,但是對于masm編譯器來說這條指令中的[0]就會被解釋成0,我們知道[0]代表的是內存單元,但是對于0masm就會有獨特的邏輯去執行。

這邊只是那這兩個去舉個例子;到這邊可能會想,那怎么讓匯編語言具有較好的兼容性?可以去搜看看,這邊不多寫。

對于循環的定義方式

上面我們利用標號s來作為循環的名稱,s:后面的指令則是要循環的指令。這邊要去查循環的指令不止是單單s:后面那句,也可能是一段,循環語句結束的標識是loop+標號。例如

想這種的就說明一整段都是循環語句

像這種的就是只有標號后面那一句。

關于類似c1,cx,ecx三個寄存器的關系

這三個寄存器是類似包含的關系,首先這三個寄存器依次可以存放8,16,32位二進制數,對應的十進制分別是255,65535,4294967295,其中c1同時是cx和ecx的低八位,cx是ecx的低八位,我們可以通過給這三個賦值去控制循環的次數。因為他們有類似包含的關系,所有當他們三個寄存器肯定是同時有數據或者無數據的,所有也不存在沖突的現象。

當然其他的寄存器類似ax,bx也同樣是這種包含的結構。

使用指令對于操作數據長度和寄存器大小的要求

類似這段指令

粗看一邊可能會有疑問為什么不直接把ds:bx的數據放入ax,而是放入a1。

這是因為操作的數據長度和寄存器的大小要一致,首先我們是依次把ffff:0~ffff:b地址內的數據給放入寄存器中,x86 架構的內存基本單位是以八位二進制數為最小內存和訪問單元的,所以ffff:1內的數據大小最大也是一個字節也就是八位二進制數,所以要用也是1個字節的寄存器a1來接收這個數據。

段前綴

段前綴是用于強制指定內存訪問所用段寄存器的指令前綴,其核心功能是打破 CPU 對段寄存器的默認選擇,靈活訪問不同段中的內存數據,是 x86 分段內存模型中實現靈活內存訪問的重要機制。

其代碼結構類似

mov ax, cs:[si]

其中cs就是段前綴。

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

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

相關文章

域格YM310 X09移芯CAT1模組HTTPS連接服務器

HTTPS連接服務器 本文檔介紹了HTTPS連接服務器的大致流程&#xff0c;測試服務器為httpbin.org。 HTTPS連接服務器流程 創建證書文件 創建一個文件 ATFSCREATE<filename>參數&#xff1a;<filename> 文件名 寫入CA證書 ATFSWRITE<filename>,<mode&…

【ManiSkill】常見envs學習筆記

1. StackCube-v1 用于模擬機器人在桌面場景中將紅色立方體&#xff08;cubeA&#xff09;堆疊到綠色立方體&#xff08;cubeB&#xff09;上的操作。該任務強調精確抓取、放置和穩定性控制。成功條件包括紅色立方體穩定堆疊在綠色立方體上且不被機器人抓取。 參數 (Arguments…

Java 網絡編程全解析

前言&#xff1a;網絡編程的意義與價值 前言&#xff1a;網絡編程的意義與價值 在當今互聯網時代&#xff0c;網絡編程是軟件開發的核心技能之一。無論是桌面應用、移動應用還是企業級系統&#xff0c;幾乎都需要與網絡交互。Java 作為一門跨平臺的編程語言&#xff0c;提供了完…

HarmonyOS應用拉起系列(三):如何直接拉起騰訊/百度/高德地圖進行導航

在鴻蒙應用開發中&#xff0c;經常需要跳轉第三方地圖應用&#xff08;如 騰訊地圖、百度地圖、高德地圖&#xff09;進行導航。無論是出行類 App、物流類 App&#xff0c;還是線下活動類應用&#xff0c;都存在“跳轉地圖導航”的實際需求。寫完HarmonyOS應用拉起系列一和二后…

PCGrad解決多任務沖突

論文解讀&#xff1a;"Gradient Surgery for Multi-Task Learning" 1. 論文標題直譯 Gradient Surgery: 梯度手術for Multi-Task Learning: 應用于多任務學習 合在一起就是&#xff1a;為多任務學習量身定制的梯度手術。這個名字非常形象地概括了它的核心思想。 …

Nvidia顯卡架構解析與cuda應用生態淺析

文章目錄 0. Nvidia顯卡簡介 一、主要顯卡系列 二、主要GPU架構與代表產品 1.main 1.1 CUDA 13.0 的重大變化 1.2 V100 的硬件短板已顯現 1.3 這意味著什么? 1.4 寫在后面 彩蛋:V100 0. Nvidia顯卡簡介 一、主要顯卡系列 GeForce 系列(消費級) 用途:游戲、創作、日常圖形…

開發指南:使用 MQTTNet 庫構建 .Net 物聯網 MQTT 應用程序

一、背景介紹 隨著物聯網的興起&#xff0c;.Net 框架在構建物聯網應用程序方面變得越來越流行。微軟的 .Net Core 和 .Net 框架為開發人員提供了一組工具和庫&#xff0c;以構建可以在 Raspberry Pi、HummingBoard、BeagleBoard、Pine A64 等平臺上運行的物聯網應用程序。 MQT…

突破性能瓶頸:基于騰訊云EdgeOne的AI圖片生成器全球加速實踐

1. 項目背景與挑戰 1.1 開發背景 隨著AIGC技術爆發&#xff0c;我們團隊決定開發一款多模型支持的AI圖片生成器&#xff0c;主要解決以下痛點&#xff1a; 不同AI模型的參數規范不統一生成結果難以系統化管理缺乏企業級的安全水印方案全球用戶訪問延遲高&#xff0c;中國用戶…

一、Java 基礎入門:從 0 到 1 認識 Java(詳細筆記)

1.1 Java 語言簡介與發展歷程 Java 是一門面向對象的高級編程語言&#xff0c;以“跨平臺、安全、穩定”為核心特性&#xff0c;自誕生以來長期占據編程語言排行榜前列&#xff0c;廣泛應用于后端開發、移動端開發、大數據等領域。 1.1.1 起源與核心人物 起源背景&#xff1…

uniapp:根據目的地經緯度,名稱,喚起高德/百度地圖來導航,兼容App,H5,小程序

1、需要自行申請高德地圖的key,配置manifest.json 2、MapSelector選擇組件封裝 <template><view><u-action-sheet :list="mapList" v-model="show" @click="changeMap"></u-action-sheet></view> </template&…

我對 WPF 動搖時的選擇:.NET Framework 4.6.2+WPF+Islands+UWP+CompostionApi

目錄 NET Framework 4.6.2的最大亮點 為什么固守462不升級 WPF-開發體驗的巔峰 為什么對WPF動搖了 基于IslandsUWP的濾鏡嘗試 總結 NET Framework 4.6.2的最大亮點 安全性能大提升&#xff1a; 默認啟用TLS1.2協議&#xff0c;更安全&#xff0c;它為后續的版本提供了重…

SpringBoot大文件下載失敗解決方案

SpringBoot大文件下載失敗解決方案 后端以文件流方式給前端接收下載文件,文件過大時出現下載失敗的情況或者打開后提示文件損壞,實際是字節未完全讀取寫入。 針對大文件下載失敗的情況,以下是詳細的解決方案: 大文件下載失敗的主要原因 內存溢出:一次性加載大文件到內存…

torch.gather

torch.gather 介紹 torch.gather(input, dim, index, *, sparse_gradFalse, outNone) → Tensor 沿由 dim 指定的軸收集值。 對于三維張量&#xff0c;輸出按如下方式確定&#xff1a; out[i][j][k] input[index[i][j][k]][j][k] # 如果 dim 0 out[i][j][k] input[i][i…

Golang | http/server Gin框架簡述

http/server http指的是Golang中的net/http包&#xff0c;這里用的是1.23.10。 概覽 http包的作用文檔里寫的很簡明&#xff1a;Package http provides HTTP client and server implementations. 主要是提供http的客戶端和服務端&#xff0c;也就是能作為客戶端發http請求&a…

Vision Transformer (ViT) :Transformer在computer vision領域的應用(三)

Experiment 上來的一段話就概括了整章的內容。 We evaluate the representation learning capabilities of ResNet, Vision Transformer (ViT), and the hybrid. 章節的一開頭就說明了,對比的模型就是 ResNet,CNN領域中的代碼模型。 ViT。 上一篇中提到的Hybrid模型,也就是…

5-12 WPS JS宏 Range數組規范性測試

Range()數組是JS宏中不缺少的組成部分,了解Range()數組的特性必不可少,下面我們一起測試一下各種Range()數組。 1.Range()數組特性 單元格區域:Range("a2:m2")與Range("a2","m2")的類型都是:Range/Object,功能都為單元格區域,功能…

uniapp微信小程序保存海報到手機相冊canvas

在uniapp中實現微信小程序保存海報到手機相冊&#xff0c;主要涉及Canvas繪制和圖片保存。以下是關鍵步驟和代碼示例&#xff1a; 一、關鍵代碼展示&#xff1a; 1. 模板配置&#xff1a;頁面展示該海報&#xff0c;可直接查看&#xff0c;也可下載保存到手機相冊&#xff0c;h…

glib2-2.62.5-7.ky10.x86_64.rpm怎么安裝?Kylin Linux RPM包安裝詳細步驟

一、準備工作 ?確認系統版本? 這個包是 ky10的&#xff08;也就是 openEuler 20.03 LTS SP3 或類似版本&#xff09;&#xff0c;而且是 ?x86_64 架構&#xff08;就是常見的64位電腦&#xff09;?。 你要先確認你的系統是不是這個版本&#xff0c;不然可能裝不上或者出問題…

webrtc之語音活動下——VAD人聲判定原理以及源碼詳解

文章目錄前言一、高斯混合模型介紹1.高斯模型舉例1&#xff09;定義2&#xff09;舉例說明2.高斯混合模型(GMM)1&#xff09;定義2&#xff09;舉例說明3&#xff09;一維曲線二、VAD高斯混合模型1.模型訓練介紹1&#xff09;訓練方法2&#xff09;訓練結果2.噪聲高斯模型分布1…

【Redis】-- 主從復制

文章目錄1. 主從復制1.1 主從復制是怎么個事&#x1f914;1.2 拓撲結構1.2.1 一主一從拓撲1.2.2 一主多從拓撲1.2.3 樹形拓撲1.3 主從復制原理1.3.1 復制過程1.3.2 數據同步PSYNC1.3.2.1 replicationid/replid (復制id)1.3.2.2 復制偏移量維護1.3.3 psync運行流程1.3.4 全量復制…