<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

計算機基礎知識之匯編語言1

jf_78858299 ? 來源:前端柒八九 ? 作者:前端柒八九 ? 2023-03-31 16:29 ? 次閱讀

匯編語言和本地代碼是一一對應的

在前面的文章中我們多次提到,計算機CPU能直接解釋運行的只有 「本地代碼」 (機器語言)程序。用C語言等編寫的源代碼,需要通過各自的 「編譯器」 編譯后,轉換成本地代碼。

通過調用本地代碼的內容,可以了解程序最終是以何種形式來運行的。但是,直接打開本地代碼來看,只能看到數值的羅列。

我們可以采用另外一種方式,在各本地代碼中,附帶上表示其功能的英語單詞縮寫。例如,在加法運算的本地代碼中加上add、在比較運算的本地代碼中加上cmp等。這些縮寫被稱為 「助記符」 ,使用助記符的編程語言稱為**「匯編語言」**

不過, 「即使是用匯編語言編寫的源代碼,最終也必須要轉換成本地代碼才能運行」 。負責準換工作的程序稱為 「匯編器」 ,轉換這個一處理本身稱為 「匯編」 。

?用匯編語言編寫的源代碼,和本地代碼是一一對應的

?

本地代碼也可以反過來轉換成匯編語言的源代碼。持有該功能的 「逆變換」 程序稱為 「反匯編程序」 ,逆變換這一處理本身稱為 「反匯編」 。

圖片


不會轉換成本地代碼的偽指令

匯編語言的源代碼,是由轉換本地代碼的指令和針對匯編器的 「偽指令」 構成的。 「偽指令負責把程序的構造及匯編的方法指示給匯編器(轉換程序)」 。不過,偽指令是無法匯編轉換成本地代碼。

圖片

如上是一個匯編代碼片段。其中 「彩色」 部分是偽指令。

由偽指令segmentends圍起來的部分,是給構成程序的命令和數據的集合體加上一個名字而得到的,稱為 「段定義」 。段定義的英文表達segment具有區域的意思。在程序中, 「段定義指的是命令和數據等程序的集合體的意思」 。

?一個程序由多個段定義構成

?

如上圖所示。源代碼的開始位置,定義了3個名稱分別為_TEXT、_DATA、_BSS的段定義。

  • _TEXT是指令的段定義
  • _DATA是被初始化(有初始值)的數據的段定義
  • _BSS是尚未初始化的數據的段定義

而這些段定義的名稱及劃分方法,不同的編譯器都有自己的一套規則。

偽指令procendp圍起來的部分,表示的是過程Proceduce的范圍。在匯編語言中,這種相當于C語言的函數的形式稱為過程。


匯編語言的語法是**「操作碼 + 操作數」**

「在匯編語言中,1行表示對CPU的一個指令」 。匯編語言指令的語法結構是 「操作碼」 + 「操作數」 。

  • 「操作碼」 表示的是指令動作
  • 「操作數」 表示的是指令對象

操作碼和操作數羅列在一起的語法,就是一個英文的指令文本。操作碼是動詞,操作數相當于賓語。

能夠使用何種形式的操作碼,是由CPU的種類決定的。

圖片

常用操作碼的功能

本地代碼加載到內存后才能運行。內存中存儲著構成本地代碼的指令和數據。程序運行時,CPU會從內存中把指令和數據讀出,然后再將存儲在CPU內部的寄存器中進行處理。

圖片「寄存器是CPU中的存儲區域」 。不過,寄存器并不僅僅具有存儲指令和數據的功能,也有運算功能。寄存器的名稱會通過匯編語言的源代碼指定給操作數。內存中的存儲區域是用 「地址編號」 來區分的。CPU內的寄存器是用eaxebx這些名稱開區分的。

下圖是CPU的寄存器的主要種類和角色圖片


mov指令

mov指令的兩個操作數,分別是用來指定數據的 「存儲地」「讀出源」 。

操作數可以指定寄存器、常數、標簽(附近在地址前)以及用方括號([])圍起來的這些內容。

  • 如果指定了 「沒有用方括號圍起來」 的內容,就表示對該值進行處理
  • 如果指定了 「用方括號圍起來」 的內容,方括號中的值則會被解釋為 「內存地址」 ,然后就會對該內存地址對應的值進行讀寫操作
mov ebp,esp;
mov eax,dword ptr [ebp+8];

mov ebp,esp中,esp寄存器中的值被直接存儲在ebp寄存器中。esp寄存器的值是100ebp寄存器的值也是100。

mov eax,dword ptr [ebp+8];中,ebp寄存器的值加8后得到的值會被解釋為內存地址。如果ebp寄存器的值是100的話,那么eax寄存器中存儲的就是100 + 8 = 108地址的數據。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10512

    瀏覽量

    207257
  • 計算機
    +關注

    關注

    19

    文章

    6757

    瀏覽量

    85292
  • C語言
    +關注

    關注

    180

    文章

    7548

    瀏覽量

    131327
  • 編譯器
    +關注

    關注

    1

    文章

    1585

    瀏覽量

    48740
收藏 人收藏

    評論

    相關推薦

    《微機原理與匯編語言》微機基礎知識

    `《微機原理與匯編語言》微機基礎知識[hide][/hide]`
    發表于 04-05 13:00

    匯編語言是什么?怎樣去學習匯編語言

    匯編語言是什么?怎樣去學習匯編語言呢?計算機怎么識別你寫的代碼呢?
    發表于 11-29 06:03

    計算機基礎知識

    前言《MSP430單片機應用基礎與實踐》(華中科技大學出版社)------第0章------計算機基礎知識(本文章作備忘錄使用)1.進制轉換2.數值數據的表示3.計算機的碼制
    發表于 11-29 06:03

    什么是匯編語言

    文章目錄前言一、 匯編語言簡介1.1 什么是匯編語言1.2機器語言簡介1.3 匯編語言的演變史1.4 匯編語言的廣義組成二、硬件與軟件2.1
    發表于 02-24 07:01

    計算機組成原理與匯編語言程序設計

    計算機組成原理與匯編語言程序設計是為中央電大計算機組成原理與匯編語言程序設計課程編寫的教材。在開始學習本書之前,請大家務必先認真閱讀這篇前言,它將告訴你本課
    發表于 10-21 17:56 ?0次下載
    <b class='flag-5'>計算機</b>組成原理與<b class='flag-5'>匯編語言</b>程序設計

    微機原理與匯編語言程序設計課件

    微機原理與匯編語言程序設計課件為PPT文件,內容有:第1章 基礎知識 4第2章 微型計算機系統結構 6第3章 程序加載并執行 4第4章 微處理器一般指令 6第5
    發表于 12-06 22:20 ?5次下載
    微機原理與<b class='flag-5'>匯編語言</b>程序設計課件

    計算機組成原理與匯編語言習題一

    計算機組成原理與匯編語言習題一   硬盤低格格式化是對硬盤最徹底的初始化方式,經過低格后的硬盤,原來保護的數據將全部丟失
    發表于 04-15 16:16 ?512次閱讀

    計算機基礎知識介紹

    計算機基礎知識計算機基礎知識計算機基礎知識
    發表于 12-03 16:13 ?0次下載

    《微機原理與匯編語言》微機基礎知識

    《微機原理與匯編語言》微機基礎知識
    發表于 12-14 15:07 ?0次下載

    計算機學習教程之指令系統與匯編語言程序設計課件免費下載

    本文檔的主要內容詳細介紹的是計算機學習教程之指令系統與匯編語言程序設計課件免費下載包括了:1.匯編語言程序設計,2.程序設計舉例,
    發表于 01-03 08:00 ?0次下載

    計算機的機器語言匯編語言與高級語言的詳細資料介紹

    計算機語言通常是一個能完整、準確和規則地表達人們的意圖,并用以指揮或控制計算機工作的“符號系統”。計算機語言通常分為三類:即機器語言、匯編語言
    的頭像 發表于 02-06 16:11 ?5451次閱讀

    [從零學習匯編語言] - 計算機中的硬件與軟件

    文章目錄前言一、 匯編語言簡介1.1 什么是匯編語言1.2 機器語言簡介1.3 匯編語言的演變史1.4 匯編語言的廣義組成二、硬件與軟件2
    發表于 12-31 19:55 ?10次下載
    [從零學習<b class='flag-5'>匯編語言</b>] - <b class='flag-5'>計算機</b>中的硬件與軟件

    構建 4 位計算機匯編語言匯編器(第 2 部分)

    一旦我們構建了一臺計算機,下一步就是開發一種匯編語言,然后是一個可以匯編我們程序的匯編器。 ? 在我 之前的專欄 中,我們介紹了在計算機內存
    發表于 08-01 17:52 ?671次閱讀
    構建 4 位<b class='flag-5'>計算機</b>:<b class='flag-5'>匯編語言</b>和<b class='flag-5'>匯編</b>器(第 2 部分)

    構建 4 位計算機匯編語言匯編器(第 1 部分)

    我們已經到了需要為 4 位 HRRG 計算機定義匯編語言的地步,但首先我們需要考慮某些概念。 如今,我們習慣于使用 C/C++、Java、Python 等高級語言對我們的計算機和微控制
    發表于 08-01 17:39 ?724次閱讀
    構建 4 位<b class='flag-5'>計算機</b>:<b class='flag-5'>匯編語言</b>和<b class='flag-5'>匯編</b>器(第 1 部分)

    計算機基礎知識匯編語言2

    在前面的文章中我們多次提到,計算機CPU能直接解釋運行的只有 「本地代碼」 (機器語言)程序。用C語言等編寫的源代碼,需要通過各自的 「編譯器」 編譯后,轉換成本地代碼。
    的頭像 發表于 03-31 16:30 ?1292次閱讀
    <b class='flag-5'>計算機</b><b class='flag-5'>基礎知識</b>之<b class='flag-5'>匯編語言</b>2
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>