版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、0,主講人 劉雪潔,Assembly Language Programming,,匯編語言程序設(shè)計(jì),1,課程介紹,匯編語言程序設(shè)計(jì)課程是國家教育部所屬高等院校計(jì)算機(jī)軟硬件專業(yè)的專業(yè)基礎(chǔ)課、必修課。 作為一種低級語言,匯編語言是高級語言程序設(shè)計(jì)的基礎(chǔ),通常被視為微型計(jì)算機(jī)的又一核心內(nèi)容。雖然現(xiàn)今大量問題都可應(yīng)用高級語言編程,但匯編語言是能夠利用計(jì)算機(jī)所有硬件特性并能直接控制硬件的惟一語言,對于直接控制硬件的應(yīng)用場合或若
2、干實(shí)時(shí)處理與控制的應(yīng)用開發(fā)項(xiàng)目,匯編語言具有明顯的優(yōu)勢。,2,使用教材,沈美明、溫冬嬋編著《IBM-PC匯編語言程序設(shè)計(jì)(第2版)》清華大學(xué)出版社 2001年參考:[1]王爽編著《匯編語言》 清華大學(xué)出版社 2003年[2]錢曉捷編著《匯編語言程序設(shè)計(jì)》 電子工業(yè)出版社 2003年,3,教學(xué)內(nèi)容,第1章 匯編語言基礎(chǔ)知識第2章 80x86的指令系統(tǒng)第3章 匯編語言程序格式第4章 基本匯編語
3、言程序設(shè)計(jì)第5章 高級匯編語言程序設(shè)計(jì),4,第1章 匯編語言基礎(chǔ)知識,1.1 匯編語言及意義1.2 數(shù)據(jù)編碼與運(yùn)算1.3 數(shù)據(jù)表示1.4 80x86CPU和寄存器組1.5 存儲器和端口,5,1.1.1機(jī)器語言 計(jì)算機(jī)能夠直接識別的數(shù)據(jù)是由二進(jìn)制數(shù)0和1組成的代碼。 機(jī)器指令就是用二進(jìn)制代碼組成的指令,一條機(jī)器指令控制計(jì)算機(jī)完成一個(gè)基本操作。
4、 用機(jī)器語言編寫的程序是計(jì)算機(jī)惟一能夠直接識別并執(zhí)行的程序,而用其他語言編寫的程序必須經(jīng)過翻譯才能變換成機(jī)器語言程序。,1.1 匯編語言及意義,返回本章,6,1.1.2匯編語言 匯編語言是一種用符號書寫的、基本操作與機(jī)器指令相對應(yīng)的、并遵循一定語法規(guī)則的計(jì)算機(jī)語言。 匯編語言是一種符號語言,比機(jī)器語言容易理解和掌握,也容易調(diào)試和維護(hù)。 但對于匯編語言
5、編寫的程序必須經(jīng)過匯編和連接之后,才能在計(jì)算機(jī)上執(zhí)行。,返回本節(jié),返回本章,7,用匯編語言編寫的程序稱為匯編源程序。采用微機(jī)中任何一個(gè)文本編輯器編寫匯編語言源程序。 匯編程序可將匯編語言源程序翻譯成機(jī)器代碼目標(biāo)模塊。 80x86CPU的匯編程序主要有微軟的宏匯編程序MASM。較著名的還有Borland公司的TASM,無實(shí)質(zhì)差別。,返回本節(jié),返回本章,8,連接程序?qū)R編后的目標(biāo)模塊轉(zhuǎn)換為可執(zhí)行程序。連接程序的文件名
6、通常是:LINK.EXE。,返回本節(jié),返回本章,9,1.1.3高級語言 高級程序設(shè)計(jì)語言接近于人類自然語言的語法習(xí)慣,與計(jì)算機(jī)硬件無關(guān),易被用戶掌握和使用。1.1.4匯編語言特點(diǎn)匯編語言程序與處理器指令系統(tǒng)密切相關(guān)。程序員可直接、有效地控制系統(tǒng)硬件。形成的可執(zhí)行文件運(yùn)行速度快、占用主存容量少。,返回本節(jié),返回本章,10,1.2 數(shù)據(jù)編碼與運(yùn)算,1.2.1各種進(jìn)位計(jì)數(shù)制 (1)十進(jìn)制計(jì)數(shù) 十進(jìn)制數(shù)的
7、基數(shù)為10,采用數(shù)字0、1、2、3、4、5、6、7、8、9共10個(gè)數(shù)碼來計(jì)數(shù)。每位數(shù)字的10k為該位數(shù)字的權(quán)。 例: (795.412)10 = 7×102+9×101+5×100+4×10-1+1×10-2+2×10-3,返回本章,11,(2)二進(jìn)制計(jì)數(shù) 二進(jìn)制數(shù)的基數(shù)為2,只有0、1兩個(gè)數(shù)碼,并遵循逢2進(jìn)1的規(guī)則,它的各位權(quán)是以2k表示的。
8、 例: (11.1001)2 = 1×21+1×20+1×2-1+0×2-2+0×2-3+1×2-4n位二進(jìn)制數(shù)可以表示2n個(gè)數(shù),例如3位二進(jìn)制數(shù)可以表示8個(gè)數(shù),即000-111。4位二進(jìn)制數(shù)則表示16個(gè)數(shù),即0000-1111。,返回本節(jié),返回本章,12,(3)八進(jìn)制和十六進(jìn)制計(jì)數(shù) 為便于閱讀及書寫,經(jīng)常使用八進(jìn)制數(shù)和十六進(jìn)制數(shù)來表示二進(jìn)制數(shù)
9、。八進(jìn)制的基數(shù)為8,數(shù)碼為0、1 、2、3、4、5、6、7。十六進(jìn)制數(shù)的基數(shù)為16,數(shù)碼為0、1 、2、3、4、5、6、7 、8、9、A、B、C 、D、E、F。按同樣的方法,可以容易掌握八進(jìn)制和十六進(jìn)制的表示方法。 十進(jìn)制數(shù)結(jié)尾一般用D、二進(jìn)制數(shù)用B、八進(jìn)制數(shù)用O、十六進(jìn)制數(shù)H。如:117D、1010B,67O,1ABH,…。,返回本節(jié),返回本章,13,1.2.2數(shù)制的轉(zhuǎn)換 (1)十進(jìn)制與二、八、十六進(jìn)制間轉(zhuǎn)
10、換 將十進(jìn)制數(shù)轉(zhuǎn)換成二、八、十六進(jìn)制數(shù)的方法:將數(shù)分成整數(shù)部分和小數(shù)部分,整數(shù)部分采用除基取余法,小數(shù)部分采用乘基取整法分別進(jìn)行轉(zhuǎn)換。例: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,例:將十進(jìn)制數(shù) 76.125轉(zhuǎn)換成十六進(jìn)制數(shù)。 商 余數(shù) 乘積 整數(shù)部分76÷16=4 C(12) 0.125×16=2.0 24÷16=0 4 轉(zhuǎn)換結(jié)果為:76.125 = 4C.2H,,,返回本節(jié),返回
13、本章,15,將二、八、十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)的方法:各位數(shù)碼與其對應(yīng)權(quán)的積再求和即為該進(jìn)制數(shù)相對應(yīng)的十進(jìn)制數(shù)。 例: 101.11B = 5.75D B56.D7H=2902.839844D 。 計(jì)算過程: 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,轉(zhuǎn)換過程:101111010 . 0111001B = 0001 0111 1010 . 0111 0010B = 17A.72HB
15、56.D7H = 1011 0101 0110 . 1101 0111B,(2)二進(jìn)制與八、十六進(jìn)制間轉(zhuǎn)換 將二進(jìn)制數(shù)轉(zhuǎn)換成八(十六)進(jìn)制數(shù)的方法:一個(gè)二制數(shù)從小數(shù)點(diǎn)向兩個(gè)方向每3位(4位)劃為一組(位數(shù)不夠補(bǔ)零),然后每組用八(十六)進(jìn)制數(shù)表示就可以了。反之,把八(十六)進(jìn)制數(shù)每一位用3位(4位)二進(jìn)制數(shù)表示,就形成相應(yīng)的二進(jìn)制數(shù)了。 例:101111010 .
16、0111001B=17A.72H B56.D7H = 1011 0101 0110 . 1101 0111B,返回本節(jié),返回本章,17,1.2.3數(shù)據(jù)運(yùn)算 (1)二進(jìn)制數(shù)運(yùn)算 二進(jìn)制加法運(yùn)算規(guī)則:逢2進(jìn)1。 即 :0+0=0 0+1=1 1+0=1 1+1=0 產(chǎn)生進(jìn)位1 二進(jìn)制減法運(yùn)算規(guī)則:借1作2。 即
17、:0-0=0 0-1=1產(chǎn)生借位1 1-0=1 1-1=0,返回本節(jié),返回本章,18,二進(jìn)制乘法運(yùn)算與十進(jìn)制乘法運(yùn)算類似即 :0×0=0 0×1=0 1×0=0 1×1=1 (2)十六進(jìn)制運(yùn)算 加法:當(dāng)兩個(gè)一位數(shù)之和S小于16時(shí),與十進(jìn)制同樣處理,如果S大于或等于16,則應(yīng)用S
18、-16及進(jìn)位1取代S。 減法:與十進(jìn)制類似,夠減時(shí)可直接相減,不夠減時(shí)服從向高位借1為16的規(guī)則。 乘法:可用十進(jìn)制乘法的規(guī)則來計(jì)算,但結(jié)果必須用十六進(jìn)制數(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ù)有不同的編碼方式,常用的是補(bǔ)碼。,返回本章,21,(1)原碼: 最高位表示符號(正數(shù)用0,負(fù)數(shù)用1),其它位為該數(shù)的二進(jìn)制數(shù)值,稱為有符號數(shù)的原碼表示。 【例】 X=45D=00101101B [X]原= 00101101B X=-45D [X]原=10101101B 原
21、碼表示簡單易懂,但若是兩個(gè)異號數(shù)相加(或兩個(gè)同號數(shù)相減),就要做減法。為了把減法運(yùn)算轉(zhuǎn)換為加法運(yùn)算就引進(jìn)了反碼和補(bǔ)碼。,返回本節(jié),返回本章,22,(2)反碼: 正數(shù)的反碼與原碼相同,符號位用0表示,數(shù)值位不變。負(fù)數(shù)的反碼符號位用1表示, 數(shù)值位為原碼數(shù)值位按位取反形成,即0變1、1變0?! 纠縓=45D=00101101B, [X]反=00101101B X=-45D
22、 [X]反=11010010B(3)補(bǔ)碼: 正數(shù)的補(bǔ)碼與原碼相同,即符號位用0表示,數(shù)值位不變。負(fù)數(shù)的補(bǔ)碼為反碼加1形成?! 纠縓=45D=00101101B [X]補(bǔ)=00101101B X=-45 D [X]補(bǔ)=11010011B,返回本節(jié),返回本章,23,(4)符號擴(kuò)展: 在數(shù)據(jù)處理
23、時(shí),有時(shí)需要把8位二進(jìn)制數(shù)擴(kuò)展成16位二進(jìn)制數(shù)。 當(dāng)要擴(kuò)展的數(shù)是無符號數(shù)時(shí),可在最高位前擴(kuò)展8個(gè)0?! ∪绻獢U(kuò)展的數(shù)是補(bǔ)碼形式的有符號數(shù),那么就要進(jìn)行符號位的擴(kuò)展。符號擴(kuò)展后,其結(jié)果仍是該數(shù)的補(bǔ)碼。,返回本節(jié),返回本章,24,(5)數(shù)據(jù)的表示范圍和大小 n位二進(jìn)制數(shù)能表示的無符號整數(shù)的范圍是: 0 ≤I ≤ 2n-1; n位二進(jìn)制數(shù)能表示的有符號整數(shù)的范圍是: -2n-1≤I≤+2n-1-1(6)補(bǔ)碼的
24、加法和減法 補(bǔ)碼的特性: [X]補(bǔ)==> [-X]補(bǔ)==> [X]補(bǔ) 補(bǔ)碼的加法規(guī)則:[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ) 補(bǔ)碼的減法規(guī)則: [X-Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ),返回本節(jié),返回本章,求補(bǔ),求補(bǔ),25,1.3.2字符數(shù)據(jù):(1)ASCII碼: 標(biāo)準(zhǔn)ASCII碼用7位二進(jìn)制數(shù)編碼,共有128個(gè)。 計(jì)算機(jī)存儲器基本單位為8位,ASCII
25、碼的最高位通常為0,通信時(shí),最高位用作奇偶校驗(yàn)位?! ?常用字符的ASCII碼: 數(shù)字'0'~'9':30H~39H 字母'A'~'Z':41H~5AH 字母'a'~'z':61H~7AH 空格:20H 回車CR:0DH
26、 換行LF:0AH 注意回車與換行的差別: CR用來控制光標(biāo)回到當(dāng)前行的最左端;LF用來移動(dòng)光標(biāo)到下一行,而所在列不變。,返回本節(jié),返回本章,26,(2) BCD碼: 雖然二進(jìn)制數(shù)實(shí)現(xiàn)容易,但不符合人們的使用習(xí)慣,且書寫閱讀不方便,所以在計(jì)算機(jī)輸入輸出時(shí)通常還是采用十進(jìn)制來表示數(shù),這就需要實(shí)現(xiàn)十進(jìn)制與二進(jìn)制間的轉(zhuǎn)換?! 榱宿D(zhuǎn)換方便,常采用二進(jìn)制編碼的十進(jìn)制,簡稱為BCD碼。,返回本節(jié)
27、,返回本章,27,壓縮BCD碼:以4個(gè)二進(jìn)制位表示1個(gè)十進(jìn)制位,用0000B~1001B表示0~9。 例如,十進(jìn)制數(shù)6429的壓縮BCD碼表示為0110 0100 0010 1001 B(即6429H)非壓縮BCD碼:以8個(gè)二進(jìn)制位表示1個(gè)十進(jìn)制位,低4位與壓縮BCD碼相同,高4位無意義。 例如,十進(jìn)制數(shù)6429的非壓縮BCD碼表示為xxxx0110 xxxx0100 xxxx0010 xxxx1001 B
28、有時(shí),要求非壓縮BCD碼的高4位為0,這時(shí),6429的非壓縮BCD碼為06040209H。,返回本節(jié),返回本章,28,1.4 80x86CPU和寄存器組,計(jì)算機(jī)硬件: 中央處理單元 CPU(Intel 80x86)對匯編語言程序員,最關(guān)心其中的寄存器 存儲器(主存儲器)呈現(xiàn)給匯編語言程序員的,是存儲器地址 外部設(shè)備(接口電路)匯編語言程序員看到的是端口(I/O地址),返回本章,29,1.4.1 80x
29、86CPU 計(jì)算機(jī)執(zhí)行程序時(shí),首先要將其裝入內(nèi)存,然后由CPU執(zhí)行程序指令。CPU的作用: 執(zhí)行算術(shù)與邏輯運(yùn)算, 控制指令的執(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的計(jì)算機(jī),稱
30、為80x86計(jì)算機(jī)或x86計(jì)算機(jī)。 其中,8086CPU是Intel公司于1978年推出的16位微處理器,時(shí)鐘頻率為5MHz,有16位數(shù)據(jù)信號線,20位地址信號線,可尋址的內(nèi)存地址空間為1MB。,返回本章,30,80x86CPU的3種工作模式 1.實(shí)模式:與8086兼容的工作模式,只有低20位地址線起作用,僅能尋址第一個(gè)1MB的內(nèi)存空間。MS DOS運(yùn)行在實(shí)模式下。 2.保護(hù)模式:32位80x86
31、CPU的主要工作模式,提供對程序和數(shù)據(jù)進(jìn)行安全檢查的保護(hù)機(jī)制。Windows 9x/NT/2000運(yùn)行在保護(hù)模式下。 3.虛擬8086模式:在Windows 9x下,若打開一個(gè)MS DOS窗口,運(yùn)行一個(gè)DOS應(yīng)用程序,那么該程序就運(yùn)行在虛擬8086模式下。,返回本節(jié),返回本章,31,,1.4.2 80x86寄存器組,8086寄存器組,返回本節(jié),返回本章,32,1.通用寄存器,(1)數(shù)據(jù)寄存器 8位數(shù)據(jù)寄存器8個(gè)
32、:AL、AH、BL、BH、CL、CH、DL、DH。 16位數(shù)據(jù)寄存器4個(gè):AX、BX、CX、DX。 32位數(shù)據(jù)寄存器4個(gè):EAX、EBX、ECX、EDX。 AL與AH、BL與BH、CL與CH、DL與DH分別對應(yīng)于AX、BX、CX和DX的低8位與高8位。AX、BX、CX和DX分別對應(yīng)于EAX、EBX、ECX和EDX的低16位。,返回本節(jié),返回本章,33,AX寄存器稱為累加器。使用頻度最
33、高,用于算術(shù)、邏輯運(yùn)算以及與外設(shè)傳送信息等。BX寄存器稱為基址寄存器。常用于存放存儲器地址。CX寄存器稱為計(jì)數(shù)器。一般作為循環(huán)或串操作等指令中的隱含計(jì)數(shù)器。DX寄存器稱為數(shù)據(jù)寄存器。常用來存放雙字?jǐn)?shù)據(jù)的高16位,或存放外設(shè)端口地址。,返回本節(jié),返回本章,34,變址和指針寄存器包括SI、DI、SP、BP4個(gè)16位寄存器和ESI、EDI、ESP、EBP4個(gè)32位寄存器,主要用于存放某個(gè)存儲單元的偏移地址。其中SI、DI、BP和
34、SP分別對應(yīng)于ESI、EDI、EBP和ESP的低16位。 。SI是源變址寄存器,DI是目的變址寄存器,在字符串操作中,SI和DI都具有自動(dòng)增量或減量的功能。 SP為堆棧指針寄存器,用于存放當(dāng)前堆棧段中棧頂?shù)钠频刂?;BP為基址指針寄存器,用于存放堆棧段中某一存儲單元的偏移地址。,(2)變址和指針寄存器,返回本節(jié),返回本章,35,2.段寄存器,80x86CPU的6個(gè)16位的段寄存器分別稱為代碼段寄存器CS,數(shù)據(jù)段寄存器DS,堆棧段寄
35、存器SS,附加數(shù)據(jù)段寄存器ES及80386起增加的FS、GS兩個(gè)段寄存器。段寄存器用來確定該段在內(nèi)存中的起始地址。代碼段用來存放程序的指令序列。CS存放代碼段的段首址,指令指針寄存器IP指示代碼段中指令的偏移地址。,返回本節(jié),返回本章,36,3.指令指針,8086CPU中的16位指令指針I(yè)P,總是保存下一次將要從主存中取出的指令的偏移地址,偏移地址的值為該指令到所在段段首址的字節(jié)距離。在目標(biāo)程序運(yùn)行時(shí),IP的內(nèi)容由微處理器硬件自動(dòng)設(shè)
36、置,程序不能直接訪問IP,但一些指令卻可改變IP的值,如轉(zhuǎn)移指令、子程序調(diào)用指令等。EIP是80386起增加的32位指令寄存器,IP是EIP的低16位。,返回本節(jié),返回本章,37,4.標(biāo)志寄存器,狀態(tài)標(biāo)志通常由CPU根據(jù)指令執(zhí)行結(jié)果自動(dòng)設(shè)置,以反映指令執(zhí)行結(jié)果的特征。 80x86 CPU將狀態(tài)標(biāo)志作為條件判斷的依據(jù),以控制程序的執(zhí)行流程。FLAGS是8086CPU中一個(gè)很重要的16位標(biāo)志寄存器,它包含9個(gè)標(biāo)志位,主要用于保存一條指
37、令執(zhí)行后,CPU所處狀態(tài)信息及運(yùn)算結(jié)果的特征。主要包括條件標(biāo)志和狀態(tài)控制標(biāo)志。,返回本節(jié),返回本章,38,1.條件標(biāo)志,(1)零標(biāo)志ZF:若運(yùn)算結(jié)果為0,則ZF = 1,否則ZF = 0。(2)符號標(biāo)志SF:若運(yùn)算結(jié)果為負(fù)數(shù),則SF=1,否則SF=0。(3)進(jìn)位標(biāo)志CF:若加法時(shí)結(jié)果最高位向前有進(jìn)位或減法時(shí)最高位向前有借位,則CF = 1,否則CF = 0。(4)溢出標(biāo)志OF:若帶符號數(shù)的運(yùn)算結(jié)果超出了補(bǔ)碼表示的范圍,則OF =
38、1,否則OF = 0。(5)輔助進(jìn)位標(biāo)志AF:若加法時(shí)結(jié)果低4位向前有進(jìn)位或減法時(shí)結(jié)果低4位向前有借位,則AF=1,否則AF=0。(6)奇偶標(biāo)志PF:若結(jié)果操作數(shù)中1的個(gè)數(shù)為偶數(shù),則PF = 1,否則PF = 0。,返回本節(jié),返回本章,39,深入認(rèn)識CF和OF CF和OF本質(zhì)上均表示溢出。 CF表示無符號溢出,即運(yùn)算結(jié)果超出了無符號數(shù)的表示范圍。對于n位二進(jìn)制數(shù)來說,無符號數(shù)表示范圍為0~2n-1,例如: n = 8和
39、16時(shí)分別為0~255和0~65535。 OF表示帶符號溢出,即運(yùn)算結(jié)果超出了帶符號數(shù)的表示范圍。對于n位二進(jìn)制數(shù)來說,帶符號數(shù)表示范圍為-2n-1~2n-1-1,例如,n = 8和16時(shí),分別為-128~127和 -32768~32767。,返回本節(jié),返回本章,40,2.狀態(tài)控制標(biāo)志,(1)方向標(biāo)志DF:當(dāng)DF=1時(shí),每次操作后變址寄存器SI和DI減小,這樣使串處理從高地址向低地址方向處理;當(dāng)DF=0時(shí),則使SI和DI增大。
40、(2)中斷允許標(biāo)志IF:當(dāng)IF=1時(shí),允許CPU響應(yīng)可屏蔽中斷請求,否則關(guān)閉中斷。(3)追蹤標(biāo)志TF:用于調(diào)試時(shí)的單步方式操作。當(dāng)TF=1時(shí),每條指令執(zhí)行完后產(chǎn)生陷阱,由系統(tǒng)控制計(jì)算機(jī);當(dāng)TF=0時(shí),CPU正常工作,不產(chǎn)生陷阱。,返回本節(jié),返回本章,41,1.5 存儲器和端口,1.5.1 存儲器 存儲器是計(jì)算機(jī)的記憶部件,用來存放程序和數(shù)據(jù)。按所在的位置,存儲器可以分成主存儲器和輔助存儲器。
41、 主存儲器存放當(dāng)前正在執(zhí)行的程序和使用的數(shù)據(jù),CPU可以直接存取,它由半導(dǎo)體存儲器芯片構(gòu)成,其成本高,容量小,但速度快。 輔助存儲器可用來長期保存大量程序和數(shù)據(jù),CPU需要通過I/O接口訪問,它由磁盤或光盤構(gòu)成,其成本低,容量大,但速度較慢。,返回本章,42,1.5.2 存儲器單元的地址和內(nèi)容 計(jì)算機(jī)中信息的單位: 位(Bit):計(jì)算機(jī)中存儲信息的基本
42、單位,可存儲一個(gè)二進(jìn)制數(shù):0或1。 字節(jié)(Byte):8位二進(jìn)制位。位編號從右到左為0~7,第0位為最低位,第7位為最高位。 字(Word):16位二進(jìn)制位,2個(gè)字節(jié)。位編號從右到左為0~15,第0位為最低位,第15位為最高位。位0~7為低字節(jié),位8~15為高字節(jié)。 雙字(Double Word):32位二進(jìn)制位,4個(gè)字節(jié)。位編號從右到左為0~31
43、,第0位為最低位,第31位為最高位。位0~15為低字,位16~31為高字。,返回本節(jié),返回本章,43,左圖表明了存儲器中部分存儲單元存放信息情況。從圖可看到,地址為34560H的字節(jié)的存儲單元中的內(nèi)容是34H,而地址為34561H的字節(jié)存儲單元中的內(nèi)容是12H,表示為: (34560H)=34H (34561H)=12H 若從存儲單元中取一個(gè)詞,則高地址內(nèi)容在高字節(jié)。例: (345
44、60H)字=1234H,,返回本節(jié),返回本章,存儲單元地址 :為了標(biāo)識和存取每一個(gè)存儲單元,給每個(gè)存儲單元規(guī)定一個(gè)編號,這就是存儲單元地址。 在存儲器里以字節(jié)為單位存儲信息,一個(gè)字節(jié)有惟一的地址。 存儲單元的內(nèi)容 :一個(gè)存儲單元中存放的信息稱為該存儲單元的內(nèi)容。,44,1.5.3 物理地址的形成 實(shí)模式下允許最大尋址空間為1MB。8086/8088 CPU的地址線是20位的,這樣最大可尋址空間應(yīng)為2
45、20=1MB,其物理地址范圍從00000H~FFFFFH。而8086CPU寄存器都是16位的。那么,這1MB空間如何用16位寄存器表達(dá)呢? 根據(jù)要求可把1M字節(jié)地址空間劃成若干邏輯段。每個(gè)邏輯段必須滿足兩個(gè)條件:一是邏輯段的起始地址(簡稱段首址)必須是16的倍數(shù);二是邏輯段的最大長度為64KB。按照這兩個(gè)條件,1M字節(jié)地址空間最多可劃分成64K個(gè)邏輯段,最少也要?jiǎng)澐殖?6個(gè)邏輯段。邏輯段與邏輯段可以相連,也可以不連,還
46、可以重疊。,返回本節(jié),返回本章,45,物理地址與邏輯地址 物理地址:內(nèi)存單元的實(shí)際地址,也就是出現(xiàn)在地址總線上的地址。 邏輯地址(分段地址):段地址: 段內(nèi)偏移地址 段地址表示段在內(nèi)存中的起始位置,通常被保存在某個(gè)段寄存器中。段內(nèi)偏移地址表示內(nèi)存單元相對于段起始位置的位移,簡稱偏移地址,也叫有效地址EA。 段地址與偏移地址都是16位。 系統(tǒng)采
47、用下列方法將邏輯地址自動(dòng)轉(zhuǎn)換為20位的物理地址: 物理地址 = 段地址 × 16 + 偏移地址 例:邏輯地址為 2E00H:1246H 物理地址=2E00H×16+1246H=2E000H+1246H =2F246H 每個(gè)內(nèi)存單
48、元具有唯一的物理地址,但可由不同的邏輯地址描述。,返回本節(jié),返回本章,46,1.5.4 端口 對程序員來說,I/O接口電路由接口寄存器組成,為了區(qū)別它們,各個(gè)寄存器進(jìn)行了編號,形成I/O地址。端口就是指I/O地址,是微機(jī)系統(tǒng)對I/O接口電路中與程序設(shè)計(jì)有關(guān)的寄存器的編號系統(tǒng)實(shí)際上就是通過這些端口與外設(shè)進(jìn)行通訊的通常采用十六進(jìn)制數(shù)來表達(dá)端口Intel 8086支持64K個(gè)8位端口其I/O地址可以表示為
49、:0000H ~ FFFFH,返回本節(jié),返回本章,47,本章小結(jié),匯編語言是機(jī)器語言的符號表示,與機(jī)器語言無本質(zhì)區(qū)別。計(jì)算機(jī)系統(tǒng)使用2進(jìn)制表示數(shù)據(jù)。為了描述方便,書寫時(shí)常采用16進(jìn)制形式。 數(shù)值數(shù)據(jù)分無符號數(shù)和有符號數(shù)兩種。有符號數(shù)具有原碼、反碼和補(bǔ)碼三種編碼。以補(bǔ)碼表示的帶符號數(shù)在基于不同位數(shù)時(shí),其二進(jìn)制形式可能完全不同。 字符數(shù)據(jù)常用編碼有ASCII碼和BCD碼。,返回本章,48,80x86計(jì)算機(jī)由CPU、內(nèi)存和I/O子系統(tǒng)三
50、部分組成,各部分之間由系統(tǒng)總線相連。 80x86程序可以存取的最小數(shù)據(jù)單位是字節(jié)。例如,若要讀取的位數(shù)不足8位,則只能先讀出一個(gè)完整字節(jié),再屏蔽掉其它位。 字的存儲采取“低字節(jié)在低地址,高字節(jié)在高地址,字的地址由低地址表示”的方式,雙字也類似。 要正確理解內(nèi)存單元的地址和值,地址表示位置,值是相應(yīng)位置處的內(nèi)容。同一地址既可以看作字節(jié)單元地址,也可以看作字甚至雙字單元地址,取決于具體的使用方式。,返回本章,49,80x86 CPU具
51、有8位、16位和32位寄存器。 8位通用寄存器8個(gè):AH、AL、BH、BL、CH、CL、DH、DL。 16位通用寄存器8個(gè):AX、BX、CX、DX、SI、DI、BP、SP。 32位通用寄存器8個(gè):EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。 16位段寄存器6個(gè):CS、DS、SS、ES、FS、GS。 32位/16位指令指針1個(gè):EIP/IP。
52、 32位/16位標(biāo)志寄存器1個(gè):EFLAGS/FLAGS。 其中,32位寄存器是80386 CPU開始引入的。,返回本章,50,80x86 CPU有3種工作模式:實(shí)模式、保護(hù)模式和虛擬8086模式。 在實(shí)模式下,段地址和偏移地址均為16位。20位物理地址由16位段地址左移4位加16位偏移地址得到,只能尋址1MB的內(nèi)存空間,且每段≤64KB。 在實(shí)模式、32位CPU下的程序可以使用32位寄存器和32位操作數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 匯編語言程序設(shè)計(jì)
- 匯編語言程序設(shè)計(jì)
- 匯編語言程序設(shè)計(jì)課后答案
- 實(shí)驗(yàn)一 匯編語言程序設(shè)計(jì)
- 匯編語言程序設(shè)計(jì)競賽報(bào)告
- 匯編語言程序設(shè)計(jì)習(xí)題-答案
- 4匯編語言程序設(shè)計(jì)基礎(chǔ)
- 匯編語言程序設(shè)計(jì)課后答案
- 匯編語言程序設(shè)計(jì)課程教案
- 匯編語言程序設(shè)計(jì)習(xí)題答案
- 匯編語言程序設(shè)計(jì)課后答案
- 匯編語言程序設(shè)計(jì)-課程設(shè)計(jì)
- 匯編語言程序設(shè)計(jì)課程設(shè)計(jì)
- 匯編語言程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告-循環(huán)程序設(shè)計(jì)
- 匯編語言程序設(shè)計(jì)指導(dǎo)書
- 《匯編語言程序設(shè)計(jì)》教學(xué)大綱
- 匯編語言程序設(shè)計(jì)試卷樣例
- ch11-高級匯編語言程序設(shè)計(jì)
- 匯編語言程序設(shè)計(jì)試題及答案合集
- 匯編語言程序設(shè)計(jì)的環(huán)境及步驟
評論
0/150
提交評論