匯編語言程序設計前言_第1頁
已閱讀1頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、0,主講人 劉雪潔,Assembly Language Programming,,匯編語言程序設計,1,課程介紹,匯編語言程序設計課程是國家教育部所屬高等院校計算機軟硬件專業(yè)的專業(yè)基礎課、必修課。 作為一種低級語言,匯編語言是高級語言程序設計的基礎,通常被視為微型計算機的又一核心內容。雖然現(xiàn)今大量問題都可應用高級語言編程,但匯編語言是能夠利用計算機所有硬件特性并能直接控制硬件的惟一語言,對于直接控制硬件的應用場合或若

2、干實時處理與控制的應用開發(fā)項目,匯編語言具有明顯的優(yōu)勢。,2,使用教材,沈美明、溫冬嬋編著《IBM-PC匯編語言程序設計(第2版)》清華大學出版社 2001年參考:[1]王爽編著《匯編語言》 清華大學出版社 2003年[2]錢曉捷編著《匯編語言程序設計》 電子工業(yè)出版社 2003年,3,教學內容,第1章 匯編語言基礎知識第2章 80x86的指令系統(tǒng)第3章 匯編語言程序格式第4章 基本匯編語

3、言程序設計第5章 高級匯編語言程序設計,4,第1章 匯編語言基礎知識,1.1 匯編語言及意義1.2 數(shù)據(jù)編碼與運算1.3 數(shù)據(jù)表示1.4 80x86CPU和寄存器組1.5 存儲器和端口,5,1.1.1機器語言 計算機能夠直接識別的數(shù)據(jù)是由二進制數(shù)0和1組成的代碼。 機器指令就是用二進制代碼組成的指令,一條機器指令控制計算機完成一個基本操作。

4、 用機器語言編寫的程序是計算機惟一能夠直接識別并執(zhí)行的程序,而用其他語言編寫的程序必須經(jīng)過翻譯才能變換成機器語言程序。,1.1 匯編語言及意義,返回本章,6,1.1.2匯編語言 匯編語言是一種用符號書寫的、基本操作與機器指令相對應的、并遵循一定語法規(guī)則的計算機語言。 匯編語言是一種符號語言,比機器語言容易理解和掌握,也容易調試和維護。 但對于匯編語言

5、編寫的程序必須經(jīng)過匯編和連接之后,才能在計算機上執(zhí)行。,返回本節(jié),返回本章,7,用匯編語言編寫的程序稱為匯編源程序。采用微機中任何一個文本編輯器編寫匯編語言源程序。 匯編程序可將匯編語言源程序翻譯成機器代碼目標模塊。 80x86CPU的匯編程序主要有微軟的宏匯編程序MASM。較著名的還有Borland公司的TASM,無實質差別。,返回本節(jié),返回本章,8,連接程序將匯編后的目標模塊轉換為可執(zhí)行程序。連接程序的文件名

6、通常是:LINK.EXE。,返回本節(jié),返回本章,9,1.1.3高級語言 高級程序設計語言接近于人類自然語言的語法習慣,與計算機硬件無關,易被用戶掌握和使用。1.1.4匯編語言特點匯編語言程序與處理器指令系統(tǒng)密切相關。程序員可直接、有效地控制系統(tǒng)硬件。形成的可執(zhí)行文件運行速度快、占用主存容量少。,返回本節(jié),返回本章,10,1.2 數(shù)據(jù)編碼與運算,1.2.1各種進位計數(shù)制 (1)十進制計數(shù) 十進制數(shù)的

7、基數(shù)為10,采用數(shù)字0、1、2、3、4、5、6、7、8、9共10個數(shù)碼來計數(shù)。每位數(shù)字的10k為該位數(shù)字的權。 例: (795.412)10 = 7×102+9×101+5×100+4×10-1+1×10-2+2×10-3,返回本章,11,(2)二進制計數(shù) 二進制數(shù)的基數(shù)為2,只有0、1兩個數(shù)碼,并遵循逢2進1的規(guī)則,它的各位權是以2k表示的。

8、 例: (11.1001)2 = 1×21+1×20+1×2-1+0×2-2+0×2-3+1×2-4n位二進制數(shù)可以表示2n個數(shù),例如3位二進制數(shù)可以表示8個數(shù),即000-111。4位二進制數(shù)則表示16個數(shù),即0000-1111。,返回本節(jié),返回本章,12,(3)八進制和十六進制計數(shù) 為便于閱讀及書寫,經(jīng)常使用八進制數(shù)和十六進制數(shù)來表示二進制數(shù)

9、。八進制的基數(shù)為8,數(shù)碼為0、1 、2、3、4、5、6、7。十六進制數(shù)的基數(shù)為16,數(shù)碼為0、1 、2、3、4、5、6、7 、8、9、A、B、C 、D、E、F。按同樣的方法,可以容易掌握八進制和十六進制的表示方法。 十進制數(shù)結尾一般用D、二進制數(shù)用B、八進制數(shù)用O、十六進制數(shù)H。如:117D、1010B,67O,1ABH,…。,返回本節(jié),返回本章,13,1.2.2數(shù)制的轉換 (1)十進制與二、八、十六進制間轉

10、換 將十進制數(shù)轉換成二、八、十六進制數(shù)的方法:將數(shù)分成整數(shù)部分和小數(shù)部分,整數(shù)部分采用除基取余法,小數(shù)部分采用乘基取整法分別進行轉換。例:76.425D=1001100.011011B,商 余數(shù)76÷2=38 038÷2=19 019÷2=9 19÷2=4 14÷2=2

11、 02÷2=1 01÷2=0 1,乘積 整數(shù)0.425×2=0.850 00.85×2=1.70 10.7×2=1.4 10.4×2=0.8 00.8×2=1.6 10.6×2=1.2 1,,,返回本節(jié),

12、返回本章,14,例:將十進制數(shù) 76.125轉換成十六進制數(shù)。 商 余數(shù) 乘積 整數(shù)部分76÷16=4 C(12) 0.125×16=2.0 24÷16=0 4 轉換結果為:76.125 = 4C.2H,,,返回本節(jié),返回

13、本章,15,將二、八、十六進制數(shù)轉換成十進制數(shù)的方法:各位數(shù)碼與其對應權的積再求和即為該進制數(shù)相對應的十進制數(shù)。 例: 101.11B = 5.75D B56.D7H=2902.839844D 。 計算過程: 101.11B = 1×22+0×21+1×20+1×2-1+1×2-2 = 4+1+0.5+0.25 = 5.

14、75D B56.D7H = B×162+5×161+6×160+D×16-1+7×16-2 = 2816+80+6+0.8125+0.027344 = 2902.839844,返回本節(jié),返回本章,16,轉換過程:101111010 . 0111001B = 0001 0111 1010 . 0111 0010B = 17A.72HB

15、56.D7H  = 1011 0101 0110 . 1101 0111B,(2)二進制與八、十六進制間轉換 將二進制數(shù)轉換成八(十六)進制數(shù)的方法:一個二制數(shù)從小數(shù)點向兩個方向每3位(4位)劃為一組(位數(shù)不夠補零),然后每組用八(十六)進制數(shù)表示就可以了。反之,把八(十六)進制數(shù)每一位用3位(4位)二進制數(shù)表示,就形成相應的二進制數(shù)了。 例:101111010 .

16、0111001B=17A.72H B56.D7H = 1011 0101 0110 . 1101 0111B,返回本節(jié),返回本章,17,1.2.3數(shù)據(jù)運算 (1)二進制數(shù)運算 二進制加法運算規(guī)則:逢2進1。 即 :0+0=0 0+1=1 1+0=1 1+1=0 產(chǎn)生進位1 二進制減法運算規(guī)則:借1作2。 即

17、:0-0=0 0-1=1產(chǎn)生借位1 1-0=1 1-1=0,返回本節(jié),返回本章,18,二進制乘法運算與十進制乘法運算類似即 :0×0=0 0×1=0 1×0=0 1×1=1 (2)十六進制運算 加法:當兩個一位數(shù)之和S小于16時,與十進制同樣處理,如果S大于或等于16,則應用S

18、-16及進位1取代S。 減法:與十進制類似,夠減時可直接相減,不夠減時服從向高位借1為16的規(guī)則。 乘法:可用十進制乘法的規(guī)則來計算,但結果必須用十六進制數(shù)來表示。,返回本節(jié),返回本章,19,例:,0 5 C 3 H 3 D 2 5 H +3 D 2 5 H - 0 5 C 3 H 4

19、2 E 8 H 3 7 6 2 H 0 5 C 3 H ×0 0 A 1 H 0 5 C 3 + 3 9 9 E 3 9 F A 3 H,,,,,,,返回本節(jié),返回本章,20,1.3 數(shù)據(jù)表示,1.3.1數(shù)值數(shù)據(jù) 數(shù)值數(shù)據(jù)分為有符號數(shù)和

20、無符號數(shù)。無符號數(shù)最高位表示數(shù)值,而有符號數(shù)最高位表示符號。有符號數(shù)有不同的編碼方式,常用的是補碼。,返回本章,21,(1)原碼: 最高位表示符號(正數(shù)用0,負數(shù)用1),其它位為該數(shù)的二進制數(shù)值,稱為有符號數(shù)的原碼表示。 【例】 X=45D=00101101B [X]原= 00101101B X=-45D [X]原=10101101B 原

21、碼表示簡單易懂,但若是兩個異號數(shù)相加(或兩個同號數(shù)相減),就要做減法。為了把減法運算轉換為加法運算就引進了反碼和補碼。,返回本節(jié),返回本章,22,(2)反碼: 正數(shù)的反碼與原碼相同,符號位用0表示,數(shù)值位不變。負數(shù)的反碼符號位用1表示, 數(shù)值位為原碼數(shù)值位按位取反形成,即0變1、1變0?! 纠縓=45D=00101101B, [X]反=00101101B X=-45D

22、 [X]反=11010010B(3)補碼: 正數(shù)的補碼與原碼相同,即符號位用0表示,數(shù)值位不變。負數(shù)的補碼為反碼加1形成。 【例】X=45D=00101101B [X]補=00101101B   X=-45 D [X]補=11010011B,返回本節(jié),返回本章,23,(4)符號擴展:   在數(shù)據(jù)處理

23、時,有時需要把8位二進制數(shù)擴展成16位二進制數(shù)?!  ‘斠獢U展的數(shù)是無符號數(shù)時,可在最高位前擴展8個0。   如果要擴展的數(shù)是補碼形式的有符號數(shù),那么就要進行符號位的擴展。符號擴展后,其結果仍是該數(shù)的補碼。,返回本節(jié),返回本章,24,(5)數(shù)據(jù)的表示范圍和大小  n位二進制數(shù)能表示的無符號整數(shù)的范圍是:   0 ≤I ≤ 2n-1;  n位二進制數(shù)能表示的有符號整數(shù)的范圍是:   -2n-1≤I≤+2n-1-1(6)補碼的

24、加法和減法  補碼的特性: [X]補==> [-X]補==> [X]補  補碼的加法規(guī)則:[X+Y]補=[X]補+[Y]補  補碼的減法規(guī)則: [X-Y]補=[X]補+[-Y]補,返回本節(jié),返回本章,求補,求補,25,1.3.2字符數(shù)據(jù):(1)ASCII碼:   標準ASCII碼用7位二進制數(shù)編碼,共有128個。 計算機存儲器基本單位為8位,ASCII

25、碼的最高位通常為0,通信時,最高位用作奇偶校驗位?!  ?常用字符的ASCII碼: 數(shù)字'0'~'9':30H~39H 字母'A'~'Z':41H~5AH 字母'a'~'z':61H~7AH 空格:20H 回車CR:0DH

26、 換行LF:0AH 注意回車與換行的差別: CR用來控制光標回到當前行的最左端;LF用來移動光標到下一行,而所在列不變。,返回本節(jié),返回本章,26,(2) BCD碼:  雖然二進制數(shù)實現(xiàn)容易,但不符合人們的使用習慣,且書寫閱讀不方便,所以在計算機輸入輸出時通常還是采用十進制來表示數(shù),這就需要實現(xiàn)十進制與二進制間的轉換?!  榱宿D換方便,常采用二進制編碼的十進制,簡稱為BCD碼。,返回本節(jié)

27、,返回本章,27,壓縮BCD碼:以4個二進制位表示1個十進制位,用0000B~1001B表示0~9。 例如,十進制數(shù)6429的壓縮BCD碼表示為0110 0100 0010 1001 B(即6429H)非壓縮BCD碼:以8個二進制位表示1個十進制位,低4位與壓縮BCD碼相同,高4位無意義。 例如,十進制數(shù)6429的非壓縮BCD碼表示為xxxx0110 xxxx0100 xxxx0010 xxxx1001 B

28、有時,要求非壓縮BCD碼的高4位為0,這時,6429的非壓縮BCD碼為06040209H。,返回本節(jié),返回本章,28,1.4 80x86CPU和寄存器組,計算機硬件: 中央處理單元 CPU(Intel 80x86)對匯編語言程序員,最關心其中的寄存器 存儲器(主存儲器)呈現(xiàn)給匯編語言程序員的,是存儲器地址 外部設備(接口電路)匯編語言程序員看到的是端口(I/O地址),返回本章,29,1.4.1 80x

29、86CPU    計算機執(zhí)行程序時,首先要將其裝入內存,然后由CPU執(zhí)行程序指令。CPU的作用: 執(zhí)行算術與邏輯運算, 控制指令的執(zhí)行。   通常,將Intel公司生產(chǎn)的8086/8088、80286、80386、80486、Pentium、Pentium Pro、Pentium II、Pentium III、Pentium 4 及其兼容的CPU,統(tǒng)稱為80x86 CPU或x86 CPU,將基于這些CPU的計算機,稱

30、為80x86計算機或x86計算機。 其中,8086CPU是Intel公司于1978年推出的16位微處理器,時鐘頻率為5MHz,有16位數(shù)據(jù)信號線,20位地址信號線,可尋址的內存地址空間為1MB。,返回本章,30,80x86CPU的3種工作模式 1.實模式:與8086兼容的工作模式,只有低20位地址線起作用,僅能尋址第一個1MB的內存空間。MS DOS運行在實模式下。 2.保護模式:32位80x86

31、CPU的主要工作模式,提供對程序和數(shù)據(jù)進行安全檢查的保護機制。Windows 9x/NT/2000運行在保護模式下。 3.虛擬8086模式:在Windows 9x下,若打開一個MS DOS窗口,運行一個DOS應用程序,那么該程序就運行在虛擬8086模式下。,返回本節(jié),返回本章,31,,1.4.2 80x86寄存器組,8086寄存器組,返回本節(jié),返回本章,32,1.通用寄存器,(1)數(shù)據(jù)寄存器  8位數(shù)據(jù)寄存器8個

32、:AL、AH、BL、BH、CL、CH、DL、DH。 16位數(shù)據(jù)寄存器4個:AX、BX、CX、DX。 32位數(shù)據(jù)寄存器4個:EAX、EBX、ECX、EDX。 AL與AH、BL與BH、CL與CH、DL與DH分別對應于AX、BX、CX和DX的低8位與高8位。AX、BX、CX和DX分別對應于EAX、EBX、ECX和EDX的低16位。,返回本節(jié),返回本章,33,AX寄存器稱為累加器。使用頻度最

33、高,用于算術、邏輯運算以及與外設傳送信息等。BX寄存器稱為基址寄存器。常用于存放存儲器地址。CX寄存器稱為計數(shù)器。一般作為循環(huán)或串操作等指令中的隱含計數(shù)器。DX寄存器稱為數(shù)據(jù)寄存器。常用來存放雙字數(shù)據(jù)的高16位,或存放外設端口地址。,返回本節(jié),返回本章,34,變址和指針寄存器包括SI、DI、SP、BP4個16位寄存器和ESI、EDI、ESP、EBP4個32位寄存器,主要用于存放某個存儲單元的偏移地址。其中SI、DI、BP和

34、SP分別對應于ESI、EDI、EBP和ESP的低16位。 。SI是源變址寄存器,DI是目的變址寄存器,在字符串操作中,SI和DI都具有自動增量或減量的功能。 SP為堆棧指針寄存器,用于存放當前堆棧段中棧頂?shù)钠频刂罚籅P為基址指針寄存器,用于存放堆棧段中某一存儲單元的偏移地址。,(2)變址和指針寄存器,返回本節(jié),返回本章,35,2.段寄存器,80x86CPU的6個16位的段寄存器分別稱為代碼段寄存器CS,數(shù)據(jù)段寄存器DS,堆棧段寄

35、存器SS,附加數(shù)據(jù)段寄存器ES及80386起增加的FS、GS兩個段寄存器。段寄存器用來確定該段在內存中的起始地址。代碼段用來存放程序的指令序列。CS存放代碼段的段首址,指令指針寄存器IP指示代碼段中指令的偏移地址。,返回本節(jié),返回本章,36,3.指令指針,8086CPU中的16位指令指針I(yè)P,總是保存下一次將要從主存中取出的指令的偏移地址,偏移地址的值為該指令到所在段段首址的字節(jié)距離。在目標程序運行時,IP的內容由微處理器硬件自動設

36、置,程序不能直接訪問IP,但一些指令卻可改變IP的值,如轉移指令、子程序調用指令等。EIP是80386起增加的32位指令寄存器,IP是EIP的低16位。,返回本節(jié),返回本章,37,4.標志寄存器,狀態(tài)標志通常由CPU根據(jù)指令執(zhí)行結果自動設置,以反映指令執(zhí)行結果的特征。 80x86 CPU將狀態(tài)標志作為條件判斷的依據(jù),以控制程序的執(zhí)行流程。FLAGS是8086CPU中一個很重要的16位標志寄存器,它包含9個標志位,主要用于保存一條指

37、令執(zhí)行后,CPU所處狀態(tài)信息及運算結果的特征。主要包括條件標志和狀態(tài)控制標志。,返回本節(jié),返回本章,38,1.條件標志,(1)零標志ZF:若運算結果為0,則ZF = 1,否則ZF = 0。(2)符號標志SF:若運算結果為負數(shù),則SF=1,否則SF=0。(3)進位標志CF:若加法時結果最高位向前有進位或減法時最高位向前有借位,則CF = 1,否則CF = 0。(4)溢出標志OF:若帶符號數(shù)的運算結果超出了補碼表示的范圍,則OF =

38、1,否則OF = 0。(5)輔助進位標志AF:若加法時結果低4位向前有進位或減法時結果低4位向前有借位,則AF=1,否則AF=0。(6)奇偶標志PF:若結果操作數(shù)中1的個數(shù)為偶數(shù),則PF = 1,否則PF = 0。,返回本節(jié),返回本章,39,深入認識CF和OF CF和OF本質上均表示溢出。 CF表示無符號溢出,即運算結果超出了無符號數(shù)的表示范圍。對于n位二進制數(shù)來說,無符號數(shù)表示范圍為0~2n-1,例如: n = 8和

39、16時分別為0~255和0~65535。 OF表示帶符號溢出,即運算結果超出了帶符號數(shù)的表示范圍。對于n位二進制數(shù)來說,帶符號數(shù)表示范圍為-2n-1~2n-1-1,例如,n = 8和16時,分別為-128~127和 -32768~32767。,返回本節(jié),返回本章,40,2.狀態(tài)控制標志,(1)方向標志DF:當DF=1時,每次操作后變址寄存器SI和DI減小,這樣使串處理從高地址向低地址方向處理;當DF=0時,則使SI和DI增大。

40、(2)中斷允許標志IF:當IF=1時,允許CPU響應可屏蔽中斷請求,否則關閉中斷。(3)追蹤標志TF:用于調試時的單步方式操作。當TF=1時,每條指令執(zhí)行完后產(chǎn)生陷阱,由系統(tǒng)控制計算機;當TF=0時,CPU正常工作,不產(chǎn)生陷阱。,返回本節(jié),返回本章,41,1.5 存儲器和端口,1.5.1 存儲器 存儲器是計算機的記憶部件,用來存放程序和數(shù)據(jù)。按所在的位置,存儲器可以分成主存儲器和輔助存儲器。

41、 主存儲器存放當前正在執(zhí)行的程序和使用的數(shù)據(jù),CPU可以直接存取,它由半導體存儲器芯片構成,其成本高,容量小,但速度快。 輔助存儲器可用來長期保存大量程序和數(shù)據(jù),CPU需要通過I/O接口訪問,它由磁盤或光盤構成,其成本低,容量大,但速度較慢。,返回本章,42,1.5.2 存儲器單元的地址和內容 計算機中信息的單位: 位(Bit):計算機中存儲信息的基本

42、單位,可存儲一個二進制數(shù):0或1。 字節(jié)(Byte):8位二進制位。位編號從右到左為0~7,第0位為最低位,第7位為最高位。 字(Word):16位二進制位,2個字節(jié)。位編號從右到左為0~15,第0位為最低位,第15位為最高位。位0~7為低字節(jié),位8~15為高字節(jié)。 雙字(Double Word):32位二進制位,4個字節(jié)。位編號從右到左為0~31

43、,第0位為最低位,第31位為最高位。位0~15為低字,位16~31為高字。,返回本節(jié),返回本章,43,左圖表明了存儲器中部分存儲單元存放信息情況。從圖可看到,地址為34560H的字節(jié)的存儲單元中的內容是34H,而地址為34561H的字節(jié)存儲單元中的內容是12H,表示為: (34560H)=34H (34561H)=12H 若從存儲單元中取一個詞,則高地址內容在高字節(jié)。例: (345

44、60H)字=1234H,,返回本節(jié),返回本章,存儲單元地址 :為了標識和存取每一個存儲單元,給每個存儲單元規(guī)定一個編號,這就是存儲單元地址。 在存儲器里以字節(jié)為單位存儲信息,一個字節(jié)有惟一的地址。 存儲單元的內容 :一個存儲單元中存放的信息稱為該存儲單元的內容。,44,1.5.3 物理地址的形成 實模式下允許最大尋址空間為1MB。8086/8088 CPU的地址線是20位的,這樣最大可尋址空間應為2

45、20=1MB,其物理地址范圍從00000H~FFFFFH。而8086CPU寄存器都是16位的。那么,這1MB空間如何用16位寄存器表達呢? 根據(jù)要求可把1M字節(jié)地址空間劃成若干邏輯段。每個邏輯段必須滿足兩個條件:一是邏輯段的起始地址(簡稱段首址)必須是16的倍數(shù);二是邏輯段的最大長度為64KB。按照這兩個條件,1M字節(jié)地址空間最多可劃分成64K個邏輯段,最少也要劃分成16個邏輯段。邏輯段與邏輯段可以相連,也可以不連,還

46、可以重疊。,返回本節(jié),返回本章,45,物理地址與邏輯地址 物理地址:內存單元的實際地址,也就是出現(xiàn)在地址總線上的地址。 邏輯地址(分段地址):段地址: 段內偏移地址 段地址表示段在內存中的起始位置,通常被保存在某個段寄存器中。段內偏移地址表示內存單元相對于段起始位置的位移,簡稱偏移地址,也叫有效地址EA。 段地址與偏移地址都是16位。 系統(tǒng)采

47、用下列方法將邏輯地址自動轉換為20位的物理地址: 物理地址 = 段地址 × 16 + 偏移地址 例:邏輯地址為 2E00H:1246H 物理地址=2E00H×16+1246H=2E000H+1246H =2F246H 每個內存單

48、元具有唯一的物理地址,但可由不同的邏輯地址描述。,返回本節(jié),返回本章,46,1.5.4 端口 對程序員來說,I/O接口電路由接口寄存器組成,為了區(qū)別它們,各個寄存器進行了編號,形成I/O地址。端口就是指I/O地址,是微機系統(tǒng)對I/O接口電路中與程序設計有關的寄存器的編號系統(tǒng)實際上就是通過這些端口與外設進行通訊的通常采用十六進制數(shù)來表達端口Intel 8086支持64K個8位端口其I/O地址可以表示為

49、:0000H ~ FFFFH,返回本節(jié),返回本章,47,本章小結,匯編語言是機器語言的符號表示,與機器語言無本質區(qū)別。計算機系統(tǒng)使用2進制表示數(shù)據(jù)。為了描述方便,書寫時常采用16進制形式。 數(shù)值數(shù)據(jù)分無符號數(shù)和有符號數(shù)兩種。有符號數(shù)具有原碼、反碼和補碼三種編碼。以補碼表示的帶符號數(shù)在基于不同位數(shù)時,其二進制形式可能完全不同。 字符數(shù)據(jù)常用編碼有ASCII碼和BCD碼。,返回本章,48,80x86計算機由CPU、內存和I/O子系統(tǒng)三

50、部分組成,各部分之間由系統(tǒng)總線相連。 80x86程序可以存取的最小數(shù)據(jù)單位是字節(jié)。例如,若要讀取的位數(shù)不足8位,則只能先讀出一個完整字節(jié),再屏蔽掉其它位。 字的存儲采取“低字節(jié)在低地址,高字節(jié)在高地址,字的地址由低地址表示”的方式,雙字也類似。 要正確理解內存單元的地址和值,地址表示位置,值是相應位置處的內容。同一地址既可以看作字節(jié)單元地址,也可以看作字甚至雙字單元地址,取決于具體的使用方式。,返回本章,49,80x86 CPU具

51、有8位、16位和32位寄存器。 8位通用寄存器8個:AH、AL、BH、BL、CH、CL、DH、DL。 16位通用寄存器8個:AX、BX、CX、DX、SI、DI、BP、SP。 32位通用寄存器8個:EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。 16位段寄存器6個:CS、DS、SS、ES、FS、GS。 32位/16位指令指針1個:EIP/IP。

52、 32位/16位標志寄存器1個:EFLAGS/FLAGS。 其中,32位寄存器是80386 CPU開始引入的。,返回本章,50,80x86 CPU有3種工作模式:實模式、保護模式和虛擬8086模式。 在實模式下,段地址和偏移地址均為16位。20位物理地址由16位段地址左移4位加16位偏移地址得到,只能尋址1MB的內存空間,且每段≤64KB。 在實模式、32位CPU下的程序可以使用32位寄存器和32位操作數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論