匯編語言尋址方式及堆棧.ppt
《匯編語言尋址方式及堆棧.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《匯編語言尋址方式及堆棧.ppt(36頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
8086匯編語言程序設(shè)計(jì),1,尋址方式的概念和基本分類;7種尋址方式及“兩對(duì)”尋址方式的區(qū)別;尋址方式與常量、變量和指針的關(guān)系;堆棧概念、結(jié)構(gòu)元素和操作指令。,本章要點(diǎn),8086匯編語言程序設(shè)計(jì),2,CPU訪問內(nèi)存的兩個(gè)目的:①讀取指令;②存取數(shù)據(jù)。CPU訪問內(nèi)存的三種方式:控制器自動(dòng)取指循環(huán);程序控制方式訪問數(shù)據(jù)段;堆棧方式。,第三章尋址方式及堆棧,8086匯編語言程序設(shè)計(jì),3,一條匯編指令語句包含操作碼和操作數(shù)兩種信息,有些像自然文字的謂語和賓語:操作碼字段為指令,描述語句的功能;操作數(shù)字段描述操作數(shù)或操作數(shù)的來源和去向;CPU獲得操作數(shù)的方式叫作尋址方式。,3.1尋址方式,8086匯編語言程序設(shè)計(jì),4,三類尋址方式的特點(diǎn):寄存器尋址:存取數(shù)據(jù)在CPU內(nèi)部進(jìn)行,故速度最快;寄存器數(shù)量很少,尋址方式簡(jiǎn)單;存儲(chǔ)器尋址:為便于組織串、數(shù)組等數(shù)據(jù)結(jié)構(gòu)復(fù)雜的數(shù)據(jù)處理,必須有更靈活、也就相對(duì)復(fù)雜的尋址方式,是本節(jié)的重點(diǎn);I/O端口尋址:I/O端口的任務(wù)是實(shí)現(xiàn)計(jì)算機(jī)核心和外界的數(shù)據(jù)交換,故尋址方式也相對(duì)簡(jiǎn)單。,8086匯編語言程序設(shè)計(jì),5,3.1.1寄存器尋址當(dāng)需要處理寄存器中的數(shù)據(jù)或?qū)⑻幚斫Y(jié)果存入寄存器的時(shí),使用“寄存器尋址”;在匯編語言中直接以寄存器名對(duì)寄存器尋址:MOVDS,AX意即將AX的內(nèi)容送入數(shù)據(jù)段寄存器DS。,8086匯編語言程序設(shè)計(jì),6,8086匯編語言程序設(shè)計(jì),7,3.1.2立即數(shù)尋址先看一例子:MOVAX,201H這條指令將16進(jìn)制數(shù)201送入寄存器AX。存放結(jié)果的AX的尋址方式是“寄存器尋址”,而后面的201H是一個(gè)常數(shù),它是隨指令從代碼段來的。由于這類操作數(shù)就在指令中,“立即”可以參與運(yùn)算,故稱作“立即數(shù)尋址方式”。因立即數(shù)伴隨指令在代碼段中,所以這種尋址也應(yīng)屬存儲(chǔ)器尋址。,8086匯編語言程序設(shè)計(jì),8,8086匯編語言程序設(shè)計(jì),9,3.1.3存儲(chǔ)器尋址存儲(chǔ)器尋址必然涉及段,即最終要以邏輯地址段基址:偏移量形成物理地址。由于在大多數(shù)使用場(chǎng)合地址指針的段基址是“現(xiàn)成的”和隱含的,所以本小節(jié)討論的重點(diǎn)是“有效地址”——偏移量的問題。偏移量是某存儲(chǔ)單元和段基址間的距離,又被稱作有效地址。,8086匯編語言程序設(shè)計(jì),10,偏移量或有效地址的形成:偏移量=位移量+基地址+變址量上述三個(gè)分量的不同組合,演繹出存儲(chǔ)器尋址的各種方式。①直接尋址是在指令中直接給出操作數(shù)地址偏移量的尋址方式。比如把200H單元的內(nèi)容送入AL:MOVAL,[200H],8086匯編語言程序設(shè)計(jì),11,,,,8086匯編語言程序設(shè)計(jì),12,注意直接尋址和立即數(shù)尋址方式區(qū)別:方括號(hào)里的數(shù)字是操作數(shù)的有效地址,[200H]表示該單元的內(nèi)容。顯然,直接尋址方式是非常直觀的存儲(chǔ)器尋址方式,但不方便處理整塊的數(shù)據(jù)。②寄存器間接尋址寄存器的內(nèi)容是某存儲(chǔ)單元的有效地址,以這種方式尋址就叫作寄存器間接尋址。,,8086匯編語言程序設(shè)計(jì),13,如要將200H單元的內(nèi)容送入AL,使用寄存器間接尋址需要這樣:MOVBX,200HMOVAL,[BX]所謂“間接”就是操作數(shù)的取得是通過寄存器間接獲得的。應(yīng)注意寄存器間接尋址方式和寄存器尋址相區(qū)別:后者在意的目標(biāo)的是寄存器的內(nèi)容,而前者是寄存器的內(nèi)容作為偏移量的存儲(chǔ)單元的內(nèi)容。,8086匯編語言程序設(shè)計(jì),14,8086匯編語言程序設(shè)計(jì),15,兩者的書寫形式也不同,寄存器間接尋址時(shí)將用作間接尋址的寄存器用方括號(hào)括起來。能用作存儲(chǔ)器間接尋址的有下述地址指針寄存器:BX,SI,DI,BP顯然,連續(xù)將上述寄存器的內(nèi)容增一或減一,可方面地處理數(shù)據(jù)塊,如處理一維數(shù)據(jù)或字符串,高精度數(shù)字運(yùn)算等??蓞⑴c存儲(chǔ)器尋址的寄存器又被成為“地址指針寄存器”,具備“準(zhǔn)指針”的功能。,8086匯編語言程序設(shè)計(jì),16,③變址尋址和基址尋址(寄存器相對(duì)尋址)某地址指針寄存器的內(nèi)容和指令中給出的位移量之和形成有效地址的尋址方式。它是直接尋址方式和寄存器間接尋址方式的一種組合,請(qǐng)看例子:MOVAL,[BX+20H]ADDAL,10[SI]指令中10[SI]和[SI+10]是等價(jià)的。,8086匯編語言程序設(shè)計(jì),17,8086匯編語言程序設(shè)計(jì),18,和寄存器間接尋址方式相比,地址指針寄存器的內(nèi)容可以從0開始,這樣地址指針寄存器可以兼作計(jì)數(shù)器。至于“變址尋址”和“基址尋址”的差異只涉及使用地址指針寄存器的不同,在編程應(yīng)用上沒有區(qū)別,故這兩種尋址方式又統(tǒng)稱為“寄存器相對(duì)尋址”。,8086匯編語言程序設(shè)計(jì),19,④相對(duì)基址變址尋址有效地址是基址寄存器的內(nèi)容、變址寄存器的內(nèi)容和指令中給出的位移量之和,如:MOVAL,20H[BX][SI]MOVAH,80[BS][DI]MOVDX,100H[BX][DI]20H[BX][SI]也可以寫成[20H+BX+SI]。這種尋址方式能比較方便地處理二維數(shù)組等更復(fù)雜的結(jié)構(gòu)數(shù)據(jù)。,8086匯編語言程序設(shè)計(jì),20,8086匯編語言程序設(shè)計(jì),21,由于基于BP的基址變址尋址的隱含段寄存器是堆棧段SS,所以在數(shù)據(jù)段的這種尋址方式常是BX分別和SI和DI配合??梢哉J(rèn)為相對(duì)基址變址尋址方式是最一般的尋址方式,其他尋址方式都可以看作是基址變址尋址方式的特例。比如:MOVAL,[100H+BX+SI]去掉其中任一個(gè)或二個(gè)分量就會(huì)是某種其他尋址方式。,8086匯編語言程序設(shè)計(jì),22,3.1.4尋址方式與常量、變量及“準(zhǔn)指針”①立即數(shù)尋址方式對(duì)應(yīng)匯編語言的常量;②存儲(chǔ)器尋址方式對(duì)應(yīng)匯編語言的變量;③在各種地址指針寄存器參與的存儲(chǔ)器尋址方式中,地址指針寄存器充當(dāng)“準(zhǔn)指針”的角色。串操作尋址和I/O尋址以后介紹。,8086匯編語言程序設(shè)計(jì),23,物理地址、段、邏輯地址和尋址方式小結(jié):①物理地址是地址信號(hào)和譯碼邏輯對(duì)存儲(chǔ)單元的唯一指定,本質(zhì)上是組合邏輯電路的一種應(yīng)用:,8086匯編語言程序設(shè)計(jì),24,②8088/8086尋址(或管理)1M的存儲(chǔ)空間是通過段來實(shí)現(xiàn)的:段寄存器的內(nèi)容存放和提供段基址的高16位,用于指定低四位為零的存儲(chǔ)單元作為段的起點(diǎn);16位段內(nèi)偏移量確定段內(nèi)具體單元,段內(nèi)管理64K的存儲(chǔ)空間;段寄存器的內(nèi)容即段基址的高16位和段內(nèi)偏移量合稱為邏輯地址:段基址的高16位:段內(nèi)偏移量,8086匯編語言程序設(shè)計(jì),25,③8088/8086CPU按代碼段、數(shù)據(jù)段、堆棧段、附加段對(duì)內(nèi)存進(jìn)行分類管理:代碼段:CS:IP;堆棧段:SS:SP;數(shù)據(jù)段:DS:位移量+基址量+變址量,8086匯編語言程序設(shè)計(jì),26,④尋址方式寄存器尋址方式(訪問CPU完成數(shù)據(jù)處理的接口,按“直呼其名”的方式進(jìn)行);立即數(shù)尋址方式(伴隨指令序列來自于代碼段的常量);數(shù)據(jù)段尋址是三種偏移分量的組合:位移量+基址量+變址量,8086匯編語言程序設(shè)計(jì),27,⑤尋址方式與常量、變量及指針的關(guān)系:立即數(shù)尋址方式對(duì)應(yīng)匯編語言的常量;存儲(chǔ)器尋址方式對(duì)應(yīng)匯編語言的變量;在各種地址指針寄存器參與的存儲(chǔ)器尋址方式中,地址指針寄存器充當(dāng)“準(zhǔn)指針”的角色。,8086匯編語言程序設(shè)計(jì),28,堆棧是由CPU控制的按“后進(jìn)先出”順序存取數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu),用于暫存子程序調(diào)用、中斷斷點(diǎn)的信息和數(shù)據(jù)。堆棧的用途在這里只作一點(diǎn)說明,只有在學(xué)習(xí)了子程序調(diào)用、中斷斷點(diǎn)的保護(hù)等才會(huì)知道為什么要使用堆棧這種特殊的存儲(chǔ)結(jié)構(gòu)。本節(jié)的重點(diǎn)是:堆棧的結(jié)構(gòu)元素和操作指令。,3.2堆棧,8086匯編語言程序設(shè)計(jì),29,3.2.1堆棧的構(gòu)造,8086匯編語言程序設(shè)計(jì),30,堆棧是在存儲(chǔ)器中劃出的一個(gè)部分;地址最高的字單元叫作“棧底(Bottom)”;入棧的數(shù)據(jù)從棧底開始逐個(gè)向地址低端存入;用堆棧指針SP指向最后入棧的數(shù)據(jù),習(xí)慣上把SP所指的位置叫作“棧頂(Top)”;數(shù)據(jù)是按SP的指向出入堆棧,從而實(shí)現(xiàn)了“后進(jìn)先出”的存取機(jī)制的。,8086匯編語言程序設(shè)計(jì),31,3.2.28086的堆棧①堆棧的組織,8086匯編語言程序設(shè)計(jì),32,堆棧是由SS的內(nèi)容為起點(diǎn)的一段存儲(chǔ)區(qū);SP指向棧頂;以字為單位進(jìn)行存??;當(dāng)堆棧初始化或?yàn)榭諘r(shí),SP的值是堆棧段的實(shí)際長(zhǎng)度,SP指向棧底之下的第二個(gè)字節(jié);棧的最大空間是64KB,棧的最大深度是32K;入棧的字,低字節(jié)存放在SP所指的單元,高字節(jié)存放在SP+1所指的單元。,8086匯編語言程序設(shè)計(jì),33,0H,堆棧初始化或空時(shí)棧頂“低于”棧底的情形,8086匯編語言程序設(shè)計(jì),34,②堆棧的操作堆棧的操作都是通過SP在棧頂進(jìn)行的;基本的操作有兩個(gè):壓棧和出棧。壓棧(數(shù)據(jù)入棧)PUSHSCR①(SP)–2→SP;②SCR→(SP).,8086匯編語言程序設(shè)計(jì),35,出棧(習(xí)慣上又叫彈出)POPDEST①((SP))→SCR;②(SP)+2→SP.問題:堆棧操作的尋址方式是什么?,8086匯編語言程序設(shè)計(jì),36,本章小結(jié):①尋址方式是本節(jié)的重點(diǎn)。注意區(qū)分:立即數(shù)尋址和直接尋址;寄存器尋址和寄存器間接尋址。②堆棧是按“后進(jìn)先出”機(jī)制存取數(shù)據(jù)的有特殊功用的存儲(chǔ)器組織;堆棧的結(jié)構(gòu)完全是由SS和SP的初值決定的。,第五章第1、12題,本章習(xí)題,,,匯編語言教程.chm,本章參考,,- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 匯編語言 尋址 方式 堆棧
鏈接地址:http://appdesigncorp.com/p-12721476.html