《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 解決方案 > 簡(jiǎn)明x86匯編語言教程(二)

簡(jiǎn)明x86匯編語言教程(二)

2017-06-10
關(guān)鍵詞: 匯編

第二章 認(rèn)識(shí)處理器

中央處理器(CPU)在微機(jī)系統(tǒng)處于“領(lǐng)導(dǎo)核心”的地位。匯編語言被編譯成機(jī)器語言之后,將由處理器來執(zhí)行。那么,首先讓我們來了解一下處理器的主要作用,這將幫助你更好地駕馭它。

典型的處理器的主要任務(wù)包括從內(nèi)存中獲取機(jī)器語言指令,譯碼,執(zhí)行 根據(jù)指令代碼管理它自己的寄存器 根據(jù)指令或自己的的需要修改內(nèi)存的內(nèi)容響應(yīng)其他硬件的中斷請(qǐng)求.

一般說來,處理器擁有對(duì)整個(gè)系統(tǒng)的所有總線的控制權(quán)。對(duì)于Intel平臺(tái)而言,處理器擁有對(duì)數(shù)據(jù)、內(nèi)存和控制總線的控制權(quán),根據(jù)指令控制整個(gè)計(jì)算機(jī)的運(yùn)行。在以后的章節(jié)中,我們還將討論系統(tǒng)中同時(shí)存在多個(gè)處理器的情況。

處理器中有一些寄存器,這些寄存器可以保存特定長(zhǎng)度的數(shù)據(jù)。某些寄存器中保存的數(shù)據(jù)對(duì)于系統(tǒng)的運(yùn)行有特殊的意義。

新的處理器往往擁有更多、具有更大字長(zhǎng)的寄存器,提供更靈活的取指、尋址方式。

寄存器

如前所述,處理器中有一些可以保存數(shù)據(jù)的地方被稱作寄存器。

寄存器可以被裝入數(shù)據(jù),你也可以在不同的寄存器之間移動(dòng)這些數(shù)據(jù),或者做類似的事情。基本上,像四則運(yùn)算、位運(yùn)算等這些計(jì)算操作,都主要是針對(duì)寄存器進(jìn)行的。

首先讓我來介紹一下80386上最常用的4個(gè)通用寄存器。先瞧瞧下面的圖形,試著理解一下:


上圖中,數(shù)字表示的是位。我們可以看出,EAX是一個(gè)32-bit寄存器。同時(shí),它的低16-bit又可以通過AX這個(gè)名字來訪問;AX又被分為高、低8bit兩部分,分別由AH和AL來表示。

對(duì)于EAX、AX、AH、AL的改變同時(shí)也會(huì)影響與被修改的那些寄存器的值。從而事實(shí)上只存在一個(gè)32-bit的寄存器EAX,而它可以通過4種不同的途徑訪問。

也許通過名字能夠更容易地理解這些寄存器之間的關(guān)系。EAX中的E的意思是“擴(kuò)展的”,整個(gè)EAX的意思是擴(kuò)展的AX。X的意思Intel沒有明示,我個(gè)人認(rèn)為表示它是一個(gè)可變的量 。而AH、AL中的H和L分別代表高和低 。

為什么要這么做呢?主要由于歷史原因。早期的計(jì)算機(jī)是8位的,8086是第一個(gè)16位處理器,其通用寄存器的名字是AX,BX等等;80386是Intel推出的第一款I(lǐng)A-32系列處理器,所有的寄存器都被擴(kuò)充為32位。為了能夠兼容以前的16位應(yīng)用程序,80386不能將這些寄存器依舊命名為AX、BX,并且簡(jiǎn)單地將他們擴(kuò)充為32位——這將增加處理器在處理指令方面的成本。

Intel微處理器的寄存器列表(在本章先只介紹80386的寄存器,MMX寄存器以及其他新一代處理器的新寄存器將在以后的章節(jié)介紹)

通用寄存器
下面介紹通用寄存器及其習(xí)慣用法。顧名思義,通用寄存器是那些你可以根據(jù)自己的意愿使用的寄存器,修改他們的值通常不會(huì)對(duì)計(jì)算機(jī)的運(yùn)行造成很大的影響。通用寄存器最多的用途是計(jì)算。


EAX
32-bit寬

   通用寄存器。相對(duì)其他寄存器,在進(jìn)行運(yùn)算方面比較常用。在保護(hù)模式中,也可以作為內(nèi)存偏移指針(此時(shí),DS作為段 寄存器或選擇器)    



EBX
32-bit寬

   通用寄存器。通常作為內(nèi)存偏移指針使用(相對(duì)于EAX、ECX、EDX),DS是默認(rèn)的段寄存器或選擇器。在保護(hù)模式中,同樣可以起這個(gè)作用。    



ECX
32-bit寬

   通用寄存器。通常用于特定指令的計(jì)數(shù)。在保護(hù)模式中,也可以作為內(nèi)存偏移指針(此時(shí),DS作為 寄存器或段選擇器)。    



EDX
32-bit寬

   通用寄存器。在某些運(yùn)算中作為EAX的溢出寄存器(例如乘、除)。在保護(hù)模式中,也可以作為內(nèi)存偏移指針(此時(shí),DS作為段 寄存器或選擇器)。    


上述寄存器同EAX一樣包括對(duì)應(yīng)的16-bit和8-bit分組。

用作內(nèi)存指針的特殊寄存器


ESI
32-bit寬

   通常在內(nèi)存操作指令中作為“源地址指針”使用。當(dāng)然,ESI可以被裝入任意的數(shù)值,但通常沒有人把它當(dāng)作通用寄存器來用。DS是默認(rèn)段寄存器或選擇器。    



EDI
32-bit寬

   通常在內(nèi)存操作指令中作為“目的地址指針”使用。當(dāng)然,EDI也可以被裝入任意的數(shù)值,但通常沒有人把它當(dāng)作通用寄存器來用。DS是默認(rèn)段寄存器或選擇器。    



EBP
32-bit寬

   這也是一個(gè)作為指針的寄存器。通常,它被高級(jí)語言編譯器用以建造‘堆棧幀’來保存函數(shù)或過程的局部變量,不過,還是那句話,你可以在其中保存你希望的任何數(shù)據(jù)。SS是它的默認(rèn)段寄存器或選擇器。    


注意,這三個(gè)寄存器沒有對(duì)應(yīng)的8-bit分組。換言之,你可以通過SI、DI、BP作為別名訪問他們的低16位,卻沒有辦法直接訪問他們的低8位。

段寄存器和選擇器

實(shí)模式下的段寄存器到保護(hù)模式下?lián)u身一變就成了選擇器。不同的是,實(shí)模式下的“段寄存器”是16-bit的,而保護(hù)模式下的選擇器是32-bit的。

CS    代碼段,或代碼選擇器。同IP寄存器(稍后介紹)一同指向當(dāng)前正在執(zhí)行的那個(gè)地址。處理器執(zhí)行時(shí)從這個(gè)寄存器指向的段(實(shí)模式)或內(nèi)存(保護(hù)模式)中獲取指令。除了跳轉(zhuǎn)或其他分支指令之外,你無法修改這個(gè)寄存器的內(nèi)容。    

DS    數(shù)據(jù)段,或數(shù)據(jù)選擇器。這個(gè)寄存器的低16 bit連同ESI一同指向的指令將要處理的內(nèi)存。同時(shí),所有的內(nèi)存操作指令 默認(rèn)情況下都用它指定操作段(實(shí)模式)或內(nèi)存(作為選擇器,在保護(hù)模式。這個(gè)寄存器可以被裝入任意數(shù)值,然而在這么做的時(shí)候需要小心一些。方法是,首先把數(shù)據(jù)送給AX,然后再把它從AX傳送給DS(當(dāng)然,也可以通過堆棧來做).    

ES    附加段,或附加選擇器。這個(gè)寄存器的低16 bit連同EDI一同指向的指令將要處理的內(nèi)存。同樣的,這個(gè)寄存器可以被裝入任意數(shù)值,方法和DS類似。    

FS    F段或F選擇器(推測(cè)F可能是Free?)。可以用這個(gè)寄存器作為默認(rèn)段寄存器或選擇器的一個(gè)替代品。它可以被裝入任何數(shù)值,方法和DS類似。    

GS    G段或G選擇器(G的意義和F一樣,沒有在Intel的文檔中解釋)。它和FS幾乎完全一樣。    

SS    堆棧段或堆棧選擇器。這個(gè)寄存器的低16 bit連同ESP一同指向下一次堆棧操作(push和pop)所要使用的堆棧地址。這個(gè)寄存器也可以被裝入任意數(shù)值,你可以通過入棧和出棧操作來給他賦值,不過由于堆棧對(duì)于很多操作有很重要的意義,因此,不正確的修改有可能造成對(duì)堆棧的破壞。    

* 注意 一定不要在初學(xué)匯編的階段把這些寄存器弄混。他們非常重要,而一旦你掌握了他們,你就可以對(duì)他們做任意的操作了。段寄存器,或選擇器,在沒有指定的情況下都是使用默認(rèn)的那個(gè)。這句話在現(xiàn)在看來可能有點(diǎn)稀里糊涂,不過你很快就會(huì)在后面知道如何去做。

特殊寄存器(指向到特定段或內(nèi)存的偏移量):

EIP    這個(gè)寄存器非常的重要。這是一個(gè)32位寬的寄存器 ,同CS一同指向即將執(zhí)行的那條指令的地址。不能夠直接修改這個(gè)寄存器的值,修改它的唯一方法是跳轉(zhuǎn)或分支指令。(CS是默認(rèn)的段或選擇器)    

ESP    這個(gè)32位寄存器指向堆棧中即將被操作的那個(gè)地址。盡管可以修改它的值,然而并不提倡這樣做,因?yàn)槿绻悴皇欠浅C靼鬃约涸谧鍪裁矗敲茨憧赡茉斐啥褩5钠茐摹?duì)于絕大多數(shù)情況而言,這對(duì)程序是致命的。(SS是默認(rèn)的段或選擇器)    

IP: Instruction Pointer, 指令指針
SP: Stack Pointer, 堆棧指針

好了,上面是最基本的寄存器。下面是一些其他的寄存器,你甚至可能沒有聽說過它們。(都是32位寬):

CR0, CR2, CR3(控制寄存器)。舉一個(gè)例子,CR0的作用是切換實(shí)模式和保護(hù)模式。

還有其他一些寄存器,D0, D1, D2, D3, D6和D7(調(diào)試寄存器)。他們可以作為調(diào)試器的硬件支持來設(shè)置條件斷點(diǎn)。

TR3, TR4, TR5, TR6 和 TR? 寄存器(測(cè)試寄存器)用于某些條件測(cè)試。

最后我們要說的是一個(gè)在程序設(shè)計(jì)中起著非常關(guān)鍵的作用的寄存器:標(biāo)志寄存器。


本節(jié)中部份表格來自David Jurgens的HelpPC 2.10快速參考手冊(cè)。在此謹(jǐn)表謝意。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
午夜日韩电影| 亚洲性视频h| 一区二区三区免费观看| 亚洲国产精品999| 狠狠色丁香久久婷婷综合丁香 | 国产主播在线一区| 国产日韩欧美中文在线播放| 国产精品美女在线观看| 欧美三级乱码| 国产精品国产三级国产a| 国产精品videosex极品| 国产精品爱久久久久久久| 国产精品二区在线| 国产精品久久久久久久9999| 欧美性一区二区| 国产精品第一区| 国产精品久久久久影院亚瑟 | 午夜日韩视频| 欧美亚洲免费在线| 久久大综合网| 久久亚洲一区二区| 美女脱光内衣内裤视频久久影院 | 夜夜嗨av一区二区三区网站四季av| 亚洲理论电影网| 一区二区三区四区五区视频| 亚洲色在线视频| 亚洲一区3d动漫同人无遮挡| 亚洲欧美中文日韩v在线观看| 欧美一级电影久久| 欧美中文字幕在线观看| 久久久999精品| 午夜精品短视频| 亚洲一区二区三| 欧美在线www| 久久免费国产精品| 欧美成人影音| 国产精品va在线| 国产伦理一区| 亚洲第一在线综合网站| 亚洲伦理久久| 午夜视频久久久| 亚洲国产清纯| 一区二区三区精品视频| 午夜一区在线| 免费高清在线一区| 欧美日韩在线免费| 国产区精品视频| 亚洲激情成人| 亚洲先锋成人| 亚洲第一在线| 亚洲小少妇裸体bbw| 久久精品欧洲| 欧美日韩国产成人在线免费| 国产精品手机视频| 亚洲大胆女人| 亚洲小视频在线观看| 亚洲电影免费观看高清完整版| 日韩午夜电影| 久久精品国产一区二区三区 | 欧美日韩精品系列| 国产农村妇女毛片精品久久麻豆| 在线观看成人小视频| 99视频在线观看一区三区| 先锋影音一区二区三区| 日韩一区二区精品葵司在线| 欧美伊人久久| 欧美日本精品| 韩国欧美一区| 亚洲视频一区在线| 亚洲国产综合视频在线观看| 亚洲欧美春色| 欧美激情亚洲激情| 国产日韩欧美三级| 亚洲精品综合| 亚洲国产精品成人精品| 亚洲综合色在线| 欧美国内亚洲| 国内外成人在线| 亚洲制服丝袜在线| 99成人在线| 老司机一区二区| 国产精品色午夜在线观看| 亚洲丰满在线| 欧美一区二区三区的| 亚洲在线观看免费| 欧美激情视频免费观看| 国内精品国产成人| 亚洲你懂的在线视频| 夜夜狂射影院欧美极品| 老牛影视一区二区三区| 国产美女诱惑一区二区| 亚洲美女尤物影院| 最新国产の精品合集bt伙计| 欧美在线看片| 国产精品久久网站| 亚洲精品极品| 亚洲黄色成人网| 久久久综合香蕉尹人综合网| 国产精品久久国产三级国电话系列| 亚洲欧洲一二三| 91久久国产综合久久91精品网站| 久久精品噜噜噜成人av农村| 国产精品久久影院| 99国产精品久久久| 99国产精品视频免费观看一公开| 免费成人网www| 影音先锋中文字幕一区| 久久成人这里只有精品| 久久国产精品久久精品国产| 国产精品v亚洲精品v日韩精品| 亚洲美女视频| 正在播放亚洲| 欧美日韩精品一区| 亚洲免费精彩视频| 宅男噜噜噜66一区二区66| 欧美日韩国产页| 亚洲精品资源美女情侣酒店| 日韩午夜黄色| 欧美日韩视频不卡| 亚洲精品国产拍免费91在线| 亚洲精选视频免费看| 欧美国内亚洲| 日韩视频在线免费观看| 一本色道久久综合亚洲精品不卡| 欧美不卡在线| 亚洲精品永久免费| 中文日韩在线| 欧美午夜一区二区福利视频| 国产精品99久久久久久久女警| 亚洲午夜久久久| 国产精品欧美一区二区三区奶水 | 午夜精品999| 久久国内精品视频| 精品动漫3d一区二区三区| 久久国产精品久久久| 久久一区中文字幕| 亚洲福利视频专区| 夜夜嗨一区二区| 国产精品入口夜色视频大尺度| 亚洲欧美日韩国产精品| 久久精品国产免费| 在线观看不卡| 亚洲视频观看| 国产精品一区免费视频| 欧美一区永久视频免费观看| 美国十次了思思久久精品导航| 亚洲国产精品美女| 亚洲天堂成人| 国产精品一区二区久久| 久久精品成人一区二区三区 | 亚洲人成在线观看网站高清| av成人激情| 国产精品永久免费视频| 久久精品亚洲热| 欧美精品手机在线| 在线亚洲国产精品网站| 久久精品二区亚洲w码| 亚洲国产91精品在线观看| 亚洲一卡久久| 黄色av日韩| 99天天综合性| 国产精品视频专区| 91久久久亚洲精品| 欧美视频在线播放| 久久精品亚洲精品国产欧美kt∨| 欧美极品aⅴ影院| 亚洲在线不卡| 欧美韩国一区| 亚洲欧美国产不卡| 欧美成人精品| 午夜精品999| 欧美精品首页| 欧美综合国产精品久久丁香| 欧美日韩你懂的| 久久精彩视频| 国产精品v欧美精品v日本精品动漫 | 日韩写真视频在线观看| 久久成人免费电影| 亚洲韩国精品一区| 久久大逼视频| av不卡在线| 久久亚洲国产精品一区二区| 亚洲精品资源| 久久亚洲捆绑美女| 亚洲香蕉网站| 欧美激情国产日韩| 欧美一级视频免费在线观看| 欧美区在线播放| 亚洲第一在线综合在线| 欧美三级韩国三级日本三斤| 亚洲高清一区二| 国产精品网站视频| 99在线观看免费视频精品观看| 国产偷国产偷精品高清尤物| 制服诱惑一区二区| 亚洲第一在线| 久久九九久精品国产免费直播| 一区二区三区高清| 欧美激情麻豆| 亚洲大片免费看|