第5講 第3章 指令系統(tǒng)_第1頁(yè)
第5講 第3章 指令系統(tǒng)_第2頁(yè)
第5講 第3章 指令系統(tǒng)_第3頁(yè)
第5講 第3章 指令系統(tǒng)_第4頁(yè)
第5講 第3章 指令系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩119頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第3章 指令系統(tǒng) 15: 5: 若用若用4K4K1 1位的位的RAMRAM芯片組成芯片組成16K16K8 8位的存位的存儲(chǔ)器,需要多少芯片??jī)?chǔ)器,需要多少芯片?A19A0A19A0地址線中哪些地址線中哪些參與片內(nèi)尋址?哪些作為芯片組的片選信號(hào)?參與片內(nèi)尋址?哪些作為芯片組的片選信號(hào)?2022-4-282第3章 指令系統(tǒng) 3n學(xué)習(xí)匯編語言并不難難得是學(xué)會(huì)怎么用n不要試圖掌握每一條指令熟悉常用的就可以了n不要說:我看不懂英文資料誰都是不懂到懂n不要擔(dān)心:我編程能力差,我不會(huì)不下水永遠(yuǎn)學(xué)不會(huì)游泳n不要只學(xué)不問,也不要只問不學(xué)學(xué)問學(xué)問,邊學(xué)邊問n學(xué)會(huì)利用網(wǎng)絡(luò)是書本知識(shí)極好的補(bǔ)充n盡量擺脫C語言的編程習(xí)

2、慣可以借鑒,不要照搬n多動(dòng)手,多看高手寫的程序,慢慢體會(huì),可以從中學(xué)到很有價(jià)值的東西編程的思想n大膽去試,只有試過才知道可不可以語言是用來使用的,不是用來學(xué)習(xí)的葵花寶典葵花寶典第3章 指令系統(tǒng) 4主要內(nèi)容主要內(nèi)容學(xué)習(xí)目標(biāo)學(xué)習(xí)目標(biāo)重點(diǎn)難點(diǎn)重點(diǎn)難點(diǎn)知識(shí)點(diǎn)知識(shí)點(diǎn)第3章 指令系統(tǒng) 5主要內(nèi)容主要內(nèi)容2. 2. 尋址方式;尋址方式;3.8086/80883.8086/8088指令系統(tǒng)指令系統(tǒng)1 1計(jì)算機(jī)指令格式;計(jì)算機(jī)指令格式;第3章 指令系統(tǒng) 61 1了解指令的機(jī)器語言格式;了解指令的機(jī)器語言格式;2 2熟練掌握指令的尋址方式熟練掌握指令的尋址方式; 3 3掌握掌握8086/80888086/8088

3、的指令系統(tǒng);的指令系統(tǒng);4. 4. 熟練掌握常用指令;熟練掌握常用指令;學(xué)習(xí)目標(biāo)學(xué)習(xí)目標(biāo)第3章 指令系統(tǒng) 7n8086/8088指令碼格式n8086/8088操作數(shù)尋址方式n程序轉(zhuǎn)移地址的尋址方式n8086指令系統(tǒng)n數(shù)據(jù)傳送指令n算術(shù)運(yùn)算指令n邏輯運(yùn)算和移位指令n串處理指令n控制轉(zhuǎn)移指令n處理器控制指令知識(shí)點(diǎn)知識(shí)點(diǎn)第3章 指令系統(tǒng) 81 1指令的尋址方式;指令的尋址方式;2 2指令系統(tǒng);指令系統(tǒng); 重點(diǎn)重點(diǎn)難點(diǎn)難點(diǎn)指令的尋址方式;指令的尋址方式;第3章 指令系統(tǒng) 9n本章的關(guān)鍵是熟悉本章的關(guān)鍵是熟悉80868086的寄存器組的寄存器組n本章的重點(diǎn)是理解本章的重點(diǎn)是理解80868086常用指令的

4、功能常用指令的功能n本章的難點(diǎn)是本章的難點(diǎn)是80868086的各種尋址方式的各種尋址方式為什么要以為什么要以8086CPU8086CPU為目標(biāo)學(xué)習(xí)呢?為目標(biāo)學(xué)習(xí)呢?n每一種匯編語言都是不一樣的(因?yàn)槊恳环N匯編語言都是不一樣的(因?yàn)镃PUCPU的結(jié)的結(jié)構(gòu),指令不一樣),只能以一種常用的,典構(gòu),指令不一樣),只能以一種常用的,典型的,簡(jiǎn)潔的微處理器的匯編語言為學(xué)習(xí)對(duì)型的,簡(jiǎn)潔的微處理器的匯編語言為學(xué)習(xí)對(duì)象,從而達(dá)到學(xué)習(xí)匯編語言兩個(gè)根本目的:象,從而達(dá)到學(xué)習(xí)匯編語言兩個(gè)根本目的:n1 1:充分獲得底層編程的體驗(yàn):充分獲得底層編程的體驗(yàn)n2 2:深刻理解機(jī)器運(yùn)行的機(jī)理:深刻理解機(jī)器運(yùn)行的機(jī)理專業(yè)的需求

5、專業(yè)的需求第3章 指令系統(tǒng) 10n完成計(jì)算768+12288-1280的機(jī)器碼如下n101100000000000000000011n000001010000000000110000n001011010000000000000101n假如將程序錯(cuò)寫成以下這樣,請(qǐng)找處錯(cuò)誤n101100000000000000000011n000001010000000000110000n000101101000000000000101第3章 指令系統(tǒng) 11n00011110n101110000000000000000000n01010000n101110001100011000001111n1000111011

6、011000n1011010000000000n1011000000000000n1011011100000111n101110010000000000000000n1011011000011000n1011001001000111n1100110100010000n1011010000000010n1011011100000000n.n.n.n.n1000100111011000-mov ax,bxn1000100111011000-89d8h第3章 指令系統(tǒng) 12n匯編語言是一種面向機(jī)器的低級(jí)程序設(shè)計(jì)語言匯編語言是一種面向機(jī)器的低級(jí)程序設(shè)計(jì)語言n匯編語言以助記符形式表示每一條計(jì)算機(jī)指令匯編

7、語言以助記符形式表示每一條計(jì)算機(jī)指令q助記符(助記符(mnemonic)是便于人們記憶、并能描述是便于人們記憶、并能描述指令功能和指令操作數(shù)的符號(hào)指令功能和指令操作數(shù)的符號(hào)q助記符一般就是表明指令功能的英語單詞或其縮寫助記符一般就是表明指令功能的英語單詞或其縮寫n用助記符表示的指令就是匯編語言中的匯編格式指令用助記符表示的指令就是匯編語言中的匯編格式指令n匯編格式指令以及使用它們編寫程序的規(guī)則就形成匯匯編格式指令以及使用它們編寫程序的規(guī)則就形成匯編語言(編語言(Assembly Language)n用匯編語言書寫的程序就是匯編語言程序,或稱匯編用匯編語言書寫的程序就是匯編語言程序,或稱匯編語言

8、源程序語言源程序n匯編程序?qū)R編語言程序匯編程序?qū)R編語言程序“匯編匯編”成機(jī)器代碼目標(biāo)模成機(jī)器代碼目標(biāo)模塊塊第3章 指令系統(tǒng) 13n匯編語言的主要特點(diǎn):匯編語言的主要特點(diǎn):q匯編語言程序與處理器指令系統(tǒng)密切相關(guān)匯編語言程序與處理器指令系統(tǒng)密切相關(guān)q程序員可直接、有效地控制系統(tǒng)硬件程序員可直接、有效地控制系統(tǒng)硬件q形成的可執(zhí)行文件運(yùn)行速度快、占用主存容量少形成的可執(zhí)行文件運(yùn)行速度快、占用主存容量少 匯編語言程序與匯編程序是兩個(gè)概念匯編語言程序與匯編程序是兩個(gè)概念這是我們寫的程序這是我們寫的程序這是廠家的工具這是廠家的工具第3章 指令系統(tǒng) 14n匯編語言與處理器密切相關(guān)匯編語言與處理器密切相關(guān)

9、匯編語言程序的通用性、可移植性較差匯編語言程序的通用性、可移植性較差n高級(jí)語言與具體計(jì)算機(jī)無關(guān)高級(jí)語言與具體計(jì)算機(jī)無關(guān) 高級(jí)語言程序可以在多種計(jì)算機(jī)上編譯后執(zhí)行高級(jí)語言程序可以在多種計(jì)算機(jī)上編譯后執(zhí)行n匯編語言功能有限、涉及硬件細(xì)節(jié)匯編語言功能有限、涉及硬件細(xì)節(jié) 編寫程序比較繁瑣,調(diào)試起來也比較困難編寫程序比較繁瑣,調(diào)試起來也比較困難n高級(jí)語言提供了強(qiáng)大的功能,不必關(guān)心瑣碎問高級(jí)語言提供了強(qiáng)大的功能,不必關(guān)心瑣碎問題題 類似自然語言的語法,易于掌握和應(yīng)用類似自然語言的語法,易于掌握和應(yīng)用第3章 指令系統(tǒng) 15n匯編語言本質(zhì)上就是機(jī)器語言匯編語言本質(zhì)上就是機(jī)器語言 可以直接、有效地控制計(jì)算機(jī)硬件

10、可以直接、有效地控制計(jì)算機(jī)硬件 易于產(chǎn)生速度快、容量小的高效率目標(biāo)程序易于產(chǎn)生速度快、容量小的高效率目標(biāo)程序n高級(jí)語言不針對(duì)具體計(jì)算機(jī)系統(tǒng)高級(jí)語言不針對(duì)具體計(jì)算機(jī)系統(tǒng) 不易直接控制計(jì)算機(jī)的各種操作不易直接控制計(jì)算機(jī)的各種操作 目標(biāo)程序比較龐大、運(yùn)行速度較慢目標(biāo)程序比較龐大、運(yùn)行速度較慢n小結(jié):匯編語言的優(yōu)點(diǎn):小結(jié):匯編語言的優(yōu)點(diǎn):q直接控制計(jì)算機(jī)硬件部件直接控制計(jì)算機(jī)硬件部件q可以編寫在可以編寫在“時(shí)間時(shí)間”和和“空間空間”兩方面最有效的程序兩方面最有效的程序n小結(jié):匯編語言的缺點(diǎn):小結(jié):匯編語言的缺點(diǎn):q與處理器密切有關(guān)與處理器密切有關(guān)q需要熟悉計(jì)算機(jī)硬件系統(tǒng)、考慮許多細(xì)節(jié)需要熟悉計(jì)算機(jī)硬件

11、系統(tǒng)、考慮許多細(xì)節(jié)q編寫繁瑣,調(diào)試、維護(hù)、交流和移植困難編寫繁瑣,調(diào)試、維護(hù)、交流和移植困難第3章 指令系統(tǒng) 16n匯編語言的優(yōu)點(diǎn)使得它在程序設(shè)計(jì)中占有重要的位置,匯編語言的優(yōu)點(diǎn)使得它在程序設(shè)計(jì)中占有重要的位置,是不可被取代的是不可被取代的n匯編語言的缺點(diǎn)使得人們主要采用高級(jí)語言進(jìn)行程序匯編語言的缺點(diǎn)使得人們主要采用高級(jí)語言進(jìn)行程序開發(fā)工作開發(fā)工作n有時(shí)需要采用高級(jí)語言和匯編語言混合編程的方法,有時(shí)需要采用高級(jí)語言和匯編語言混合編程的方法,互相取長(zhǎng)補(bǔ)短,更好地解決實(shí)際問題互相取長(zhǎng)補(bǔ)短,更好地解決實(shí)際問題q問題問題q答案答案匯編語言:匯編語言:?高級(jí)語言:高級(jí)語言:?第3章 指令系統(tǒng) 17202

12、2年年4月月28日日 17例例: : 編程實(shí)現(xiàn)編程實(shí)現(xiàn)c=a+bc=a+b,并在屏幕上顯示結(jié)果,并在屏幕上顯示結(jié)果解解1 1:用:用C C語言實(shí)現(xiàn)語言實(shí)現(xiàn) #include stdio.h int main(int argc, char* argv) int a,b,c; a=1; b=2; c=a+b; printf(“c=%dn,c); return 0; 第3章 指令系統(tǒng) 182022年年4月月28日日 18data segmenta db ?b db ?c db ?string db c=$data endscode segmentmain proc far assume cs:cod

13、e, ds:data assume es:datastart: push ds sub ax,ax push ax mov ax,data mov ds,ax mov es,ax mov a,1 mov b,2 mov al,a add al,b mov c,al lea dx,string mov ah,09 int 21h add c,30h mov dl,c mov ah,2 int 21h mov dl,0ah int 21h mov dl,0dh int 21h retmain endpcode ends end start解解2: 2: 用匯編語言實(shí)現(xiàn)用匯編語言實(shí)現(xiàn)第3章 指令系統(tǒng)

14、 19n程序要具有較快的執(zhí)行時(shí)間,或者只能占用較小的存儲(chǔ)容量程序要具有較快的執(zhí)行時(shí)間,或者只能占用較小的存儲(chǔ)容量n程序與計(jì)算機(jī)硬件密切相關(guān),程序要直接、有效地控制硬件程序與計(jì)算機(jī)硬件密切相關(guān),程序要直接、有效地控制硬件n大型軟件需要提高性能、優(yōu)化處理的部分大型軟件需要提高性能、優(yōu)化處理的部分n沒有合適的高級(jí)語言、或只能采用匯編語言的時(shí)候沒有合適的高級(jí)語言、或只能采用匯編語言的時(shí)候n分析具體系統(tǒng)尤其是該系統(tǒng)的低層軟件、加密解密軟件、分析和分析具體系統(tǒng)尤其是該系統(tǒng)的低層軟件、加密解密軟件、分析和防治計(jì)算機(jī)病毒等等防治計(jì)算機(jī)病毒等等 匯編語言的作用實(shí)在不小匯編語言的作用實(shí)在不小 !從某種意義上說匯編

15、語言改變了20世紀(jì)人們的生活方式第3章 指令系統(tǒng) 20n開發(fā)匯編語言程序q指令系統(tǒng)q文本編輯器q匯編程序q連接程序q調(diào)試程序q集成化開發(fā)環(huán)境這些都是開這些都是開發(fā)匯編程序發(fā)匯編程序的必須步驟的必須步驟及必用工具及必用工具第3章 指令系統(tǒng) 21n計(jì)算機(jī)的指令系統(tǒng)就是指該計(jì)算機(jī)能夠執(zhí)計(jì)算機(jī)的指令系統(tǒng)就是指該計(jì)算機(jī)能夠執(zhí)行的全部指令的集合。行的全部指令的集合。n每種計(jì)算機(jī)都有它支持的指令集合。每種計(jì)算機(jī)都有它支持的指令集合。 n16位位8086指令系統(tǒng)是整個(gè)指令系統(tǒng)是整個(gè)Intel 80 x86 系系列微處理器指令系統(tǒng)的基礎(chǔ)列微處理器指令系統(tǒng)的基礎(chǔ)。n本章內(nèi)容是本課程的一個(gè)關(guān)鍵內(nèi)容。本章內(nèi)容是本課程

16、的一個(gè)關(guān)鍵內(nèi)容。第3章 指令系統(tǒng) 22匯編語言程序上機(jī)運(yùn)行的軟件環(huán)境匯編語言程序上機(jī)運(yùn)行的軟件環(huán)境 DOS操作系統(tǒng)下,編輯、修改和運(yùn)行匯編語言程序,需要用文本編輯軟件、宏匯編程序、連接程序和調(diào)試程序。 文本編輯軟件:EDIT.EXE等 宏匯編程序:MASM.EXE,TASM.EXE等 連接程序:LINK.EXE,TLINK.EXE等 調(diào)試程序:CV.EXE,TD.EXE等 第3章 指令系統(tǒng) 23源程序的編輯與匯編源程序的編輯與匯編1. 編輯源程序編輯源程序 C:ASMEDIT HEXTOASC.ASM(回車)(回車)2. 匯編源程序匯編源程序 C:ASMTASM HEXTOASC (回車)(回

17、車) 在匯編中,如果有語法錯(cuò)誤,會(huì)給出提示信息,指出錯(cuò)誤的類型、行號(hào)。當(dāng)匯編無錯(cuò)之后,會(huì)自動(dòng)生成目標(biāo)文件(文件擴(kuò)展名為OBJ)。注:待編輯的文件擴(kuò)展名必須為 ASM。第3章 指令系統(tǒng) 24目標(biāo)程序的連接目標(biāo)程序的連接 C:ASMTLINK HEXTOASC (回車)(回車)連接成功后,將生成可執(zhí)行程序HEXTOASC.EXE。程序的調(diào)試與運(yùn)行程序的調(diào)試與運(yùn)行 1調(diào)試可執(zhí)行程序調(diào)試可執(zhí)行程序 利用Turbo Debuger(TD)對(duì)可執(zhí)行程序進(jìn)行調(diào)試,以檢查程序可能存在的各種錯(cuò)誤:C:ASMTD HEXTOASC.EXE (回車)(回車)第3章 指令系統(tǒng) 25程序在存儲(chǔ)區(qū)中程序在存儲(chǔ)區(qū)中存放的邏

18、輯地址存放的邏輯地址源程序部分源程序部分程序執(zhí)行后各寄存器、程序執(zhí)行后各寄存器、標(biāo)志位的結(jié)果標(biāo)志位的結(jié)果數(shù)據(jù)段中存放的數(shù)據(jù)段中存放的40個(gè)個(gè)“A”對(duì)應(yīng)的對(duì)應(yīng)的ASCII碼碼DEBUG調(diào)試環(huán)境如下:調(diào)試環(huán)境如下:第3章 指令系統(tǒng) 262運(yùn)行可執(zhí)行程序運(yùn)行可執(zhí)行程序 C:ASMHEXTOASC (回車)(回車)編輯程序編輯程序. ASM 文件文件匯編程序匯編程序. OBJ 文件文件連接程序連接程序. EXE 文件文件Edit 等等MASMLINK第3章 指令系統(tǒng) 27n對(duì)程序員來說,對(duì)程序員來說,8086內(nèi)部結(jié)構(gòu)的最重要的是內(nèi)部結(jié)構(gòu)的最重要的是其寄存器組其寄存器組v 8個(gè)通用寄存器個(gè)通用寄存器v

19、1個(gè)指令指針寄存器個(gè)指令指針寄存器 v 1個(gè)標(biāo)志寄存器個(gè)標(biāo)志寄存器v 4個(gè)段寄存器個(gè)段寄存器他們均為他們均為1616位位! ! 匯編語言程序員看到的處理器,就是寄存器匯編語言程序員看到的處理器,就是寄存器 所以,一定要熟悉這些寄存器的名稱和作用所以,一定要熟悉這些寄存器的名稱和作用第3章 指令系統(tǒng) 288086的16位通用寄存器是:AXBXCXDXSIDIBPSP 其中,前4個(gè)數(shù)據(jù)寄存器都還可以分成高8位和低8位兩個(gè)獨(dú)立的寄存器,它們是: AH BH CH DH AL BL CL DL對(duì)其中某個(gè)8位寄存器的操作,并不影響它所對(duì)應(yīng)的另外一個(gè)8位寄存器。第3章 指令系統(tǒng) 29n數(shù)據(jù)寄存器用來存放計(jì)

20、算的結(jié)果和操作數(shù)n每個(gè)寄存器又有它們各自的專用目的:qAX16位累加器,使用頻度最高,用于算術(shù)、邏輯運(yùn)算以及與外設(shè)傳送信息等;AL為8位累加器。qBX基址寄存器,常用來做基址指針,指向一批連續(xù)存放操作數(shù)的基地址。qCX計(jì)數(shù)器,作為循環(huán)和串操作等指令中的隱含計(jì)數(shù)器。qDX數(shù)據(jù)寄存器,用來存放外設(shè)端口的16位地址,或雙字長(zhǎng)數(shù)據(jù)的高16位。第3章 指令系統(tǒng) 30n變址寄存器常用于存儲(chǔ)器尋址時(shí)提供地址偏移量nSI是源變址寄存器nDI是目的變址寄存器n在串操作類指令中,SI和DI具有特別的功能第3章 指令系統(tǒng) 31n指針寄存器用于尋址內(nèi)存堆棧內(nèi)的數(shù)據(jù)nSP為堆棧指針寄存器,指示棧頂?shù)钠频刂?。SP不能再

21、用于其他目的,具有專用性nBP為基址指針寄存器,表示數(shù)據(jù)在堆棧段中的基地址nSP/BP寄存器與SS段寄存器聯(lián)合使用以確定堆棧段中的存儲(chǔ)單元地址n詳見堆棧操作指令第3章 指令系統(tǒng) 32n堆棧(Stack)是主存中一個(gè)特殊的區(qū)域。n它采用(First In Last Out)或后進(jìn)先出LIFO(Last In First Out)的原則進(jìn)行存取操作,而不是隨機(jī)存取操作方式。n堆棧指針?biāo)甘緱m斘恢?,?086中,棧頂由SS和SP共同指示,即SS:SP。n堆棧操作q處理器自動(dòng)維持(子程序調(diào)用時(shí)的斷點(diǎn)處理)q用戶操作(PUSH/POP指令)q詳見堆棧操作指令注意與FIFO的區(qū)別第3章 指令系統(tǒng) 33n

22、指令指針寄存器IP,指示代碼段中指令的偏移地址n它與代碼段寄存器CS聯(lián)用,確定下一條指令的物理地址n計(jì)算機(jī)通過CS : IP寄存器來取指,從而控制指令序列的執(zhí)行流程nIP寄存器是一個(gè)專用寄存器,用戶不能直接訪問。第3章 指令系統(tǒng) 34標(biāo)志(Flag)用于反映指令執(zhí)行結(jié)果或控制指令執(zhí)行形式。8086處理器中各種常用的標(biāo)志形成了一個(gè)16位的標(biāo)志寄存器FLAGS(也稱程序狀態(tài)字PSW寄存器)。OF1115 12DF10IF9TF8SF7ZF65AF43PF21CF0控制控制 反映結(jié)果狀態(tài)反映結(jié)果狀態(tài)反應(yīng)運(yùn)算過程反應(yīng)運(yùn)算過程第3章 指令系統(tǒng) 35指令的執(zhí)行與標(biāo)志有很大關(guān)系。標(biāo)志分成兩類:n狀態(tài)標(biāo)志用來

23、記錄程序運(yùn)行結(jié)果的狀態(tài)信息,許多指令的執(zhí)行都將自動(dòng)地改變它。CF OF AF SF ZF PFn控制標(biāo)志可由用戶根據(jù)需要用指令進(jìn)行設(shè)置,用于控制處理器的具體工作方式。DF IF TF第3章 指令系統(tǒng) 36n當(dāng)運(yùn)算結(jié)果的最高有效位有進(jìn)位(加法)或借位(減法)時(shí),進(jìn)位標(biāo)志置1,即CF = 1;否則 CF=0。例如(以8位運(yùn)算為例):3AH + 7CHB6H沒有進(jìn)位:CF=0AAH + 7CH 26H有進(jìn)位:CF=1(1)第3章 指令系統(tǒng) 37n若運(yùn)算結(jié)果為全0,則ZF=1,否則ZF=0。例如:3AH + 7CHB6H 結(jié)果不是零:ZF=084H + 7CH100H結(jié)果是全零:ZF=1注意:ZF為1

24、表示的結(jié)果是0第3章 指令系統(tǒng) 38n運(yùn)算結(jié)果最高位為1,則SF=1;否則SF=0。例如:3AH + 7CHB6H最高位D71:SF=184H + 7CH100H最高位D70:SF=0有符號(hào)數(shù)利用最高有效位(MSB)來表示它的符號(hào)。所以,運(yùn)算結(jié)果的MSB與符號(hào)標(biāo)志SF相一致。第3章 指令系統(tǒng) 39n當(dāng)運(yùn)算結(jié)果最低字節(jié)中“1”的個(gè)數(shù)為零或偶數(shù)時(shí),PF=1;否則PF=0(奇校驗(yàn))。例如:3AH + 7CHB6H10110110B,結(jié)果中有5個(gè)1,是奇數(shù),則 PF=0第3章 指令系統(tǒng) 40問題問題什么是溢出?什么是溢出?溢出和進(jìn)位有什么區(qū)別?溢出和進(jìn)位有什么區(qū)別?處理器怎么處理,程序員如何運(yùn)用?處理

25、器怎么處理,程序員如何運(yùn)用?如何判斷是否溢出?如何判斷是否溢出?第3章 指令系統(tǒng) 41n“溢出”針對(duì)有符號(hào)數(shù)n處理器內(nèi)部以補(bǔ)碼表示有符號(hào)數(shù)8位表示范圍是:-128 +127 16位表示范圍是:-32768 +32767 n如果運(yùn)算結(jié)果超出了這個(gè)范圍,就是產(chǎn)生了溢出,溢出發(fā)生時(shí),說明有符號(hào)數(shù)的運(yùn)算結(jié)果不正確n以8位運(yùn)算為例: 3AH + 7CHB6H即 58 + 124182結(jié)果超出-128127故溢出,所以O(shè)F=1另一方面,補(bǔ)碼B6H表達(dá)真值是-74,顯然運(yùn)算結(jié)果也不正確。第3章 指令系統(tǒng) 42n溢出標(biāo)志OF和進(jìn)位標(biāo)志CF是兩個(gè)意義不同的標(biāo)志n進(jìn)位標(biāo)志表示無符號(hào)數(shù)運(yùn)算結(jié)果是否超出范圍,運(yùn)算結(jié)果

26、仍然正確(要考慮進(jìn)位);n溢出標(biāo)志表示有符號(hào)數(shù)運(yùn)算結(jié)果是否超出范圍,運(yùn)算結(jié)果已經(jīng)不正確。第3章 指令系統(tǒng) 43例1:3AH + 7CHB6H無符號(hào)運(yùn)算:58124182 不超范圍,無進(jìn)位有符號(hào)運(yùn)算:58124182 超范圍,有溢出例2:AAH + 7CH26H無符號(hào)運(yùn)算:170124294,超范圍,有進(jìn)位有符號(hào)運(yùn)算:8612438 ,不超范圍,無溢出(1)第3章 指令系統(tǒng) 44n處理器對(duì)兩個(gè)操作數(shù)進(jìn)行運(yùn)算時(shí),處理器對(duì)兩個(gè)操作數(shù)進(jìn)行運(yùn)算時(shí),q根據(jù)無符號(hào)運(yùn)算有無進(jìn)位來設(shè)置進(jìn)位標(biāo)志根據(jù)無符號(hào)運(yùn)算有無進(jìn)位來設(shè)置進(jìn)位標(biāo)志CF;q根據(jù)有符號(hào)運(yùn)算是否超出表示范圍來設(shè)置溢出標(biāo)志根據(jù)有符號(hào)運(yùn)算是否超出表示范圍來

27、設(shè)置溢出標(biāo)志OF。n應(yīng)該利用哪個(gè)標(biāo)志,則由程序員來決定。應(yīng)該利用哪個(gè)標(biāo)志,則由程序員來決定。q如果你認(rèn)為參加運(yùn)算的操作數(shù)是無符號(hào)數(shù),你應(yīng)該如果你認(rèn)為參加運(yùn)算的操作數(shù)是無符號(hào)數(shù),你應(yīng)該關(guān)心進(jìn)位標(biāo)志關(guān)心進(jìn)位標(biāo)志q如果你認(rèn)為參加運(yùn)算的操作數(shù)是有符號(hào)數(shù),你應(yīng)該如果你認(rèn)為參加運(yùn)算的操作數(shù)是有符號(hào)數(shù),你應(yīng)該關(guān)心溢出標(biāo)志。關(guān)心溢出標(biāo)志。第3章 指令系統(tǒng) 45以以8位二進(jìn)制數(shù)為例位二進(jìn)制數(shù)為例分析一下數(shù)的溢出與進(jìn)位情況分析一下數(shù)的溢出與進(jìn)位情況:下面分下面分4種情況加以討論:種情況加以討論: (1)帶符號(hào)數(shù)和無符號(hào)數(shù)都不溢出)帶符號(hào)數(shù)和無符號(hào)數(shù)都不溢出 (2)無符號(hào)數(shù)溢出)無符號(hào)數(shù)溢出 (3)帶符號(hào)數(shù)溢出)帶

28、符號(hào)數(shù)溢出 (4)帶符號(hào)數(shù)和無符號(hào)數(shù)都溢出)帶符號(hào)數(shù)和無符號(hào)數(shù)都溢出數(shù)的溢出與進(jìn)位的區(qū)別與判斷數(shù)的溢出與進(jìn)位的區(qū)別與判斷P4550還不清楚的看下面列子,已懂的可以不看了還不清楚的看下面列子,已懂的可以不看了第3章 指令系統(tǒng) 46。二進(jìn)制數(shù)二進(jìn)制數(shù)看作無符號(hào)數(shù)看作無符號(hào)數(shù)看作帶符號(hào)數(shù)看作帶符號(hào)數(shù)0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 00 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1+ +0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 14 41111+ +1515+ 4+ 4+1 1+1 1+ +1 5+1 5相相加加標(biāo)志標(biāo)志CF=0,OF=0CF

29、=0,OF=0CF=0CF=0OF=0OF=0溢出溢出不溢出不溢出不溢出不溢出不溢出不溢出同符號(hào)數(shù)相加,同符號(hào)數(shù)相加,結(jié)果符號(hào)與其相同結(jié)果符號(hào)與其相同第3章 指令系統(tǒng) 47二進(jìn)制數(shù)二進(jìn)制數(shù)看作無符號(hào)數(shù)看作無符號(hào)數(shù)看作帶符號(hào)數(shù)看作帶符號(hào)數(shù)0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1+ +0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 07 7251251+ +258258+ 7+ 7- 5- 5+ + 2+ 2相相加加標(biāo)志標(biāo)志CF=1,OF=0CF=1,OF=0CF=1CF=1OF=0OF=0溢出溢出無符

30、號(hào)數(shù)溢出無符號(hào)數(shù)溢出溢出溢出結(jié)果應(yīng)為結(jié)果應(yīng)為2 2,錯(cuò),錯(cuò)不溢出不溢出異號(hào)數(shù)相加異號(hào)數(shù)相加不可能有溢出不可能有溢出CF=1CF=1第3章 指令系統(tǒng) 48二進(jìn)制數(shù)二進(jìn)制數(shù)看作無符號(hào)數(shù)看作無符號(hào)數(shù)看作帶符號(hào)數(shù)看作帶符號(hào)數(shù)0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 10 0 1 111 1 1 1 1 1 1 1 0 0 0 0+ +1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 19 9124124+ +133133+ 9+ 9+1 2 4+1 2 4+ +1 3 3+1 3 3相相加加標(biāo)志標(biāo)志CF=0,OF=1CF=0,OF=1CF=0CF=0O OF=F=1 1溢出

31、溢出帶符號(hào)數(shù)溢出帶符號(hào)數(shù)溢出不溢出不溢出溢出溢出 結(jié)果為123 結(jié)果為123結(jié)果錯(cuò)結(jié)果錯(cuò)第3章 指令系統(tǒng) 49二進(jìn)制數(shù)二進(jìn)制數(shù)看作無符號(hào)數(shù)看作無符號(hào)數(shù)看作帶符號(hào)數(shù)看作帶符號(hào)數(shù)1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 11 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1+ +0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0135135245245+ +380380121121- 11- 11+ +132132相相加加標(biāo)志標(biāo)志CF=1,OF=1CF=1,OF=1CF=1CF=1OF=1OF=1溢出溢出無符號(hào)數(shù)溢出無符號(hào)數(shù)溢出溢出溢出現(xiàn)結(jié)果為現(xiàn)結(jié)果為124

32、,結(jié)果錯(cuò)124,結(jié)果錯(cuò)溢出溢出現(xiàn)結(jié)果為124,現(xiàn)結(jié)果為124,結(jié)果錯(cuò)結(jié)果錯(cuò)CF=1CF=1第3章 指令系統(tǒng) 50(1)帶符號(hào)數(shù))帶符號(hào)數(shù)相加相加溢出溢出根據(jù)根據(jù)OF= 1 ?,判斷帶符號(hào)數(shù)產(chǎn)生溢出?判斷帶符號(hào)數(shù)產(chǎn)生溢出?(2)無符號(hào)數(shù))無符號(hào)數(shù)相加相加溢出溢出根據(jù)根據(jù)CF= 1 ?,判斷無符號(hào)數(shù)產(chǎn)生溢出?判斷無符號(hào)數(shù)產(chǎn)生溢出?第3章 指令系統(tǒng) 51n運(yùn)算時(shí)D3位(低半字節(jié))有進(jìn)位或借位時(shí),AF=1;否則AF=0。例如:3AH + 7CHB6H D3向前有進(jìn)位:AF=1這個(gè)標(biāo)志主要由處理器內(nèi)部使用,用于十進(jìn)制算術(shù)運(yùn)算的調(diào)整,用戶一般不必關(guān)心。很少使用,可以不管很少使用,可以不管第3章 指令系統(tǒng)

33、52n用于串操作指令中,控制地址的變化方向:q設(shè)置設(shè)置DF0,串操作后存儲(chǔ)器地址自動(dòng)增量(增址)串操作后存儲(chǔ)器地址自動(dòng)增量(增址) ;q設(shè)置設(shè)置DF1,串操作后存儲(chǔ)器地址自動(dòng)減量(減址)串操作后存儲(chǔ)器地址自動(dòng)減量(減址) 。nCLD 指令復(fù)位方向標(biāo)志:DF0nSTD 指令置位方向標(biāo)志:DF1第3章 指令系統(tǒng) 53n用于控制外部可屏蔽中斷是否可以被處理器響應(yīng):q設(shè)置IF1,則允許中斷;q設(shè)置IF0,則禁止中斷。nCLI 指令復(fù)位中斷標(biāo)志:IF0nSTI 指令置位中斷標(biāo)志:IF1第3章 指令系統(tǒng) 54n用于控制處理器是否進(jìn)入單步執(zhí)行方式:q設(shè)置TF0,處理器正常工作;q設(shè)置TF1,處理器每執(zhí)行一條

34、指令就中斷一次,中斷編號(hào)為 1 (稱單步中斷) TF 也被稱為單步標(biāo)志。n單步執(zhí)行和單步調(diào)試q利用單步中斷可對(duì)程序進(jìn)行逐條指令的調(diào)試。q這種逐條指令調(diào)試程序的方法就是單步調(diào)試。第3章 指令系統(tǒng) 55n同一個(gè)存儲(chǔ)器地址可以表示為:字節(jié)單元地址、字單元地址、雙字單元地址等等(視指令的具體情況)。如 mov word ptr 2000H, 10H mov byte ptr 2000H, 10Hn將字單元安排在偶地址(xx.xx0 B),將雙字單元安排在模4地址(xxxx00 B)的做法,被稱為“地址對(duì)齊(Align)”。n對(duì)于地址不對(duì)齊的數(shù)據(jù),處理器訪問時(shí),需要付出額外的訪問時(shí)間。n要取得較高的存取

35、速度,應(yīng)該將數(shù)據(jù)的地址對(duì)齊。第3章 指令系統(tǒng) 56n8088有20條地址線,q最大可尋址空間為 2201MB,q可尋址的地址范圍為 00000HFFFFFHq該地址稱物理地址n硬件用20位的物理地址來對(duì)存儲(chǔ)單元進(jìn)行尋址第3章 指令系統(tǒng) 57第3章 指令系統(tǒng) 58寄寄存存器器類類型型小小結(jié)結(jié)D estination Index目目 的的 變變 址址 寄寄 存存 器器SID IB PSPA X 累累 加加 器器 A ccum ulatorB X 基基 數(shù)數(shù) 寄寄 存存 器器B aseC X 計(jì)計(jì) 數(shù)數(shù) 寄寄 存存 器器C ountD X 數(shù)數(shù) 據(jù)據(jù) 寄寄 存存 器器D ataA HB HC HD

36、HA LB LC LD LIPP SWD SE SSSC S數(shù)數(shù) 據(jù)據(jù) 段段 寄寄 存存 器器D ata Segm ent附附 加加 段段 寄寄 存存 器器E xtra Segm ent堆堆 棧棧 段段 寄寄 存存 器器S tack Segm ent代代 碼碼 段段 寄寄 存存 器器C ode Segm entP rocessor Status W ord狀狀 態(tài)態(tài) 標(biāo)標(biāo) 志志 寄寄 存存 器器Instruction P ointer指指 令令 指指 針針 寄寄 存存 器器變變 址址寄寄 存存 器器段段 寄寄 存存 器器控控 制制 寄寄 存存 器器通通用用寄寄存存器器Source Index源

37、源 變變 址址 寄寄 存存 器器B ase P oint基基 址址 指指 針針 寄寄 存存 器器Stack P oint堆堆 棧棧 指指 針針 寄寄 存存 器器指指 針針寄寄 存存 器器數(shù)數(shù) 據(jù)據(jù)寄寄 存存 器器第3章 指令系統(tǒng) 59n8086有有8個(gè)個(gè)8位通用寄存器、位通用寄存器、8個(gè)個(gè)16位通用寄存位通用寄存器器n8086有有6個(gè)狀態(tài)標(biāo)志和個(gè)狀態(tài)標(biāo)志和3個(gè)控制標(biāo)志個(gè)控制標(biāo)志n8086將將1MB存儲(chǔ)空間分段管理,有存儲(chǔ)空間分段管理,有4個(gè)段寄存?zhèn)€段寄存器,對(duì)應(yīng)器,對(duì)應(yīng)4種邏輯段種邏輯段n8086有有4個(gè)段超越前綴指令,用于明確指定數(shù)個(gè)段超越前綴指令,用于明確指定數(shù)據(jù)所在的邏輯段據(jù)所在的邏輯段

38、熟悉上述內(nèi)容,就可以進(jìn)入下節(jié)熟悉上述內(nèi)容,就可以進(jìn)入下節(jié) !否則?.第3章 指令系統(tǒng) 60 (一)指令(一)指令(Instruction) 指令是計(jì)算機(jī)執(zhí)行某種操作命令:內(nèi)容包括指令是計(jì)算機(jī)執(zhí)行某種操作命令:內(nèi)容包括做什么操作做什么操作操作數(shù)的來源操作數(shù)的來源結(jié)果的存放結(jié)果的存放以及下一條指令的位置等等。以及下一條指令的位置等等。 1、傳送類;、傳送類; 2、加工處理類:算術(shù)運(yùn)算、邏輯運(yùn)算、移位循環(huán);、加工處理類:算術(shù)運(yùn)算、邏輯運(yùn)算、移位循環(huán); 3、控制類:轉(zhuǎn)移、調(diào)用、中斷等;、控制類:轉(zhuǎn)移、調(diào)用、中斷等; 4、串操作類;、串操作類;一、指令與指令系統(tǒng)一、指令與指令系統(tǒng)操作的操作的結(jié)果結(jié)果將將

39、存放在存放在何處何處由指令由指令的的操作操作碼碼字段字段規(guī)定規(guī)定指示下一條指示下一條指令是指令是順序順序執(zhí)行還是執(zhí)行還是轉(zhuǎn)轉(zhuǎn)移移執(zhí)行執(zhí)行寄存器寄存器存儲(chǔ)器存儲(chǔ)器I/O端口端口第3章 指令系統(tǒng) 61(三 )程序:程序:一些指令的有機(jī)結(jié)合,用于完成某種目的。(二)指令系統(tǒng):指令系統(tǒng):所有指令的集合 8086CPU包含133條指令。第3章 指令系統(tǒng) 62n指令由操作碼和操作數(shù)兩部分組成n操作碼說明計(jì)算機(jī)要執(zhí)行哪種操作,如傳送、運(yùn)算、移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部分n操作數(shù)是指令執(zhí)行的參與者,即各種操作的對(duì)象n有些指令不需要操作數(shù),通常的指令都有一個(gè)或兩個(gè)操作數(shù),也有個(gè)別指令有3個(gè)甚至4

40、個(gè)操作數(shù)n每種指令的操作碼:q用一個(gè)唯一的助記符表示(指令功能的英文縮寫)q對(duì)應(yīng)著機(jī)器指令的一個(gè)二進(jìn)制編碼n指令中的操作數(shù):q可以是一個(gè)具體的數(shù)值q可以是存放數(shù)據(jù)的寄存器q或指明數(shù)據(jù)在主存位置的存儲(chǔ)器地址操作碼操作碼操作數(shù)操作數(shù)指令有指令有RISC與與CISC的的區(qū)別區(qū)別小知識(shí)小知識(shí)第3章 指令系統(tǒng) 63給出立即尋址方式需要的數(shù)值本身給出立即尋址方式需要的數(shù)值本身給出某些尋址方式需要的對(duì)基地址的偏移量給出某些尋址方式需要的對(duì)基地址的偏移量表明采用的尋址方式表明采用的尋址方式立即數(shù)位移量mod reg r/m操作碼0/1/2字節(jié)0/1/2字節(jié)0/1字節(jié)1/2字節(jié)操作數(shù)操作數(shù)第3章 指令系統(tǒng) 64

41、mov ax,BP+0 ;機(jī)器代碼是機(jī)器代碼是 8B 46 00n前一個(gè)字節(jié)8B是操作碼(含w1表示字操作)n中間一個(gè)字節(jié)46(01 000 110)是 “mod reg r/m”字節(jié)qreg000表示目的操作數(shù)為AXqmod01和r/m110表示源操作數(shù)為BP+D8n最后一個(gè)字節(jié)就是8位位移量D800mov al,05 ;機(jī)器代碼是機(jī)器代碼是B0 05n前一個(gè)字節(jié)B0是操作碼(含一個(gè)操作數(shù)AL),后一個(gè)字節(jié)05是立即數(shù)mov ax,0102H ;機(jī)器代碼是機(jī)器代碼是B8 02 01n前一個(gè)字節(jié)B8是操作碼(含一個(gè)操作數(shù)AX),后兩個(gè)字節(jié)02 01是16位立即數(shù)(低字節(jié)02在低地址)立即數(shù)位移

42、量mod reg r/m操作碼0/1/2字節(jié)0/1/2字節(jié)0/1字節(jié)1/2字節(jié)第3章 指令系統(tǒng) 65操作碼 操作數(shù)1,操作數(shù)2;注釋n操作數(shù)2,稱為源操作數(shù) src,它表示參與指令操作的一個(gè)對(duì)象n操作數(shù)1,稱為目的操作數(shù) dest,它不僅可以作為指令操作的一個(gè)對(duì)象,還可以用來存放指令操作的結(jié)果n分號(hào)后的內(nèi)容是對(duì)指令的解釋第3章 指令系統(tǒng) 66MOV dest,src;destsrc nMOV指令的功能是將源操作數(shù)src傳送至目的操作數(shù)dest,例如:MOV AL,05H;AL05HMOV BX,AX;BXAXMOV AX,SI;AXDS:SIMOV AX,BP+06H;AXSS:BP+06HM

43、OV AX,BX+SI ;AXDS:BX+SI第3章 指令系統(tǒng) 67源操作數(shù)源操作數(shù) src目的操作數(shù)目的操作數(shù) dest30H30H被傳送的數(shù)據(jù)被傳送的數(shù)據(jù)第3章 指令系統(tǒng) 687654 3210OPCODEDW7654 3210MODREGR/M字節(jié)1字節(jié)2字節(jié)3字節(jié)4LOW DISP或DATAHIGH DISP或DATA字節(jié)5字節(jié)6LOW DATAHIGH DATA本小節(jié)內(nèi)容可以不看本小節(jié)內(nèi)容可以不看第3章 指令系統(tǒng) 698086/8088不同字長(zhǎng)的指令格式類型 看了這個(gè)圖,請(qǐng)大家思看了這個(gè)圖,請(qǐng)大家思考,為什么考,為什么BIU的指令的指令預(yù)存單元是預(yù)存單元是6個(gè)字節(jié)個(gè)字節(jié)第3章 指令系

44、統(tǒng) 70W: 操作數(shù)字節(jié)長(zhǎng)W=0,字節(jié)字節(jié); W=1,字操作字操作字節(jié)字節(jié)1:操作功能操作功能OPCODE:指令操作碼;指令操作碼;操作數(shù)中至少有一個(gè)為寄存器操作數(shù)中至少有一個(gè)為寄存器:D: 操作數(shù)傳送方向。如果D=0, 則尋址方式字節(jié)中的reg域指定的寄存器用作源操作數(shù); 若D=1, 則由reg域指定的寄存器為目的操作數(shù), 而源操作數(shù)可來自r/m域中的存儲(chǔ)器或另一個(gè)寄存器。D=0,REG為源;為源;D=1,REG為目的為目的第3章 指令系統(tǒng) 71 REG:寄存器編碼字段寄存器編碼字段 000=AL/AX 100=AH/SP 001=CL/CX 101=CH/BP 010=DL/DX 110=

45、DH/SI 011=BL/BX 111=BH/DI字節(jié)字節(jié)2:尋址方式尋址方式 reg域:規(guī)定一個(gè)寄存器操作數(shù),它在指令中作為源操作數(shù)還是目的操作數(shù)由操作碼(第一)字節(jié)中的D位規(guī)定。 由reg域選擇的寄存器的具體規(guī)定如表所示。第3章 指令系統(tǒng) 72 MOD:尋址字段尋址字段 00=存儲(chǔ)器方式,指令中無偏移量 01=存儲(chǔ)器方式,指令中8位偏移量 10=存儲(chǔ)器方式,指令中16位偏移量 11=寄存器方式,指令中無偏移量 MOD:尋址字段尋址字段 mod域: 用來區(qū)分另一個(gè)操作數(shù)是在寄存器中(寄存器尋址), 還是在存儲(chǔ)器中(存儲(chǔ)器尋址)。在存儲(chǔ)器尋址的情況下,還用來指出該字節(jié)后有多少位移量字節(jié)。mod

46、域的編碼及其說明如表所示。 第3章 指令系統(tǒng) 73在MOD11,存儲(chǔ)器模式下,R/M給出計(jì)算有效地址的方法。.R/M:寄存器/存儲(chǔ)器字段在MOD=11,寄存器模式下,R/M給出第二個(gè)操作數(shù)寄存器編碼。第3章 指令系統(tǒng) 74R/M W=0 W=1 R/M MOD=00 MOD=01MOD=10000ALAX000BX+SIBX+SI+D8 BX+SI+D16001CLCX001BX+DIBX+DI+D8 BX+DI+D16010DLDX010BP+SIBP+SI+D8 BP+SI+D16011BLBX011BP+DIBP+DI+D8 BP+DI+D16100AHSP100SISI+D8SI+D1

47、6101CHBP101DIDI+D8DI+D16110DHSI110 直接地址直接地址BP+D8BP+D16111BHDI111BXBX+D8BX+D16MOD=11MOD11有效地址計(jì)算方法有效地址計(jì)算方法第3章 指令系統(tǒng) 75MOV BX+DI-6H, CL;10001000 01 001 00111111010指令碼為:指令碼為:88 49 FADISP:存儲(chǔ)器操作數(shù)地址偏移量,長(zhǎng)度由MOD字段定義。DATA:指令中的立即數(shù)。 MOV AX,BXD=1,W=1;MOD=00,R/M=111,REG=000指令碼為:指令碼為:8B 07-6h=+(-6)h第3章 指令系統(tǒng) 76 例例寫出指

48、令MOVBX+DI-6,CL的機(jī)器語言編碼(假設(shè)在80386/80486上是16位操作)。 這條指令可用符號(hào)寫成MOV mem, reg的形式,源操作數(shù)是寄存器尋址,目的數(shù)是存儲(chǔ)器尋址方式,故此指令的編碼形式為: 由于目的數(shù)是存儲(chǔ)器尋址,D=0和reg域指定了源寄存器。CL寄存器的reg編碼是001B,它與W=0一起表示一個(gè)8位操作數(shù)。至此編碼又可進(jìn)一步寫成如下形式: 第3章 指令系統(tǒng) 77 取r/m的值為001B,是對(duì)BX+DI+disp的尋址計(jì)算。位移量disp8的范圍是在-128到+127之間,-6為FAH。當(dāng)mod=01B時(shí), 為選取8位位移量, 則指令MOVBX+DI-6, CL的完

49、整編碼如下: 第3章 指令系統(tǒng) 78地址(地址(CS段)段) 機(jī)器代碼機(jī)器代碼 指令指令 00A8H FA CLI 00A9H 2E 8E 16 A4 00 MOV SS,CS:00A4H 00AEH BC 50 00 MOV SP,0050H 00B1H BB EC MOV BP,SP 00B3H 2E 8E 1E A6 00 MOV DS,CS:00A6H 00B8H FB STI 00B9H C7 06 40 00 22 11 MOV 0040H,1122H第3章 指令系統(tǒng) 79五、指令不同,尋址方式不同,指令執(zhí)行時(shí)間不同,五、指令不同,尋址方式不同,指令執(zhí)行時(shí)間不同,時(shí)間和計(jì)算機(jī)主頻(

50、時(shí)鐘周期)還有關(guān)。時(shí)間和計(jì)算機(jī)主頻(時(shí)鐘周期)還有關(guān)。 一、按指令格式一、按指令格式,一條指令可占一到六個(gè)字節(jié)一條指令可占一到六個(gè)字節(jié),從形式從形式上可分單操作數(shù)上可分單操作數(shù),雙操作數(shù)雙操作數(shù),無操作數(shù)指令。無操作數(shù)指令。二、指令中二、指令中16位的立即數(shù)或偏移量位的立即數(shù)或偏移量,變?yōu)闄C(jī)器代碼后低變?yōu)闄C(jī)器代碼后低字節(jié)后在前字節(jié)后在前,高字節(jié)在后高字節(jié)在后。三、雙操作數(shù)指令不能同為存儲(chǔ)器操作數(shù)三、雙操作數(shù)指令不能同為存儲(chǔ)器操作數(shù)四、助記符形式的匯編語言經(jīng)匯編(四、助記符形式的匯編語言經(jīng)匯編(DEBUG,MASM,ASM)變成機(jī)器代碼才能被變成機(jī)器代碼才能被CPU識(shí)別和執(zhí)行。識(shí)別和執(zhí)行。第3章

51、 指令系統(tǒng) 80n一般來說,操作數(shù)可以跟隨在指令操作碼之后,稱一般來說,操作數(shù)可以跟隨在指令操作碼之后,稱為立即數(shù);操作數(shù)也可以存放在為立即數(shù);操作數(shù)也可以存放在CPUCPU內(nèi)部的寄存器中,內(nèi)部的寄存器中,稱為寄存器操作數(shù)。絕大多數(shù)的操作數(shù)存放在存儲(chǔ)器稱為寄存器操作數(shù)。絕大多數(shù)的操作數(shù)存放在存儲(chǔ)器中,稱為存儲(chǔ)器操作數(shù)。中,稱為存儲(chǔ)器操作數(shù)。n指令指定操作數(shù)的位置即給出地址信息,在執(zhí)行時(shí)指令指定操作數(shù)的位置即給出地址信息,在執(zhí)行時(shí)需要根據(jù)這個(gè)地址信息找到需要的操作數(shù)需要根據(jù)這個(gè)地址信息找到需要的操作數(shù)n這種尋找操作數(shù)的過程稱為尋址,而尋找操作數(shù)的這種尋找操作數(shù)的過程稱為尋址,而尋找操作數(shù)的方法稱

52、為尋址方式。方法稱為尋址方式。n指令系統(tǒng)設(shè)計(jì)了多種操作數(shù)的來源指令系統(tǒng)設(shè)計(jì)了多種操作數(shù)的來源n操作數(shù)采取哪一種尋址方式,會(huì)影響機(jī)器運(yùn)行的速操作數(shù)采取哪一種尋址方式,會(huì)影響機(jī)器運(yùn)行的速度和效率度和效率 如何尋址一個(gè)操作數(shù)對(duì)程序設(shè)計(jì)如何尋址一個(gè)操作數(shù)對(duì)程序設(shè)計(jì)很重要很重要源操作數(shù)與源操作數(shù)與目的操作數(shù)目的操作數(shù)第3章 指令系統(tǒng) 81操作數(shù)尋址方式操作數(shù)尋址方式 指令由操作碼和操作數(shù)兩部分構(gòu)成。操作碼表明指令要進(jìn)行什指令由操作碼和操作數(shù)兩部分構(gòu)成。操作碼表明指令要進(jìn)行什么樣的操作;操作數(shù)是參加本指令操作的數(shù)據(jù)。操作數(shù)的表現(xiàn)形么樣的操作;操作數(shù)是參加本指令操作的數(shù)據(jù)。操作數(shù)的表現(xiàn)形式比較復(fù)雜,可以是參

53、與操作的數(shù)值,也可以是參與操作的數(shù)值式比較復(fù)雜,可以是參與操作的數(shù)值,也可以是參與操作的數(shù)值的的“地址地址”,需要通過尋址方式來體現(xiàn)。,需要通過尋址方式來體現(xiàn)。操作碼操作碼操作數(shù)操作數(shù)介紹操作數(shù)之前,首先要清楚計(jì)算機(jī)中的數(shù)據(jù)可以存放在哪里呢?介紹操作數(shù)之前,首先要清楚計(jì)算機(jī)中的數(shù)據(jù)可以存放在哪里呢?在計(jì)算機(jī)運(yùn)行過程中大量的數(shù)據(jù)在計(jì)算機(jī)運(yùn)行過程中大量的數(shù)據(jù)存儲(chǔ)器存儲(chǔ)器中(中(MEM),這部分?jǐn)?shù)據(jù)),這部分?jǐn)?shù)據(jù)處理時(shí)需要給出操作數(shù)所在存儲(chǔ)單元的地址;處理時(shí)需要給出操作數(shù)所在存儲(chǔ)單元的地址;少量數(shù)據(jù)少量數(shù)據(jù)(中間數(shù)據(jù))可以放在中間數(shù)據(jù))可以放在寄存器寄存器中,使用時(shí)也需要給出其名中,使用時(shí)也需要給出

54、其名稱;稱;接口中也有寄存器,對(duì)其訪問需給出其接口中也有寄存器,對(duì)其訪問需給出其端口端口地址(第地址(第6章介紹)。章介紹)。還有部分是常數(shù),不需要地址也不需要名稱還有部分是常數(shù),不需要地址也不需要名稱第3章 指令系統(tǒng) 82操作數(shù)的類型操作數(shù)的類型1.1.存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù)存放在代碼段中的數(shù)據(jù)是指令格式編碼的一部分,在取指存放在代碼段中的數(shù)據(jù)是指令格式編碼的一部分,在取指令是就隨指令被取到令是就隨指令被取到CPUCPU,直接可以參加指令操作,通常,直接可以參加指令操作,通常稱為稱為立即數(shù)立即數(shù)。存儲(chǔ)器分為代碼段、數(shù)據(jù)段、附加段和堆棧段,存放在數(shù)存儲(chǔ)器分為代碼段、數(shù)據(jù)段、附加段和堆棧段,存

55、放在數(shù)據(jù)段、附加段和堆棧段中的數(shù)據(jù)即據(jù)段、附加段和堆棧段中的數(shù)據(jù)即存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù),其地址,其地址表示比較復(fù)雜,將在尋址方式中做詳細(xì)介紹;表示比較復(fù)雜,將在尋址方式中做詳細(xì)介紹;存放在外設(shè)端口中的數(shù)據(jù)稱為端口操作數(shù),存放在外設(shè)端口中的數(shù)據(jù)稱為端口操作數(shù),CPUCPU使用專用使用專用的的ININ、OUTOUT指令來對(duì)端口進(jìn)行訪問。指令來對(duì)端口進(jìn)行訪問。2.2.立即操作數(shù)立即操作數(shù)3.3.寄存器操作數(shù)寄存器操作數(shù)存放在寄存器中的數(shù)據(jù)稱為寄存器操作數(shù)存放在寄存器中的數(shù)據(jù)稱為寄存器操作數(shù)。4.4.端口操作數(shù)端口操作數(shù)操作數(shù)尋址方式操作數(shù)尋址方式第3章 指令系統(tǒng) 83(一)立即尋址(一)立即尋址

56、操作數(shù)直接存放在指操作數(shù)直接存放在指令中。用于表示常令中。用于表示常數(shù),給變量賦初值。數(shù),給變量賦初值。例:mov AL,5;mov AL,5; AL5 AL5 10000H10100H10101H 10102H OP34H12H100H。 34HAHAL12HAX代碼段 代碼段起址操作數(shù)包含在指令中,緊跟在操作碼后放在代碼段 。 MOV AX ,1234H (若若CS = 1000H ,IP = 100H)定義:如何尋找如何尋找操作數(shù)或其地址操作數(shù)或其地址第3章 指令系統(tǒng) 84n指令中的操作數(shù)直接存放在機(jī)器代碼中,緊跟指令中的操作數(shù)直接存放在機(jī)器代碼中,緊跟在操作碼之后(在操作碼之后(操作數(shù)

57、作為指令的一部分存放操作數(shù)作為指令的一部分存放在操作碼之后的主存單元中在操作碼之后的主存單元中)n這種操作數(shù)被稱為立即數(shù)這種操作數(shù)被稱為立即數(shù)imm(immediately) q它可以是它可以是8位數(shù)值位數(shù)值i8(00HFFH)q也可以是也可以是16位數(shù)值位數(shù)值i16(0000HFFFFH)n立即數(shù)尋址方式常用來給寄存器賦值立即數(shù)尋址方式常用來給寄存器賦值注:立即數(shù)可理解為常數(shù),在指令中只能作為源操作數(shù)第3章 指令系統(tǒng) 85MOV AL,05H;AL05HMOV AX,0102H;AX0102H第3章 指令系統(tǒng) 86第3章 指令系統(tǒng) 87第3章 指令系統(tǒng) 88指令指定寄存器內(nèi)指令指定寄存器內(nèi)容

58、為操作數(shù)。容為操作數(shù)。MOV AX ,BX 若 AX = 1234H,BX = 4567H4567H4567H AXBX操作數(shù)包含在CPU的內(nèi)部寄存器中。(二)寄存器尋址二)寄存器尋址例:mov BX,AX;mov BX,AX; BXAX BXAX第3章 指令系統(tǒng) 89n操作數(shù)存放在CPU的內(nèi)部寄存器reg中,可以是:q8位寄存器r8:AH、AL、BH、BL、CH、CL、DH、DLq16位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SPq4個(gè)段寄存器seg:CS、DS、SS、ESSSSS、DSDS、ESES既可以作為源操作數(shù),也可既可以作為源操作數(shù),也可以作為目的操作數(shù),但不能互為

59、目的操以作為目的操作數(shù),但不能互為目的操作數(shù)。作為目的操作數(shù)時(shí),源操作數(shù)不作數(shù)。作為目的操作數(shù)時(shí),源操作數(shù)不能是立即數(shù),能是立即數(shù),CSCS只能作為源操作數(shù)。只能作為源操作數(shù)。 第3章 指令系統(tǒng) 90MOV AX,1234H;AX1234HMOV BX,AX;BXAX第3章 指令系統(tǒng) 91第3章 指令系統(tǒng) 92第3章 指令系統(tǒng) 93 存儲(chǔ)器操作數(shù)的尋址方式中,數(shù)據(jù)都存放于存儲(chǔ)單元中,指令操作過程中需要BIU通過一個(gè)總線周期的訪問,才能獲取操作數(shù)。存儲(chǔ)器操作數(shù)的尋址方式是怎么計(jì)算出操作數(shù)的有效地址EA(Effective Address)。有效地址EA是三個(gè)地址量因子一個(gè)以上組合,由CPU執(zhí)行單

60、元EU計(jì)算出來。 存儲(chǔ)器尋址(存儲(chǔ)器尋址(Memory AddressingMemory Addressing)偏移量因子(Displacement):偏移量是指令中直接給出的一個(gè)8/16位數(shù);基址量因子(Base):由基址寄存器BX或BP提供的內(nèi)容;變址量因子(Index):由變址寄存器SI或DI提供的內(nèi)容。注:3個(gè)地址量因子組合有7種方式。根據(jù)組合后地址量因子的特點(diǎn),最終合并成5種尋址方式。3.3 3.3 操作數(shù)尋址方式操作數(shù)尋址方式第3章 指令系統(tǒng) 94例:例:mov SI,var;mov SI,var;var var 定義為變量。定義為變量。(三)直接尋址三)直接尋址指令中直接給出操指

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論