第5章 指令與指令系統(tǒng)和匯編語言程序設(shè)計(jì)_第1頁
第5章 指令與指令系統(tǒng)和匯編語言程序設(shè)計(jì)_第2頁
第5章 指令與指令系統(tǒng)和匯編語言程序設(shè)計(jì)_第3頁
第5章 指令與指令系統(tǒng)和匯編語言程序設(shè)計(jì)_第4頁
第5章 指令與指令系統(tǒng)和匯編語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第5 5章章指令、指令系統(tǒng)和匯編指令、指令系統(tǒng)和匯編語言程序設(shè)計(jì)語言程序設(shè)計(jì)u 計(jì)算機(jī)計(jì)算機(jī)指令指令指揮指揮計(jì)算機(jī)硬件運(yùn)行的計(jì)算機(jī)硬件運(yùn)行的命令命令由若干個(gè)二進(jìn)制位組成的由若干個(gè)二進(jìn)制位組成的位串位串(信息體)(信息體)計(jì)算機(jī)硬件可直接識(shí)別和執(zhí)行計(jì)算機(jī)硬件可直接識(shí)別和執(zhí)行計(jì)算機(jī)運(yùn)行的最小功能單元計(jì)算機(jī)運(yùn)行的最小功能單元一臺(tái)計(jì)算機(jī)提供的全部指令構(gòu)成該計(jì)算機(jī)的一臺(tái)計(jì)算機(jī)提供的全部指令構(gòu)成該計(jì)算機(jī)的指令系統(tǒng)指令系統(tǒng)指令概述、功能指令概述、功能計(jì)算機(jī)系統(tǒng)計(jì)算機(jī)系統(tǒng)硬件硬件軟件軟件為使用硬件而編制的、由為使用硬件而編制的、由一系列的一系列的計(jì)算機(jī)指令計(jì)算機(jī)指令組成組成CPU存儲(chǔ)器存儲(chǔ)器外圍設(shè)備外圍設(shè)備

2、 具體一點(diǎn)說,可以把設(shè)計(jì)要求歸納如下:具體一點(diǎn)說,可以把設(shè)計(jì)要求歸納如下:完備性完備性:指令齊全,編程方便:指令齊全,編程方便規(guī)整性規(guī)整性:格式與運(yùn)算規(guī)則統(tǒng)一:格式與運(yùn)算規(guī)則統(tǒng)一高效性高效性:占內(nèi)存少,運(yùn)行省時(shí)占內(nèi)存少,運(yùn)行省時(shí)兼容性兼容性:同一系列機(jī)軟件兼容:同一系列機(jī)軟件兼容使用者:程序員,希望使用者:程序員,希望用它設(shè)計(jì)程序用它設(shè)計(jì)程序簡單、方便簡單、方便實(shí)現(xiàn)者:硬件設(shè)計(jì)者,希望實(shí)現(xiàn)者:硬件設(shè)計(jì)者,希望節(jié)省、高效節(jié)省、高效實(shí)際上,這兩方面的要求經(jīng)常矛盾。實(shí)際上,這兩方面的要求經(jīng)常矛盾。(如何折中?)(如何折中?)對(duì)設(shè)計(jì)指令系統(tǒng)的要求對(duì)設(shè)計(jì)指令系統(tǒng)的要求確定指令系統(tǒng)的兩種思路確定指令系統(tǒng)的

3、兩種思路 從降低硬件系統(tǒng)構(gòu)成的復(fù)雜度、提高指令執(zhí)行從降低硬件系統(tǒng)構(gòu)成的復(fù)雜度、提高指令執(zhí)行速度和并行性考慮,確定指令系統(tǒng)的兩種思路:速度和并行性考慮,確定指令系統(tǒng)的兩種思路:w 精簡精簡指令系統(tǒng)計(jì)算機(jī)指令系統(tǒng)計(jì)算機(jī)w 指令指令數(shù)目較少數(shù)目較少、格式與功能格式與功能簡單簡單、運(yùn)行高效運(yùn)行高效w 追求計(jì)算機(jī)控制器實(shí)現(xiàn)追求計(jì)算機(jī)控制器實(shí)現(xiàn)簡單簡單,運(yùn)行高速,更運(yùn)行高速,更容易容易在單塊超大在單塊超大規(guī)模集成電路芯片內(nèi)制做規(guī)模集成電路芯片內(nèi)制做w 指令并行性指令并行性好好w 復(fù)雜復(fù)雜指令系統(tǒng)計(jì)算機(jī)指令系統(tǒng)計(jì)算機(jī)w 指令條數(shù)多指令條數(shù)多,格式多樣格式多樣,尋尋址方式復(fù)雜址方式復(fù)雜,每條,每條指令的功能指

4、令的功能強(qiáng)強(qiáng),匯編程序設(shè)計(jì)容易些,匯編程序設(shè)計(jì)容易些w 計(jì)算機(jī)控制器的實(shí)現(xiàn)計(jì)算機(jī)控制器的實(shí)現(xiàn)困難多困難多,很多指令使用機(jī)會(huì)少。很多指令使用機(jī)會(huì)少。w指令并行度指令并行度差差RISCReduced Instruction Set ComputerCISCComplex Instruction Set Computer指令格式指令格式指令格式指令格式:指令字指令字:完整的一條指令的:完整的一條指令的二進(jìn)制表示二進(jìn)制表示指令字長指令字長:指令字中二進(jìn)制代碼的位數(shù):指令字中二進(jìn)制代碼的位數(shù)機(jī)器字長:計(jì)算機(jī)能直接處理的二進(jìn)制數(shù)據(jù)的位數(shù)機(jī)器字長:計(jì)算機(jī)能直接處理的二進(jìn)制數(shù)據(jù)的位數(shù)指令字長(字節(jié)倍數(shù))指令字

5、長(字節(jié)倍數(shù))0.5、1、2個(gè)機(jī)器字長個(gè)機(jī)器字長定長指令字結(jié)構(gòu)定長指令字結(jié)構(gòu) vs. 變長指令字結(jié)構(gòu)變長指令字結(jié)構(gòu)操作碼操作碼 操作數(shù)操作數(shù) 指令的操作功能,指令的操作功能,確定、唯一確定、唯一指令的操作對(duì)象或指令的操作對(duì)象或操作對(duì)象的地址操作對(duì)象的地址操作碼組織與編碼操作碼組織與編碼定長操作碼定長操作碼 用用固定若干位固定若干位表示操作碼,有利于簡化計(jì)算機(jī)硬件設(shè)計(jì),表示操作碼,有利于簡化計(jì)算機(jī)硬件設(shè)計(jì),提高指令譯碼和識(shí)別速度。提高指令譯碼和識(shí)別速度。 例如:例如:TEC-2000的的16位機(jī)位機(jī)操作碼位數(shù)限制指令系統(tǒng)中操作碼位數(shù)限制指令系統(tǒng)中指令條數(shù)指令條數(shù)!操作碼操作碼(mbit)操作數(shù)操

6、作數(shù)(nbit)變長操作碼變長操作碼 用用固定長度固定長度的字段表示的字段表示基本操作碼基本操作碼,把,把較短較短操作數(shù)地址操作數(shù)地址字段中字段中多余位多余位用作用作擴(kuò)展指令操作碼擴(kuò)展指令操作碼,可縮短平均指令長度,可縮短平均指令長度,但增加了譯碼和分析難度。但增加了譯碼和分析難度。 例如:例如:TEC-2000的的8位機(jī)位機(jī)基本指令操作碼基本指令操作碼(mbit)操作數(shù)操作數(shù)(nbit)擴(kuò)展指令操作碼擴(kuò)展指令操作碼(m+r bit)操作數(shù)操作數(shù)(n-r bit)指令操作數(shù)個(gè)數(shù)指令操作數(shù)個(gè)數(shù) 無操作數(shù)指令(零地址指令)無操作數(shù)指令(零地址指令) 單操作數(shù)指令(一地址指令)單操作數(shù)指令(一地址指

7、令) 雙操作數(shù)指令(二地址指令)雙操作數(shù)指令(二地址指令) 三操作數(shù)指令(二地址指令)三操作數(shù)指令(二地址指令) 多操作數(shù)指令(多地址指令)多操作數(shù)指令(多地址指令)指令操作數(shù)來源和去向指令操作數(shù)來源和去向 CPU內(nèi)部的通用寄存器:寄存器編號(hào)或名稱內(nèi)部的通用寄存器:寄存器編號(hào)或名稱 I/O設(shè)備(接口)的寄存器設(shè)備(接口)的寄存器 :端口地址:端口地址 主存儲(chǔ)器的存儲(chǔ)單元:內(nèi)存地址主存儲(chǔ)器的存儲(chǔ)單元:內(nèi)存地址操作數(shù)個(gè)數(shù)與來源操作數(shù)個(gè)數(shù)與來源OP A1 A2OP A1OPOP A1 A2 A3OP A1 A2 更多更多 假設(shè)某機(jī)器的指令長度為假設(shè)某機(jī)器的指令長度為16位,包括位,包括 4位基本位基

8、本操作碼和三個(gè)操作碼和三個(gè) 4位地址碼段。位地址碼段。 15 12 118 7 4 30 OP A1 A2 A3 4 位基本操作碼可表示位基本操作碼可表示 16個(gè)狀態(tài),個(gè)狀態(tài),如用如用 4 位操作碼,則能表示位操作碼,則能表示 16 條條三地址三地址指令,指令,若用若用 8 位操作碼,則可表示位操作碼,則可表示 256 條條二地址二地址指令,指令,若用若用12位操作碼,則可表示位操作碼,則可表示 4096條條一地址一地址指令,指令,若若16位全用作操作碼,則可表示位全用作操作碼,則可表示 65536條條零地址零地址指令指令操作碼的擴(kuò)展技術(shù)操作碼的擴(kuò)展技術(shù) 若需要在若需要在16位字長的指令中能夠

9、同時(shí)支持三地址、二位字長的指令中能夠同時(shí)支持三地址、二地址、一地址指令各地址、一地址指令各15條,零地址指令條,零地址指令16條,則可以選用條,則可以選用如下方案的變長操作碼實(shí)現(xiàn):如下方案的變長操作碼實(shí)現(xiàn): 16條零地址指令的操作碼的高條零地址指令的操作碼的高 12位位每位均用每位均用1,低低 4 位隨意位隨意, 即即: 1111111111110000111111111111111115條三地址指令的操作碼為:條三地址指令的操作碼為:0000 1110 15條二地址指令的操作碼的高條二地址指令的操作碼的高 4 位選用位選用 1111,低低 4 位用位用 0000 1110, 即得到即得到:

10、11110000 11111110 15條一地址指令的操作碼的高條一地址指令的操作碼的高 8位選用位選用11111111,低低 4 位用位用 0000 1110, 即即: 111111110000 111111111110操作碼的擴(kuò)展技術(shù)操作碼的擴(kuò)展技術(shù) 實(shí)際上,只要各操作碼的編碼互不相同,就可實(shí)際上,只要各操作碼的編碼互不相同,就可區(qū)分不同的指令。當(dāng)每次擴(kuò)展的位數(shù)和保留的位數(shù)區(qū)分不同的指令。當(dāng)每次擴(kuò)展的位數(shù)和保留的位數(shù)變化時(shí),可擴(kuò)指令條數(shù)就可變化。變化時(shí),可擴(kuò)指令條數(shù)就可變化。 例如在例如在16位指令字中,也可以選用如下方案支位指令字中,也可以選用如下方案支持三地址指令、二地址指令、一地址指

11、令和零地址持三地址指令、二地址指令、一地址指令和零地址指令指令14、30、31、16條:條:16條零地址為:條零地址為:11111111111100001111111111111111 14條三地址為:條三地址為:0000 1101 (保留保留1110、1111 兩個(gè)碼兩個(gè)碼)30條二地址為:條二地址為:11100000 11111101 (保留(保留 2個(gè)碼)個(gè)碼)31條一地址為:條一地址為:111111100000 111111111110 (保留保留 1個(gè)碼個(gè)碼)操作碼的擴(kuò)展技術(shù)操作碼的擴(kuò)展技術(shù)u 尋址方式(又稱編址方式):確定本條指令的尋址方式(又稱編址方式):確定本條指令的數(shù)據(jù)或數(shù)數(shù)

12、據(jù)或數(shù)據(jù)地址據(jù)地址或下一條要執(zhí)行的或下一條要執(zhí)行的指令地址指令地址的方法。的方法。u 在指令中為每個(gè)操作數(shù)專設(shè)地址字段,用來表示數(shù)據(jù)的在指令中為每個(gè)操作數(shù)專設(shè)地址字段,用來表示數(shù)據(jù)的來源或去向的地址。來源或去向的地址。u 指令中給出的操作數(shù)(或指令)的地址被稱為指令中給出的操作數(shù)(或指令)的地址被稱為形式地址形式地址,形式地址按一定的規(guī)則計(jì)算出來的數(shù)值才是數(shù)據(jù)(或指令)形式地址按一定的規(guī)則計(jì)算出來的數(shù)值才是數(shù)據(jù)(或指令)的的實(shí)際地址實(shí)際地址。u 在指令的操作數(shù)地址字段,可能要指出:在指令的操作數(shù)地址字段,可能要指出: 運(yùn)算器中的累加器的編號(hào)或?qū)S眉拇嫫髅Q(編號(hào))運(yùn)算器中的累加器的編號(hào)或?qū)S眉?/p>

13、存器名稱(編號(hào)) 輸入輸入/輸出指令中用到的輸出指令中用到的 I/O 設(shè)備的入出端口地址設(shè)備的入出端口地址 內(nèi)存儲(chǔ)器的一個(gè)存儲(chǔ)單元(或一內(nèi)存儲(chǔ)器的一個(gè)存儲(chǔ)單元(或一 I/O設(shè)備設(shè)備 )的地址)的地址尋址方式尋址方式操作數(shù)在指令的地址字段操作數(shù)在指令的地址字段直接給出直接給出。適用于適用于操作數(shù)固定操作數(shù)固定的情況,的情況,當(dāng)立即數(shù)值較小,其占用位數(shù)少,可在指令字第當(dāng)立即數(shù)值較小,其占用位數(shù)少,可在指令字第一個(gè)字中直接給出,否則需要用指令的第二個(gè)字一個(gè)字中直接給出,否則需要用指令的第二個(gè)字提供。提供。指令的第指令的第2個(gè)字個(gè)字(1) 立即數(shù)尋址立即數(shù)尋址立即數(shù),例如立即數(shù),例如Num = 123

14、4H,則指令的一個(gè),則指令的一個(gè)操作數(shù)就是操作數(shù)就是 1234H。指令地址碼字段直接給出操作指令地址碼字段直接給出操作數(shù)數(shù)(或指令或指令) 在存儲(chǔ)器中的地址。在存儲(chǔ)器中的地址。Addr 為操作數(shù)在存儲(chǔ)器中的地址,為操作數(shù)在存儲(chǔ)器中的地址, 或轉(zhuǎn)移指令的轉(zhuǎn)移地址?;蜣D(zhuǎn)移指令的轉(zhuǎn)移地址。例:例:Addr = 5718H ,可能是下一條指令的地址或一,可能是下一條指令的地址或一個(gè)操作數(shù)的地址,若個(gè)操作數(shù)的地址,若 5718H = 3,則用,則用 5718H 作地作地址,從內(nèi)存儲(chǔ)器單元中讀出的操作數(shù)就是址,從內(nèi)存儲(chǔ)器單元中讀出的操作數(shù)就是 3。內(nèi)存儲(chǔ)器內(nèi)存儲(chǔ)器 操作數(shù)操作數(shù) (2) 直接尋址直接尋址寄

15、存器尋址方式:寄存器尋址方式:指令地址碼字段給出指令地址碼字段給出CPU中某寄存器中某寄存器的編號(hào)的編號(hào)(地址地址),操作數(shù)在該寄存器中。操作數(shù)在該寄存器中。寄存器間接尋址方式:寄存器間接尋址方式:寄存器中存放的是操作數(shù)在存儲(chǔ)寄存器中存放的是操作數(shù)在存儲(chǔ)單元的單元的地址地址??赏ㄟ^指令可通過指令操作碼操作碼或另設(shè)或另設(shè)特征特征來區(qū)分。來區(qū)分。例:例:RegNo.=5,使用,使用 5# 累加器,累加器, 此時(shí)此時(shí)若若 5# 累加器中的內(nèi)容為累加器中的內(nèi)容為 7,可記為可記為 (R5)=7,對(duì)對(duì)寄存器尋址寄存器尋址,操作數(shù)就是,操作數(shù)就是7對(duì)對(duì)寄存器間接尋址寄存器間接尋址,操作數(shù)是從,操作數(shù)是從7

16、#存儲(chǔ)單元讀出來的數(shù)存儲(chǔ)單元讀出來的數(shù)(3) 寄存器尋址、寄存器間接尋址寄存器尋址、寄存器間接尋址 操作數(shù)的地址由指定的操作數(shù)的地址由指定的變址寄存器變址寄存器(由(由Reg指定)指定)的內(nèi)的內(nèi)容和容和變址偏移量變址偏移量(Disp)相加得到。相加得到。操作數(shù)操作數(shù)存儲(chǔ)器存儲(chǔ)器變址寄存器變址寄存器加法器加法器例:例:Disp=18H,Reg=5,(R5)=5700H 則操作數(shù)地址則操作數(shù)地址 = 5718H通常用于訪問數(shù)組:變址寄存器內(nèi)容(通常用于訪問數(shù)組:變址寄存器內(nèi)容(放數(shù)組下標(biāo)放數(shù)組下標(biāo))變)變化,變址偏移量(化,變址偏移量(放數(shù)組名放數(shù)組名)不變。)不變。(4) 變址尋址變址尋址 指令

17、的地址由程序計(jì)數(shù)器指令的地址由程序計(jì)數(shù)器 PC 的內(nèi)容(即當(dāng)前執(zhí)行指令的的內(nèi)容(即當(dāng)前執(zhí)行指令的地址)和地址)和相對(duì)尋址偏移量相對(duì)尋址偏移量(Disp)相加得到。)相加得到。例:例:Disp = 48H(PC) = 5600H 則實(shí)際地址則實(shí)際地址 = 5648H(1)主要用于)主要用于轉(zhuǎn)移轉(zhuǎn)移指令,對(duì)浮動(dòng)程序也很有用。指令,對(duì)浮動(dòng)程序也很有用。(2)偏移量可正可負(fù),通常用補(bǔ)碼表示。)偏移量可正可負(fù),通常用補(bǔ)碼表示。PC(5) 相對(duì)尋址相對(duì)尋址 指令的地址碼字段給出的是操作數(shù)(或指令)指令的地址碼字段給出的是操作數(shù)(或指令)地址的地地址的地址址,需要多讀一次內(nèi)存。,需要多讀一次內(nèi)存。操作數(shù)操作

18、數(shù)Addr1Addr1Addr 可用其他尋址方式給出,可用其他尋址方式給出,例如變址尋址,成為變址與間例如變址尋址,成為變址與間接的復(fù)合尋址方式接的復(fù)合尋址方式(6) 間接尋址間接尋址存儲(chǔ)器存儲(chǔ)器設(shè)置專用的設(shè)置專用的基址寄存器基址寄存器,操作數(shù)(或指令)的地址通過,操作數(shù)(或指令)的地址通過基址基址寄存器寄存器的內(nèi)容和指令中的的內(nèi)容和指令中的地址碼地址碼(Disp)相加得到。)相加得到?;芳拇嫫骰芳拇嫫骷臃ㄆ骷臃ㄆ鞔鎯?chǔ)器存儲(chǔ)器操作數(shù)操作數(shù)例:例:Disp= 18H,BS= 5700H 則操作數(shù)地址則操作數(shù)地址=5718H主要用于為程序或數(shù)據(jù)分配存儲(chǔ)區(qū),主要用于為程序或數(shù)據(jù)分配存儲(chǔ)區(qū),對(duì)多對(duì)

19、多道程序或浮動(dòng)程序道程序或浮動(dòng)程序很有用,解決很有用,解決了程序在存儲(chǔ)器中的定位和擴(kuò)大尋址了程序在存儲(chǔ)器中的定位和擴(kuò)大尋址空間等問題??臻g等問題。(7) 基址尋址基址尋址堆棧:內(nèi)存儲(chǔ)器、后進(jìn)先出堆棧:內(nèi)存儲(chǔ)器、后進(jìn)先出用專用寄存器用專用寄存器 (堆棧指針堆棧指針 SP) 給出給出棧頂棧頂?shù)刂?,讀寫通常在地址,讀寫通常在棧頂進(jìn)行,故不必在指令中給出堆棧地址,讀寫前后伴隨棧頂進(jìn)行,故不必在指令中給出堆棧地址,讀寫前后伴隨自動(dòng)修改自動(dòng)修改SP,確保,確保SP指向棧頂。指向棧頂。入棧入棧:先:先 SP - 1 SP 、AR(地址寄存器),再把數(shù)據(jù)寫(地址寄存器),再把數(shù)據(jù)寫入入堆棧。堆棧。出棧出棧:

20、SP AR,讀棧頂,再讀棧頂,再 SP + 1 SP。以上入出棧操作針對(duì)以上入出棧操作針對(duì)遞減、滿棧遞減、滿棧結(jié)構(gòu)。結(jié)構(gòu)。(8) 堆棧尋址堆棧尋址15200HACCSPX棧頂棧頂200H棧底棧底主存主存151FFHACCSP15棧頂棧頂200H棧底棧底主存主存X1FFHPUSH A 前前PUSH A 后后POP A 前前POP A 后后Y1FFHACCSPX棧頂棧頂200H棧底棧底主存主存151FFH15200HACCSP棧頂棧頂200H棧底棧底主存主存X15堆棧尋址舉例堆棧尋址舉例輸入設(shè)備輸入設(shè)備輸出設(shè)備輸出設(shè)備入出接口和總線入出接口和總線外存設(shè)備外存設(shè)備主存儲(chǔ)器主存儲(chǔ)器高速緩存高速緩存控控

21、 制制 器器運(yùn)運(yùn) 算算 器器ADDSUBANDORMVRRSHRRCLOUTSTORE PUSHJUMPJRCCALLRETLOAD POPIN計(jì)算機(jī)應(yīng)配置的基本指令計(jì)算機(jī)應(yīng)配置的基本指令教學(xué)機(jī)的基本指令教學(xué)機(jī)的基本指令(29條條)算術(shù)邏輯運(yùn)算指令算術(shù)邏輯運(yùn)算指令 ADD、SUB、AND、XOR、TEST、 CMP、 OR、DEC、 INC、SHL、SHR數(shù)據(jù)移動(dòng)指令數(shù)據(jù)移動(dòng)指令 MVRR、MVRD、LDRR、STRR堆棧操作指令堆棧操作指令 PUSH、POP、PSHF、POPF輸入輸出指令輸入輸出指令 IN、OUT轉(zhuǎn)移指令轉(zhuǎn)移指令 JMPA、JR、JRC、JRNC、JRZ、JRNZ子程序調(diào)用

22、與返回指令子程序調(diào)用與返回指令 CALA、RETMV: MOVELD: LOADST: STORE SH: SHIFTJMP: JUMPCAL: CALLRET: RETURNJR: JUMP RELATIVER: REGISTERD: DATAA: ADDRESSF: FLAGS 指令命名規(guī)則指令命名規(guī)則l 請(qǐng)說明下列各指令的尋址方式、指令字格式及長度、執(zhí)行請(qǐng)說明下列各指令的尋址方式、指令字格式及長度、執(zhí)行時(shí)訪問存儲(chǔ)器時(shí)訪問存儲(chǔ)器/外設(shè)次數(shù)。外設(shè)次數(shù)。 1、數(shù)據(jù)傳送類:、數(shù)據(jù)傳送類: MVRR R1, R2 MVRD R1, 2003 LDRR R1, R2 LDRA R1, 2003 LD

23、RX R1, R22003 2、算術(shù)運(yùn)算類:、算術(shù)運(yùn)算類:ADD R1, R2 INC R1 3、轉(zhuǎn)移類:、轉(zhuǎn)移類:JMPA 2003 ,JR 2003 4、堆棧類:、堆棧類:PUSH R0l 你覺得教材的指令系統(tǒng)中為什么沒有包含以下指令?你覺得教材的指令系統(tǒng)中為什么沒有包含以下指令? ADRD R1, 0001 ADRR R1,R2 ADRA R1,0001思考題思考題教學(xué)機(jī)指令格式教學(xué)機(jī)指令格式單字無數(shù)單字無數(shù)單字單數(shù)單字單數(shù)單字雙數(shù)單字雙數(shù)雙字單數(shù)雙字單數(shù)雙字雙數(shù)雙字雙數(shù)8位操作碼位操作碼IR15-IR8含義含義00 0 0 0000 DR SRADD DR,SR00 0 0 0111

24、DR SRMVRR DR,SR10 0 0 0001 DR SRLDRR DR,SR11 1 0 0100 DR 0000LDRA DR,ADR11 0 0 1110 00000000CALA ADR指令格式指令格式匯編語句匯編語句操作數(shù)操作數(shù)個(gè)數(shù)個(gè)數(shù)CZVS指令指令類型類型功能說明功能說明00000000 DR SR00000001 DR SR00000010 DR SR00000011 DR SR00000100 DR SR00000101 DR SR00000110 DR SR00000111 DRSR00001000 DR000000001001 DR000000001010 DR00

25、0000001011 DR000001000001 OFFSET01000100 OFFSET01000101 OFFSET01000110 OFFSET01000111 OFFSETADD DR,SRSUB DR,SRAND DR,SRCMP DR,SRXOR DR,SRTEST DR,SROR DR,SRMVRR DR,SRDEC DRINC DRSHL DRSHR DRJR ADRJRC ADRJRNC ADRJRZ ADRJRNZ ADR22222222111111111*A組組指指令令DRDR + SRDRDRSRDRDR and SRDRSRDRDR xor SRDR and SR

26、DRDR or SRDRSRDRDR-1DRDR+1DR,CDR*2DR,CDR/2無條件跳轉(zhuǎn)到無條件跳轉(zhuǎn)到ADRC=1時(shí)跳轉(zhuǎn)到時(shí)跳轉(zhuǎn)到 ADRC=0時(shí)跳轉(zhuǎn)到時(shí)跳轉(zhuǎn)到 ADRZ=1時(shí)跳轉(zhuǎn)到時(shí)跳轉(zhuǎn)到 ADRZ=0時(shí)跳轉(zhuǎn)到時(shí)跳轉(zhuǎn)到 ADR10000000 0000000ADR(16位)位)10000001 DRSR10000010 I/O PORT10000011 DRSR10000100 0000000010000101 0000SR10000110 I/O PORT10000111 DR000010001000 DR0000DATA(16位)位)10001100 000000001000111

27、1 00000000JMPA ADRLDRR DR,SRIN I/O PORTSTRR DR,SRPSHFPUSH SROUT I/O PORTPOP DRMVRD DR,DATAPOPFRET12120111200*B組組指指令令無條件跳到無條件跳到ADRDRSRR0I/O PORTDRSRFLAG入棧入棧SR入棧入棧I/O PORTR0DR出棧出棧DRDATAFLAG出棧出棧子程序返回子程序返回11001110 00000000 CALA ADR 1D組組調(diào)用首地址為調(diào)用首地址為ADR的的子程序子程序16位位教教學(xué)學(xué)計(jì)計(jì)算算機(jī)機(jī)基基本本指指令令系系統(tǒng)統(tǒng)(1) 從指令從指令字長字長分分ADD

28、 DR,SR 1字字JMPA ADR 2字字ADD R1,R2 (R1-R2+R1)機(jī)器碼:機(jī)器碼:0000 0000 0010 001JMPA 2003機(jī)器碼:機(jī)器碼:10000000 0000 0000 0010 0000 0000 0011指令格式分類指令格式分類(2) 從操作數(shù)從操作數(shù)個(gè)數(shù)個(gè)數(shù)分分CLC 無操作數(shù)無操作數(shù)JMPA ARD 單操作數(shù)單操作數(shù)LDRR DR,SR 雙操作數(shù)雙操作數(shù)CLC機(jī)器碼:機(jī)器碼:01101100 00000000JMPA 2003 機(jī)器碼:機(jī)器碼:10000000 00000000 0010 0000 0000 0011LDRR R1, R5 機(jī)器碼:

29、機(jī)器碼:10000001 0001 0101(單操作數(shù)指令字長不一定短)(單操作數(shù)指令字長不一定短)寄存器,如寄存器,如ADD R1,R0寄存器間址,如寄存器間址,如LDRR R1,R0立即數(shù),如立即數(shù),如MVRD R1,1000直接,如直接,如JMPA 3000堆棧,如堆棧,如PUSH R2變址,如變址,如LDRX R0,10R1相對(duì),如相對(duì),如JR 2030IO端口,如端口,如IN 80指令尋址方式分類指令尋址方式分類運(yùn)算類,如運(yùn)算類,如ADD R0,R1 加加讀寫內(nèi)存類,如讀寫內(nèi)存類,如LDRR R1,R0 讀內(nèi)存讀內(nèi)存輸入輸出指令,如輸入輸出指令,如IN 80 讀讀I/O端口端口轉(zhuǎn)移指

30、令,如轉(zhuǎn)移指令,如JR 2003 相對(duì)跳轉(zhuǎn)相對(duì)跳轉(zhuǎn)子程序類,如子程序類,如CALA 2003 子程序調(diào)用子程序調(diào)用清清/置標(biāo)志位指令,如置標(biāo)志位指令,如STC 置置C標(biāo)志位標(biāo)志位堆棧類,如堆棧類,如PUSH R0 進(jìn)棧進(jìn)棧其他其他指令功能分類指令功能分類u 1步(步(A組)組):數(shù)據(jù)在:數(shù)據(jù)在CPU內(nèi)部寄存器內(nèi)部寄存器之間計(jì)算和傳送。之間計(jì)算和傳送。如如ADD DR,SRu 2步(步(B組)組):訪問:訪問一次內(nèi)存一次內(nèi)存或或I/O。(1)地址送)地址送 地址寄存器地址寄存器AR;(2)內(nèi)存內(nèi)存讀寫。如讀寫。如LDRR DR,SR; LDRR DR,SRu 4步(步(D組組):訪問):訪問兩次

31、兩次內(nèi)存或內(nèi)存或I/O。如。如CALA ADRu 3步(步(C組):組):對(duì)對(duì)D組某些指令優(yōu)化。如組某些指令優(yōu)化。如LDRA DR,ADR(1)將地址值送地址寄存器)將地址值送地址寄存器AR(2)讀內(nèi)存讀內(nèi)存(讀回的是地址),(讀回的是地址),并送往地址寄存器并送往地址寄存器AR(3)讀內(nèi)存讀內(nèi)存(讀回的是數(shù)據(jù)),(讀回的是數(shù)據(jù)),并送往寄存器并送往寄存器從取指后指令的執(zhí)行步驟分類從取指后指令的執(zhí)行步驟分類練習(xí)練習(xí)1. P166 第第19題題2. 假設(shè)采用假設(shè)采用2片片AM2901構(gòu)成一臺(tái)構(gòu)成一臺(tái)8位教學(xué)計(jì)算機(jī)位教學(xué)計(jì)算機(jī)的運(yùn)算器,也要實(shí)現(xiàn)的運(yùn)算器,也要實(shí)現(xiàn)29條基本指令功能,請(qǐng)為該條基本指令

32、功能,請(qǐng)為該教學(xué)計(jì)算機(jī)設(shè)計(jì)一套指令系統(tǒng)。教學(xué)計(jì)算機(jī)設(shè)計(jì)一套指令系統(tǒng)。教學(xué)計(jì)算機(jī)匯編程序設(shè)計(jì)使用說明教學(xué)計(jì)算機(jī)匯編程序設(shè)計(jì)使用說明u 教學(xué)計(jì)算機(jī)中有教學(xué)計(jì)算機(jī)中有8K*16bit的的ROM(0000H1FFFH,存,存放監(jiān)控程序)及放監(jiān)控程序)及2K*16bit的的RAM(2000H28FFH,存放用,存放用戶程序及數(shù)據(jù))戶程序及數(shù)據(jù))u 16個(gè)寄存器個(gè)寄存器R0R15:R4用作堆棧指針用作堆棧指針SP;R5用作程序用作程序計(jì)數(shù)器計(jì)數(shù)器PC;其余用作通用寄存器;其余用作通用寄存器。u 教學(xué)計(jì)算機(jī)通過教學(xué)計(jì)算機(jī)通過COM1與仿真終端與仿真終端PC機(jī)相連,可實(shí)現(xiàn)機(jī)相連,可實(shí)現(xiàn)交叉交叉匯編、數(shù)據(jù)傳輸匯

33、編、數(shù)據(jù)傳輸?shù)炔僮?。?shù)據(jù)輸入等操作。數(shù)據(jù)輸入/輸出地址為輸出地址為80H,控制,控制/狀狀態(tài)輸入態(tài)輸入/輸出地址為輸出地址為81H。教學(xué)計(jì)算機(jī)匯編程序示例教學(xué)計(jì)算機(jī)匯編程序示例例例1 在屏幕上輸出顯示字符在屏幕上輸出顯示字符6。A 2000 ;從從2000H(內(nèi)存(內(nèi)存RAM區(qū)起始地址)開始匯編區(qū)起始地址)開始匯編2000: MVRD R0,00362002: OUT 802003: RET2004: (按回車鍵即結(jié)束源程序的輸入過程)(按回車鍵即結(jié)束源程序的輸入過程)A 20002000: IN 812001: SHR R02002: SHR R02003: JRNC 20002004: I

34、N 802005: OUT 802006: RET教學(xué)計(jì)算機(jī)匯編程序示例教學(xué)計(jì)算機(jī)匯編程序示例例例2 從鍵盤接受一個(gè)字符并將其顯示到屏幕上。從鍵盤接受一個(gè)字符并將其顯示到屏幕上。AA: IN 81 SHR R0 SHR R0 JRNC AA IN 80 OUT 80 RET教學(xué)計(jì)算機(jī)匯編程序示例教學(xué)計(jì)算機(jī)匯編程序示例例例3 在屏幕上依次輸出字符在屏幕上依次輸出字符0到到9 。A 2020 MVRD R2,000A ;10個(gè)個(gè) MVRD R0,0030 ;字符字符0(2024) OUT 80 ;輸出輸出R0低字節(jié)低字節(jié) PUSH R0 ;保存保存R0(2026) IN 81 ;讀串行接口狀態(tài),讀

35、串行接口狀態(tài), SHR R0 ; JRNC 2026 ;若串行輸出未完成,則再讀串口狀態(tài)若串行輸出未完成,則再讀串口狀態(tài) POP R0 ; 恢復(fù)恢復(fù)R0 DEC R2 ;個(gè)數(shù)減個(gè)數(shù)減1 JRZ 202E ;若全部輸出,則轉(zhuǎn)到結(jié)束處若全部輸出,則轉(zhuǎn)到結(jié)束處 INC R0 ;得到下一個(gè)要輸出的字符得到下一個(gè)要輸出的字符 JR 2024 ;繼續(xù)輸出字符繼續(xù)輸出字符(202E) RET串行接口狀態(tài)的串行接口狀態(tài)的D0位是發(fā)送完成標(biāo)志,位是發(fā)送完成標(biāo)志,1-完成,完成,0-未完成未完成教學(xué)計(jì)算機(jī)匯編程序示例教學(xué)計(jì)算機(jī)匯編程序示例例例4 接收鍵盤上輸入的數(shù)字字符并在屏幕上顯示,非數(shù)字符結(jié)束。接收鍵盤上輸入

36、的數(shù)字字符并在屏幕上顯示,非數(shù)字符結(jié)束。A 2040 MVRD R2,0030 ;字符下界字符下界 MVRD R3,0039 ;字符上界字符上界(2044) IN 81 ;讀串口狀態(tài)讀串口狀態(tài) SHR R0 SHR R0 JRNC 2044 ;尚沒有輸入則循環(huán)測試尚沒有輸入則循環(huán)測試 IN 80 ;把輸入字符讀到把輸入字符讀到R0低位字節(jié)低位字節(jié) MVRD R1, 00FF AND R0, R1 ;將將R0的高位字節(jié)清的高位字節(jié)清0 CMP R0, R2 ; 字符字符 9 ? JRC 2053 ;大于,轉(zhuǎn)結(jié)束大于,轉(zhuǎn)結(jié)束 OUT 80 ;輸出字符輸出字符 JMPA 2044 ;循環(huán)循環(huán)(205

37、3) RET串行接口狀態(tài)的串行接口狀態(tài)的D1位是接收標(biāo)志,位是接收標(biāo)志,1-收到,收到,0-未收到未收到教學(xué)計(jì)算機(jī)匯編程序示例教學(xué)計(jì)算機(jī)匯編程序示例例例5 用子程序?qū)崿F(xiàn):讀出指定內(nèi)存中的大寫字母顯示到屏幕用子程序?qū)崿F(xiàn):讀出指定內(nèi)存中的大寫字母顯示到屏幕上,并轉(zhuǎn)換為小寫后再寫回原存儲(chǔ)單元。上,并轉(zhuǎn)換為小寫后再寫回原存儲(chǔ)單元。E 20F0 (送入字符(送入字符AF到到20F0開始的存儲(chǔ)區(qū)域中)開始的存儲(chǔ)區(qū)域中) 41 42 43 44 45 46A 2080 MVRD R3, 0006 ;被讀字符個(gè)數(shù)被讀字符個(gè)數(shù) MVRD R2, 20F0 ;數(shù)據(jù)內(nèi)存區(qū)首地址數(shù)據(jù)內(nèi)存區(qū)首地址(2084) CALA 2100 ;調(diào)子程序調(diào)子程序(入口為入口為2100),完成讀出、,完成讀出、 ;顯示、轉(zhuǎn)

溫馨提示

  • 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)論