匯編語言程序設(shè)計(jì)1課件_第1頁
匯編語言程序設(shè)計(jì)1課件_第2頁
匯編語言程序設(shè)計(jì)1課件_第3頁
匯編語言程序設(shè)計(jì)1課件_第4頁
匯編語言程序設(shè)計(jì)1課件_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、匯編語言程序設(shè)計(jì)1匯編語言程序設(shè)計(jì)1教學(xué)安排40學(xué)時(shí)24學(xué)時(shí)理論課16學(xué)時(shí)上機(jī)。教學(xué)安排40學(xué)時(shí)成績(jī)70% 期末成績(jī)30% 平時(shí)成績(jī) (課堂提問,作業(yè),出勤,做實(shí)驗(yàn),實(shí)驗(yàn)報(bào)告)成績(jī)70% 期末成績(jī)前言個(gè)人計(jì)算機(jī)的核心是微處理器,它負(fù)責(zé)處理計(jì)算機(jī)在算術(shù)運(yùn)算、邏輯運(yùn)算和控制方面的需求。前言個(gè)人計(jì)算機(jī)的核心是微處理器,它負(fù)責(zé)處理計(jì)算機(jī)在算術(shù)運(yùn)算、(前言)每種處理器系列都有它自己唯一的指令集。這些指令集被稱為系統(tǒng)的機(jī)器語言。這種指令集非常復(fù)雜,在用于程序開發(fā)時(shí)又令人很難理解。(前言)每種處理器系列都有它自己唯一的指令集。(PREFACE)匯編語言是一種能夠代替各種機(jī)器指令的更容易理解的符號(hào)代碼。例如:

2、機(jī)器 語言 匯編語言 A0 00 20 MOV AL, VAR102 06 01 20 ADD AL, VAR2A2 02 20 MOV VAR3, AL(PREFACE)匯編語言是一種能夠代替各種機(jī)器指令的更容易 (PREFACE)高級(jí)語言, 例如C語言和BASIC語言,被設(shè)計(jì)成與特定計(jì)算機(jī)的技術(shù)細(xì)節(jié)無關(guān)的語言,然而,匯編語言作為一種低級(jí)語言,它是為專門的處理器系列設(shè)計(jì)的。 (PREFACE)使用匯編語言的優(yōu)點(diǎn):占用內(nèi)存少,運(yùn)行快要求程序員具有高超的技術(shù)能力理解底層機(jī)器架構(gòu)(計(jì)算機(jī)體系結(jié)構(gòu))常駐程序和中斷服務(wù)程序都是用匯編語言來編寫的使用匯編語言的優(yōu)點(diǎn):占用內(nèi)存少,運(yùn)行快1. PC硬件的基本

3、特征1. PC硬件的基本特征(1. PC硬件的基本特征)基本硬件的解釋: 位, 字節(jié), 寄存器,內(nèi)存, 處理器 和數(shù)據(jù)總線.主要的內(nèi)部硬件: 微處理器, 內(nèi)存, 寄存器; 外部硬件: 計(jì)算機(jī)的輸入/輸出設(shè)備.(1. PC硬件的基本特征)基本硬件的解釋:位和字節(jié)計(jì)算機(jī)存儲(chǔ)的基本構(gòu)造單元是“位” “位”的值是“0”和“1”位內(nèi)容(A): 0100 0001 位編號(hào): 7654 3210 最低位位和字節(jié)計(jì)算機(jī)存儲(chǔ)的基本構(gòu)造單元是“位”(位和字節(jié))8個(gè)相關(guān)的位稱為字節(jié)8個(gè)位允許有256(28)個(gè)1-0狀態(tài)的不同組合范圍: 0255, -128 +127(位和字節(jié))8個(gè)相關(guān)的位稱為字節(jié)相關(guān)字節(jié)處理器支持

4、的數(shù)據(jù)大小:字. 2-字節(jié) (16 位)雙字. 4-字節(jié) (32 位)四字. 8-字節(jié) (64 位) 8字. 16-字節(jié) ( 128 位) 相關(guān)字節(jié)處理器支持的數(shù)據(jù)大小:(相關(guān)字節(jié))千字節(jié)(KB). 1KB=1024 B (210 字節(jié))兆字節(jié)(MB). 1MB=1024 KB (220 字節(jié))十億字節(jié)(GB). 1GB=1024 MB (230 字節(jié))(相關(guān)字節(jié))千字節(jié)(KB). 1KB=1024 B (相關(guān)字節(jié))在一個(gè)字中,各位從右到左的編號(hào)是0到15.位內(nèi)容 (PC) : 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1位編號(hào): 15 14 13 12 11 10 9 8

5、7 6 5 4 3 2 1 0 高字節(jié) 低字節(jié) 第二位字節(jié) 第一字節(jié) 1 字=2 字節(jié) =16 位(相關(guān)字節(jié))在一個(gè)字中,各位從右到左的編號(hào)是0到15.(相關(guān)字節(jié))在存儲(chǔ)器中,每個(gè)字都有唯一的地址 第一個(gè)字節(jié)在最低的存儲(chǔ)器單元中,編號(hào)為0,第二個(gè)字節(jié)編號(hào)為1,等等。 (相關(guān)字節(jié))在存儲(chǔ)器中,每個(gè)字都有唯一的地址負(fù)的二進(jìn)制數(shù)負(fù)二進(jìn)制數(shù)是用二進(jìn)制補(bǔ)碼表示法來表示的;表示負(fù)二進(jìn)制數(shù)的規(guī)則是:逐位求反,末位加1 例子: +65 01000001 按位求反 10111110 加 1 1 數(shù) - 65 10111111負(fù)的二進(jìn)制數(shù)負(fù)二進(jìn)制數(shù)是用二進(jìn)制補(bǔ)碼表示法來表示的;(負(fù)二進(jìn)制數(shù))為了求得一個(gè)負(fù)二進(jìn)制數(shù)

6、的絕對(duì)值,需要采用二進(jìn)制補(bǔ)碼規(guī)則:例子: - 65 10111111 按位求反 01000000 加 1 1 數(shù) +65 01000001(負(fù)二進(jìn)制數(shù))為了求得一個(gè)負(fù)二進(jìn)制數(shù)的絕對(duì)值,需要采用二進(jìn)制(負(fù)二進(jìn)制數(shù))減法 減去減去一個(gè)二進(jìn)制數(shù)=加該數(shù)的二進(jìn)制的補(bǔ)碼 +65 0100 0001 + (- 65) 1011 1111 00 (1)0000 0000有數(shù)字進(jìn)入符號(hào)位,并且溢出,結(jié)果是正確的。(負(fù)二進(jìn)制數(shù))減法 十六進(jìn)制表示二進(jìn)制 1111 1110 1101 1100 1011 1010 1001 1000十進(jìn)制 15 14 13 12 11 10 9 8十六進(jìn)制 F E D C B A

7、 9 8二進(jìn)制 0111 0110 0101 0100 0011 0010 0001 0000十進(jìn)制 7 6 5 4 3 2 1 0 十六進(jìn)制 7 6 5 4 3 2 1 0 為了在程序中指明用十六進(jìn)制數(shù),在這個(gè)數(shù)的后面寫上一個(gè)“H” 十六進(jìn)制表示二進(jìn)制 1111 1ASCII 碼為了使數(shù)據(jù)表示標(biāo)準(zhǔn)化,微計(jì)算機(jī)設(shè)計(jì)人員采用ASCII(美國標(biāo)準(zhǔn)信息交換碼);它使不同計(jì)算機(jī)之間的數(shù)據(jù)交換更加方便。ASCII 碼為了使數(shù)據(jù)表示標(biāo)準(zhǔn)化,微計(jì)算機(jī)設(shè)計(jì)人員采用AS(ASCII 碼)8位ASCII碼可以提供256個(gè)字符(附錄 B),包括外國得字母符號(hào)在內(nèi)。例子: 0100 0001(hex 41) 表示字母

8、A.(ASCII 碼)8位ASCII碼可以提供256個(gè)字符(附錄PC 組成 計(jì)算機(jī)結(jié)構(gòu)如下圖所示: 內(nèi)部 總線 處理器 總線 輸入/輸出 存儲(chǔ)器 80286 系統(tǒng) 80386 RAM 80486 屏幕 ROM 80586 打印機(jī) Pentium 鍵盤 PC 組成 處理器PC的大腦是處理器,用來完成所有的指令執(zhí)行和數(shù)據(jù)處理。各種處理器的速度,尋址空間大小,寄存器以及數(shù)據(jù)總線是不相同的。數(shù)據(jù)總線在處理器,存儲(chǔ)器和外設(shè)之間傳輸數(shù)據(jù)處理器PC的大腦是處理器,用來完成所有的指令執(zhí)行和數(shù)據(jù)處理。執(zhí)行部件和總線接口部件處理器劃分為兩個(gè)邏輯部件:執(zhí)行部件(EU)和總線接口部件(BIU)。構(gòu)造功能: 執(zhí)行部件執(zhí)

9、行指令. 總線接口部件把指令和數(shù)據(jù)傳送給執(zhí)行部件3) 并行工作 總線接口部件保持領(lǐng)先一步 執(zhí)行部件和總線接口部件處理器劃分為兩個(gè)邏輯部件:執(zhí)行部件(E匯編語言程序設(shè)計(jì)1內(nèi)存儲(chǔ)器在PC中有兩種類型的內(nèi)存儲(chǔ)器: 隨機(jī)存取存儲(chǔ)器(RAM),在之后課程中,統(tǒng)一稱RAM為“內(nèi)存”。 只讀存儲(chǔ)器(ROM), 因?yàn)橹噶詈蛿?shù)據(jù)是永久性地“燒進(jìn)”芯片中的,所以,它們不能被修改。內(nèi)存儲(chǔ)器在PC中有兩種類型的內(nèi)存儲(chǔ)器:(內(nèi)存儲(chǔ)器)字節(jié)在內(nèi)存中被連續(xù)地編號(hào),從00開始,所以,內(nèi)存中的每個(gè)位置都有唯一的地址。(內(nèi)存儲(chǔ)器)字節(jié)在內(nèi)存中被連續(xù)地編號(hào),從00開始,所以,內(nèi)存(XMS)擴(kuò)展內(nèi)存(100000H )系統(tǒng)空間384

10、K=128+192+64(A0000FFFFFH)(TPA) 臨時(shí)程序空間640K(00000A0000H)Figure 1-個(gè)人計(jì)算機(jī)內(nèi)存第一個(gè) 1MB內(nèi)存是實(shí)存儲(chǔ)器(XMS)擴(kuò)展內(nèi)存系統(tǒng)空間(TPA) 臨時(shí)程序空間Figur(內(nèi)存儲(chǔ)器)內(nèi)存會(huì)一直保持其中的內(nèi)容,直到有新的內(nèi)容載入。計(jì)算機(jī)中的地址是用二進(jìn)制來表示的,也可以方便地寫成十六進(jìn)制。(內(nèi)存儲(chǔ)器)內(nèi)存會(huì)一直保持其中的內(nèi)容,直到有新的內(nèi)容載入。內(nèi)存中數(shù)據(jù)尋址 系統(tǒng)在內(nèi)存中存儲(chǔ)數(shù)據(jù),處理器從內(nèi)存中按字進(jìn)行檢索:低內(nèi)存地址中內(nèi)容 放在低字節(jié)高內(nèi)存地址中內(nèi)容 放在高字節(jié)內(nèi)存中數(shù)據(jù)尋址 系統(tǒng)在內(nèi)存中存儲(chǔ)數(shù)據(jù),處(內(nèi)存中數(shù)據(jù)尋址)例子: 處理器自

11、動(dòng)把0529H傳送到地址7612H和7613H的地址中 7612H 字節(jié) 內(nèi)容: 內(nèi)容 地址(7612H)=29H 05 7613H字的內(nèi)容由低地址所表示 29 7612H(7612H)=0529H 內(nèi)存(內(nèi)存中數(shù)據(jù)尋址)例子: (內(nèi)存中數(shù)據(jù)尋址) 內(nèi)存用來存儲(chǔ)程序指令和數(shù)據(jù) 存儲(chǔ)內(nèi)存地址中的具體信息被稱為內(nèi)存地址的內(nèi)容 例如: (00004H)=34H ; 字節(jié)內(nèi)容是 34H (00004H)=1234H ;字的內(nèi)容 (01234H)=2F1EH 01237H01236H01235H 2FH01234H 1EH00007H00006H00005H 12H00004H34H00003H0000

12、2H00001H00000H Address content(內(nèi)存中數(shù)據(jù)尋址) 內(nèi)存用來存儲(chǔ)程序指令和數(shù)據(jù) 012I/O 端口 和 I/O 地址空間 在每個(gè)外設(shè)中,都有數(shù)據(jù)寄存器,狀態(tài)寄存器,指令寄存器等各類的寄存器。 I/O地址空間是對(duì)外部設(shè)備的寄存器的一種編碼,旨在方便處理器訪問這些寄存器 I/O 端口 和 I/O 地址空間 在每個(gè)外(I/O 地址空間 ) 外設(shè)的寄存器編碼就是端口地址。 I/O是獨(dú)立于內(nèi)存的地址空間的。 IBM-PC I/O 空間是64K( 0000HFFFFH ),因此,計(jì)算機(jī)可以訪問64k 的不同的8位I/O設(shè)備。 (I/O 地址空間 ) 外設(shè)的寄存器編碼就是端匯編語

13、言程序設(shè)計(jì)1(I/O 地址空間 ) 操作系統(tǒng)把復(fù)雜的外設(shè)操作封裝成例行程序,因此,用戶可以通過調(diào)用中斷指令(INT)來運(yùn)行例行程序(DOS 或者 BIOS)。(I/O 地址空間 ) 段與尋址問題: 怎樣用16位數(shù)字 來尋址1MB的空間?段與尋址問題: (SEGMENT AND ADDRESSING)答案: 15 0 16位段 起始地址 0000 15 0 + 16 位 偏移地址 19 0 20位物理地址(SEGMENT AND ADDRESSING)答案: (段與尋址)物理地址= 10H * 段地址+偏移地址 (段與尋 (段與尋址)段是在程序中定義的一個(gè)專門的區(qū)域,從段邊界開始 能被16或者h(yuǎn)

14、ex10除盡的單元。 段能夠位于存儲(chǔ)器的幾乎所有地方,大小可變,在實(shí)模式下可以多達(dá)64KB(0000H-FFFFH)。 如果代碼(數(shù)據(jù)或者堆棧)區(qū)域需要大于64K的空間,那么,就需要在程序中定義一個(gè)以上的代碼段(數(shù)據(jù)或者堆棧) 匯編語言程序設(shè)計(jì)1 (段與尋址)三個(gè)主要的段分別是代碼斷,數(shù)據(jù)段和堆棧段。 (段與代碼斷(CS)包括要執(zhí)行的機(jī)器指令數(shù)據(jù)段(DS)包括程序所定義的數(shù)據(jù)堆棧段(SS) 包括程序需要暫存的任何數(shù)據(jù)和地址,或由你自己“調(diào)用”的子程序所用的數(shù)據(jù)與地址代碼斷(CS)段邊界段寄存器包含段的起始地址段邊界段寄存器包含段的起始地址 (段邊界)寄存器和段不一定是所顯示的順序,可以是任何順

15、序存放。 內(nèi)存 地址 地址 地址代碼斷數(shù)據(jù)段堆棧段SSDSCS段寄存器在存儲(chǔ)器中可再定位Figure 1-4 段與寄存器 (段邊界)寄存器和 (段邊界)因?yàn)樵谒星闆r下,最右邊的十六進(jìn)制數(shù)位都是0,所以存放數(shù)字0到段寄存器中是沒有必要的。本書使用方括號(hào)( )指明最右邊的十六進(jìn)制的0. 例如: 038E0 (段邊界)因?yàn)樵谒星闆r下,最右邊的十段偏移值在一個(gè)程序中,一段范圍內(nèi)的所有存儲(chǔ)單元都是相對(duì)于段起始地址的。一個(gè)段內(nèi)從段地址到另一個(gè)單元以字節(jié)位單位的距離稱為偏移值例子: (DS) =038EH DS 段地址: 038E0H 偏移值: 0032H 實(shí)際地址: 03912H段偏移值在一個(gè)程序中,

16、一段范圍內(nèi)的所有存儲(chǔ)單元都是相對(duì)于段起寄存器寄存器(寄存器)段寄存器CS 寄存器 有效程序代碼段得起始地址. 加上在指令指針(IP)寄存器中的偏移值,就指明了為執(zhí)行指令所要取得的指令地址。 (CS)+(IP)= 下一條指令的地址(寄存器)段寄存器(寄存器) DS 寄存器包含程序數(shù)據(jù)段得起始地址,該地址加上在指令中的偏移值,就可以訪問位于數(shù)據(jù)段中的指定字節(jié)單元。(DS)+(BX)=數(shù)據(jù)段中數(shù)據(jù)的地址(DS)+(DI)=數(shù)據(jù)段中數(shù)據(jù)的地址(DS)+(SI)=數(shù)據(jù)段中數(shù)據(jù)的地址(DS)+(16位 立即數(shù))=數(shù)據(jù)段中數(shù)據(jù)的地址(寄存器) DS 寄存器( 寄存器) SS 寄存器允許在寄存器中實(shí)現(xiàn)堆棧。加

17、上堆棧指針(SP)寄存器中的偏移值,就指明了正被尋址的堆棧中的當(dāng)前字。(SS)+(SP)=堆棧中的當(dāng)前字的地址(SS)+(BP)=堆棧中的數(shù)據(jù)的地址( 寄存器) SS 寄存器(寄存器) ES寄存器 程序中其他段得起始地址。 用于某些串操作中 和DI寄存器相關(guān)聯(lián) (ES)+(DI)=串地址的結(jié)尾(寄存器) ES寄存器指針寄存器指令指針(IP)的 寄存器 包含要執(zhí)行的下一條指令的偏移地址 IP是和CS寄存器相關(guān)聯(lián)的指針寄存器堆棧指針(SP) 寄存器包含了在堆棧中被尋址的當(dāng)前字的偏移地址 SP和BP寄存器與SS寄存器相關(guān)聯(lián)堆棧指針(SP) 寄存器通用寄存器AX: 主累加器. 用于有關(guān)輸入/輸出和大多

18、數(shù)算術(shù)運(yùn)算操作.例如, 乘法,除法 AX 16位 AH AL EAX 32位BX:基址寄存器,可以用作擴(kuò)展尋址的變址CX: 計(jì)數(shù)寄存器DX:數(shù)據(jù)寄存器通用寄存器變址寄存器SI: 16位源變址寄存器,與DS相關(guān)聯(lián)DI: 16位目的變址寄存器,與ES相關(guān)聯(lián)變址寄存器匯編語言程序設(shè)計(jì)1標(biāo)志寄存器 標(biāo)志寄存器指明處理器的狀態(tài)和指令運(yùn)行的結(jié)果 當(dāng)一條指令設(shè)置了一個(gè)標(biāo)志位,這個(gè)標(biāo)準(zhǔn)位會(huì)一直保留,直到其他指令對(duì)其進(jìn)行更改標(biāo)志寄存器 標(biāo)志寄存器指明處理器的狀態(tài)和 標(biāo)志寄存器在實(shí)模式下,包含了一下的標(biāo)志位標(biāo)志: O D I T S Z A P C位號(hào). 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 標(biāo)志寄存器在實(shí)模式下,包含了一下的標(biāo)志位O (溢出標(biāo)志): 指出

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論