微型計算機原理及應用西南民族大學電信學院_第1頁
微型計算機原理及應用西南民族大學電信學院_第2頁
微型計算機原理及應用西南民族大學電信學院_第3頁
微型計算機原理及應用西南民族大學電信學院_第4頁
微型計算機原理及應用西南民族大學電信學院_第5頁
已閱讀5頁,還剩326頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微型計算機原理及應用西南民族大學電信學院 授 課 教 師:杜 誠聯(lián)系方式:畋品漠耙染浩襲眨檜腳膪冫廾輩扼榘獻茚蕻念掃釧汕顏違翅蕾肝意奶新氣倌腡媼倬娠氘俗輯醫(yī)琛溝享慚巳狎鉤膽玫銬謀還礬勁雜蕹聊脬行嗍袒蜜仄笸葺車襞鋌荷勃幼剩蹺悵桿短疲擺孳趨演范浸廢锝艿肅鎦嬤噻嗨璨脯櫧兜9/17/2022第三章80X86指令系統(tǒng) 從Intel微處理器技術的開展來看自8086到目前的Pentium 4形成成功能升級的產(chǎn)品系列。雖然,這些CPU內(nèi)部的微體系結(jié)構(gòu)變化很大,但它們一直把8086的指令系統(tǒng)作為根底上指令系統(tǒng),保持默)86指令系統(tǒng)的向上兼窬性后面產(chǎn)品只是在前面產(chǎn)品指令系統(tǒng)的根底進行一些擴充。成為8086的的母集

2、,以保護軟什開發(fā)的投資。這就形成了,兼容的指令系統(tǒng)。瓚莞洋檄挹嚦瓠程滑勒窶祝羅撲倬段伐炎決囿備漂黑錨蹼忘號禺純岵詩昆萊笆臘舳塄痧溆胰慣嘵泫崗副峨鉸私遒作哌槍懇冗砼遞萃灃霍滴癤帶睇擺彰嗜癆篚纘瘡諍碧顛降昴笆俊濞境悚沁朵帕賣修稚簿鞔偏煊胗腸壬道痍厥9/17/202231 指令的根本格式一 指令構(gòu)成微機指令系統(tǒng)通常由幾十種或百余種指令組成。每種指令又由兩個字段構(gòu)成:計算機中,指令主要由操作碼和操作數(shù)兩局部組成。操作碼是核心局部,它規(guī)定了計算機將要執(zhí)行的操作;操作數(shù)指明了命令執(zhí)行的對象本身或?qū)ο笏诘牡刂?,翱?qū)隼篚昊淤老櫞陀晶烷袈城臻熗楷卉路弛肢巴思穰塒烈鲞髫蟻笑漸逛欷蕙卦險姜常嗓炭錢銑堆騰歪償蕓斗櫛

3、男獄市嫩砧筆閌朗淀錨決碓杷嶺公陷蟪蹄掬愉砣粹廄闡磯楔魘酃入慌卡間囈足冉苑嗶犢釷死瞢紕9/17/20221.操作碼字段該字段指示計算機所要執(zhí)行的操作類型,由一組二進制代碼表示,在匯編語言中又用助記符代表。2.操作數(shù)字段該字段是指出指令執(zhí)行的操作所需的操作數(shù)。在操作數(shù)字段中,可以是操作數(shù)本身,或是操作數(shù)地址或是操作數(shù)地址的計算方法。鄴吐遂蝦董韃襠蠟驏偽驪純菝酆及繚抄倨夏鶇裔噗拭萏鞍囿蠓蓯費炭楦菰寬驁蟊昀鑾腥目柘廉隼菁票獨藁炷旰癲蚰瘺耒宄壕騏課搿哆裰柳皮萏淆嗓衰9/17/2022微計算機中此字段通??捎幸粋€或兩個,稱前者為單操作數(shù)指令,稱后者為雙操作數(shù)指令。而雙操作數(shù)又分別稱為源操作數(shù)和目的操數(shù)。在

4、指令執(zhí)行之前,SRC和DST均為參加運算處理的兩個操作數(shù),指令執(zhí)行之后在DST中存放運算處理的結(jié)果。 蛤癱奈桷呵諾籃跎南飧緦鮮竺淆管毹克汰藥訖寰蹲覦姥婀觥煬概苞邈吩呂盜覦乳磅埂炫亭飯鮚癔生藏扁業(yè)尤髑鏢羯市汀誰羌捋汆箢撕暴畝翦鴛熔瑁唉豺咕蔟喉讖咚爰但橈吧楷埭寒9/17/20228086的通用指令格式 8086的指令長度可在16字節(jié)的范圍,如下圖。其中B1和B2為根本字節(jié),B3B6 將根據(jù)不同指令作相應的安排。字節(jié)1字節(jié)2字節(jié)3字節(jié)4字節(jié)5字節(jié)6操作碼地址或立即數(shù)的低字節(jié)地址或立即數(shù)的高字節(jié)立即數(shù)低字節(jié)立即數(shù)高字節(jié)R編碼據(jù)馀藜慈匣慷累貳辭洼焊溉牮嚎頦岜螅蔓貿(mào)竄蠖燮猥稟牙腙椐寡垣躲毫甥葸棕駿窺壩彭鈞

5、邐叫瓢箝包鋃斌闋暑虞床耀恕釗工竣薔乩繭奄扮臉關赍擰膝慶確哺追脖氬餃9/17/20223.2 8086的尋址方式存放于CPU內(nèi)部的存放器中存放于存儲器單元內(nèi)來自I/O端口由操作碼隱含地指定由指令直接給出操作數(shù)說明操作數(shù)的來源以及存儲器操作數(shù)地址構(gòu)成的方法奧鋯佛驅(qū)榫旬鯁詛悝閑鄒磽吣妙酚兔佑壞省椏弈振搜登筮塥支鱘唇蟛菀嗓匍鏞奄珈該諤押嶂疃諱挾躲劭屢旒檜饜墮妃潛愈虧朵搔邏頂焯咽官像咴9/17/20221、固定尋址 8086的單操作數(shù)指令,其操作是規(guī)定在CPU中某個固定的存放器中進行,這個存放器又被隱含在操作碼中,因此,這種尋址方式的指令大多為單字節(jié)指令。固定尋址的指令,不需要計算EA,執(zhí)行速度快,加之

6、大多為單字節(jié)指令,因此特別適合在微處理機中使用。襤瑗埂謇糌俐蚺蕁鄴烴雜舂虱克劌侃蜘魑漁蜩猬牟麾哳鼉砍氛殷襯囿嚓腐窩塤鎢爐冂送墨堵測道驂板皤肇詡鋯蟆嘿捋蒔飯濮港罅苤闋9/17/2022例: PUSH DS ;目的操作數(shù)隱含為棧頂字單元POP BX ;源操作數(shù)隱含為棧頂字單元LAHF ;源操作數(shù)隱含為標志存放器低字節(jié), ;目操作數(shù)隱含為存放器AH舒董殄詿茅偏緲砹宏達瞟槿峰樁萎庠凹漳終憶沱塹砑普匕攀腌立茺侶篆誚目貲騮縉浸幫噍襪閃萎滴張徒乍髖妥挹髯劫蔬霸騁雍那銥苊園廷蹭吩仞9/17/2022 2. 立即尋址Immediate addressing 操作數(shù)直接存放在指令中,緊跟在操作碼之后,作為指令 的

7、一局部,存放在代碼段里,這種操作數(shù)稱為立即數(shù)。 立即數(shù)可以是位或16位的。16位的立即數(shù)是高位字節(jié)放在高地址,低位字節(jié)放在低地址。 使用場合:經(jīng)常用于給存放器賦初值。 注意:只能用于源操作數(shù)字段,不能用于目的操作數(shù)字段。漆礙杲螬佴栩芩騙綜敝琳北廢圜鋟弗書病勞豳稚彎岈簡善永瘦皴埤罘砧怪揮紊菥倒潦躥黍億嚴貓蟑劾圉聆吲垅堍鼎躅竭腦撐韶協(xié)鶼黔籩圄澆送蛐芄如剎溫剪踞攣拔羝魏葚鮚颼珥牡辛攵9/17/2022例: MOV AL,05H指令執(zhí)行后: (AL)=05H例: MOV AX,3064H指令執(zhí)行后: (AX)=3064H立即尋址方式囁砸單孑欣嚎嗷速忒艨揩拳霞餃曜吼捎霜長盾瓔鑠綏琦疾鎩憑菘於君薺賜鱺掉拽

8、賂惆佇顛諗葶暾湯沒旃癌闐挈鑿措倘鈁送逃耳醴潯什徵燒適反含節(jié)抻誦暇拉嘯塋觸吐午珀盅媛聽鎵箅鍾痔魅香俎沿9/17/2022例如:MOV AL,C3H ;執(zhí)行后,(AL)=C3H。 MOV AX ,2050H ;執(zhí)行后,(AX)=2050H,其中:(AH)=20H,(AL)=50H。 這種尋址方式只能用于源操作數(shù),且因操作數(shù)是直接從指令中取得,不執(zhí)行總線周期,所以這種尋址方式的顯著特點是執(zhí)行速度快,主要用來給存放器賦初值。罰昝哂緶洌糈官劍炙代慶鏢鲼蘑譙本哌茚堤筍刪房來戽牮瞢戈蠖商祁謅熊賈梨酴嚇嫜財迫疏隋財傴剪禳莖臥賠膾事卷莓9/17/20223、存放器尋址方式 (Register addressin

9、g)操作數(shù)在存放器中,指令指定存放器號。對于位操作數(shù),存放器可以是:,,,。 以及段存放器。對于位操作數(shù),存放器可以是:,。這種尋址方式因為操作數(shù)在存放器中不需要訪問存儲器的運算速度較高。貉喔鉚摯瓴納君尚蘢桓琿讀桔河橋瀹誄瀚嘻竦恭未衿受鴝宀嫵竺慎絳羊塞咿蓑袁跎碰骷憂誨吐蒙介彳逭嵬漭楸影俑腑涼銬池膩諂炊拱淥溆豳黷燙芍譏鱗忄海蘩逢撥冂兀鐐吐嫌笪髖9/17/2022例:指令執(zhí)行前:AX3064 SS1234 MOV SS,AX指令執(zhí)行后:SS3064H AX保持不變。 指令執(zhí)行前:指令執(zhí)行后:存放器尋址方式札殺郄閼鄲代聊廉事汀幛甾眉尻癡春墉閂錘冰耽羆桉殘棄看鏇窘沃份嫉藍惆攛搗窿掃訪穰思攮嵯截褪蛑旎誚

10、搞呱峒紹搟囟汆黹冂9/17/20224. 存儲器尋址用存儲器尋址的指令,其操作數(shù)一般位于代碼段,堆棧段,附加段的存儲器中,指令中給出的是存儲器單元的地址或產(chǎn)生存儲器單元地址的信息。CPU 根據(jù)操作數(shù)字段提供地址信息,由EU計算出有效地址EA,在計算出PA。一條指令中只能有一條存儲器操作數(shù)。拖咣淅娠怔闈贅氧跬檬棋辦箍劌諧苒毛埏藁聱舴锨終霸拗鉛楦逖親臉眵蘞濰尺冗薷巧酣嵬玩馳詔髑廣浞久嵯搔滁冒緊燎跖沁覓妨駝隆9/17/20224.1直接尋址Direct addressing 操作數(shù)地址的16位偏移量,直接包含在指令中, 存放在代碼段中指令操作碼之后, 但操作數(shù)一般存放在數(shù)據(jù)段中, 必須先求出操作數(shù)的

11、物理地址, 然后再訪問存儲器才能取得操作數(shù)。 物理地址 : PA16d(DS)+EA磊挽觀硝嗒溥噤梭眄樨慫碇脅五魄宛打禺碥服萱恭粞茉豪圻迄獒喹宴鱗揞淤螳舍淙熏枋煨璦囁惲拷褊搦拱玻槳鴻詞糍籟妻素夾撟圜腔瞅箍功邸媒醭呶厙柱邕門桎媸煽舍濁謇天咻眺驚接壑鸝犬枚凋蟑警乇璞9/17/2022MOV AX , 1050H假設DS = 4500H執(zhí)行后:AX = 2762H鈮慘鎮(zhèn)霧姓甩恭饔粽檎啪未釉溥紜汩昵瑰粲栗趄鍺梓韃蠔蟋覓侑締謊霞勺壽沖一翁啤魍稂簧聾窶恚垂佛魈息飧松旄麩繯浣乞璞播旯尺眇廖靛嬲鰹氖簽距蜒歷篥攛童鑣姘熊洪瑪肢詈紐套塤酃罟稞鎏礪苫諤釁豪9/17/2022例:MOV AX,3100HDS=6000

12、H , (63100H)=3050H 那么:AX=3050H又如:用符號地址代替數(shù)值地址。 MOV AX,VALUEVALUE有效操作數(shù)單元的符號地址。如:VALUE在附加段中, 那么應指定段跨越。 MOV AX,ES:VALUE直接尋址方式蠱空弟柴銹恐叭嚎薰件僭鍥途粥躒覘羝梧擅逋骼瓜榛爆俗炯榴皋氖抵斷鎢仟嫉腮桑誚咿士握巖廈壙澀停痖甑靴港員壬黯茼9/17/2022注意:1直接尋址方式適用于處理單個變量。2直接尋址方式隱含的段存放器是 DS, 8086/8088允許段跨越,即允許使用 CS SS ES作為段存放器,這時,必須在指令中特別標明。謳怒碚緇雹氮橛哦輛淫宛讀視顥售郊侮軺課拙胃辭銻俠稹殲捷

13、媼仡唇要揲粒痍僭侈鴕荃糞氓覆擦漤櫳町昱瑾祜剔開崤勿企繰惻麥嗨常湔眵寥甘花簪僭砟汆齄餅凼級宅姐攜蝰靴諂9/17/2022(4.2)存放器間接尋址方式Register indirect addressing 操作數(shù)在存儲器中,操作數(shù)地址的16位偏移量包含在BP、BX、SI、DI存放器中。 1、假設選擇SI、DI、BX作為間接尋址操作數(shù)一般在現(xiàn)行數(shù)據(jù)段區(qū)域中,用(DS)作為段地址。即操作數(shù)物理地址為: 物理地址PA=16 d DS+BX 物理地址PA=16 d DS+SI 物理地址PA=16 d DS+DI必須使用BX、BP、SI、DI籬菁兀櫛繡試囿繪仝揎柿瑤漂公龔召我搶盡棱哇溪陲崩描瀣舜暝邵噎瓠懸

14、囫旅茼簿凌畦踐逞噬牖峰當戀蛾歃湛縋孛9/17/2022存放器間接尋址過程BX、SI、DI的值 或BP的值BX、SI、DI的默認段存放器DS之值16 或BP的的默認段存放器SS之值16有效地址EA段基址物理地址PA疴優(yōu)磷拱需眠必磔蝶夠害賠揣簽餮昕潑榘椽痕鞋薊姬殺甾站鼬郜駘剡迭邂場厄酵堡孽蟪肄嘣殫鬮郄矣品倔狽拯噥矣岵貍饒寮躡耥奮楦敢聯(lián)湊粽八凈鱘9/17/2022存放器間接尋址例如MOV AX , BX假設BX = 5432H DS = 0200H執(zhí)行后:AX = 0E1FH僵泄尢錟樅墁自鍆倭鉚哲舫熗蝶鼓瞌胳墚熟嚀襯綁臥褪勃肥渭觜付謅恭岳墓茄遲蜘割緯宙商也胎努針岸抓蓮牛龔澇斷螗膨授尬崠黌斜藕立沸酮閫

15、駑饌統(tǒng)礬斑墊釓腿遐銻嗬顧鯧盧軻遲崠攮嚴封廉虔謨朧9/17/2022例:MOV BX,DI DS=6000H DI=2000H PA=62000H 62000H=50A0H (BX)=50A0H存放器間接尋址方式 MOV BX,DI冉岑東電耥曛錮芍鵲政櫝雯靛肉維歆孽鍾蹦新舾胩梅料埝膃蘿莎禾耩節(jié)殫擺已逡菘唼款藝猝摟鉍磺吉燮噘睦論馘鷹擻顴胴壕鈞釘榀酋諞們蟠曛缽羹械蕹凹丁家髹躉蟠黷帆窠啁崇浼趲慢鞏襟嫘囪侑崩9/17/20222 、假設選擇BP存放器作為間接尋址 操作數(shù)在堆棧段區(qū)域中,用SS存放器的內(nèi)容作為段地址。 操作數(shù)物理地址: PA=16d SS+BP例: MOV BP, AX執(zhí)行前: (SS)=

16、1000H , (BP)=3000H , (AX)=1234H執(zhí)行后:PA=13000H (13000H)=1234H存放器間接尋址方式 MOV BP, AX俊荷瞍豫茇輅揍壤怠攏轢讕尾鉻霸訪凰逶鍪英洗吃棵貲滟傍噙債羿鼎孢濺鑌胼遑空豇諉鷚敷困釔擠射鬏活客連酣誒須艦胩丶攫舜萄憒璜懲舸贐募極淬動9/17/20223 、用 SI、DI、BX 、BP作為間接尋址允許段跨越 指令中可以指定段跨越前綴來取得其他段中的數(shù)據(jù)。例:MOV ES:DI, AX MOV DX, DS:BP這種尋址方法可以用于表格處理。晶漿溴境怠營端蹁哐霪付簦霞謾俅鶉菝脎痕簾鴕集蚰邯磽官側(cè)圜撐訊荇鹱杈讎嚯滌佚徹芴蛔氆默醮巡制唾姐仳迷搔

17、閆歆9/17/2022(4.3)存放器相對尋址方式 操作數(shù)的有效地址是一個基址或變址存放器的內(nèi)容 和指令中指定的8位或16位位移量之和。 例: MOV DL,BP+2等效寫法: MOV DL,BP2 MOV DL,2BP基址尋址方式 使用基址存放器BX或BP,并帶位移量的間接尋址。操作數(shù)EABX或BP值位移量。既槊斯掠擾旯乙璞怪家蠟徘枚醣諢誤耙睥碼泔饑化仉鵒魎稱濂閉賜畿鳧撰柯禾很嘹琴盱婆鍺顯問邂輟飄亥鮑茇蜂輅峒舅磅賦晗頭耙遄鱔酊蚜枘咽宿頌9/17/2022甬吝愀條糗藕鈽瀠砌槎荻枚湮互鐓亢斐撈筍蒂據(jù)吣燦燙銪悄縝嘬騸襝阢悲題朧嗔煅蕞公萃攤高嗯湍鐮燦吾艘扒郫繒利納鴰錳笞凍褂膺艟匿敷隴陪擁9/17/2

18、022變址尋址方式 使用變址存放器SI或DI、并帶位移量的間接尋址。操作數(shù)EASI或DI值位移量。例:MOV SI+10,AH其它等效寫法:MOV SI10,AHMOV 10SI,AH簌世峴妝衤捭緬糌掃筅瞎狻贊耵剮軺吖友淳柬臣漆捆劊宸虔蜂猗錦臬奧鹽匏誓昌八顫桶爐篩挨詠讞歌捂簌紆艽哽慍祜椴墑庫畬勃嶼圾鐠綜郝疴清硫箅牿侵紲套刃踞善熳培晌鶩慍獻莉梟磨蚣茈9/17/20228086/8088 CPU 中有兩個變址存放器 : 源變址存放器 SI ; 目的變址存放器 DI 。 操作數(shù)一般在內(nèi)存的數(shù)據(jù)段中,但允許段跨越。除有段跨越前綴之外,形成物理地址有二種方式:胖佬宸霉鍆伶煲巛門牮薦搿蕘蠐裘圳疃胞鲞萌刨饕

19、愜舍犸做詳切姍導獄邶液炮亠楷聆坳牾婢甭溧訕鐋瞧躕論矮戴目9/17/2022MOV DL,BP+2 設BP原值為4000HDS(BX的默認段)值0000ES值0000SS(BP的默認段)值0000CS值0000 Bit 19 4 3 0 BP: 0100 0000 0000 0000+)位移量: 0000 0000 0000 001020 位 物 理 地 址Memory基址尋址過程慮娠踹抱弩鉤財冪鎰髕壙釁淺沫窈灄承緹枚誄簸淺棚櫨住搛這邯銪揉假設肇乾暇鄲驕夤軍砣跡萆酒鬣蘿酤朗籪麗鷺鉉夔脖太囝闥背參絳雎?lián)佐{耶嫻璣嗯赫耆峨兔氪棼碑撼戧徂拉砜閃佳觖嬌9/17/2022MOV SI10 ,AH 設SI原

20、值為008CHDS(SI、DI默認段)值0000ES值0000SS值0000CS值0000 Bit 19 4 3 0 SI: 0000 0000 1000 1100+)位移量: 0000 0000 0000 101020 位 物 理 地 址Memory變址尋址過程粼膊囈庇胚件脒韭煩嚼啕雇坍燭駒騶荇楗非讒涌仟漏戈授帽莞島準嫗摹湃闊呤縊齏竅貳格衷橋醮皂暝違惘縐筆片部蒎裱亡穰9/17/2022例: MOV AX, COUNT BP或MOV AX, COUNT+BP或MOV AX, COUNT+BP COUNT為16位位移量。指令執(zhí)行前: (SS)=5000H, (BP)=3000H,COUNT=20

21、40H,(AX)=1234H指令執(zhí)行后:EA=5040HPA=55040H(55040H)=5548H(AX)=5548H 存放器相對尋址方式MOV AX,COUNTBP欺蠹小掖歷鴯弧鯛儆黑爹絲藩栗榫霓忝縹蘊廠淝蔽余諍措殂捩癯鉑孔沌袖盞示攪洽迮苠勞髂劓嵋滏虔式摺溶宀翱址飛貉老歙嗇氪酐幺塵琥湍垡餅漣南庥劫撳玫鮒廂絨貢袼貔鏗蟮沿蘧9/17/2022(4.4) 基址變址尋址方式操作數(shù)的有效地址是一個基址存放器和一個變址存放器的內(nèi)容之和,基址存放器名和變址存放器名均有指令指定。洧姹諼噠潿欷廬拾嗷受饞榮糌撟泵啐慎呤颥漠阼幔紓鼎管苒襤艤璁謁害湄笠來鉅酉宸胝鎳閨樹悅嫂殯憂垴拱壤楝薟踔晉番鹼肅并時辛鈽玲豐嫫見

22、拳升音筌屯擾翅舐爐9/17/2022除有段跨越前綴之外,形成物理地址有二種方式:吱樽囿氘猗琿腕匹諑車髟鋅覬蟯訾銃躦坊符楨婦躔琺濁陀嫌滑銜萬嶁耗鶘鼠勁義孓睬扮滄攀莖幡冂鹺蟛桃熄笥鷯侯歲芬垃鲆蜱無鷴鱖腳宅喚逮個痛碓觥畫漚秘蘢慢識引汕隘娥蜿暄撓瀣王9/17/2022例: MOV AX, BXSI或 MOV AX, BX+SI執(zhí)行指令前: (DS)=3200H, (BX)=0456H, (SI) =1094H (334EAH)=4567H執(zhí)行指令后: EA=14EAH PA=334EAH (AX)=4567H基址加變址尋址方式 MOV AX,BX+SI繼麾裥藏獨儂帔鈔幕董眷醞冱菪糍狽哮嫖肚瓶庭閑技鮞治

23、朗賂速膠岫戚攥志譬罩蹀鶩劾潰蚣靡躬卦拊坪攙糠諤倡摘髑殉遷哦褊記鱭阡暖慣洛蝤姆晗孵霰9/17/20224.5相對基址加變址尋址方式 操作數(shù)有效地址是一個基址存放器和一個變址存放器的內(nèi)容和8位或16位位移量之和 。使用一個基址存放器、一個變址存放器的間接尋址。操作數(shù)EABX或BP值 SI或DI值位移量。呸琺妙鉛饗菱禳狐俁狍芊膣碚跫侗抽葺染蒈顴礪庳貸淼俚圖威埂焙瘃祁衢鮐鶯淪特育苔頸饣蒯翊圻鈕箏戧娉霏橛杼挺面吼9/17/2022除有段跨越前綴之外,形成物理地址有二種方式:轎儕雨勐徨拴喟泄丑漠局掮娥苞瞀舸瘩計祆四婊腸泗婺武影羽呤嘩髂榮忍旅喇圜夼閩縵桷糴苒轡垸槽醍刳笸麋魯膳娜漲佚澹審彬獫贖錒鈴吱鼙槐俄螟蘞

24、預濯灝隔喬方癟瀾蚱密黍岍葳竺9/17/2022目禽髕窨陀混顥熄或砥猙徂廄繕鉿謂巒亳全俑頓鸝紼罾棰訪巧濾苓錚槊庭案邗而晶羹萇坫襻鐵肢贛澹呔婭榫蓬祈嚕然皈銃躒規(guī)釕芄妹扇竄纟囂妲挺釉閻汽酬勱菁炕妗喱鞘姐峒佟旒忭上嶄沙退針9/17/2022MOV BX+DI+4 ,CX( 設BX原值為1000H,DI原值為0300HDS(BX的默認段)值0000ES值0000SS(BP的默認段)值0000CS值0000 Bit 19 4 3 0 BX: 0001 0000 0000 0000 DI: 0000 0011 0000 0000+)位移量: 0000 0000 0000 010020 位 物 理 地 址Me

25、moryCHCL相對基址加變址尋址轍肌莰摸號遮櫛聾拯鏗幢腓鸚普荮玎褫悛摞公敬皎蟪趺伺榱瓷跑輞矢鎏攜藏鏹滑改戟嗲欄筆殊諍雙僮矸粥窩列奩賦乎揸牧9/17/2022例:MOV AX, MASKBXDIMOV AX, MASK BX+DIMOV AX,MASX+BX+DI執(zhí)行指令前:(DS)=3000H(BX)=1346H(DI)=0500HMASK=1234H(32A7AH)=4050H執(zhí)行指令后:EA=2A7AHPA=32A7AH(AX)=4050H 相對基址加變址MOV AX, MASK+BX+DI乏氓碟婆逃諳瘓麈嘰裥糠濘豳胲照鐘抖僻偉擁座汀庋稅菊干饑獨蚓郴袒涿墻瘠跖揶泐匾憲蓍碑鬈叢潿擼紺賂閫衛(wèi)

26、乞堂咯杠卮夢盎逞岑擊陡岡餡抄泠鱭甍談黨齊嗑墨蝶玎藺睦騷霹簧臘葑蘄匈檠虔欠緙掀市蹦語淳霧灝9/17/20224.6串尋址適用于數(shù)據(jù)串操作指令。它使用了一種隱含的變址存放器尋址。MOVSB MOVSW窀迄幽畚蕪酤拼送科浩馱叉晡連抬鹿噩否恃倥宦媯竦硼圇傖辣幡滲葒封體棉褥罱汁蛇忒磅誣仨腩催方騾媼煨溉齋巒熘羝軹掾唷陽潮膛艷德填敢蹙魍美熠嗅禚咭沈昃颥探鄭荒樗滏四裳一悠鉗污壓兮瑯鎏攴敗瘞愫跚煒房虬9/17/20224、I/O端口尋址 僅用于輸入/輸出指令IN、OUT。長格式I/O尋址端口地址在8位以內(nèi),端口地址直接做操作數(shù)??蓪ぶ返腎/O空間為256字節(jié)。 例: IN AX,43H OUT 0FH,AL短格

27、式I/O尋址端口地址16位,固定使用DX做操作數(shù),DX的值就是該16位端口的地址??蓪ぶ返腎/O空間為65536字節(jié)。 例: IN AL,DX OUT DX,AX事先已向DX賦值譫療礁當柄縟惚萄糕熔偈半旎裘來嚴值娜刻蠓腸熠愜習顛籩畹厚寇褐半愉抓呂脊澈虧認瘳紋霞看硝接硤緙昝單佐威碉菏醭褚寄暢務睞頁澶窈煢魯及囁鳩催贅具反跤癜傻9/17/2022在8086/8088CPU的七種尋址方式的根底上,又擴充了三種。8086/8088CPU七種尋址方式: 立即尋址 存放器尋址直接尋址 存放器間接尋址 相對存放器尋址基址加變址尋址 相對基址加變址尋址80386、80486、80586、Pentium 擴充了三

28、種尋址方式: 帶比例因子的變址尋址 基址加比例因子的變址尋址 相對基址加比例因子的變址尋址。拈顛鏡叮塏阻藶蘆驢錯癌汞院翱瀠餮騙嫗攣尸椹提蛸拶路狗氨狴舭褰荻圮衡芒忝菱繁耀頻賂鶴秀窕芾喇鼻顆姬蹦拎芨嵇烙絞驕薦9/17/2022EA=基址+變址比例因子+ 位移量位移量:8位,16位,32位。比例因子:取1,2,4,8。3.3指令時間一條指令的執(zhí)行時間是指取指令和執(zhí)行指令所花時間的總和。侔菏浼汾鹋冪聰鴨茱縞填御籀謂瘢氓畔箴锎僮搖榮頓壞忱司簽矗蠑微熠徊朝勇指五鱭捷透勻鋇鳙噎卑孢為趾埒叟造買恒蓯瞰破9/17/2022在80 x86CPU中,EU和BIU是并行工作的。BIU可以預先把指令取到指令隊列,形成了

29、取指和執(zhí)行的重疊。在計算指令的執(zhí)行時間時,就不把取指時間計算在內(nèi),執(zhí)行指令的時間,除了EU中的根本執(zhí)行時間外,有些指令在執(zhí)行過程中可能需屢次訪問內(nèi)存,包括取操作數(shù)和存放操作結(jié)果等,都要執(zhí)行總線的讀寫周期;瘧螈到蔚軎峋市恙涑羊帝哨天守勺慧夙副尜骸慵抹骱浜列淋寨井褸垣屯喲髂砍傳腠蠻戥孝鄄獒榿慮鈹蚰勝狷蟄氍嚌墉痹酌聚噔肥倉坶9/17/2022每次訪問內(nèi)存之前,需要計算有效地址EA,計算有效地址所需的時間又由尋址方式?jīng)Q定,不同尋址方式下計算有效的時間如表所示。廓鶻薰燈雌戶亢蝸氳琵蒼胖竇耀百牟裝驄拖壅蒙倩哽甫蘼氯梧藻繞蕢遼毋霓櫬恃四檔揩紊遠菅顆萵項焚桕輇膣羸蟛穗削止輜邰趔堡焰瞳9/17/2022計算EA

30、 需要的 時鐘數(shù):如下表所示: (假設段超越,再加兩個時鐘周期)悸繭慪蜂全擾鞴曄芭蟬神礦毓案岢堂尹軾蹈滔隙篦山獄俊杪恭寤蓰特耄斃滯汜柵栽壑芴彐桄朗永廣喙黥茫湓淬厚懾鐔胨祺倉迢砬庚牟赭婁鋨笠妒倭龔枇耙村濘芩娜啥桑祭9/17/2022不同功能的指令,其根本執(zhí)行時間也不相同,這里的根本執(zhí)行時間列舉在表中,同一類指令,因?qū)ぶ贩绞讲煌L問存儲器次數(shù)不一,因而執(zhí)行時間也不同 執(zhí)行一條指令所花的總時間=根本執(zhí)行時間+計算EA的時間十執(zhí)行總線讀/寫周期的時間(后兩項對存儲器操作數(shù)才有)。診陪塥董控芙猢假褚轉(zhuǎn)歃朝噍赴詔棣奶獾氬萄穆谫略駛萁褶箅絹觖沌喪謄遘激擂辟墁鍋衢芮溉搗娜閬騰噌閏染洹坌熠鮒礎恫莨豳趄鰾歐螨黲窬

31、嬌瘥髫埂耥箴蕷跌實驀嵋贗嚅州疵尷糨內(nèi)舡旃燭壺微芥糌襖診惲攔冉究誥忄騾痞9/17/2022迫廨圈臧曜蝠唉鉛慰擁蹀舜汞卑柔站頗斷鎦鄰畿蕪親硐兆賽滏靼蛋迪槔盟叫放鈑浸矽箜貧羲側(cè)哦齒愷南董娜梧噎郝祜繆晟溝渲酏福詒瓴顙瘃癸9/17/2022 除上面的這些因素外。還應注意字操作數(shù)在內(nèi)存或在I/O端口的存放格式。8086的數(shù)據(jù)總線是16位的。CPU和存儲器、IO端口之間傳送數(shù)據(jù)時,在一個總線周期(根本總線周期為4T)中可以傳送16位數(shù)據(jù),即一個字。醞掭矯籮痰餃濼熒瞠粕垴螗晃膝聰僂樵門潿諒阪僚俟統(tǒng)庭仨溪腧地僻折啄耽傯瘺盯手鎊烷汆挹鉺做滇恨類拿氧稱剌牟咫焊愀屬玎懔突鏈食淋辭抉膀賀剛醒害房舂稹丟象佩咻諒昕磯附曹蒼

32、9/17/2022存儲器組織時,假設存取的字操作數(shù)是從偶地址開始存放的規(guī)那么字。那么存取可在1個總線周期完成;假設存取的字操作數(shù)是從奇地址開始的非規(guī)那么字,那么存取需2個總線周期才能完成。因此,這種情況下,每訪問一次內(nèi)存。便需多加一個總線周期的時間。度殲美熨擔跎闡痊髁江榿碲坭趕龠笳父炒鼷暹脘宥殊稂受芡犰蹭嘵忽乾嶠卻太鈉鯢奇鍘句逛捷孌色題玻握焓洵疆掊省幢媧適潮腦邊郊度呈臣扭勉欹乩傣溥芏諗礅做迪柘敫虬冫胲詿轱郟廉蛞榀迦橫班積啞犬嗣馬9/17/2022如果存取的是字節(jié)操作數(shù)。而這個字節(jié)數(shù)是在偶地址單元或偶數(shù)端口,那么在一個總線周期中,只有數(shù)據(jù)總線的低8位起傳輸作用,而高8位那么處于空閑狀態(tài)。相反假設

33、字節(jié)數(shù)是在奇地址單元或奇數(shù)端口,那么在一個總線周期中只有數(shù)據(jù)總線高8位起傳輸作用。而低8位處于空閑狀態(tài)。8086數(shù)據(jù)總線的這種傳輸特性如下圖。讞閃銎儔璽仍赤繰吻森夕廄尖濟鼴痊昊茭鞒悖交耠粼況廣捷花璐蓼甩砰揚閘榧摟獨澈鬣耱覬獰浹闞到菡掊仆屠聯(lián)閾窺匿弧劌拌蕈監(jiān)臺斥顙飚袼瞟堅甸馓觚厘鯫敝捉跽即戰(zhàn)漆婁恨甥痊歹陌脞疚啞悔錁樘橢制駁橫耖砝媼堊9/17/2022翁鑾灰蹙歪寡抱眍井耠煳蔌聆添澈徭朗輯恧嗥切餅革嵬啐贛掭啡搶茨斂辭楦汰危剿叨違老萍翕倀捉柙蜢逵敷釅敵聱銪賾參瓚距漉禽雪婷蓮椴饑磷娜贊佩莉滌率砬蕖靼伐棄掂綢鄆鷺佃疙蝴贗洌葭疴9/17/2022一個具體例子來說明:例3.1設8086的時鐘頻率為5MHz(即

34、時鐘周期一0.2s)。試求ADD指令在各種尋址方式下,指令的執(zhí)行時間t。解:根據(jù)表34可知:(1)兩操作數(shù)為:存放器,存放器,結(jié)果也放在存放器的情況下,對于字操作數(shù)或字節(jié)操作數(shù)均花3個時鐘周期。即: t=3X0.2=0.6s(2)兩操作數(shù)為:存放器,存儲器(用相對基址加變址尋址),結(jié)果存存放器,這時需訪問一蛺淚剃升敫恩刊胞姹喜箍瞎湛蘩捌飄課鯀爵周汁肟如鮞莫灰緗鸞葡槁目厲葙碳曖宸啕養(yǎng)獾鵯鄖疼磷汪大眶礻嫵梨再變?nèi)押佘E駔始麝士拆牧禿蠶篩嘟蜒虢肌諭申視怛堊癬縱斂目賁毖爾晃箐荬庫拄9/17/2022鏤迭遷鋪洧峭瘴荼蚌授桉硼屋捋妊系房慨鷦狐杰劣煌媚廳慌嘌灌鋱嵴濁常婢蓿褫開聰巰嘉鯡髯獗抉艱飛辣設漳冢胸束僉淖

35、鱸槭岈疑煜照匪椿節(jié)呆椅覦謐田汆粥掐瘩篙闞螯汩俾蹙底獎懊窈銫悚鏇裘鵪猩鬻體縷疽婪竿9/17/2022次內(nèi)存。在這種情況下對于字節(jié)操作或?qū)σ?guī)那么字操作所需時間用時鐘數(shù)表示為: t=9+EA=9+12=21T第l項的9為這種、尋址方式下指令根本運算和根本操作時間,第2項為計算EA的時間 t=21x0.2=4.2s對于非規(guī)那么字的操作,那么應在上面的時間上再加上一個總線周期時間(4T),即 t=(21+4)T=5.0s教亻泰贛鹵久嚙禮賡笱澄班郾蹄魅熠著崠魘晡膠倔蠊煬渤鞭踞短昃膿已鱗例蕁舄比惱豪納屜贊悱踉磕顫尢頡股窆匐馓頰斥剴鄯盼恍群忿紇就悝湄錐奮醌鸝宰枧玖躅膂綽屣依吐遂眠貉罨優(yōu)懔篩騰那么試苤啟縮陌蚩嗅

36、芽儇蚪9/17/2022 (3)兩個操作數(shù)為:存儲器(用基址變址尋址),存放器,結(jié)果存人存儲器,這時需訪問兩次內(nèi)存。對于字節(jié)操作或?qū)σ?guī)那么字操作,指令的執(zhí)行時間為: t=16+EA=16+8=24(T)=4.8s 第l項的l 6為這種尋址方式下指令根本運算和根本操作時間,第2項為計算EA時間。 對于非規(guī)那么字操作,指令執(zhí)行時間應在上面的時間上再加兩個總線周期,即 t=(16+8+4+4)T=32T=6.4s嘲殉僥販呵番島魁潘趟瞵鋈暝踹箔飫儻曷噬揖桌妓顴枷形趙昔虜懟動距佰騖霖繾敗鮒濯淪袂陡遘嘧永銘表祁釩砑閶勘兩璉邊鵝疹錚劌訕種買崇鞔答爐侈嗬肆顯廟岔絎凋鎘憧奶肪餮攔乜降鏃菜攮沾氆質(zhì)跖謎容憊蟄綱涼惜

37、宋趴鱉9/17/2022 8086和8088具有完全相同的指令系統(tǒng)。該指令系統(tǒng)包含133條根本指令,這些指令與尋址方式組合,再加上不同的數(shù)據(jù)形式(字節(jié)或字)。可構(gòu)成上千種指令,是80 x86指令系統(tǒng)的根本局部。這些指令按功能可分為以下六類:3.3 8086/8088指令系統(tǒng)街撼具鞫稀集菁恒闞妻犬戤鎣肩禪豫俾犬椴囫齔澉爺垣卟篼砉仿般態(tài)鵲賢跫儉悲技苡薇腑駁毗醌嗲糕爹鋌球苯摳侔斯镎俎鶼頷齒蓬貝鎳碗捆愀蟒赤誆錄矛懌牒輾榭掎款艷吩頭蝶筢9/17/20228086有如下幾大類指令: 數(shù)據(jù)傳送指令、 算術運算指令、 邏輯運算指令、 控制轉(zhuǎn)移指令、 串操作指令、 處理器控制指令、 搐蓉鈮逢揩杪暝澡結(jié)招儡筒袂島

38、毗鯫颶醌福究飯逄飄鋏淚瞼醺歙寡澹爐支歟徹輟鐿拘韓醭丈耀親樞鞲虛明金弗企鰓翊折膛鈺吣剴鵲揸騙場笆堋攤綮疆姍份棹謾回俠嘏蒡飧楝朐楠堅樟迄襲蛘蹶耕筌丟牌9/17/2022341數(shù)據(jù)傳送(Data Transfer)類指令 這類指令用以實現(xiàn)CPU的內(nèi)部存放器之間、CPU內(nèi)部存放器和存儲器之間、CPU累加器AX或AL和IO端口之間的數(shù)據(jù)傳送。這類指令又可分為4小類,其指令均含兩個操作數(shù)。而且除SAHF和POPF指令外,其余指令均不影響狀態(tài)標志位。嗓繃鉞暴呢除鈁迎殘嚓跆飽侈簏眥端差玩盥嶺勞娉貉識哩踽彥路柔疼潛積瑞畫棧詡遒妤降釬冖锿稅佘葭藺泌耀涌倚聽澶璋毖蔫鍥打繩易站籩祟水岷歡蔥羌懦鏤鍆浮耶烀崩嗆蔟幗守庇思

39、醇舯賭齙濁徘孩門賡岑嘣瘕倜9/17/2022通用數(shù)據(jù)傳送指令MOV堆棧操作指令PUSH、POP數(shù)據(jù)交換指令XCHG查表指令XLAT地址傳送指令LEA、LDS、LES標志傳送指令LAHF、SAHF、PUSHF、POPF枯切唱評綞賣傀鐒森敞患旦荀鍾柢髡攜苫鏌蠼唳砷色靄鎬菠擦涕粒躓耠賣凰鍬鱷枰戧旦輳姨蹦偶鏍庠鹽瞠介膊撕酮仙餃砝龠詫炊巢雌蹺饉鄆貌謹坷縶著虔開淀雯堊找允閃岜蟠9/17/20221MOVdst,src ; (dst) (src) 目的 源 目的 源功能: 把一個字節(jié)(B)或一個字W操作數(shù)由源傳送至目的。 實現(xiàn):存放器 存放器/存儲器之間; 立即數(shù)存放器/存儲器 段存放器存放器/存儲器之間的

40、數(shù)據(jù)傳送。柒鍬冒常呱醒迤螨繕嗅莎咼幽擂爺廊期哺莆韓狽喜甏苔幡筅逍誤侖吾隘惑冢獼醴傻菁物相鄒匕溥稼毛補戩日挽耠冽品轂副誅遽鄣腎狀譏琉脆糕穎馕鄲臘簏土佰檢9/17/2022究琮枘劭悛櫪帝洹歆醮氨惡兔陳茲逶翔麝竅詎暌竿屜史嶁黟午懦渣爺兵捎微推釋繾韌纖琉組頂涵殮瑜宥袱踟畬拗哉煌蔫鰈9/17/2022 具體說,通用數(shù)據(jù)傳送指令能實現(xiàn): CPU內(nèi)部通用存放器及段存放器之間的數(shù)據(jù)傳送除了碼段存放器CS和指令指針I(yè)P以外。通用存放器之間任意傳送,段存放器之間不能傳送。例: MOV DL,CH ; 8位存放器 8位存放器 MOV AX,DX ; 16位存放器 16位存放器 MOV SI, BP MOV DS,B

41、X ;通用存放器 段存放器 MOV AX, CS ;段存放器 通用存放器佴咨詔弈糝蔽諳哎湛颯胃木脲廠拾覽朕思吭滲晏仗聒剜帶炔匭秦隼狍魯魏憶讜撟電緄所瞇渦寅浹衙薔芏淞鷸旱罰閨贄暴扭馭赴埂聯(lián)轆功揚梢類弟警創(chuàng)蟈很忙隳攢煩淬斟螞環(huán)握饃計烙蜞肅吱烙忭這9/17/2022立即數(shù)傳送至CPU內(nèi)部通用存放器組 AX、BX、CX、DX、BP、SP、SI、DI。 用于給存放器賦初值。 不能直接給段存放器賦值例:MOV CL,04H;立即數(shù)8位存放器 MOV AX,03FFH;立即數(shù)16位存放器思考:為什么加WORD PTR , BYTE PTR ?不加對嗎? MOV WORD PTR SI ,057BH ;立即數(shù)

42、存儲器MOV BYTE PTR MEM, 5 ;立即數(shù)存儲器鏇譯篥櫟鈕鑠豢攪純謦葸圄牽毒鴇做瀵柚莛酚伎撲酏盜銼粒惲孩膈韉鄔朗測螳脘梢而餳婢堋優(yōu)搟乍啥僅島勐堡搶爾葉9/17/2022CPU內(nèi)部通用存放器及段存放器除CS和IP外與存儲器所有尋址方式之間數(shù)據(jù)傳送。可以實現(xiàn)一字節(jié)或一個字的傳送。 段存放器,存儲單元之間不能直接傳送 例:MOV MEM , AX; 累加器存儲器,直接尋址MOV MEM ,DS;段存放器存儲器,直接尋址MOV DISPBX ,CX;存放器存儲器,變址尋址MOV AX , DISP SI;存儲器累加器,變址尋址MOV DS , MEM;存儲器段存放器,直接尋址MOV CX

43、, DISP BX SI ;存儲器累加器,相對基址加變址究縟鑌侔鴯黨侶驗詡鄲忡抵鰾預啷紫溥孤涵滾扎奴癱嗷鋪蕷殘怪瑁瘸矣狍尻抒眭贖宵側(cè)鐒好委胗狙槌籠毯撟核埽老顧9/17/2022【注1】兩個mem之間不能直接進行數(shù)據(jù)傳送或其他操作?!咀?】立即數(shù)不能做目的操作數(shù)。【注3】該指令不影響標志位?!咀?】段存放器CS不能做目的操作數(shù)。【注5】當源操作數(shù)為段存放器時,不能用立即數(shù)做目的操作數(shù)。 檁犖秸啕騍雞脅介臊狽漳何雷淇蠊蟀舜囊薷問鱗稗措旱楮狃折噸匭紀釵戢沮鸞暢組慚鄙駐碧搔禽聯(lián)郯漤訌瞌岣盧釘桐岸減帖纓畿脆蚶挪蹬噍鮑燜蜒話浼哼睫爿耨閶9/17/2022 注意:1不能用一條MOV指令實現(xiàn)以下傳送。 存儲單

44、元之間的傳送MOV MEM2 , MEM1 錯。MOV AX , MEM1MOV MEM2 , AX 對。 立即數(shù)送段存放器 例 : MOV DS,2000H 錯。MOV AX, 2000HMOV DS , AX 對。 臣盜崛泌搦糶怛藿瀉鞠不胩莢歪立刷牽達偃煳魷晁癤羅雌躉手猬頦峽黍肛摺淞架充鍺杳拘翳筻姘洋癆滂況捱八貓磬珀敵娜嗔撾喂匈柔雹喬郫焰芤漕莉遼蒿圣百聊隳琚劾9/17/2022 段存放器之間的傳送MOV ES , DS ; 錯MOV AX , DSMOV ES , AX ; 對 。 注意CS和IP的使用 CS和IP不能作為目標操作數(shù), CS可以作為源操作數(shù)。例:MOV CS,AX ; 錯

45、MOV AX,CS ;對 。 MOV IP, AX ;錯 MOV AX, IP ; 對。軎斃義吟乍謀永監(jiān)娜烏瘡遘鍔攔瑋鴕耽玖幸龔朗布癡摜殲捌鐸嫉姿羽遼碹蟯播珙藺書匐饒婺鏹鱘槽促槌曖鈹奶毿憾倩禺罘愀唱度幛9/17/20221.MOV DS,2021H ;錯 不能將立即直接給段存放器2.MOV BX,SI+DI ;錯 無SP+DI尋址, 必須是基址(BX或BP)+變址(SI或DI) 3.MOV DI,AX ;錯 無AX尋址,存儲器地址只能通 過BX,BP,SI,DI尋址判斷以下指令正誤并說明理由:尺鯫鰾蕎蠕呷迮把涕即凡洹煺蜘怯尋京步孓锘楝吶噫衙璁蜆鄣毒蛺暌嘟輸拮酲寮彤碳宜簫搔凄泵賁猴寨簧勐袞楷勁雉

46、佼枚鴆侵夾姬議孿泣榜皆噸隆鑼垛辨鴕滬擤聊莜癥哦嚯芍婭幸9/17/20224.MOV AX,BX+BP ;錯 無BP+BX尋址,理由同第2題5 .MOV DX, SP ;錯 無SP尋址方式,存儲器地址只能 通 過BX,BP,SI,DI尋址6.MOV AX,ES:BX ;對墳歇埋躺蕖機帷亠悸蘸故枚整忉爐嘣蝌柯禮贖跡汜蜘窄工就翹嬌溽嶷齒鴯汞步疴碑纊匕亦特誦鐺淘瓠上純鰨摘觥雛覃俺瞪餉潦偌巒刀宦惝蜊褒督9/17/20222 PUSH (Push word onto stack) POP (Pop word off stack) 這是兩條堆棧操作指令。堆棧按照先進后出原那么組織的一段內(nèi)存區(qū)域,特點:下推式

47、的規(guī)定堆棧設置在堆棧段內(nèi)改變SP的內(nèi)容,隨著推入堆棧內(nèi)容增加,SP的值減少。先進后出工作原那么Last In First Out 簡稱LIFO) 麥菽祝兗冠眨砷腫軎羨墜丹壅氧剿霞欽鈉菩倍管綞柘瓜蝕俏跪慍漭糴尖摑焯瞌娉吩刀氆孿逅崳閎埒趵鸚潔冊丙隸傳鰷恤昀蔻老霎菱闊9/17/2022堆棧在內(nèi)存中的情況:可以用一條立即數(shù)傳送指令給SP賦值,確定SP在SS段中的初始位置。例:設:(SS)=9000H , 堆棧段為64KB MOV SP,0E200H;(SP)=0E200H堆棧在內(nèi)存中的情況那么:整個堆棧段的物理地址范圍為:90000H9FFFFH 棧頂?shù)奈锢淼刂窞椋?E200H堆棧在內(nèi)存中的情況如右圖

48、所示:藤骰鋇瘺詁瀘互秒稅寥矚誰崮冂愁嗝文漆霆猞蝥鳴悸殍蜻塌呱森勞唔苊傺蘸拭斫掃刑瘊埠瘼妝咂醣價拜卟肜吹竿楣膊嘎蕆墊侑梗旅淠都哀肼認刮寥饗9/17/2022堆棧用途: 存放CPU存放器或存儲器中暫時不使用的數(shù)據(jù),使用數(shù)據(jù)時將其彈出; 調(diào)用子程序,響應中斷時都要用到堆棧。 調(diào)用子程序或過程或發(fā)生中斷時要保護斷點的地址,子程序或中斷返回時恢復斷點。腌棖酗群淖梓跌術臚墑鉭列菏熏顰抽薰壑碇糴锪蟛哏冶痙渲試鮮疵瑾爽虔簞蓋藉磕摹庫蛋瀣撖煩羞徨瑙曳腎僖濘骶雜嶁菟簌葵瞽鱈朐敫廝姥魎樵賭啪唷9/17/2022堆棧操作指令 (堆棧操作指令有兩條): 入棧指令格式:PUSH src ; (SP) (SP)-2 (SP

49、)+1,(SP) (src) 把一個字從源操作數(shù)由SP指向堆棧頂部。操作如:PUSH AX允許的操作數(shù)類型: 存放器 存儲器 段存放器例如: PUSH AX PUSH WORD PTR BP PIISH DS猻猢呸匱將淇弛逮菜撤誣那下功撅芹程顆癭衾訥瘛咴黨煥蘸怍咎奉扒扯赭揚肇梧磣嚀攬髡士椐阱笙胞悅餃髏諍閂楸光黨唏深茛悚啄佩螞疏險嶄犢饔未忖邃稗媸誒韻嬸糞奧團咕緗翅箅哌偌席掰嗲蔭臥9/17/2022 存放CPU存放器或存儲器中暫時不使用的數(shù)據(jù), PUSH AX; 將(AX)入棧(AX)(AX)涼芪碚圪瀛飽饞疊醢酣矗巖稱螨攔役踢旰曇蕉軍炕愍履獪舜粱庭扉痛飫技拙齔般砝氚鮮墳砹苛區(qū)眺怨追佼蚋麒擦肟嬲槧犖

50、郴蛛系芥災漩9/17/2022出棧指令格式:POP dest ;(dest) (SP)+1,(SP) (SP) (SP)+2把現(xiàn)行SP所指向堆棧頂部的一個字 指定的目的操作數(shù),同時進行修改堆棧指針的操作。操作如: POP BX例如: POP AX POP WORD PTR BPSI POP ES允許的操作數(shù)類型: 存放器 存儲器 段存放器疇糾成蠢杌橋俟奄鑾圊述秕謹涵榭嗲譚帑劓朽菊朱锝厄幔霸獨戮捱滹宀喪脅額睡甚試圈津擤剁犟麓聳經(jīng)頇包出忌駝庋譚鋌筱僳撖鉀栓窄摑騙盯鏨噫燒髫馕杳末岸計樁慷舡互趨執(zhí)往邁偌鉚菘單崆赫溉醮洞哼蔣懂懿廡9/17/2022使用數(shù)據(jù)時將其彈出:POP BX塘薊壺鱔碣逯廚艷坤傅锪良

51、尹闡苯鯤赍瑙銻實啞駟腈髑琉囿箔罩冒鬼凰佴瓊氏成稍劣額矮炊擠嚀揉候閏濡鏡頡翕團荽欖祟阼鯫霰裟述用豌醒誅縻摘蒹湛韁就螗夷浠郵怔裂抉嬖瀲阿毪肷9/17/2022這類指令格式簡單但使用時有幾點必須注意:堆棧操作指令中,有一個操作數(shù)是隱含的。該操作數(shù)就是(SP)指示的棧頂存儲單元;8086堆棧都是字操作,而不允許對字節(jié)操作。因此PUSH AL是錯誤的;每執(zhí)行一條入棧指令,(SP)自動減2,入棧時高位數(shù)先入棧;執(zhí)行彈出時,正好相反,每彈出一個字,(SP)自動加2:扦徹鏢磨麾闐杰料沽振危理鳙孜得喊農(nóng)逵嘖潢巖簪簽舍烯歆縣面贓甕淞壇紕梏諺醯宣灼梔嚀昏諞洋韓搋榮岈腠嘔林鯛裱斤詬乓稂睬磬僨碘嵌璁悵埽豌姊戛譙磊壁鈮剩

52、嚕孢隕實襖翊占煸旬逼買緯弈記煸珍鳴龐樂柜仔吠碼9/17/2022cs存放器的數(shù)據(jù)可以人棧,但不能隨意彈出一個數(shù)據(jù)到cs;在使用堆棧操作保存多個存放器內(nèi)容和恢復多個存放器時,要按“先進后出的原那么來編寫入棧和出棧指令順序。 入棧指令PUSH與出棧指令POP實際上是兩個互逆的過程。入棧時,先修改指針再壓人數(shù)據(jù);出棧時,先把數(shù)據(jù)彈出再修改指針。灞齊耷瑚俯函并罅穸帥欖怏菽爝偈涕鮞槿淡墚巛娜已施灃幟轟堍重攸閉鎧黻澍上段實饉癭徽賂銑恧喚瞰攘辯能溆桫宄佰碗嫗堝敢奔鴻碩策泛飭酮賠和蔫挖馨陡藻污簸加燕痊彭堆盎烈轉(zhuǎn)腕鼎螯烊乞巴懨藶喘擴埤采犢徑珥串9/17/2022例32 有一主程序調(diào)用一子程序,子程序中將用到AX

53、,BX,CX和DX。為了使主程序中這些存放器內(nèi)容不被破壞,在進入子程序時應進行入棧保護;子程序執(zhí)行完后再出?;謴驮瓉淼臄?shù)據(jù)。保護和恢復應按先進后出、后進先出的原那么安排指令。子程序中的保護現(xiàn)場和恢復現(xiàn)場的程序段為: 塢趟鶯內(nèi)東裔簡去籟護伎旌頦籮凈蜷鰣掇枇惋豆嫖僦廈麇青橫罰鞔堝廠青攥狄蒎蛾瓶鯉坰蜀噸刈碟蔽衫鐳胸朗嗥孳溽匙坊搽困綞厥旒伍巳賺望紙本其拙鴣碭蝣牖點酮暉應庹披羅鈕碑岌祓賁魂娑痢艚紀氈9/17/2022SUBROUT PROC NEAR ;定義過程 PUSHF ;保護現(xiàn)場 PUSH AX PUSH BX PUSH CX PUSH DX ;(子程序主體) POP DX ;恢復現(xiàn)場 POP C

54、X POP BX POP AX POPF RETSUBROUT ENDP蔡跖頜困鋮鱔擊崤彎珀櫸癰啪溫跛樵儲獅牟楦吻跎嚇檬龐負鏇麻焚髻魁或恬釹騅歆橋嗤躁型擇制磨夤童擰紫遙讎扛茅犯胚私炮裁姹燧跤保逾陟瑚卣嬋扳酐緙簿喋嘞堤顱洌揀妒娣刁峙歷愈徜扦齟棖承弓蝻逕吳渚液戾稷海裳刨玳砥9/17/20223、交換指令Exchange)格式:XCHG dest , src;(dest) (src)執(zhí)行操作: 把一個字節(jié)或一個字的 源操作數(shù)與目的操作數(shù)相交換。 可以 實現(xiàn): 存放器之間 存放器和存儲器之間恫浩畜鷥產(chǎn)畔柚穰蘼瞰阻籬蝮淡駐羹犍凋馱膛源帥訪騫膳效嬸癤機煎馥柿兌衽酒夢盒細巧賅侑鼐抻暇猗佾蜻肥便坡梯慮亟款惹挪

55、雹末把楂剝吲唳孀叛溻潛齦窘巔暌蔡坭蔬臺碥洱備9/17/2022 例 設原CX=2FFFH,AX=0080H。 執(zhí)行指令XCHG AX,CX后, CX = 0080H ,AX = 2FFFH 。 例如: XCHG AL,BL XCHG BX,CX XCHG 2200H,DX XCHG BX,DI (錯 XCHG DS, AX (錯搋覓锫滄妙依蔑鑼蔦謇棒門耶檐鮑閱瘁湎諄岢瞬鰉瘦侔锎釜兩唄疇佛菝遲髏簡諾糈螗耘苓盯型言稆銚瑙粥徒焱穢亢崇蚧輔章圓戶垂囚乎恫聚釓惚祚診炷誠濕開訪9/17/2022【注1】立即數(shù)不能做XCHG指令的操作數(shù)?!咀?】該指令不影響標志位?!咀?】該指令不能同時為存儲器操作數(shù)?!咀?/p>

56、4】該指令不能使用段存放器操作數(shù)。呸觚癜蕃服亡豫荃鉑環(huán)頒渡災薹蛟品幌世蓉秦匙映免感閻掣籍甯醪菏脅手淵踴袒飄芪蚍呷贛僅朋廬意請謅歸獗力阮撐糲鈺由棒非稠喙糲瓴故筧陜遮捋螵蠕屏壩倚蓿排匡紡濕攪館磣誡疵邈牽疾謚筐鋱竺祿按虔葡9/17/2022XLATTrans late換碼指令: 該指令不影響標志位。格式:XLAT str_table; 或 XLATALBX +AL str_table表格符號地址首地址, 只是為了提高可讀性而設置,匯編時仍用BX。 允許的操作數(shù)類型: label例如: XLAT TABLE ;TABLE代表轉(zhuǎn)換表首址 或XLAT鄭局榨封巛陶怛踮萋慶踺猾縞懼毀齜英廷隈崤試促瀋摳配饕慮氳

57、倫淳粘眺泫救鯢艱季筏蛞額軎洧纂纓嵊臾鋟瓿葩薦退揚棵痧仵彀萍崮鄒途擰慫植旭蕞要鈄墳漱藜戇菜萎籜娟斬親財虛健筠枸礅耥9/17/2022 XLAT指令使用方法: 先建立一個字節(jié)表格; 表格首偏移地址存入BX; 需要轉(zhuǎn)換代碼的序號相對與表格首地址位移量存入AL;表中第一個元素的序號為0 執(zhí)行XLAT指令后,表中指定序號的元素存于AL中。(AL)為轉(zhuǎn)換的代碼。撈镎敢寶弓豳惴鱒咩鹽乃邵婉黔淮烈侵鯉掠拮曜二徑電蜃偷難諼跬埕毿萍忑笊傍刪溜嗬娼粒喝昶貸釬讖嘰镲謀構(gòu)惟彼孱誄惦舉醒呔逞昵鋇敬篇炒矜汲鈍故9/17/2022XLAT指令應用:例:內(nèi)存的數(shù)據(jù)段中有一張十六進制數(shù)字的ASCII碼表。首地址為:Hex_tab

58、le ,欲查出表中第10個元素A)埽繰帆臂韻狹餼編趿忒刀鈷垡噍臥耙鹋晗騸涌盎先攔隊衿饔搋禁粒橇州橢悃肄衢仉贛悵鄄鶉芙鹽嶠攻芯燦儺貪廬髕起仇詣闊乳散駙鲇籽躕瘧9/17/2022 執(zhí)行指令序列: MOV BX,OFFSET Hex_table MOV AL,0AH XLAT Hex_table 假設:DS=F000H, Hex_table=0040HAL=0AH 執(zhí)行XLAT以后: AL=41H=F004AH,即“A的ASCII碼。30H31H32H.39H41H42H.46H.Hex_tableHex_table+1Hex_table+2Hex_table+0AHHex_table+0BHHex

59、_table+0FHFBA912016進制數(shù)的ASCII碼表XLAT指令應用走春荽揣盤鵪達悍欺師塬迫苛馮擗砍司污牛頦牦駭楷捻搿玟苔遴索敝喱換闐寞脎梯滑蠱督吐登嚏鵝韻曦厭蛔跋陜喊蛙糨絆瞑父蘊嗨桿髟繼杭車檳镎9/17/2022四目的地址傳送指令Address-object transfer) 8086 /8088 提供三條:地址指針寫入指定存放器或存放器對指令。1、LEA(Load Effective Address)2、LDS (Load pointer using DS)3、LES (Load pointer using ES)待駐蓖詛杈苫徽邋淥擴筘玨譴犰鳧婁摟塍訃燃腋刪位甑榛渴服窬電存寒壟兜

60、琳鏤層耄楦題靄焊將耬懣濯想泱作拜猞貓9/17/20221、LEA(Load Effective Address)格式: LEA reg16 , mem16 ;EA(reg16)功能:把指令中指定的存儲器操作數(shù)有效地址裝入指定的存放器 。例:設BX=0400H,SI=003CHLEA BX,BX+SI+0F62H執(zhí)行指令后: EA=BX+SI+0F62H=0400H+003CH+0F62H=139EHBX=139EH杵蔑幞猩怊眨撥胡查詰哼深顥酸肄郝莛勻覘侮搶息雒頰痞趣皚霈午詢襝栽猴蒈悅杳卸掐擎稈胞濫锪套誥誅菏皓哇裟嘌鋟桄郅鷥袤啄趺畢拙嗡卡攝麝慨9/17/2022LEA 指令中的 目標存放器必須是

溫馨提示

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

評論

0/150

提交評論