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

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

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

計算機基礎(chǔ)知識之匯編語言1

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

匯編語言和本地代碼是一一對應(yīng)的

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

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

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

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

?用匯編語言編寫的源代碼,和本地代碼是一一對應(yīng)的

?

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

圖片


不會轉(zhuǎn)換成本地代碼的偽指令

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

圖片

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

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

?一個程序由多個段定義構(gòu)成

?

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

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

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

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


匯編語言的語法是**「操作碼 + 操作數(shù)」**

「在匯編語言中,1行表示對CPU的一個指令」 。匯編語言指令的語法結(jié)構(gòu)是 「操作碼」 + 「操作數(shù)」

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

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

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

圖片

常用操作碼的功能

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

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

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


mov指令

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

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

  • 如果指定了 「沒有用方括號圍起來」 的內(nèi)容,就表示對該值進行處理
  • 如果指定了 「用方括號圍起來」 的內(nèi)容,方括號中的值則會被解釋為 「內(nèi)存地址」 ,然后就會對該內(nèi)存地址對應(yīng)的值進行讀寫操作
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后得到的值會被解釋為內(nèi)存地址。如果ebp寄存器的值是100的話,那么eax寄存器中存儲的就是100 + 8 = 108地址的數(shù)據(jù)。


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

    關(guān)注

    68

    文章

    10780

    瀏覽量

    210498
  • 計算機
    +關(guān)注

    關(guān)注

    19

    文章

    7300

    瀏覽量

    87552
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7581

    瀏覽量

    135617
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1608

    瀏覽量

    48979
收藏 人收藏

    評論

    相關(guān)推薦

    《微機原理與匯編語言》微機基礎(chǔ)知識

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

    匯編語言是什么?怎樣去學(xué)習(xí)匯編語言

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

    計算機基礎(chǔ)知識

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

    什么是匯編語言

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

    計算機組成原理與匯編語言程序設(shè)計

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

    微機原理與匯編語言程序設(shè)計課件

    微機原理與匯編語言程序設(shè)計課件為PPT文件,內(nèi)容有:第1基礎(chǔ)知識 4第2章 微型計算機系統(tǒng)結(jié)構(gòu) 6第3章 程序加載并執(zhí)行 4第4章 微處理器一般指令&
    發(fā)表于 12-06 22:20 ?5次下載
    微機原理與<b class='flag-5'>匯編語言</b>程序設(shè)計課件

    計算機組成原理與匯編語言習(xí)題一

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

    計算機基礎(chǔ)知識介紹

    計算機基礎(chǔ)知識計算機基礎(chǔ)知識計算機基礎(chǔ)知識
    發(fā)表于 12-03 16:13 ?0次下載

    《微機原理與匯編語言》微機基礎(chǔ)知識

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

    計算機學(xué)習(xí)教程之指令系統(tǒng)與匯編語言程序設(shè)計課件免費下載

    本文檔的主要內(nèi)容詳細介紹的是計算機學(xué)習(xí)教程之指令系統(tǒng)與匯編語言程序設(shè)計課件免費下載包括了:1.匯編語言程序設(shè)計,2.程序設(shè)計舉例,
    發(fā)表于 01-03 08:00 ?0次下載

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

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

    [從零學(xué)習(xí)匯編語言] - 計算機中的硬件與軟件

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

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

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

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

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

    計算機基礎(chǔ)知識匯編語言2

    在前面的文章中我們多次提到,計算機CPU能直接解釋運行的只有 「本地代碼」 (機器語言)程序。用C語言等編寫的源代碼,需要通過各自的 「編譯器」 編譯后,轉(zhuǎn)換成本地代碼。
    的頭像 發(fā)表于 03-31 16:30 ?1464次閱讀
    <b class='flag-5'>計算機</b><b class='flag-5'>基礎(chǔ)知識</b><b class='flag-5'>之</b><b class='flag-5'>匯編語言</b>2