




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1微機(jī)(wi j)原理與接口技術(shù)大家(dji)好!共六百八十二頁(yè)2課程目標(biāo)掌握:微型計(jì)算機(jī)的基本工作原理匯編語(yǔ)言程序設(shè)計(jì)方法(fngf)微型計(jì)算機(jī)接口技術(shù)建立微型計(jì)算機(jī)系統(tǒng)的整體概念,形成微機(jī)系統(tǒng)軟硬件開(kāi)發(fā)的初步能力共六百八十二頁(yè)3教材(jioci)及實(shí)驗(yàn)指導(dǎo)書(shū)教材:微機(jī)原理(yunl)與接口技術(shù)(第3版). 馮博琴,吳寧主編. 清華大學(xué)出版社實(shí)驗(yàn)指導(dǎo)書(shū)微機(jī)原理與接口技術(shù)實(shí)驗(yàn)指導(dǎo)書(shū)(講義) 陳文革,吳寧,夏秦編. 西安交通大學(xué)微機(jī)原理與接口技術(shù)題解及實(shí)驗(yàn)指導(dǎo)(第3版). 吳寧,陳文革編. 清華大學(xué)出版社共六百八十二頁(yè)4第1章 微型計(jì)算機(jī)基礎(chǔ)(jch)概論主要(zhyo)內(nèi)容:微機(jī)系統(tǒng)的組成計(jì)算
2、機(jī)中的編碼、數(shù)制及其轉(zhuǎn)換無(wú)符號(hào)二進(jìn)制數(shù)的運(yùn)算算術(shù)運(yùn)算和邏輯運(yùn)算運(yùn)算中的溢出機(jī)器數(shù)的表示及運(yùn)算基本邏輯門(mén)及譯碼器共六百八十二頁(yè)5一、微型(wixng)計(jì)算機(jī)系統(tǒng)微型機(jī)的工作原理微機(jī)(wi j)系統(tǒng)的基本組成共六百八十二頁(yè)61. 計(jì)算機(jī)的工作(gngzu)原理馮 諾依曼計(jì)算機(jī)的工作原理(yunl) 存儲(chǔ)程序工作原理共六百八十二頁(yè)7存儲(chǔ)(cn ch)程序原理將計(jì)算過(guò)程描述為由許多條指令按一定順序(shnx)組成的程序,并放入存儲(chǔ)器保存指令按其在存儲(chǔ)器中存放的順序執(zhí)行;由控制器控制整個(gè)程序和數(shù)據(jù)的存取以及程序的執(zhí)行。共六百八十二頁(yè)8馮 諾依曼計(jì)算機(jī)體系結(jié)構(gòu)運(yùn)算器存儲(chǔ)器控制器輸入(shr)設(shè)備輸出設(shè)備(
3、sh ch sh bi)共六百八十二頁(yè)9馮 諾依曼機(jī)的工作(gngzu)過(guò)程內(nèi)存(ni cn)中的程序指令1指令2指令n分析獲取操作數(shù)執(zhí)行存放結(jié)果程序計(jì)數(shù)器PC地址CPU取出操作數(shù)共六百八十二頁(yè)10馮 諾依曼機(jī)的工作(gngzu)過(guò)程取一條指令(zhlng)的工作過(guò)程:將指令所在地址賦給程序計(jì)數(shù)器PC;PC內(nèi)容送到地址寄存器AR,PC自動(dòng)加1;把AR的內(nèi)容通過(guò)地址總線送至內(nèi)存儲(chǔ)器,經(jīng)地址譯碼器譯碼,選中相應(yīng)單元。CPU的控制器發(fā)出讀命令。在讀命令控制下,把所選中單元的內(nèi)容(即指令操作碼)讀到數(shù)據(jù)總線DB。把讀出的內(nèi)容經(jīng)數(shù)據(jù)總線送到數(shù)據(jù)寄存器DR。指令譯碼因?yàn)槿〕龅氖侵噶畹牟僮鞔a,故數(shù)據(jù)寄存器D
4、R把它送到指令寄存器IR,然后再送到指令譯碼器ID 共六百八十二頁(yè)馮 諾依曼機(jī)的特點(diǎn)(tdin)和不足特點(diǎn):程序存儲(chǔ),共享數(shù)據(jù),順序執(zhí)行屬于順序處理機(jī),適合于確定的算法和數(shù)值數(shù)據(jù)的處理。不足:與存儲(chǔ)器間有大量數(shù)據(jù)交互,對(duì)總線要求(yoqi)很高;執(zhí)行順序有程序決定,對(duì)大型復(fù)雜任務(wù)較困難;以運(yùn)算器為核心,處理效率較低;由PC控制執(zhí)行順序,難以進(jìn)行真正的并行處理。11共六百八十二頁(yè)典型(dinxng)的非馮 諾依曼機(jī)結(jié)構(gòu)數(shù)據(jù)流驅(qū)動(dòng)的計(jì)算機(jī)結(jié)構(gòu)當(dāng)指令具有所需數(shù)據(jù)(shj)、且輸出端沒(méi)有數(shù)據(jù)(shj)時(shí)就可執(zhí)行。12Dataflow Image Processing System共六百八十二頁(yè)132.
5、 系統(tǒng)(xtng)組成 主機(jī) 硬件系統(tǒng)(xtng) 外設(shè) 微機(jī)系統(tǒng) 系統(tǒng)軟件 軟件系統(tǒng) 應(yīng)用軟件CPU存儲(chǔ)器輸入/輸出接口總線共六百八十二頁(yè)14微處理器微處理器簡(jiǎn)稱CPU,是計(jì)算機(jī)的核心。主要(zhyo)包括: 運(yùn)算器 控制器 寄存器組共六百八十二頁(yè)15存儲(chǔ)器定義:用于存放計(jì)算機(jī)工作過(guò)程中需要(xyo)操作的數(shù)據(jù)和程序。共六百八十二頁(yè)16有關(guān)(yugun)內(nèi)存儲(chǔ)器的幾個(gè)概念內(nèi)存單元的地址和內(nèi)容(nirng)內(nèi)存容量?jī)?nèi)存的操作內(nèi)存的分類(lèi)共六百八十二頁(yè)17內(nèi)存(ni cn)單元的地址和內(nèi)容內(nèi)存(ni cn)按單元組織每單元都對(duì)應(yīng)一個(gè)地址,以方便對(duì)單元的尋址1011011038F04H內(nèi)存地址單元內(nèi)
6、容共六百八十二頁(yè)18內(nèi)存容量?jī)?nèi)存容量:所含存儲(chǔ)單元的個(gè)數(shù),以字節(jié)為單位內(nèi)存容量的大小依CPU的尋址能力(nngl)而定實(shí)地址模式下為CPU地址信號(hào)線的位數(shù)共六百八十二頁(yè)19內(nèi)存(ni cn)操作讀:將內(nèi)存單元(dnyun)的內(nèi)容取入CPU,原單元內(nèi)容不改變;寫(xiě):CPU將信息放入內(nèi)存單元,單元中原來(lái)的內(nèi)容被覆蓋。共六百八十二頁(yè)20內(nèi)存儲(chǔ)器(ni cn ch q)的分類(lèi)隨機(jī)存取存儲(chǔ)器(RAM)只讀存儲(chǔ)器(ROM)按工作(gngzu)方式可分為共六百八十二頁(yè)21輸入(shr)/輸出接口接口是CPU與外部設(shè)備(wi b sh bi)間的橋梁CPUI/O接口外設(shè)共六百八十二頁(yè)22接口(ji ku)的分類(lèi)
7、串行接口并行接口數(shù)字接口(ji ku)模擬接口輸入接口輸出接口共六百八十二頁(yè)23接口(ji ku)的功能數(shù)據(jù)緩沖寄存;信號(hào)電平(din pn)或類(lèi)型的轉(zhuǎn)換;實(shí)現(xiàn)主機(jī)與外設(shè)間的運(yùn)行匹配。共六百八十二頁(yè)24總線(zn xin)基本概念分類(lèi)工作原理常用系統(tǒng)總線標(biāo)準(zhǔn)(biozhn)及其主要技術(shù)指標(biāo) (具體內(nèi)容見(jiàn)后續(xù)課程)共六百八十二頁(yè)25軟件系統(tǒng)軟件:為運(yùn)行、管理和維護(hù)計(jì)算機(jī)系統(tǒng)或?yàn)閷?shí)現(xiàn)某一功能而編寫(xiě)的各種程序(chngx)的總和及其相關(guān)資料。系統(tǒng)軟件(x tn run jin)應(yīng)用軟件操作系統(tǒng)編譯系統(tǒng)網(wǎng)絡(luò)系統(tǒng)工具軟件軟件共六百八十二頁(yè)26二、計(jì)算機(jī)中的數(shù)制和編碼(bin m)數(shù)制和編碼的表示各種計(jì)數(shù)
8、(j sh)制之間的相互轉(zhuǎn)換共六百八十二頁(yè)271. 常用(chn yn)計(jì)數(shù)法 十進(jìn)制(D) 二進(jìn)制(B) 十六進(jìn)制(sh li jn zh)(H)共六百八十二頁(yè)28例:234.98D或(234.98)D1101.11B或(1101.11)BABCD . BFH或(ABCD . BF) H共六百八十二頁(yè)292. 各種( zhn)進(jìn)制數(shù)間的轉(zhuǎn)換非十進(jìn)制數(shù)到十進(jìn)制數(shù)的轉(zhuǎn)換(zhunhun)十進(jìn)制到非十進(jìn)制數(shù)的轉(zhuǎn)換二進(jìn)制與十六進(jìn)制數(shù)之間的轉(zhuǎn)換 共六百八十二頁(yè)30非十進(jìn)制數(shù)到十進(jìn)制數(shù)的轉(zhuǎn)換(zhunhun)按相應(yīng)(xingyng)的權(quán)值表達(dá)式展開(kāi)例:1011.11B=123+022+121+120+1
9、2-1+ 12-2 =8+2+1+0.5+0.25 =11.755B.8H=5161+11160+816-1 =80+11+0.5 =91.5共六百八十二頁(yè)31十進(jìn)制到非十進(jìn)制數(shù)的轉(zhuǎn)換(zhunhun)到二進(jìn)制的轉(zhuǎn)換: 對(duì)整數(shù)(zhngsh):除2取余; 對(duì)小數(shù):乘2取整。到十六進(jìn)制的轉(zhuǎn)換: 對(duì)整數(shù):除16取余; 對(duì)小數(shù):乘16取整。共六百八十二頁(yè)32二進(jìn)制與十六進(jìn)制(sh li jn zh)間的轉(zhuǎn)換用4位二進(jìn)制數(shù)表示(biosh)1位十六進(jìn)制數(shù)例:25.5 = 11001.1B = 19.8H 11001010.0110101B =CA.6AH共六百八十二頁(yè)333. 計(jì)算機(jī)中的編碼(bin
10、m)BCD碼用二進(jìn)制編碼表示的十進(jìn)制數(shù)ASCII碼西文字符(z f)編碼共六百八十二頁(yè)34BCD碼壓縮(y su)BCD碼用4位二進(jìn)制碼表示一位十進(jìn)制數(shù)每4位之間有一個(gè)空格擴(kuò)展BCD碼用8位二進(jìn)制碼表示一位十進(jìn)制數(shù),每4位之間有一個(gè)空格。共六百八十二頁(yè)35BCD碼與二進(jìn)制數(shù)之間的轉(zhuǎn)換(zhunhun)先轉(zhuǎn)換(zhunhun)為十進(jìn) 制數(shù),再轉(zhuǎn)換(zhunhun)二進(jìn) 制數(shù);反之同樣。例:(0001 0001 .0010 0101)BCD =11 .25 =(1011 .01) B共六百八十二頁(yè)36ASCII碼西文 字符的編碼(bin m),一般用7位二進(jìn) 制碼表示。D7位為校驗(yàn)位,默認(rèn)情況下為
11、0。要求:理解校驗(yàn)位的作用熟悉0F的ASCII碼共六百八十二頁(yè)37ASCII碼的奇偶校驗(yàn)奇校驗(yàn)加上校驗(yàn)位后編碼中“1”的個(gè)數(shù)為奇數(shù)(j sh)。例:A的ASCII碼是41H(1000001B)以奇校驗(yàn)傳送則為 C1H(11000001B)偶校驗(yàn)加上校驗(yàn)位后 編碼中“1”的個(gè)數(shù)為偶數(shù)。上例若以偶校驗(yàn)傳送,則為 41H。共六百八十二頁(yè)38三、無(wú)符號(hào)(fho)二進(jìn)制數(shù)的運(yùn)算算術(shù)(sunsh)運(yùn)算邏輯運(yùn)算無(wú)符號(hào)數(shù)有符號(hào)數(shù)二進(jìn) 制數(shù)的運(yùn)算共六百八十二頁(yè)39主要(zhyo)內(nèi)容無(wú)符號(hào)二進(jìn) 制數(shù)的算術(shù)運(yùn)算無(wú)符號(hào)數(shù)的表達(dá)范圍運(yùn)算中的溢出問(wèn)題(wnt)無(wú)符號(hào)數(shù)的邏輯運(yùn)算基本邏輯門(mén)和譯碼器共六百八十二頁(yè)401.
12、無(wú)符號(hào)(fho)數(shù)的算術(shù)運(yùn)算加法運(yùn)算1+1=0(有進(jìn)位(jnwi))減法運(yùn)算0-1=1(有借位)乘法運(yùn)算除法運(yùn)算共六百八十二頁(yè)41乘除(chngch)運(yùn)算例000010110100 =00101100B 000010110100=00000010B 即:商=00000010B 余數(shù)(ysh)=11B共六百八十二頁(yè)422. 無(wú)符號(hào)(fho)數(shù)的表示范圍: 0 X 2n-1若運(yùn)算結(jié)果超出這個(gè)范圍,則產(chǎn)生溢出。對(duì)無(wú)符號(hào)數(shù):運(yùn)算時(shí),當(dāng)最高位(o wi)向更高位(o wi) 有進(jìn)位(或借位)時(shí)則產(chǎn)生 溢出。共六百八十二頁(yè)43例: 最高位向前(xin qin)有進(jìn)位,產(chǎn)生溢出共六百八十二頁(yè)443. 邏輯運(yùn)
13、算與、或、非、異或掌握:與、或、非門(mén)邏輯(lu j)符號(hào)和邏輯(lu j)關(guān)系(真值表);與非門(mén)、或非門(mén)的應(yīng)用。共六百八十二頁(yè)45“與”、“或”運(yùn)算(yn sun)“與”運(yùn)算:任何(rnh)數(shù)和“0”相“與”,結(jié)果為0?!盎颉边\(yùn)算:任何數(shù)和“1”相“或”,結(jié)果為1。&11共六百八十二頁(yè)46“非”、“異或”運(yùn)算(yn sun)“非”運(yùn)算按位求反“異或”運(yùn)算相同(xin tn)則為0,相異則為1共六百八十二頁(yè)474. 譯碼器掌握74LS138譯碼器各引腳功能輸入端與輸出(shch)端關(guān)系(真值表)共六百八十二頁(yè)4874LS138譯碼器G1G2AG2BCBAY0Y7 主要(zhyo)引腳及功能共六百
14、八十二頁(yè)49三、機(jī)器數(shù)(有符號(hào)(fho)數(shù))的運(yùn)算共六百八十二頁(yè)50計(jì)算機(jī)中符號(hào)(fho)數(shù)的表示機(jī)器數(shù)計(jì)算機(jī)中的數(shù)據(jù)(shj)構(gòu)成:符號(hào)位 + 真值 “0” 表示正“1” 表示負(fù)共六百八十二頁(yè)51例 +52 = +0110100 = 0 0110100 符號(hào)(fho)位 真值-52 = -0110100 = 1 0110100 符號(hào)(fho)位 真值共六百八十二頁(yè)521. 符號(hào)(fho)數(shù)的表示機(jī)器(j q)數(shù)的表示方法:原碼反碼補(bǔ)碼共六百八十二頁(yè)53原碼(yun m)最高位為符號(hào)位(用“0”表示正,用“1”表示負(fù)),其余為真值部分(b fen)。優(yōu)點(diǎn): 真值和其原碼表示之間的對(duì)應(yīng)關(guān)系簡(jiǎn)單,
15、容易理解;缺點(diǎn):計(jì)算機(jī)中用原碼進(jìn)行加減運(yùn)算比較困難0的表示不唯一。共六百八十二頁(yè)54數(shù)0的原碼(yun m)8位數(shù)0的原碼(yun m):+0=0 0000000 -0=1 0000000 即:數(shù)0的原碼不唯一。共六百八十二頁(yè)55反碼(fn m)對(duì)一個(gè)機(jī)器(j q)數(shù)X:若X0 ,則 X反=X原若X0, 則X補(bǔ)= X反= X原若X BX 若 AX BX OF和SF狀態(tài)不同 AX BX共六百八十二頁(yè)239CMP指令(zhlng)例 LEA BX,MAX LEA SI,BUF MOV CL,20 MOV AL,SINEXT:INC SI CMP AL,SI JNC GOON ;CF=0轉(zhuǎn)移(zhu
16、ny) XCHG SI,ALGOON:DEC CL JNZ NEXT MOV BX,AL HLT共六百八十二頁(yè)240程序(chngx)功能 MAXBUFXXHXXHXXH在20個(gè)數(shù)中找最大的數(shù),并將其存放(cnfng)在MAX單元中。共六百八十二頁(yè)241三、乘法(chngf)指令無(wú)符號(hào)的乘法(chngf)指令MUL*帶符號(hào)的乘法指令I(lǐng)MUL注意點(diǎn):乘法指令采用隱含尋址,隱含的是存放被乘數(shù)的累加器AL或AX及存放結(jié)果的AX,DX.共六百八十二頁(yè)2421. 無(wú)符號(hào)(fho)數(shù)乘法指令格式: MUL OPRD 不能是立即(lj)數(shù)操作: OPRD為字節(jié)數(shù) OPRD為16位數(shù) ALOPRDAXOPRD
17、DXAXAX共六百八十二頁(yè)243無(wú)符號(hào)(fho)數(shù)乘法指令例MUL BYTE PTRBX BXXXHAL XXHAX共六百八十二頁(yè)244四、除法(chf)指令無(wú)符號(hào)(fho)除法指令格式:DIV OPRD有符號(hào)除法指令格式:IDIV OPRD共六百八十二頁(yè)245除法指令(zhlng)的操作若OPRD是字節(jié)數(shù)執(zhí)行:AX/OPRD 結(jié)果(ji gu):AL=商 AH=余數(shù)若OPRD是雙字節(jié)數(shù)執(zhí)行: DXAX/OPRD結(jié)果:AX=商 DX=余數(shù)指令要求被除數(shù)是除數(shù)的雙倍字長(zhǎng)共六百八十二頁(yè)246五、BCD碼調(diào)整(tiozhng)指令將指令執(zhí)行的二進(jìn)制運(yùn)算結(jié)果調(diào)整為壓縮BCD碼或擴(kuò)展BCD碼表示的十進(jìn)制
18、數(shù)。共6條,均為隱含(yn hn)尋址方式,隱含(yn hn)的操作數(shù)是 AL或AL、AH;不能單獨(dú)使用,要緊跟在相應(yīng)的算術(shù)運(yùn)算指令 之后;共六百八十二頁(yè)247邏輯運(yùn)算和移位指令共六百八十二頁(yè)248指令(zhlng)類(lèi)型邏輯運(yùn)算與,或,非,異或移位操作(cozu)非循環(huán)移位,循環(huán)移位共六百八十二頁(yè)249 一、邏輯運(yùn)算邏輯運(yùn)算指令(zhlng)對(duì) 操作數(shù)的 要求大多與MOV指令 相同?!胺恰边\(yùn)算指令 要求操作數(shù) 不能是立即數(shù);除“非”運(yùn)算指令 外,其余指令的執(zhí)行都會(huì)使標(biāo)志位OF=CF=0共六百八十二頁(yè)2501.“與”指令(zhlng):格式(g shi): AND OPRD1,OPRD2操作:
19、兩操作數(shù)相“與”,結(jié)果送目標(biāo)地址。共六百八十二頁(yè)251“與”指令(zhlng)的應(yīng)用實(shí)現(xiàn)兩操作數(shù) 按位相與的 運(yùn)算AND BL,SI使目標(biāo)(mbio)操作數(shù)的 某些位不變,某些位清零AND AL,0FH在操作數(shù) 不變的 情況下使CF和OF清零AND AX,AX共六百八十二頁(yè)252“與”指令(zhlng)應(yīng)用例從地址為3F8H 端口中讀入一個(gè)字節(jié)數(shù),如果該數(shù) bit1位為1,則可從38FH端口將DATA為首(wishu)地址的 一個(gè)字輸出,否則就不能進(jìn)行數(shù) 據(jù)傳送。 編寫(xiě)相應(yīng)的 程序段。共六百八十二頁(yè)253“與”指令(zhlng)應(yīng)用例開(kāi) 始取待輸出數(shù)的偏移(pin y)地址讀入狀態(tài)字測(cè)試bit
20、1位狀態(tài)Bit1=1?取輸入口地址取輸出口地址 輸出一個(gè)字NY共六百八十二頁(yè)254“與”指令(zhlng)應(yīng)用例 LEA SI,DATA MOV DX,3F8HWATT:IN AL,DX AND AL,02H JZ WATT ;ZF=1轉(zhuǎn)移(zhuny) MOV DX,38FH MOV AX,SI OUT DX,AX共六百八十二頁(yè)2552.“或”運(yùn)算(yn sun)指令格式(g shi): OR OPRD1,OPRD2操作: 兩操作數(shù)相“或”,結(jié)果送目標(biāo)地址共六百八十二頁(yè)256“或”指令(zhlng)的應(yīng)用實(shí)現(xiàn)兩操作數(shù) 相 “或”的 運(yùn)算OR AX,DI使某些位不變,某些位置“1”O(jiān)R CL,
21、0FH在不改變(gibin)操作數(shù)的 情況下使OF=CF=0OR AX,AX共六百八十二頁(yè)257“或”指令(zhlng)的應(yīng)用例 OR AL,AL JPE GOON OR AL,80H GOON:.PF=1轉(zhuǎn)移(zhuny)共六百八十二頁(yè)258“或”指令(zhlng)的應(yīng)用將一個(gè)(y )二進(jìn)制數(shù)9變?yōu)樽址?如何實(shí)現(xiàn)?共六百八十二頁(yè)2593.“非”運(yùn)算(yn sun)指令格式:NOT OPRD操作:操作數(shù)按位取反再送回原地址注:指令中的操作數(shù)不能是立即數(shù)指令的執(zhí)行對(duì)標(biāo)志(biozh)位無(wú)影響例:NOT BYTE PTRBX共六百八十二頁(yè)2604.“異或”運(yùn)算(yn sun)指令格式: XOR O
22、PRD1,OPRD2操作(cozu):兩操作數(shù)相“異或”,結(jié)果送目標(biāo)地址例: XOR BL,80H XOR AX,AX共六百八十二頁(yè)2615.“測(cè)試(csh)”指令格式: TEST OPRD1,OPRD2操作: 執(zhí)行“與”運(yùn)算,但運(yùn)算的結(jié)果不送回目標(biāo)地址。應(yīng)用:常用于測(cè)試某些(mu xi)位的狀態(tài)共六百八十二頁(yè)262例:從地址為3F8H的 端口中讀入一個(gè)字節(jié)數(shù),當(dāng)該數(shù)的 bit1, bit3, bit5位同時(shí)為1時(shí),可從38FH端口將DATA為首(wishu)地址的一個(gè)字輸出,否則就不能進(jìn)行數(shù) 據(jù)傳送。 編寫(xiě)相應(yīng)的 程序段。共六百八十二頁(yè)263源程序代碼(di m): LEA SI,DATA
23、MOV DX,3F8HWATT:IN AL,DX MOV DX,38FH MOV AX,SI OUT DX,AXAND AL,2AHCMP AL,2AHJNZ WATTTEST AL,02HJZ WATT ;ZF=1轉(zhuǎn)移(zhuny)TEST AL,08HJZ WATTTEST AL,20HJZ WATTAND AL,2AHXOR AL,2AHJNZ WATT共六百八十二頁(yè)264二、移位指令 非循環(huán)(xnhun)移位指令 循環(huán)移位指令注: 移動(dòng)一位時(shí)由指令直接(zhji)給出; 移動(dòng)兩位及以上,則移位次數(shù)由CL指定。共六百八十二頁(yè)2651. 非循環(huán)(xnhun)移位指令邏輯左移算術(shù)(sunsh
24、)左移邏輯右移算術(shù)右移共六百八十二頁(yè)266算術(shù)(sunsh)左移和邏輯左移算術(shù)(sunsh)左移指 令: SAL OPRD,1 SAL OPRD,CL邏輯左移指 令: SHL OPRD,1 SHL OPRD,CL有符號(hào)數(shù)無(wú)符號(hào)數(shù)共六百八十二頁(yè)267邏輯(lu j)右移格式(g shi): SHR OPRD,1 SHR OPRD,CL0CF無(wú)符號(hào)數(shù)的右移共六百八十二頁(yè)268邏輯(lu j)右移例:MOV AL,68HMOV CL,2SHR AL,CL0CF0 1 1 0 1 0 AL0 0 0 0 0 1 1 0 1 0 0ALCF0 00 0 0 1 1 0 1 0 ALCF0 0移動(dòng)(ydn
25、g)1次移動(dòng)2次共六百八十二頁(yè)269算術(shù)(sunsh)右移格式(g shi): SAR OPRD,1 SAR OPRD,CL有符號(hào)數(shù)的右移CF共六百八十二頁(yè)270非循環(huán)(xnhun)移位指令的應(yīng)用左移可實(shí)現(xiàn)乘法運(yùn)算右移(yu y)可實(shí)現(xiàn)除法運(yùn)算 教材p121例共六百八十二頁(yè)2712. 循環(huán)(xnhun)移位指令不帶進(jìn)位位的循環(huán)(xnhun)移位帶進(jìn)位位的循環(huán)移位左移 ROL右移 ROR左移 RCL右移 RCR指令格式、對(duì)操作數(shù)的要求與非循環(huán)移位指令相同共六百八十二頁(yè)272不帶進(jìn)位位的循環(huán)(xnhun)移位CFCF共六百八十二頁(yè)273帶進(jìn)位(jnwi)位的循環(huán)移位CFCF共六百八十二頁(yè)274循環(huán)
26、(xnhun)移位指令的應(yīng)用用于對(duì)某些位狀態(tài)的測(cè)試;高位部分和低位部分的交換;與非循環(huán)移位指令一起組成32位或更長(zhǎng)字長(zhǎng)(z chn)數(shù)的移位。P124例3-34P124例3-35共六百八十二頁(yè)275程序(chngx)功能將1000H開(kāi)始存放的4個(gè)壓縮(y su)BCD碼轉(zhuǎn)換為ASCII碼存放在3000H開(kāi)始的單元中去。12H34H56H78H1000H3000H共六百八十二頁(yè)276程序(chngx)例 MOV SI,1000H MOV DI,3000H MOV CX,4Next:MOV AL,SI MOV BL,AL AND AL,0FH OR AL,30H MOV DI,AL INC DI
27、MOV AL,BLPUSH CXMOV CL,4SHR AL,CLOR AL,30HMOV DI,ALINC DIINC SIPOP CXDEC CXJNZ NextHLT共六百八十二頁(yè)277串操作(cozu)指令共六百八十二頁(yè)278串操作(cozu)指令說(shuō)明針對(duì)數(shù)據(jù)塊或字符串的操作;可實(shí)現(xiàn)存儲(chǔ)器到存儲(chǔ)器的數(shù)據(jù)傳送(chun sn);待操作的數(shù)據(jù)串稱為源串,目標(biāo)地址稱為目標(biāo)串。共六百八十二頁(yè)279串操作指令(zhlng)的特點(diǎn)源串一般存放在數(shù)據(jù)段,偏移地址由SI指定。允許段重設(shè);目標(biāo)串必須在附加段,偏移地址由DI指定;指令自動(dòng)修改地址指針,修改方向由DF決定(judng)。 DF=0 DF=1
28、數(shù)據(jù)塊長(zhǎng)度值由CX指定可增加自動(dòng)重復(fù)前綴以實(shí)現(xiàn)自動(dòng)修改CX內(nèi)容。增地址方向;減地址方向;共六百八十二頁(yè)280重復(fù)(chngf)前綴無(wú)條件重復(fù)REP條件(tiojin)重復(fù)REPE 相等重復(fù)REPZ 為零重復(fù)REPNE 不相等重復(fù)REPNZ 不為零重復(fù)CX0 ZF=1CX0 ZF=0CX0 重復(fù)共六百八十二頁(yè)281串操作指令(zhlng)流程(以傳送操作為例)取源串地址(dzh)取目標(biāo)串地址設(shè)串長(zhǎng)度傳送一個(gè)字節(jié)或字修改地址指針修改串長(zhǎng)度值傳送完否?NY設(shè)操作方向共六百八十二頁(yè)282串操作(cozu)指令串傳送(chun sn) MOVS串比較 CMPS串掃描 SCAS串裝入 LODS串送存 ST
29、OS共六百八十二頁(yè)2831. 串傳送(chun sn)指令格式: MOVS OPRD1,OPRD2 MOVSB MOVSW串傳送指令常與無(wú)條件重復(fù)(chngf)前綴連用共六百八十二頁(yè)284串傳送(chun sn)指令對(duì)比用MOV指令和MOVS指令實(shí)現(xiàn)將200個(gè)字節(jié)數(shù)據(jù)從內(nèi)存的一個(gè)(y )區(qū)域送到另一個(gè)(y )區(qū)域的程序段。共六百八十二頁(yè)285串傳送(chun sn)指令例用串傳送指令實(shí)現(xiàn)200個(gè)字節(jié)(z ji)數(shù)據(jù)的傳送: LEA SI,MEM1 LEA DI,MEM2 MOV CX,200 CLD REP MOVSB HLT共六百八十二頁(yè)2862. 串比較(bjio)指令格式(g shi):
30、 CMPS OPRD1,OPRD2 CMPSB CMPSW串比較指令常與條件重復(fù)前綴連用,指令的執(zhí) 行不改變操作數(shù),僅影響標(biāo)志位。前綴的操作對(duì)標(biāo)志位不影響共六百八十二頁(yè)287串比較(bjio)指令例測(cè)試200個(gè)字節(jié)數(shù)據(jù)是否(sh fu)傳送正確:LEA SI,MEM1LEA DI,MEM2MOV CX,200CLD REPE CMPSB TEST CX,00FFH JZ STOP DEC SI MOV AL,SI MOV BX,SISTOP:HLT 共六百八十二頁(yè)2883. 串掃描(somio)指令格式(g shi): SCAS OPRD SCASB SCASW執(zhí)行與CMPS指令相似的操作,只
31、是這里的源 操作數(shù)是AX或AL目 標(biāo)操作數(shù)共六百八十二頁(yè)289串掃描(somio)指令的應(yīng)用常用(chn yn)于在指定存儲(chǔ)區(qū)域中尋找某個(gè)關(guān)鍵字。共六百八十二頁(yè)290串裝入指令(zhlng)格式: LODS OPRD LODSB LODSW操作(cozu):對(duì)字節(jié):對(duì) 字:源操作數(shù)DS:SIDS:SIALAX共六百八十二頁(yè)2914. 串裝入指令(zhlng)用于將內(nèi)存某個(gè)區(qū)域的數(shù)據(jù)串依次裝入累加 器,以便(ybin)顯示或輸出到接口。LODS指令一般不加重復(fù)前綴。共六百八十二頁(yè)2925. 串存儲(chǔ)(cn ch)指令格式(g shi): STOS OPRD STOSB STOSW操作:對(duì)字節(jié): A
32、L對(duì) 字: AX目 標(biāo)操作數(shù)ES:DIES:DI共六百八十二頁(yè)293串存儲(chǔ)指令(zhlng)的應(yīng)用常用于將內(nèi)存某個(gè)區(qū)域置同樣的值此時(shí):將待送存的數(shù)據(jù)放入AL(字節(jié)數(shù))或AX(字?jǐn)?shù)據(jù));確定操作方向(增地址/減地址)和區(qū)域大?。ùL(zhǎng)度值);使用串存儲(chǔ)指令+無(wú)條件重復(fù)前綴(qinzhu),實(shí)現(xiàn)數(shù)據(jù)傳送。共六百八十二頁(yè)294串存儲(chǔ)指令例 內(nèi)存(ni cn)某個(gè)區(qū)域清零將內(nèi)存某單元清零設(shè)計(jì)(shj)思想: 區(qū)域首地址送ES:DI串長(zhǎng)度送CX置方向標(biāo)志DF0送累加器AL執(zhí)行串送存指令共六百八十二頁(yè)295程序控制(chngxkngzh)指令轉(zhuǎn)移指令(zhlng)循環(huán)控制過(guò)程調(diào)用中斷控制共六百八十二頁(yè)296
33、程序(chngx)的執(zhí)行方向程序控制類(lèi)指令的本質(zhì)是:控制程序的執(zhí)行方向決定程序執(zhí)行方向的因素:CS,IP控制程序執(zhí)行方向的方法:修改CS 和IP ,則程序轉(zhuǎn)向另一個(gè)代碼段執(zhí)行;僅修改IP,則程序?qū)⒏淖?gibin)當(dāng)前的執(zhí)行順序,轉(zhuǎn)向本代碼段內(nèi)其它某處執(zhí)行。共六百八十二頁(yè)297一、轉(zhuǎn)移(zhuny)指令無(wú)條件轉(zhuǎn)移指令 無(wú)條件轉(zhuǎn)移到目標(biāo)地址,執(zhí)行新的指令有條件(tiojin)轉(zhuǎn)移指令 在具備一定條件的情況下轉(zhuǎn)移到目標(biāo)地址通過(guò)修改指令的偏移地址或段地址及偏移地址實(shí)現(xiàn)程序的轉(zhuǎn)移共六百八十二頁(yè)2981. 無(wú)條件轉(zhuǎn)移(zhuny)指令格式(g shi): JMP OPRD目標(biāo)地址與JMP在同一代碼段與J
34、MP不在同一代碼段原則上可實(shí)現(xiàn)在整個(gè)內(nèi)存空間的轉(zhuǎn)移共六百八十二頁(yè)299無(wú)條件段內(nèi)轉(zhuǎn)移(zhuny)轉(zhuǎn)移的目標(biāo)地址在當(dāng)前代碼段內(nèi),段地址不 改變(gibin)。即:目標(biāo)地址是16位偏移地址。指令中直接給出目標(biāo)地址由指令中的寄存器或存儲(chǔ)器操作數(shù)指出目標(biāo)地址段內(nèi)直接轉(zhuǎn)移段內(nèi)間接轉(zhuǎn)移共六百八十二頁(yè)300段內(nèi)直接(zhji)轉(zhuǎn)移轉(zhuǎn)移的目標(biāo)地址由指令(zhlng)直接給出格式:JMP Label近地址標(biāo)號(hào)共六百八十二頁(yè)301段內(nèi)直接(zhji)轉(zhuǎn)移示圖JMPLabel代碼段位移(wiy)量下一條要執(zhí)行指令的偏移地址=當(dāng)前IP+位移量JMP Label共六百八十二頁(yè)302段內(nèi)間接(jin ji)轉(zhuǎn)移段內(nèi)間接
35、(jin ji)轉(zhuǎn)移轉(zhuǎn)移的目標(biāo)地址存放在某個(gè)16位寄存器或存儲(chǔ)器 的某兩個(gè)單元中例:JMP BX若:BX=1200H則:轉(zhuǎn)移的目標(biāo)地址=1200HJMP代碼段1200HMOV共六百八十二頁(yè)303段內(nèi)間接(jin ji)轉(zhuǎn)移例JMP WORD PTRBX 設(shè):BX=1200HJMP代碼段數(shù)據(jù)(shj)段BX=1200XXHXXHIP指令碼共六百八十二頁(yè)304無(wú)條件段間轉(zhuǎn)移(zhuny)轉(zhuǎn)移(zhuny)的目標(biāo)地址不在當(dāng)前代碼段內(nèi)。目標(biāo)地址為32位,包括段地址和偏移地址。指令中直接給出目標(biāo)地址由指令中的32位存儲(chǔ)器操作數(shù)指出目標(biāo)地址段間直接轉(zhuǎn)移段間間接轉(zhuǎn)移共六百八十二頁(yè)305段間直接(zhji)轉(zhuǎn)
36、移段內(nèi)直接轉(zhuǎn)移(zhuny)轉(zhuǎn)移的目標(biāo)地址由指令直接給出格式:JMP FAR Label遠(yuǎn)地址標(biāo)號(hào)共六百八十二頁(yè)306段間直接(zhji)轉(zhuǎn)移示圖JMPLabel代碼段1Label與JMP之間的位移(wiy)量代碼段2XXHXXHXXHXXHIPCS共六百八十二頁(yè)307段間間接(jin ji)轉(zhuǎn)移段內(nèi)間接尋址轉(zhuǎn)移的目標(biāo)地址(dzh)由指令中的32位操作數(shù)給出 例:JMP DWORD PTRBXXXHXXHXXHXXHBXIPCSJMP指令碼代碼段1代碼段2數(shù)據(jù)段共六百八十二頁(yè)308無(wú)條件轉(zhuǎn)移(zhuny)指令例(1) 2000:0100 MOV AX,1200H(2) 2000:0103 JM
37、P NEXT (3) 2000:0120 NEXT: MOV BX,1200H (4) JMP BX (5) 2000:1200 共六百八十二頁(yè)309無(wú)條件轉(zhuǎn)移(zhuny)指令例MOV SI,1122HMOV WORD PTRSI,0120HADD SI,2MOV WORD PTRSI,0122HJMP DWORD PTRSI-2JMP WORD PTRSIJMP1122H代碼段數(shù)據(jù)段01H22H20H01HIPCSIP共六百八十二頁(yè)3102. 條件轉(zhuǎn)移(zhuny)指令在滿足一定條件(tiojin)下,程序轉(zhuǎn)移到目標(biāo)地址繼續(xù)執(zhí)行條件轉(zhuǎn)移指令均為段內(nèi)短轉(zhuǎn)移,即轉(zhuǎn)移 范圍為: -128+127
38、共六百八十二頁(yè)311條件轉(zhuǎn)移(zhuny)指令的應(yīng)用幾種(j zhn)條件轉(zhuǎn)移指令的應(yīng)用JC/JNC判斷CF的狀態(tài)。常用于比大小JZ/JNZ判斷ZF的狀態(tài)。常用于循環(huán)體的結(jié)束判斷JO/JNO判斷OF的狀態(tài)。常用于有符號(hào)數(shù)溢出的判斷JP/JPE判斷PF的狀態(tài)。用于判斷運(yùn)算結(jié)果低8位中1的個(gè)數(shù)是否為偶數(shù)JA/JAE/JB/JBE判斷CF或CF+ZF的狀態(tài)。常用于無(wú)符號(hào)數(shù)的大小比較共六百八十二頁(yè)312轉(zhuǎn)移(zhuny)指令例統(tǒng)計(jì)內(nèi)存數(shù)據(jù)段中以TABLE為首地址的100個(gè)8位符號(hào)數(shù)中正數(shù)(zhngsh)、負(fù)數(shù)和零元數(shù)的個(gè)數(shù)。共六百八十二頁(yè)313轉(zhuǎn)移(zhuny)指令例(流程圖)將存放(cnfng)各元
39、素個(gè)數(shù)的單元清零取首地址設(shè)串長(zhǎng)度取一個(gè)字節(jié)數(shù)正數(shù)個(gè)數(shù)加1零元素加1為負(fù)?為零?負(fù)數(shù)個(gè)數(shù)加1NYNYp133共六百八十二頁(yè)314二、循環(huán)(xnhun)控制指令循環(huán)(xnhun)范圍:以當(dāng)前IP為中心的-128+127范圍內(nèi)循環(huán)。循環(huán)次數(shù)由CX寄存器指定。循環(huán)指令:LOOP *LOOPZ *LOOPNZ無(wú)條件循環(huán)指令條件循環(huán)指令共六百八十二頁(yè)315無(wú)條件循環(huán)(xnhun)指令格式: LOOP LABEL循環(huán)條件: CX 0操作: DEC CX JNZ 符號(hào)(fho)地址P133例3-44共六百八十二頁(yè)316三、過(guò)程調(diào)用(dioyng)和返回用于調(diào)用一個(gè)子過(guò)程;子過(guò)程由程序員預(yù)先設(shè)計(jì) 并裝入內(nèi)存 子
40、過(guò)程執(zhí)行(zhxng)結(jié)束后要返回 原調(diào)用處調(diào)用程序斷點(diǎn)入口地址子程序共六百八十二頁(yè)317調(diào)用指令(zhlng)的執(zhí)行過(guò)程保護(hù)斷點(diǎn);將調(diào)用指令的下一條指令的地址(斷點(diǎn))壓入堆棧獲取子過(guò)程的入口地址;子過(guò)程第1條指令的偏移(pin y)地址執(zhí)行子過(guò)程,含相應(yīng)參數(shù)的保存及恢復(fù);恢復(fù)斷點(diǎn),返回原程序。將斷點(diǎn)偏移地址由堆棧彈出共六百八十二頁(yè)318過(guò)程(guchng)調(diào)用段內(nèi)調(diào)用(dioyng)段間調(diào)用段內(nèi)直接調(diào)用段內(nèi)間接調(diào)用段間直接調(diào)用段間間接調(diào)用共六百八十二頁(yè)3191. 段內(nèi)調(diào)用(dioyng)被調(diào)用程序與調(diào)用程序在同一代碼段調(diào)用前只需保護(hù)斷點(diǎn)(dun din)的偏移地址格式: CALL NEAR
41、PROC執(zhí)行過(guò)程:近過(guò)程名代碼段1調(diào)用程序被調(diào)用程序代碼段1 將斷點(diǎn)的偏移地址壓入堆棧 根據(jù)過(guò)程名找子程序入口共六百八十二頁(yè)320段內(nèi)調(diào)用(dioyng)例(1)CALL TIMRE(2)CALL WORD PTRSI直接(zhji)調(diào)用間接調(diào)用44H33HCALL代碼段數(shù)據(jù)段設(shè):SI=1200H CS=6000H1200H執(zhí)行第(2)條指令后:6000HCS =3344HIP =共六百八十二頁(yè)3212. 段間調(diào)用(dioyng)子過(guò)程與原調(diào)用程序不在同一代碼段斷點(diǎn)(dun din)保護(hù)時(shí)的壓棧順序:先將斷點(diǎn)的CS壓棧,再壓入IP。調(diào)用前需保護(hù)斷點(diǎn)的段基地址和偏移地址共六百八十二頁(yè)322段間調(diào)
42、用(dioyng)例格式(g shi): CALL FAR PROC格式例:CALL FAR TIMRECALL DWORD PTRSIXXHXXHCALL代碼段數(shù)據(jù)段SIXXHXXHCSIP共六百八十二頁(yè)3233. 返回(fnhu)指令功能:從堆棧中彈出斷點(diǎn)(dun din)地址,返回原程序格式: RETRET指令一般位于子程序的最后。共六百八十二頁(yè)324四、中斷(zhngdun)指令中斷中斷源中斷的類(lèi)型中斷指令(zhlng)引起CPU產(chǎn)生一次中斷的指令共六百八十二頁(yè)325中斷(zhngdun)與過(guò)程調(diào)用:中斷是隨機(jī)事件或異常事件引起,調(diào)用則是事 先已在程序中安排(npi)好 ; 響應(yīng)中斷請(qǐng)
43、求不僅要保護(hù)斷點(diǎn)地址,還要保護(hù) FLAGS內(nèi)容;調(diào)用指令在指令中直接給出子程序入口地址, 中斷指令只給出中斷向量碼,入口地址則在向 量碼指向的內(nèi)存單元中。共六百八十二頁(yè)3261. 中斷(zhngdun)指令格式(g shi): INT n說(shuō)明: n4中斷類(lèi)型碼n=0 255n 4 XXHXXHXXHXXH入口的段地址入口的偏移地址存放中斷服務(wù)子程序入口地址的單元的偏移地址代碼段數(shù)據(jù)段該單元在數(shù)據(jù)段,段地址=DS共六百八十二頁(yè)327中斷(zhngdun)指令的執(zhí)行過(guò)程將FLAGS壓入堆棧;將INT指令的下一條(y tio)指令的CS、IP壓棧;由n4得到存放中斷向量的地址;將中斷向量(中斷服務(wù)程
44、序入口地址)送CS和IP寄存器;轉(zhuǎn)入中斷服務(wù)程序。共六百八十二頁(yè)328中斷指令(zhlng)的執(zhí)行過(guò)程n4 22H11H00H67HIPCS68122HMOV代碼段數(shù)據(jù)(shj)段堆棧段SPFLAGSHFLAGSLIPHCSLCSHIPLSPSPSP共六百八十二頁(yè)329中斷(zhngdun)指令例執(zhí)行程序段: CS IP 6200H:0110H INT 21H6200H:0112H MOV AX,BX 12H01H00H62HSP=1200FLAGSLFLAGSHSP=11FA執(zhí)行(zhxng)INT指令后堆棧段共六百八十二頁(yè)330中斷(zhngdun)指令例執(zhí)行(zhxng)INT 21H指
45、令后 IP=21H4 CS=(21H4)+20084H 23H11H00H20HIP CS數(shù)據(jù)段代碼段XX21123H 中斷服務(wù)子程序共六百八十二頁(yè)3312. 溢出中斷(zhngdun)指令格式(g shi): INTO 若OF=1,則啟動(dòng)一個(gè)類(lèi)型為4的中斷過(guò)程,給出一個(gè)出錯(cuò)標(biāo)志,如果OF=0,不做任何操作。INTO指令通常安排在有符號(hào)數(shù)加減運(yùn)算指令之后。相當(dāng)于INT 4共六百八十二頁(yè)3323. 中斷(zhngdun)返回指令格式: IRET中斷(zhngdun)服務(wù)程序的最后一條指令,負(fù)責(zé)恢復(fù)斷點(diǎn)恢復(fù)標(biāo)志寄存器內(nèi)容共六百八十二頁(yè)333六、處理器控制指令對(duì)標(biāo)志(biozh)位的操作與外部設(shè)備的
46、同步說(shuō)明(shumng)見(jiàn)p139表共六百八十二頁(yè)334結(jié)束語(yǔ):掌握:指令的格式及意義;指令對(duì)操作數(shù)的要求(yoqi)及對(duì)標(biāo)志位的影響;指令的應(yīng)用。謝謝(xi xie)大家!共六百八十二頁(yè)335第4章匯編語(yǔ)言(hu bin y yn)程序設(shè)計(jì)共六百八十二頁(yè)336主要(zhyo)內(nèi)容匯編語(yǔ)言(hu bin y yn)源程序的結(jié)構(gòu)匯編語(yǔ)言語(yǔ)句格式偽指令功能調(diào)用匯編語(yǔ)言程序設(shè)計(jì)共六百八十二頁(yè)3374.1 匯編語(yǔ)言(hu bin y yn)源程序了解:匯編語(yǔ)言源程序的結(jié)構(gòu)匯編語(yǔ)言語(yǔ)句類(lèi)型(lixng)及格式共六百八十二頁(yè)338一、匯編語(yǔ)言(hu bin y yn)源程序結(jié)構(gòu)共六百八十二頁(yè)3391. 匯
47、編語(yǔ)言(hu bin y yn)源程序與匯編程序匯編語(yǔ)言(hu bin y yn)源程序匯編程序用助記符編寫(xiě)匯編程序匯編語(yǔ)言源程序機(jī)器語(yǔ)言目標(biāo)程序源程序的編譯程序共六百八十二頁(yè)3402. 匯編語(yǔ)言(hu bin y yn)程序設(shè)計(jì)與執(zhí)行過(guò)程輸入?yún)R編語(yǔ)言源程序(EDIT)匯編(MASM)鏈接(lin ji)(LINK)調(diào)試(TD)源文件 . ASM目標(biāo)文件 .OBJ可執(zhí)行文件.EXE最終程序共六百八十二頁(yè)341二、匯編語(yǔ)言語(yǔ)句(yj)類(lèi)型及格式共六百八十二頁(yè)3421. 匯編語(yǔ)言(hu bin y yn)語(yǔ)句類(lèi)型指令性語(yǔ)句(yj)指示性語(yǔ)句CPU執(zhí)行的語(yǔ)句,能夠生成目標(biāo)代碼CPU不執(zhí)行,而由匯編程
48、序執(zhí)行的語(yǔ)句,不生成目標(biāo)代碼共六百八十二頁(yè)3432. 匯編語(yǔ)言語(yǔ)句(yj)格式 指令性語(yǔ)句: 標(biāo)號(hào): 前綴(qinzhu) 助記符 操作數(shù),操作數(shù) ;注釋指令的符號(hào)地址標(biāo)號(hào)后要有冒號(hào)操作碼注釋前加分號(hào)共六百八十二頁(yè)344指示(zhsh)性語(yǔ)句格式名字(mng zi) 偽指令助記符 操作數(shù) ,操作數(shù), ;注釋變量的符號(hào)地址其后不加冒號(hào)指示性語(yǔ)句中至少有一個(gè)操作數(shù)共六百八十二頁(yè)3453. 標(biāo)號(hào)(bioho)、名字標(biāo)號(hào)后有冒號(hào),在指令性語(yǔ)句前;名字后不加冒號(hào),在指示性語(yǔ)句前。英文字母、數(shù)字及專用(zhunyng)字符組成,最大長(zhǎng)度不能超過(guò)31個(gè),且不能由數(shù)字打頭,不能用保留字(如寄存器名,指令助記符
49、,偽指令)。 共六百八十二頁(yè)3464. 操作數(shù)寄存器存儲(chǔ)器單元(dnyun)常量變量或標(biāo)號(hào)表達(dá)式共六百八十二頁(yè)347常 量數(shù)字(shz)常量字符串常量例:A MOV AL,A例:ABCD匯編(hubin)時(shí)被譯成對(duì)應(yīng)的ASCII碼41H,42H,43H,44H用單引號(hào)引起的字符或字符串共六百八十二頁(yè)348變 量代表(dibio)內(nèi)存中的數(shù)據(jù)區(qū),程序中視為存儲(chǔ)器操作數(shù)變量的屬性: 變量所在段的段地址 變量單元地址與段首地址之 間的位移量。 字節(jié)型、字型和雙字型段 值偏移量類(lèi) 型共六百八十二頁(yè)349表達(dá)式算術(shù)運(yùn)算邏輯運(yùn)算*關(guān)系運(yùn)算取值運(yùn)算和屬性(shxng)運(yùn)算其它運(yùn)算共六百八十二頁(yè)350算術(shù)(s
50、unsh)運(yùn)算和邏輯運(yùn)算符算術(shù)(sunsh)運(yùn)算符+,-,*,/,MOD邏輯運(yùn)算符AND,OR,NOT,XOR例:MOV AL,8 AND 4MOV AL,8+4-1共六百八十二頁(yè)351取值運(yùn)算符取得其后變量或標(biāo)號(hào)(bioho)的偏移地址取得其后變量或標(biāo)號(hào)的段地址TYPE 取變量的類(lèi)型LENGTH 取所定義存儲(chǔ)(cn ch)區(qū)的長(zhǎng)度SIZE 取所定義存儲(chǔ)區(qū)的字節(jié)數(shù)用于分析存儲(chǔ)器操作數(shù)的屬性獲取變量的屬性值OFFSETSEG共六百八十二頁(yè)352取值運(yùn)算符例 MOV AX,SEG DATA MOV DS,AX MOV BX,OFFSET DATA LEA BX,DATA等價(jià)(dngji)于共六百八
51、十二頁(yè)353取值運(yùn)算符例若BUFFER存儲(chǔ)區(qū)用如下(rxi)偽指令定義: BUFFER DW 200 DUP(0) 則: TYPE BUFFER 等于2 LENGTH BUFFER等于200 SIZE BUFFER等于400共六百八十二頁(yè)354屬性(shxng)運(yùn)算符 用于指定(zhdng)其后存儲(chǔ)器操作數(shù)的類(lèi)型 運(yùn)算符:PTR 例: MOV BYTR PTRBX,12H共六百八十二頁(yè)355其它(qt)運(yùn)算符方括號(hào): 段重設(shè)(zhn sh)符 段寄存器名: 方括號(hào)中內(nèi)容為操作數(shù)的偏移地址用于修改默認(rèn)的段基地址共六百八十二頁(yè)3564.2 偽指令掌握:偽指令的格式及實(shí)現(xiàn)的操作(cozu)偽指令的應(yīng)
52、用共六百八十二頁(yè)357偽指令由匯編程序執(zhí)行的“指令系統(tǒng)”作用:定義變量;分配存儲(chǔ)區(qū)定義邏輯段;指示程序開(kāi)始和結(jié)束(jish);定義過(guò)程等。共六百八十二頁(yè)358常用(chn yn)偽指令數(shù)據(jù)(shj)定義偽指令符號(hào)定義偽指令段定義偽指令結(jié)束偽指令過(guò)程定義偽指令宏命令偽指令共六百八十二頁(yè)359一、數(shù)據(jù)(shj)定義偽指令用于定義數(shù)據(jù)區(qū)中變量的類(lèi)型及大小(dxio)格式: 變量名 偽指令助記符 操作數(shù), ;注釋符號(hào)地址定義變量類(lèi)型定義變量值及區(qū)域大小共六百八十二頁(yè)3601. 數(shù)據(jù)(shj)定義偽指令助記符DB 定義的變量為字節(jié)(z ji)型DW 定義的變量為字類(lèi)型(雙字節(jié))DD 定義的變量為雙字型(
53、4字節(jié))DQ 定義的變量為4字型(8字節(jié))DT 定義的變量為10字節(jié)型共六百八十二頁(yè)361數(shù)據(jù)(shj)定義偽指令例DATA1 DB 11H,22H,33H,44HDATA2 DW 11H,22H,3344HDATA3 DD 11H*2,22H,33445566H以上變量(binling)在內(nèi)存中的存放形式共六百八十二頁(yè)362數(shù)據(jù)定義偽指令例_變量(binling)在內(nèi)存中的分布DATA111223344DATA2224411000033DATA32200220000XX66554433共六百八十二頁(yè)363數(shù)據(jù)(shj)定義偽指令的幾點(diǎn)說(shuō)明偽指令的性質(zhì)(xngzh)決定所定義變量的類(lèi)型;定義字
54、符串必須用DB偽指令例: DATA1 DB ABCD,66HABCD41H42H43H44H66H共六百八十二頁(yè)3642. 重復(fù)(chngf)操作符作用:為一個(gè)(y )數(shù)據(jù)區(qū)的各單元設(shè)置相同的初值目的:常用于聲明一個(gè)數(shù)據(jù)區(qū)格式: 變量名 偽指令助記符 n DUP(初值,)例: BW 20 DUP(0)M1 DB 10 DUP(0)共六百八十二頁(yè)3653. “?”的作用(zuyng)表示(biosh)隨機(jī)值,用于預(yù)留存儲(chǔ)空間MEM1 DB 34H,A,? DW 20 DUP(?)預(yù)留40個(gè)字節(jié)單元,每單元為隨機(jī)值隨機(jī)數(shù)占1個(gè)字節(jié)單元共六百八十二頁(yè)366數(shù)據(jù)(shj)定義偽指令例M1 DB How
55、 are you?M2 DW 3 DUP(11H),3344H DB 4 DUP(?)M3 DB 3 DUP(22H,11H,?)變量在內(nèi)存中的分區(qū)共六百八十二頁(yè)367數(shù)據(jù)(shj)定義偽指令例M1How aM211H11H00H44H33H r e you?11H00H00H隨機(jī)數(shù)M311H22H11H22H11H22HXXXXXXXXXXXXXX共六百八十二頁(yè)368二、符號(hào)(fho)定義偽指令格式: 符號(hào)名 EQU表達(dá)式操作(cozu): 用符號(hào)名取代后邊的表達(dá)式,不可重新定義例: CONSTANTEQU100 VAR EQU 30H+99HEQU說(shuō)明的表達(dá)式不占用內(nèi)存空間共六百八十二頁(yè)3
56、69三、段定義(dngy)偽指令說(shuō)明邏輯(lu j)段的起始和結(jié)束;說(shuō)明不同程序模塊中同類(lèi)邏輯段之間的聯(lián)系形 態(tài)共六百八十二頁(yè)370段定義(dngy)偽指令格式段名 SEGMENT 定位類(lèi)型 組合(zh)類(lèi)型 類(lèi)別 段名 ENDS說(shuō)明邏輯段的起點(diǎn)說(shuō)明不同模塊中同名段的組和連接方式共六百八十二頁(yè)371定位(dngwi)類(lèi)型PARA: 段的起點(diǎn)(qdin)從節(jié)邊界開(kāi)始 (16個(gè)字節(jié)為1節(jié))BYTE: 段的起點(diǎn)從存儲(chǔ)器任何地址開(kāi)始WORD:段的起點(diǎn)從偶地址開(kāi)始PAGE: 段的起點(diǎn)從頁(yè)邊界開(kāi)始 (256個(gè)字節(jié)為1頁(yè))共六百八十二頁(yè)372組合(zh)類(lèi)型與其它模塊(m kui)中的同名段在滿足定位類(lèi)型的
57、前提 下具有的組合方式:NONE: 不組合PUBLIC: 依次連接(順序由LINK程序確定)COMMON: 覆蓋連接STACK: 堆棧段的依次連接AT 表達(dá)式:段定義在表達(dá)式值為段基的節(jié)邊界MEMORY: 相應(yīng)段在同名段的最高地址處。共六百八十二頁(yè)373類(lèi)別(libi)不同模塊連接時(shí)將相同類(lèi)別的段放在連續(xù)的內(nèi)存(ni cn)區(qū)域中共六百八十二頁(yè)374段定義(dngy)偽指令例DATA SEGMENT MEM1 DB 11H,22H MEM2 DB Hello! MEM3 DW 2 DUP(?)DATA ENDS變量在邏輯段中的位置(wi zhi)就代表了它的偏移地址表示變量所在邏輯段的段地址表
58、示變量的類(lèi)型共六百八十二頁(yè)375四、設(shè)定(sh dn)段寄存器偽指令說(shuō)明(shumng)所定義邏輯段的性質(zhì)格式: ASSUME 段寄存器名:段名,段寄存器名:段名,共六百八十二頁(yè)376五、結(jié)束(jish)偽指令表示(biosh)源程序結(jié)束格式: END 標(biāo)號(hào)共六百八十二頁(yè)377匯編語(yǔ)言(hu bin y yn)源程序結(jié)構(gòu)數(shù)據(jù)(shj)段名 SEGMENT 數(shù)據(jù)段名 ENDS附加段名 SEGMENT 附加段名 ENDS堆棧段名 SEGMENT 堆棧段名 ENDS代碼段名 SEGMENT 代碼段名 ENDS END 共六百八十二頁(yè)378一個(gè)(y )完整源程序結(jié)構(gòu)例DSEG SEGMENT DATA
59、1 DB 1,2, 3 DUP(?) DATA2 DW 1234HDSEG ENDSESEG SEGMENT DB 20 DUP(?)ESEG ENDSSSEG SEGMENT STACK STACK DB 200 DUP(?)SSEG ENDS共六百八十二頁(yè)379一個(gè)(y )完整源程序結(jié)構(gòu)例 CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG, ES:ESEG,SS:SSEG START:MOV AX,DSEG MOV DS,AX MOV AX,ESEG MOV ES,AX MOV AX,SSEG MOV SS,AX CSEG ENDS END START源程序 代碼(d
60、i m)段寄存器初始化將段地址送相應(yīng)的段寄存器共六百八十二頁(yè)380六、過(guò)程(guchng)定義偽指令用于定義一個(gè)(y )過(guò)程體格式: 過(guò)程名 PROC NEAR / FAR RET 過(guò)程名 ENDPP157例過(guò)程入口的符號(hào)地址共六百八十二頁(yè)過(guò)程(guchng)定義及調(diào)用例定義(dngy)延時(shí)子程序 DELAY PROC PUSH BX PUSH CX MOV BL,2NEXT: MOV CX,4167W10M: LOOP W10M DEC BL JNZ NEXT POP CX POP BX RETDELAY ENDP381調(diào)用延時(shí)子程序: CALL DELAY 共六百八十二頁(yè)382七、宏命令偽
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 客運(yùn)火車(chē)站旅客服務(wù)規(guī)范考核試卷
- 供應(yīng)鏈協(xié)同案例解析考核試卷
- 低溫倉(cāng)儲(chǔ)庫(kù)存管理與控制考核試卷
- 家用縫紉機(jī)維修實(shí)操考核試卷
- 土地利用規(guī)劃中的社區(qū)開(kāi)放空間設(shè)計(jì)考核試卷
- 創(chuàng)業(yè)投資風(fēng)險(xiǎn)防范體系建設(shè)與實(shí)施路徑考核試卷
- 政府融資合同范本模板
- 自用高爾夫轉(zhuǎn)讓合同范本
- 工地叉車(chē)租憑合同范本
- 電氣質(zhì)量安全培訓(xùn)課件
- 2024農(nóng)村宅基地轉(zhuǎn)讓合同范本
- 各類(lèi)學(xué)校校園安全應(yīng)急預(yù)案匯編-(附應(yīng)急全套流程圖)
- 胃管非計(jì)劃拔管原因分析
- 微信欠條合同范本
- 博士高校面試答辯模板
- JT-T-1211.1-2018公路工程水泥混凝土用快速修補(bǔ)材料第1部分:水泥基修補(bǔ)材料
- 城區(qū)燃?xì)夤艿赖壤匣赂脑祉?xiàng)目(給水管網(wǎng)部分)施工圖設(shè)計(jì)說(shuō)明
- 2024年邵陽(yáng)工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)附答案
- 2024管廊電纜隧道電纜溝自動(dòng)滅火裝置選型
- 保安列隊(duì)培訓(xùn)方案
- 2024年山東淄博市城市資產(chǎn)運(yùn)營(yíng)有限公司招聘筆試參考題庫(kù)含答案解析
評(píng)論
0/150
提交評(píng)論