chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【RT-Thread學(xué)習(xí)筆記】80x86匯編基礎(chǔ)的三大塊知識

嵌入式物聯(lián)網(wǎng)開發(fā) ? 來源:嵌入式物聯(lián)網(wǎng)開發(fā) ? 作者:嵌入式物聯(lián)網(wǎng)開發(fā) ? 2022-07-30 10:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1 前言

搞計(jì)算機(jī)的肯定聽說過80x86,至少你的匯編基礎(chǔ)課程肯定是基于80X86系統(tǒng)來學(xué)習(xí)的。

x86或80x86是英特爾Intel首先開發(fā)制造的一種微處理器體系結(jié)構(gòu)的泛稱。該系列較早期的處理器名稱是以數(shù)字來表示,并以“86”作為結(jié)尾,包括Intel 8086、80186、80286、80386以及80486,因此其架構(gòu)被稱為“x86”。由于數(shù)字并不能作為注冊商標(biāo),因此Intel及其競爭者均在新一代處理器使用可注冊的名稱,如Pentium?,F(xiàn)時(shí)Intel把x86-32稱為IA-32,全名為“Intel Architecture, 32-bit”。

“X86”是Intel和其他幾家公司處理器所支持的一組機(jī)器指令集,它大致確定了芯片的使用規(guī)范。從8086到80186、80286、80386、80486,再到后來的奔騰系列以及現(xiàn)在的多核技術(shù),都是使用一脈相承的x86指令集,既不斷擴(kuò)展又向后兼容。

更多介紹,請參考百度百科。

2 80x86知識圖譜

本文先列個(gè)大綱,后續(xù)有時(shí)間再補(bǔ)充。

image-20220130234307648

3 80x86匯編基礎(chǔ)三大塊

這里整理了80x86匯編中非?;A(chǔ)的三大塊知識,了解了這三大塊內(nèi)容基本可以看懂甚至編譯一些簡單的匯編程序。

3.1 尋址方式

80x86的尋址方式就是表示指令中數(shù)據(jù)所在地址的方式。一共有七種尋址方案:立即數(shù)尋址、寄存器尋址、直接尋址、寄存器直接尋址、寄存器相對選址、基址變質(zhì)尋址、相對基址變質(zhì)尋址。

3.1.1 立即數(shù)尋址 / 寄存器尋址

? MOV AX, 1; AX = 1

? 立即數(shù)尋址,我覺得稱不上尋址,因?yàn)樗o出的不是地址,而就是實(shí)際的數(shù)字,上面的命令中 1 就是立即數(shù),而AX就是寄存器尋址所以寄存器尋址就是直接使用寄存器,數(shù)據(jù)直接存入指定的寄存器

? 寄存器尋址可以使用的寄存器是AX(AL AH) BX(BL BH) CX(CL CH) DX(DL DH) SI DI SP BP等, 這些寄存器可以任意組合,舉例如下

MOV AX, BX; AX = BX

MOV BX, AX; BX =AX

MOV SI, DI; SI = DI

MOV DI, SI; DI = SI

? 這兩種尋址方式是不涉及內(nèi)存的操作的,所以速度是最快的,所以為了性能考慮應(yīng)該盡量多的使用這兩種尋址方式的操作。

注意: MOV 1, AX 是非法的,應(yīng)為1就是常數(shù),你不能給常數(shù)賦值

3.1.2 直接尋址

MOV AX, [1234H]

MOV AX, ES:[1234H]

直接尋址就是直接給出內(nèi)存地址的尋址方式,格式是 段寄存器:[偏移地址] 偏移地址是立即數(shù),用[]括起來。當(dāng)然也可以直接省去前面的段寄存器寫作 [偏移地址],這樣匯編會自動選擇一個(gè)默認(rèn)的段地址,一般來說是DS段寄存器。前面講過內(nèi)存地址是 段地址X16+偏移地址,所以使用段寄存器:[偏移地址] 給出的地址就是 段寄存器的值X16 + 偏移地址,

舉例

MOV AX, DS:[1234H]

這句話的就是將DSx16+1234H處的數(shù)據(jù)復(fù)制給AX寄存器,假設(shè)DS=5000H 那么就是將內(nèi)存51234處的數(shù)據(jù)復(fù)制給AX,具體是多少就要看當(dāng)時(shí)內(nèi)存中是什么數(shù)據(jù)了。

MOV AX, ES:[1234H]

就是顯示指定了使用的ES段寄存器,所以就是將ESx16+1234H處的數(shù)據(jù)復(fù)制給AX

注意 ":"前面只能跟著段寄存器 DS ES SS CS寄存器

這一條尋址方式其實(shí)是最基礎(chǔ)的尋址方式,接下來的其他幾種尋址方式都是只是[]偏移地址的表示方式發(fā)生了一些變化而已。

3.1.3 寄存器直接尋址 / 基址尋址

MOV AX, [BX]

MOV AX,CS:[BX]

本質(zhì)上和直接尋址是沒太大區(qū)別的,唯一的區(qū)別就是在直接尋之中[]中的數(shù)據(jù)是直接給出的,但是在寄存器間接尋址中這個(gè)數(shù)字是存儲在寄存器中而已。

這里有個(gè)限制就是[] 中能使用的寄存器只有 BX BP SI DI ,如果使用的是BX SI DI則默認(rèn)的段寄存器是DS,如果是BP寄存器則默認(rèn)使用SS寄存器。

當(dāng)然如果特意指定寄存器那么就用指定的寄存器。

舉例 AX =1 BX = 1111H DS = 5000H

MOV AX, [BX] ; 等于MOV AX,DS:[1111H] 就是將51111H內(nèi)存出的數(shù)據(jù)復(fù)制到AX

3.1.4 寄存器相對尋址 / 相對基址尋址

MOV AX, [BX + 1111H]

在寄存器直接尋址的基礎(chǔ)上加上立即數(shù),其他規(guī)則還是和寄存器直接尋址一樣的

舉例 AX =1 BX = 2222H DS=5000H

MOV AX, [BX + 1111H] ; 等于 MOV AX, DS:[2222H + 1111H] => MOV AX, DS:[3333H]

### 3.1.5 基址變址尋址

MOV AX,[BX+SI]

基址變址尋址就是用了兩個(gè)寄存器 {BX/BP}+{SI/DI}, 如果是出現(xiàn)BP寄存器則默認(rèn)使用SS寄存器,否則默認(rèn)使用DS寄存器.規(guī)則和寄存器間接尋址也是一樣的。

要注意的是這里分為兩組了寄存器 BX/BPSI/DI,一組中只能出現(xiàn)一個(gè),即不能出現(xiàn)[ BX+BP ][SI+DI],從名字中就可以看出的 基址+變址,

BX 基地址寄存器

BP 基址指針寄存器(Base Point)

SI 源地址寄存器(Source Index)

DI 目的地址寄存器(Destination Index)

舉例 AX =1 BX=1111H SI=2222H DS= 5000H

MOV AX,[BX+SI]; 等于 MOV AX, DS:[BX+SI] => MOV AX, DS:[1111H+2222H] => MOV AX, DS:[3333H]

### 3.1.6 相對基址變址尋址

MOV AX,[BX+SI+4444H]

可以看出就是在基址變址尋址的基礎(chǔ)上加上了立即數(shù)其他規(guī)則不變

舉例 AX =1 BX=1111H SI=2222H DS= 5000H

MOV AX,[BX+SI+4444H]; 等于 MOV AX, DS:[BX+SI+4444H] => MOV AX, DS:[1111H+2222H+4444H] => MOV AX, DS:[7777H]

3.2 寄存器的用途

80x86 CPU 中寄存器總共為 14 個(gè),且均為 16 位 。

AX,BX,CX,DX,SP,BP,SI,DI,IP,F(xiàn)LAG,CS,DS,SS,ES 共 14 個(gè)。

而這 14 個(gè)寄存器按照一定方式又分為了通用寄存器,控制寄存器和段寄存器。

image-20220130235215566

3.2.1 通用寄存器:

AX,BX,CX,DX 稱作為數(shù)據(jù)寄存器:

AX (Accumulator):累加寄存器,也稱之為累加器;

BX (Base):基地址寄存器;

CX (Count):計(jì)數(shù)器寄存器;

DX (Data):數(shù)據(jù)寄存器;

SP 和 BP 又稱作為指針寄存器:

SP (Stack Pointer):堆棧指針寄存器;

BP (Base Pointer):基指針寄存器;

SI 和 DI 又稱作為變址寄存器:

SI (Source Index):源變址寄存器;

DI (Destination Index):目的變址寄存器;

3.2.2 控制寄存器:

IP (Instruction Pointer):指令指針寄存器;

FLAG:標(biāo)志寄存器;

3.2.3 段寄存器:

CS (Code Segment):代碼段寄存器;

DS (Data Segment):數(shù)據(jù)段寄存器;

SS (Stack Segment):堆棧段寄存器;

ES (Extra Segment):附加段寄存器;

3.3 匯編指令

由于80x86的指令非常多,本文僅列舉常見的一些匯編指令,更多的指令格式,請參考其他資料。

從功能分類上來說,一共可分為

  • 數(shù)據(jù)傳送指令:MOV、XCHG、LEA、LDS、LES、PUSH、POP、PUSHF、POPF、CBW、CWD、CWDE。
  • 算術(shù)指令:ADD、ADC、INC、SUB、SBB、DEC、CMP、MUL、DIV、DAA、DAS、AAA、AAS。
  • 邏輯指令:AND、OR、XOR、NOT、TEST、SHL、SAL、SHR、SAR、RCL、RCR、ROL、ROR。
  • 控制轉(zhuǎn)移指令:JMP、Jcc、JCXZ、LOOP、LOOPZ、LOOPNZ、LOOPNE、CALL、RET、INT。
  • 串操作指令:MOVS、LODS、STOS、CMPS、SCAS。
  • 標(biāo)志處理指令:CLC、STC、CLD、STD。

4 更多分享

歡迎關(guān)注我的github倉庫01workstation,日常分享一些開發(fā)筆記和項(xiàng)目實(shí)戰(zhàn),歡迎指正問題。

同時(shí)也非常歡迎關(guān)注我的專欄:有問題的話,可以跟我討論,知無不答,謝謝大家。

5 參考鏈接

  • 80x86尋址方式
  • 80x86寄存器
  • 80x86指令

以上參考資料,由本人整理,但來源于網(wǎng)絡(luò),侵刪!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 匯編
    +關(guān)注

    關(guān)注

    2

    文章

    214

    瀏覽量

    26961
  • RT-Thread
    +關(guān)注

    關(guān)注

    32

    文章

    1496

    瀏覽量

    43513
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    學(xué)習(xí)強(qiáng)國深度報(bào)道 RT-Thread“1+X+N”戰(zhàn)略,國產(chǎn)操作系統(tǒng)賦能高端制造引關(guān)注|媒體視角

    近日,國產(chǎn)嵌入式操作系統(tǒng)領(lǐng)軍企業(yè)RT-Thread睿賽德在工博會發(fā)布的“1+X+N”戰(zhàn)略體系,獲得了國家級權(quán)威媒體平臺“學(xué)習(xí)強(qiáng)國”的重點(diǎn)報(bào)道。該報(bào)道從產(chǎn)業(yè)高度深入剖析了RT-Thread
    的頭像 發(fā)表于 09-29 17:37 ?711次閱讀
    <b class='flag-5'>學(xué)習(xí)</b>強(qiáng)國深度報(bào)道 <b class='flag-5'>RT-Thread</b>“1+<b class='flag-5'>X</b>+N”戰(zhàn)略,國產(chǎn)操作系統(tǒng)賦能高端制造引關(guān)注|媒體視角

    2025年RT-Thread開發(fā)者巡回培訓(xùn)報(bào)名正式啟動!

    親愛的RT-Thread社區(qū)成員們:新程再啟,共赴熱愛!2025年RT-Thread開發(fā)者巡回培訓(xùn)正式啟動報(bào)名!今年,我們選擇了西安、武漢、北京、杭州、深圳、上海、成都這7座城市,為大家?guī)?/div>
    的頭像 發(fā)表于 09-27 10:39 ?615次閱讀
    2025年<b class='flag-5'>RT-Thread</b>開發(fā)者巡回培訓(xùn)報(bào)名正式啟動!

    rt-thread studio 2.2.9如何使用最新的RT-Thread v5.2.0 released?

    rt-thread studio2.2.9如何使用最新的RT-Thread v5.2.0 released? 原先以為修改index_all.json,發(fā)現(xiàn)聯(lián)網(wǎng)的時(shí)候,會自動覆蓋 另lastet版本
    發(fā)表于 09-16 06:06

    【好書推薦】RT-Thread第20本相關(guān)書籍!《嵌入式實(shí)時(shí)操作系統(tǒng)RT-Thread原理與應(yīng)用》| 技術(shù)集結(jié)

    01內(nèi)容簡介ContentSummary本書為讀者提供了一個(gè)全面、系統(tǒng)的RT-Thread學(xué)習(xí)指南,旨在幫助初學(xué)者及有經(jīng)驗(yàn)的開發(fā)者掌握RT-Thread實(shí)時(shí)操作系統(tǒng)和STM32嵌入式微控制器的核心
    的頭像 發(fā)表于 08-24 10:05 ?505次閱讀
    【好書推薦】<b class='flag-5'>RT-Thread</b>第20本相關(guān)書籍!《嵌入式實(shí)時(shí)操作系統(tǒng)<b class='flag-5'>RT-Thread</b>原理與應(yīng)用》| 技術(shù)集結(jié)

    用SPI玩轉(zhuǎn)WiFi,RT-Thread ESP-Hosted驅(qū)動深度適配指南 | 技術(shù)集結(jié)

    還在為MCU的WiFi連接方案發(fā)愁?RT-Thread社區(qū)開源ESP-Hosted驅(qū)動,通過標(biāo)準(zhǔn)SPI接口即可實(shí)現(xiàn),并且該倉庫已整理成RT-Thread軟件包。RT
    的頭像 發(fā)表于 07-09 19:03 ?879次閱讀
    用SPI玩轉(zhuǎn)WiFi,<b class='flag-5'>RT-Thread</b> ESP-Hosted驅(qū)動深度適配指南 | 技術(shù)集結(jié)

    RT-Thread榮獲2025優(yōu)秀開源項(xiàng)目 | 新聞速遞

    6月底,RT-Thread睿賽德受邀參與由上海開源信息技術(shù)協(xié)會主辦的2025上海開源創(chuàng)新精英薈。上海市商委副主任張杰出席會議并致辭。RT-Thread嵌入式操作系統(tǒng)項(xiàng)目憑借其卓越的技術(shù)創(chuàng)新與開源生態(tài)
    的頭像 發(fā)表于 07-04 09:04 ?2222次閱讀
    <b class='flag-5'>RT-Thread</b>榮獲2025優(yōu)秀開源項(xiàng)目 | 新聞速遞

    揭秘RT-Thread上的AUTOSAR CP系統(tǒng)

    本文探討了RT-Thread與AUTOSARCP的融合,解決車載ECU開發(fā)中實(shí)時(shí)性、安全性與靈活性的平衡問題。通過分層安全內(nèi)核(rt-safetyos/autoos)和工具鏈整合,兼容AUTOSAR
    的頭像 發(fā)表于 06-23 20:22 ?2715次閱讀
    揭秘<b class='flag-5'>RT-Thread</b>上的AUTOSAR CP系統(tǒng)

    2025 RT-Thread全球技術(shù)大會議程正式發(fā)布!

    RT-ThreadGlobalTechConference(RT-ThreadGTC,RT-Thread全球技術(shù)大會)是聚焦基礎(chǔ)軟件技術(shù)創(chuàng)新與實(shí)踐的嵌入式技術(shù)盛會,持續(xù)推動技術(shù)價(jià)值轉(zhuǎn)化
    的頭像 發(fā)表于 05-27 19:28 ?905次閱讀
    2025 <b class='flag-5'>RT-Thread</b>全球技術(shù)大會議程正式發(fā)布!

    RT-Thread審核團(tuán)招募: 深度參與開源RTOS社區(qū)治理與演進(jìn)

    全球開發(fā)者招募:RT-Thread審核團(tuán)(ReviewTeam)正式開放申請!在開源的世界里,代碼審查(CodeReview)是保證軟件質(zhì)量、促進(jìn)技術(shù)交流的關(guān)鍵環(huán)節(jié)。RT-Thread作為全球領(lǐng)先
    的頭像 發(fā)表于 05-21 18:02 ?911次閱讀
    <b class='flag-5'>RT-Thread</b>審核團(tuán)招募: 深度參與開源RTOS社區(qū)治理與演進(jìn)

    如何將RT-Thread移植到NXP MCUXPressoIDE上

    RT-Thread默認(rèn)支持的IDE只有IAR 和 Keil, 那如何將RT-Thread移植到NXP MCUXPressoIDE上呢?本文內(nèi)容比較簡單但稍有瑣碎,希望對有需要的小伙伴有所幫助。
    的頭像 發(fā)表于 02-13 10:37 ?2224次閱讀
    如何將<b class='flag-5'>RT-Thread</b>移植到NXP MCUXPressoIDE上

    Deepseek上單片機(jī)?RT-Thread上跑通大語言模型

    前言單片機(jī)也能聊天?RT-Thread上跑通大語言模型在RT-Thread論壇上忽然看到了單片機(jī)和大模型對話的文章,想著春節(jié)期間看到大語言模型的熱度持續(xù)攀升,恰巧手頭有RA8D1VisionBoard開發(fā)板,于是嘗試著在Vis
    的頭像 發(fā)表于 02-07 18:59 ?2145次閱讀
    Deepseek上單片機(jī)?<b class='flag-5'>RT-Thread</b>上跑通大語言模型

    從開源中來到開源中去-RT-Thread北京社區(qū)篇

    社區(qū)!北京社區(qū)已成功舉辦次線下月度例會以及1次線下見面會,11月份例會將在本周六進(jìn)行,歡迎RT-Thread北京的開發(fā)者積極參與。掃碼進(jìn)入北京社區(qū)群11月份例會
    的頭像 發(fā)表于 11-29 01:05 ?669次閱讀
    從開源中來到開源中去-<b class='flag-5'>RT-Thread</b>北京社區(qū)篇

    RT-Thread上CAN實(shí)踐

    開箱測試RT-Thread官方已完成了對英飛凌XMC7200EVK的移植,通過shell可以看到做好了uart3的console。本文將介紹如何進(jìn)行RT-ThreadCan移植。接下來我們要完成CAN_FD的驅(qū)動移植,并正常啟動RT-T
    的頭像 發(fā)表于 11-13 01:03 ?2608次閱讀
    <b class='flag-5'>RT-Thread</b>上CAN實(shí)踐

    【S32K146 RT-thread】之 SPI驅(qū)動適配

    概述RT-Thread對SPI總線的驅(qū)動,抽象出了spibus的設(shè)備驅(qū)動,我們基于S32K146的硬件學(xué)習(xí)spibus設(shè)備驅(qū)動。
    的頭像 發(fā)表于 11-01 08:11 ?1637次閱讀
    【S32K146 <b class='flag-5'>RT-thread</b>】之 SPI驅(qū)動適配

    開源共生 商業(yè)共贏 | RT-Thread 2024開發(fā)者大會報(bào)名啟動!

    親愛的RT-Thread開發(fā)者我們很高興地宣布,一年一度的RDC(RT-ThreadDeveloperConference,RT-Thread開發(fā)者大會)正式啟動報(bào)名!2024RT-Threa
    的頭像 發(fā)表于 10-29 08:06 ?1154次閱讀
    開源共生 商業(yè)共贏 | <b class='flag-5'>RT-Thread</b> 2024開發(fā)者大會報(bào)名啟動!