




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章86系列微型計(jì)算機(jī)的指令系統(tǒng)5.2傳送類指令5.4串操作指令5.5控制類指令5.186系列匯編語(yǔ)言及指令的格式與尋址方式5.3數(shù)據(jù)操作類指令14/3/2024第5章86系列微型計(jì)算機(jī)的指令系統(tǒng)5.2傳送類指令5.4指令是讓計(jì)算機(jī)完成某種操作的命令,指令的集合稱作指令系統(tǒng),不同系列計(jì)算機(jī)有不同的指令系統(tǒng)。指令的符號(hào)用規(guī)定的英文字母組成,稱為助記符。指令進(jìn)行編程能夠充分開發(fā)計(jì)算機(jī)硬件資源,它的程序目標(biāo)代碼短、運(yùn)行速度快,因此,指令語(yǔ)言是面向機(jī)器的語(yǔ)言,在自動(dòng)控制、智能化儀器儀表、監(jiān)測(cè)等領(lǐng)域應(yīng)用廣泛。24/3/2024指令是讓計(jì)算機(jī)完成某種操作的命令,指精品資料3精品資料3你怎么稱呼老師?如果老師最后沒有總結(jié)一節(jié)課的重點(diǎn)的難點(diǎn),你是否會(huì)認(rèn)為老師的教學(xué)方法需要改進(jìn)?你所經(jīng)歷的課堂,是講座式還是討論式?教師的教鞭“不怕太陽(yáng)曬,也不怕那風(fēng)雨狂,只怕先生罵我笨,沒有學(xué)問(wèn)無(wú)顏見爹娘……”“太陽(yáng)當(dāng)空照,花兒對(duì)我笑,小鳥說(shuō)早早早……”445.186系列匯編語(yǔ)言及指令的格式與尋址方式
5.1.186系列匯編語(yǔ)言指令語(yǔ)句格式任何一種匯編語(yǔ)言的指令語(yǔ)句都是與機(jī)器指令一一對(duì)應(yīng)的,它通過(guò)匯編程序?qū)⑵浞g成機(jī)器指令代碼(目標(biāo)代碼),讓CPU執(zhí)行某種操作。86系列匯編語(yǔ)言指令語(yǔ)句格式如圖5.1所示。圖中由前向后的箭頭表示是可選項(xiàng),由后向前的箭頭表示是重復(fù)項(xiàng),圓頭方框表示是語(yǔ)句中的關(guān)鍵字。54/3/20245.186系列匯編語(yǔ)言及指令的格式與尋址方式
5.1.1(1)標(biāo)號(hào)是給該指令所在地址取的名字,必須后跟冒號(hào)“:”,它可以缺省,是可供選擇的標(biāo)識(shí)符。86系列匯編語(yǔ)言中可使用的標(biāo)識(shí)符必須遵循下列規(guī)則:①標(biāo)識(shí)符由字母(a~z,A~Z)、數(shù)字(0~9)或某些特殊字符(@,–,?)組成。②第一個(gè)字符必須是字母(a~z,A~Z)或某些特殊的符號(hào)(@,–,?),但“?”不能單獨(dú)作標(biāo)識(shí)符。③標(biāo)識(shí)符有效長(zhǎng)度為31個(gè)字符,若超過(guò)31個(gè)字符,則只保留前面的31個(gè)字符為有效標(biāo)識(shí)符。64/3/2024(1)標(biāo)號(hào)是給該指令所在地址取的名字,必須后跟冒號(hào)“:”下面是有效的標(biāo)識(shí)符:START:MY–CODE:ALPHA:NUM@–1:LOOP1:X:?MORE–350:BETA–1:DELAYIS:下面是無(wú)效的標(biāo)識(shí)符:4LOOP:MAINA/B:BETA*:START=3:GAMA$1:NUM+1:?:ONE*TWO:74/3/2024下面是有效的標(biāo)識(shí)符:74/2/2024(2)指令助記符是指令名稱的代表符號(hào),它是指令語(yǔ)句中的關(guān)鍵字,不可缺省,它表示本指令的操作類型,必要時(shí)可在指令助記符的前面加上一個(gè)或多個(gè)“前綴”,從而實(shí)現(xiàn)某些附加操作。(3)操作數(shù)是參加本指令運(yùn)算的數(shù)據(jù),有些指令不需要操作數(shù),可以缺??;有些指令需要兩個(gè)操作數(shù),這時(shí)必須用逗號(hào)(,)將兩個(gè)操作數(shù)分開;有些操作數(shù)可以用表達(dá)式來(lái)表示。(4)注釋部分是可選項(xiàng),允許缺省,如果帶注釋則必須用分號(hào)(;)開頭,注釋本身只用來(lái)對(duì)指令功能加以說(shuō)明,給閱讀程序帶來(lái)方便,匯編程序不對(duì)它做任何處理。84/3/2024(2)指令助記符是指令名稱的代表符號(hào),它是指令語(yǔ)句中的5.1.286系列CPU的尋址方式機(jī)器執(zhí)行指令的目的就是對(duì)指定的操作數(shù)完成規(guī)定的操作,將操作結(jié)果存入規(guī)定的地方。因此,如何獲得操作數(shù)的存放地址及操作結(jié)果的存放地址就是一個(gè)很關(guān)鍵的問(wèn)題。8086/8088CPU有多種方法來(lái)獲取操作數(shù)的存放地址及操作結(jié)果的存放地址,這些方法統(tǒng)稱為數(shù)據(jù)尋址方式。94/3/20245.1.286系列CPU的尋址方式5.1.286系列CPU的尋址方式為什么要設(shè)置多種尋址方式?希望用最短的指令長(zhǎng)度訪問(wèn)盡可能大的存儲(chǔ)器空間希望給多樣的程序設(shè)計(jì)技術(shù)和數(shù)據(jù)結(jié)構(gòu)對(duì)數(shù)據(jù)訪問(wèn)的靈活性和有效性提供支持變址尋址便于處理表格和矩陣相對(duì)尋址便于編制浮動(dòng)的、可重入的程序下面主要以MOV指令為例,介紹86系列CPU的尋址方式。104/3/20245.1.286系列CPU的尋址方式為什么要設(shè)置多種尋MOV指令的功能
格式:MOV目的操作數(shù)(dest),源操作數(shù)(src)114/3/2024MOV指令的功能
格式:MOV目的操作數(shù)(dest),8086CPU指令系統(tǒng)中,有一部分指令所用的8位或16位操作數(shù)就在指令中提供,這種方式稱作立即數(shù)尋址方式。例如:MOVAL,80H;將十六進(jìn)制數(shù)80H送入ALMOVAX,1090H;將1090H送AX,AH中為10H,AL中為90H采用立即數(shù)尋址方式的指令主要用來(lái)對(duì)寄存器賦值。因?yàn)椴僮鲾?shù)可以從指令中直接取得,不需要運(yùn)行總線周期,所以,立即數(shù)尋址方式的顯著特點(diǎn)就是速度快。立即數(shù)可以為8位,也可以為16位;規(guī)定立即數(shù)只能是整數(shù),不能是小數(shù)、變量或者其他類型的數(shù)據(jù);另外還要注意,立即數(shù)只能作為源操作數(shù)。
1.立即數(shù)尋址124/3/20248086CPU指令系統(tǒng)中,有一部分指令所用立即數(shù)尋址方式微機(jī)原理及應(yīng)用吳麗娟134/3/2024立即數(shù)尋址方式微機(jī)原理及應(yīng)用吳麗娟134/2/2
1.立即數(shù)尋址【例】畫出MOVAX,1946H指令執(zhí)行過(guò)程示意圖。解:指令執(zhí)行后,AX=1946H,16位數(shù)據(jù)1946H存入寄存器,下圖中,指令存放于代碼段,OP為操作碼,接著存放低位字節(jié)數(shù)46H,在存放高位字節(jié)數(shù)19H,這是字類型的立即數(shù),為指令機(jī)器碼的一部分。144/3/20241.立即數(shù)尋址144/2.寄存器尋址如果操作數(shù)就在CPU的內(nèi)部寄存器中,那么寄存器名可在指令中指出。這種尋址方式就叫寄存器尋址方式。對(duì)16位操作數(shù)來(lái)說(shuō),寄存器可以為AX,BX,CX,DX,SI,DI,SP或者BP,而對(duì)8位操作數(shù)來(lái)說(shuō),寄存器可為AH,AL,BH,BL,CH,CL,DH,DL。例如:INCCX;將CX的內(nèi)容加1ROLAH,1;將AH中的內(nèi)容循環(huán)左移一位采用寄存器尋址方式的指令在執(zhí)行時(shí),操作就在CPU內(nèi)部進(jìn)行,不需要使用總線周期,因此,執(zhí)行速度快。在一條指令中,可以對(duì)源操作數(shù)采用寄存器尋址方式,也可以對(duì)目的操作數(shù)采用寄存器尋址方式,還可以兩者都用寄存器尋址方式。154/3/20242.寄存器尋址154/2/20242.寄存器尋址例:下列程序執(zhí)行后,(AX)=?,(BX)=?MOVAX,1234HMOVBX,5678HADDAX,BX該程序中MOV指令為數(shù)據(jù)傳送指令操作符,ADD指令為加法指令操作符,三條指令皆為雙操作數(shù)指令。第一、二條指令A(yù)X、BX皆為目的操作數(shù)地址,為寄存器尋址方式。第三條指令中,AX為目的操作數(shù)地址,BX為源操作數(shù)地址。源地址和目的地址皆為寄存器尋址方式。執(zhí)行:1234H→AX5678H→BX(AX)+(BX)→AX執(zhí)行后:(AX)=68ACH,(BX)=5678H164/3/20242.174/3/2024174/2/20242.寄存器尋址例:設(shè)AX=4710H,CX=7507H。問(wèn)執(zhí)行指令MOVAX,CX后AX=?,BX=?解:AX寄存器的內(nèi)容被CX的內(nèi)容取代,CX本身的內(nèi)容不變,故AX=7507H,BX=7507H。184/3/20242.寄存器尋址184/2/2024
3.直接尋址使用直接尋址方式時(shí),數(shù)據(jù)總是在存儲(chǔ)器中,存儲(chǔ)單元的有效地址由指令直接指出,所以直接尋址是對(duì)存儲(chǔ)器進(jìn)行訪問(wèn)時(shí)可采用的最簡(jiǎn)單的方式。例如:MOVAX,[1070H];將DS段的1070H和1071H兩單元的內(nèi)容取到AX中注意:采用直接尋址方式時(shí),如果指令前面沒有用前綴指明操作數(shù)在哪一段,則默認(rèn)為段寄存器是數(shù)據(jù)段寄存器DS。例如,上一條指令執(zhí)行時(shí),設(shè)DS=2000H,則執(zhí)行過(guò)程是將絕對(duì)地址為21070H和21071H兩單元的內(nèi)容取出送AX。194/3/2024
直接尋址方式微機(jī)原理及應(yīng)用吳麗娟204/3/2024直接尋址方式微機(jī)原理及應(yīng)用吳麗娟204/2/20如果要對(duì)其它段寄存器所指出的存儲(chǔ)區(qū)進(jìn)行直接尋址,則本條指令前必須用前綴指出段寄存器名。例如:CS:MOVBX,[3000H];將CS段的3000H和3001H兩單元的內(nèi)容送BX設(shè)CS為5100H,則本指令在執(zhí)行時(shí),將54000H和54001H兩單元的內(nèi)容取出送BX。214/3/2024如果要對(duì)其它段寄存器所指出的存儲(chǔ)區(qū)進(jìn)行直接尋【例】假設(shè)TABLE是在附加數(shù)據(jù)段定義的一個(gè)字節(jié)數(shù)組的首地址標(biāo)號(hào),其偏移地址為1000H,則指令:???MOVAL,ES:TABLE或 MOVAL,ES:[TABLE]或 MOVAL,ES:1000H或 MOVAL,ES:[1000H]是等效的,都表示將字節(jié)數(shù)組的第一個(gè)數(shù)組元素送入AL寄存器中。
MOVAL,ES:TABLE+2或 MOVAL,ES:[TABLE+2]或 MOVAL,ES:1000H+2或 MOVAL,ES:[1000H+2]也是等效的,都表示將字節(jié)數(shù)組的第三個(gè)數(shù)組元素送入AL寄存器中。這種尋址方式一般適用于處理單個(gè)變量。224/3/2024【例】假設(shè)TABLE是在附加數(shù)據(jù)段定義的一個(gè)字節(jié)數(shù)組的首地址例(1)MOVAX,[1024H]MOVBX,ES[1000H]設(shè)DS=2000H,ES=3000H,(21024H)=1784H,(31000H)=1234H。指令執(zhí)行后AX=?,BX=?30000H31000H31001H341200000H21024H21025H8417AH1784ALBH1234BL(1)DS×16+1024H=21024HAX=1784HES=3000H則BX=1234H234/3/2024例(1)MOVAX,[1024H]30000H3104.寄存器間接尋址采用寄存器間接尋址方式時(shí),操作數(shù)一定在存儲(chǔ)器中,存儲(chǔ)單元的有效地址由寄存器指出,這些寄存器可以為BX,BP,SI和DI之一,即有效地址等于其中某一個(gè)寄存器的值:[BX][BP][SI][DI]EA=偏移地址EA計(jì)算方法:和直接尋址類似,若指令前面沒有用前綴指明具體的段寄存器,則尋址時(shí)默認(rèn)的段寄存器通常為DS。如寄存器為BP時(shí),則對(duì)應(yīng)的段寄存器為SS。244/3/20244.寄存器間接尋采用寄存器間接尋址時(shí),允許在指令中指定一個(gè)位移量,這樣,有效地址通過(guò)將一個(gè)寄存器的內(nèi)容加上一個(gè)位移量來(lái)得到。位移量可以為8位,也可以為16位。即:[BX][BP]8位位移量[SI]16位位移量[DI]細(xì)分起來(lái),寄存器間接尋址可分為以下4種:EA=+254/3/2024采用寄存器間接尋址時(shí),允許在指令中指定一個(gè)位(1)以BX寄存器進(jìn)行間接尋址—數(shù)據(jù)段基址尋址如MOVAX,[BX](2)以BP寄存器進(jìn)行間接尋址—堆棧段基址尋址如MOVBX,[BP](3)以SI和DI寄存器進(jìn)行間接尋址—變址尋址其中SI為源寄存器、DI為目的寄存器(4)將BX、BP和SI、DI寄存器組合起來(lái)進(jìn)行間接尋址—基址加變址尋址如MOVAX,[BX+SI]MOVAX,[BX+SI+0050];相對(duì)基址加變址尋址264/3/2024(1)以BX寄存器進(jìn)行間接尋址—數(shù)據(jù)段基址尋址264/2/2
(1)以BX寄存器進(jìn)行間接尋址—數(shù)據(jù)段基址尋址。用BX寄存器進(jìn)行間接尋址時(shí),默認(rèn)的段寄存器為DS,因?yàn)锽X稱為基址寄存器,所以這種尋址方式也叫數(shù)據(jù)段基址尋址。例如:MOVAX,[BX]設(shè)DS=5000H,BX=3000H,則本指令在執(zhí)行時(shí),將53000H和53001H兩單元的內(nèi)容送AX。如果要對(duì)其它段寄存器所指的區(qū)域進(jìn)行尋址,則必須在指令前用前綴指出段寄存器名。例如:ES∶MOVCX,[BX]設(shè)ES=3000H,BX=4000H,則本指令在執(zhí)行時(shí),將34000H和34001H兩單元的內(nèi)容送CX。274/3/2024(1)以BX寄存器進(jìn)行間接尋址—數(shù)寄存器間接尋址方式微機(jī)原理及應(yīng)用吳麗娟284/3/2024寄存器間接尋址方式微機(jī)原理及應(yīng)用吳麗娟284/2(2)以BP寄存器進(jìn)行間接尋址—堆棧段基址尋址。
如果以寄存器BP對(duì)操作數(shù)進(jìn)行間接尋址,則必須注意,操作數(shù)默認(rèn)在堆棧段中,因?yàn)锽P稱為基址寄存器,所以這種尋址方式通常稱為堆棧段基址尋址。例如:MOVBX,[BP]設(shè)SS=5000H,BP=4000H,則本指令在執(zhí)行時(shí),將54000H和54001H兩單元的內(nèi)容送BX。294/3/2024(2)以BP寄存器進(jìn)行間接尋址—堆棧段(3)以SI和DI寄存器進(jìn)行間接尋址—變址尋址。SI和DI寄存器分別稱為源變址寄存器和目的變址寄存器,所以用這兩個(gè)寄存器來(lái)進(jìn)行間接尋址也叫變址尋址。變址尋址通常用于對(duì)數(shù)組元素進(jìn)行操作,另外,后面還會(huì)講到有些串操作指令要求用固定的變址寄存器對(duì)操作數(shù)進(jìn)行尋址,操作過(guò)程中,指令會(huì)自動(dòng)修改變址寄存器中的地址,以指向下一個(gè)操作數(shù)。304/3/2024(3)以SI和DI寄存器進(jìn)行間接尋址—變址尋址。304/2寄存器相對(duì)尋址方式微機(jī)原理及應(yīng)用吳麗娟314/3/2024寄存器相對(duì)尋址方式微機(jī)原理及應(yīng)用吳麗娟314/2(3)以SI和DI寄存器進(jìn)行間接尋址—變址尋址。例:設(shè)DS=2000H,SS=3000H,BX=1000H,BP=2100H,(21000H)=1426H,(32100H)=2017H,問(wèn)執(zhí)行MOVAX,[BX]MOVBL,[BP]指令后AX=?BL=?2614172021000H21001H32100H32101H答案:AX=1426HBL=17H324/3/2024(3)以SI和DI寄存器進(jìn)行間
(4)將BX,BP和SI,DI寄存器組合起來(lái)進(jìn)行間接尋址—基址加變址的尋址。通常將BX和BP稱為基址寄存器,將SI和DI稱為變址寄存器。8086指令系統(tǒng)允許把基址寄存器和變址寄存器組成起來(lái)構(gòu)成一種新的尋址方式,叫基址加變址的尋址。用這種尋址方式時(shí),操作數(shù)的有效地址是1個(gè)基址寄存器(BX或BP)的內(nèi)容加上一個(gè)變址寄存器(SI或DI)的內(nèi)容。即:[BX][SI][BP][DI]EA=+334/3/2024(4)將BX,BP和SI,DI寄存器組合起來(lái)進(jìn)行間例如:MOVAX,[BX+SI]設(shè)DS=1000H,BX=5000H,SI=2000H,則上面指令在執(zhí)行時(shí),有效地址為7000H,本指令將17000H和17001H兩單元的內(nèi)容取到AX中。圖5.2對(duì)堆棧中數(shù)組的訪問(wèn)在基址加變址的尋址方式中,只要用上BP寄存器,那么默認(rèn)的段寄存器就是SS;在其它情況下,默認(rèn)的段寄存器均為DS。如果操作數(shù)不在默認(rèn)段,則要用前綴指出相應(yīng)的段寄存器名。344/3/2024例如:MOVAX,[BX+SI]344/2/用基址加變址的尋址方式時(shí),與變址尋址、基址尋址的情況類似,也允許帶一個(gè)8位或16位的位移量。帶位移量的基址加變址的尋址,在有些資料中也稱為相對(duì)的基址加變址尋址。如:MOVAX,[BX+SI+0050];將BX和SI中的內(nèi)容與0050相加作為有效地址由于基址加變址的尋址方式中,允許兩個(gè)地址分量分別改變,而且有一個(gè)對(duì)段寄存器的約定規(guī)則—即如果基址寄存器用BX,則默認(rèn)的段寄存器為DS;如果基址寄存器用BP,則默認(rèn)的段寄存器為SS—這種尋址方式使用起來(lái)很靈活。354/3/2024用基址加變址的尋址方式時(shí),與變址尋址、基基址變址尋址方式微機(jī)原理及應(yīng)用吳麗娟364/3/2024基址變址尋址方式微機(jī)原理及應(yīng)用吳麗娟364/2/相對(duì)基址變址尋址方式微機(jī)原理及應(yīng)用吳麗娟374/3/2024相對(duì)基址變址尋址方式微機(jī)原理及應(yīng)用吳麗娟374/圖5.3對(duì)8086有關(guān)操作數(shù)的各種尋址方式進(jìn)行了總結(jié)。圖中不僅指出了每種尋址方式下操作數(shù)的來(lái)源,還表明了有效地址的計(jì)算方法。圖5.38086/8088的操作數(shù)尋址方式384/3/2024圖5.3對(duì)8086有關(guān)操作數(shù)的各種尋址方式進(jìn)行了總結(jié)。為了對(duì)各種尋址方式有個(gè)比較,下面舉一個(gè)綜合性的例子?!纠吭O(shè)BX=0158H,DI=10A5H,位移量=1B57H,DS=2100H,并假定沒有使用段前綴,即把DS作為操作數(shù)對(duì)應(yīng)的段寄存器。在各種尋址方式下,這些寄存器和位移量所產(chǎn)生的有效地址和物理地址為:①直接尋址:有效地址=1B57H物理地址=21000H+1B57H=22B57HMOVAX,[1B57H]394/3/2024為了對(duì)各種尋址方式有個(gè)比較,下面舉一個(gè)綜合性的例子。M②寄存器間接尋址(寄存器為BX):有效地址=0158H物理地址=21000H+0158H=21158H③BX寄存器相對(duì)間接尋址:有效地址=0158H+1B57H=1CAFH物理地址=21000H+1CAFH=22CAFH④變址尋址(寄存器為DI):有效地址=10A5H物理地址=21000H+10A5H=220A5HMOVAX,[BX]MOVAX,[BX+1B57H]MOVAX,[DI]404/3/2024②寄存器間接尋址(寄存器為BX):MOVAX,[BX⑤DI寄存器相對(duì)變址尋址:有效地址=10A5H+1B57H=2BFCH物理地址=21000H+2BFCH=23BFCH⑥基址加變址的尋址(BX為基址寄存器,DI為變址寄存器):有效地址=0158H+10A5H=11FDH物理地址=21000H+11FDH=221FDH⑦相對(duì)的基址加變址的尋址(BX為基址寄存器,DI為變址寄存器):有效地址=0158H+10A5H+1B57H=2D54H物理地址=21000H+2D54H=23D54H
MOVAX,[DI+1B57H]MOVAX,[BX+DI]MOVAX,[BX+DI+1B57H]414/3/2024⑤DI寄存器相對(duì)變址尋址:MOVAX,[DI+1B5例:已知DS=1000H,ES=2000H,SS=1100H,SI=1010H,BX=0200H,BP=0600H.請(qǐng)指出下列指令的源操作數(shù)字段是什么尋址方式,源操作數(shù)物理地址是多少。MOVAL,[2400H]MOVAX,[BP]ADDAX,ES:[BP+10]MOVAL,[BX+SI+25]直接尋址,PA=DS*16+2400=12400H寄存器間接尋址,PA=SS*16+BP=11600H寄存器相對(duì)尋址,PA=ES*16+BP+0AH=2060AH相對(duì)基址加變址尋址,PA=DS*16+BX+SI+19H=11229H424/3/2024例:已知DS=1000H,ES=2000H,SS=1例:分別指出下列指令的源操作數(shù)和目的操作數(shù)的尋址方式。MOVSI,200MOVCX,DATA:[SI]ADDAX,[BX][SI]ADDAX,BXMOV[SI],AX源:立即數(shù)尋址目的:寄存器尋址源:寄存器間接尋址目的:寄存器尋址源:基址加變址尋址目的:寄存器尋址源:寄存器尋址目的:寄存器尋址源:寄存器尋址目的:寄存器間接尋址434/3/2024例:分別指出下列指令的源操作數(shù)和目的操作數(shù)的尋址方式。434例:寫出以下指令中內(nèi)存操作數(shù)的所在地址。(1)MOVAL,[BX+5](2)MOV[BP+5],AX(3)INCBYTEPTR[SI+3](4)MOVDL,ES:[BX+DI](5)MOVBX,[BX+SI+2](1)數(shù)據(jù)段基址尋址,(DS)*16+(BX)+5(2)以BP寄存器進(jìn)行的間接尋址(堆棧段基址尋址),(SS)*16+(BP)+5(3)本條指令含義為:將[SI+3]所指存儲(chǔ)單元的內(nèi)容加1,(DS)*16+(SI)+3(4)基址加變址尋址,(ES)*16++(BX)+(DI)(5)相對(duì)基址加變址尋址,(DS)*16++(BX)+(SI)+2444/3/2024例:寫出以下指令中內(nèi)存444/2/2024尋址方式小結(jié)尋址方式操作數(shù)地址(PA)指令格式舉例立即數(shù)尋址操作數(shù)由指令給出MOVDX,100H;(DX)←100H寄存器尋址操作數(shù)在寄存器中ADDAX,BX;(AX)←(AX)+(BX)直接尋址操作數(shù)的有效地址由指令直接給出MOVAX,[100H];(AX)←(100H)寄存器間接尋址PA=(DS)×16+(BX)或(SI)或(DI)PA=(SS)×16+(BP)MOVAX,[BX];(AX)←(DS)×16+(BX)MOVAX,[BP];(AX)←(SS)×16+(BP)基址變址尋址PA=(DS)×16+(BX)+(SI)或(DI)PA=(SS)×16+(BP)+(SI)或(DI)MOVAX,[BX+DI];(AX)←(DS)×16+(BX)+(DI))相對(duì)基址變址尋址PA=(DS)×16+(BX)+(SI)或(DI)+位移量PA=(SS)×16+(BP)+(SI)或(DI)+位移量MOVAX,[BX+DI+100];(AX)←(DS)×16+(BX)+(DI)+100454/3/2024尋址方式小結(jié)尋址方式操作數(shù)地址(PA)指令格式舉例立即數(shù)尋址指令類指令名稱指令助憶符傳送數(shù)據(jù)/地址傳送進(jìn)出棧交換、換碼輸入輸出MOVLEALDSLESLAHFSAHFPUSHPUSHFPOPPOPFXCHGXLATINOUT算術(shù)運(yùn)算加、減、比較乘、除、擴(kuò)展十進(jìn)制調(diào)整ADDADCINCSUBSBBDECNEGCMPMULIMULDIVIDIVCBWCWDAAAAASDAADASAAMAAD位操作邏輯運(yùn)算移位循環(huán)移位ANDORXORTESTNOTSAL/SHLSHRSARROLRORRCLRCR串操作串傳送存取串串比較、串掃描MOVSMOVSBMOVSWSTOSSTOSBSTOSWLODSLODSBLODSWCMPSCMPSBCMPSWSCASSCASBSCASW程序控制調(diào)用、中斷返回?zé)o條件轉(zhuǎn)移循環(huán)控制指令條件轉(zhuǎn)移CALLRETIRETINTINTOJMPLOOPLOOPE/LOOPZLOOPNE/LOOPNZJCXZJA/JNBEJAE/JNBJB/JNAEJBE/JNAJG/JNLEJE/JZJNE/JNZJGE/JNLJL/JNGEJLE/JNGJNCJCJNSJSJP/JPEJNP/JPOJNOJO處理器控制清置標(biāo)志其它CLCSTCCMCCLDSTDCLISTINOPWAITHLT前綴重復(fù)前綴段超越前綴總線封鎖前綴REPREPE/REPZREPNE/REPNZES:DS:CS:SS:LOCK常用指令
464/3/2024指令類指令名稱指令助憶符傳送數(shù)據(jù)/地址傳送MOVLEA5.2傳送類指令傳送類指令可以分為4種:通用數(shù)據(jù)傳送指令目標(biāo)地址傳送指令標(biāo)志位傳送指令I(lǐng)/O數(shù)據(jù)傳送指令傳送類指令是指令系統(tǒng)中最活躍的一類指令,也是條數(shù)最多的一類指令,主要用于數(shù)據(jù)的保存及交換等場(chǎng)合。474/3/20245.2傳送類指令傳送類指令可以分為4種:除了SAHF和POPF指令外,其余指令執(zhí)行后對(duì)標(biāo)志位都沒有影響。指令類型指令格式指令功能狀態(tài)標(biāo)志位備注OSZAPC通用數(shù)據(jù)傳送MOV目標(biāo),源PUSH源POP目標(biāo)XCHG目標(biāo),源XLAT傳送字節(jié)或字字壓入堆棧字彈出堆棧交換字節(jié)或字字節(jié)翻譯––––––––––––––––––......––––––源:R、M、立即數(shù)目標(biāo):R、M源:R、M目標(biāo):R(CS除外)、M源:通用R、M目標(biāo):通用R、M目標(biāo)地址傳送LEA目標(biāo),源LDS目標(biāo),源LES目標(biāo),源裝入有效地址裝入數(shù)據(jù)段指針到DS裝入附加段指針到ES––––––––––––––––––源:內(nèi)存操作數(shù)目標(biāo):16位通用R源:內(nèi)存操作數(shù)目標(biāo):16位通用R源:內(nèi)存操作數(shù)目標(biāo):16位通用R標(biāo)志位傳送LAHFSAHFPUSHFPOPF把FR低字節(jié)裝入AH把AH內(nèi)容裝入FR低字節(jié)把FR內(nèi)容壓入堆棧從堆棧中彈出FR內(nèi)容–––––––·····––––––······I/O數(shù)據(jù)傳送IN累加器,端口OUT端口,累加器輸入字節(jié)或字輸出字節(jié)或字––––––––––––累加器:AL或AX端口:地址0~255或間接寄存器DX·:運(yùn)算結(jié)果影響標(biāo)志位–:運(yùn)算結(jié)果不影響標(biāo)志位傳送類指令484/3/2024除了SAHF和POPF指令外,其余指令執(zhí)行后對(duì)標(biāo)志位5.2.1通用數(shù)據(jù)傳送指令通用傳送指令中包括最基本的傳送指令MOV,堆棧指令PUSH和POP,數(shù)據(jù)交換指令XCHG。1.最基本的傳送指令MOV指令是形式最簡(jiǎn)單、用得最多的指令。它可以實(shí)現(xiàn)CPU內(nèi)部寄存器之間的數(shù)據(jù)傳送、寄存器和內(nèi)存之間的數(shù)據(jù)傳送,還可以把一個(gè)立即數(shù)送給CPU的內(nèi)部寄存器或者內(nèi)存單元。將數(shù)據(jù)從一個(gè)地址傳送到另一個(gè)地址;
數(shù)據(jù)在傳送過(guò)程中不發(fā)生任何變化;
對(duì)標(biāo)志寄存器的內(nèi)容無(wú)任何影響。傳送指令的特點(diǎn)494/3/20245.2.1通用數(shù)據(jù)傳送指令通用傳送指
1.最基本的傳送指令
MOVBH,[DI] ;源操作數(shù)為寄存器間接尋址 MOVDI,ES:3[SI];源操作數(shù)為變址尋址,使用跨段前綴 MOVBP,3[BX+SI];源操作數(shù)為基址加變址尋址 MOVAL,BL;BL中的8位數(shù)據(jù)送AL MOVES,DX;DX中的16位數(shù)據(jù)送附加段寄存器ES MOVAX,[BX];BX和BX+1所指的兩個(gè)內(nèi)存單元內(nèi)容送AX MOV[DI],AX;累加器的內(nèi)容送DI和DI+1所指的兩個(gè)單元 MOVCX,[1000];把1000和1001兩個(gè)單元的內(nèi)容送CX504/3/20241.最基本的傳
使用MOV指令傳送數(shù)據(jù)時(shí)應(yīng)該注意:①立即數(shù)和段寄存器CS不能作為目的操作數(shù);如MOVCS,AX或MOV1000H,AX②立即數(shù)不能直接傳送到段寄存器;
如
MOVCS,1000H③兩個(gè)存儲(chǔ)單元之間不能直接傳送數(shù)據(jù);
如
MOV[1000H],[2000H]④兩個(gè)段寄存器之間不能直接傳送數(shù)據(jù)
如
MOVDS,ES514/3/2024使用MOV指令傳送數(shù)據(jù)時(shí)應(yīng)該注意:514/例如:分析如下MOV指令的正確性:MOVAX,BLMOVDS,1000HMOV[BX],[SI]MOVES,CSMOVCS,AX;類型不匹配;不允許立即數(shù)送段寄存器;不允許內(nèi)存操作數(shù)之間傳送;不允許段寄存器之間傳送;CS不能作為目的操作數(shù)524/3/2024例如:分析如下MOV指令的正確性:;類型不匹配;不允許立即數(shù)補(bǔ)充:堆棧(STACK)是按后進(jìn)先出原則組織的一片存儲(chǔ)區(qū)域,用來(lái)暫存一批需要回避的數(shù)據(jù)或地址。“后進(jìn)先出”堆棧:暫存數(shù)據(jù)、斷點(diǎn)信息或傳送信息用途:存取原則:堆棧段的最大深度:64KB534/3/2024補(bǔ)充:堆棧(STACK)是按后進(jìn)先出原則組織的一片存堆棧的構(gòu)造一端固定,具有最大地址的單元(數(shù)據(jù)由此向上堆積) 一端浮動(dòng),指向最后被壓入堆棧的數(shù)據(jù)所在存儲(chǔ)單元(棧頂?shù)奈恢秒S堆棧中存放數(shù)據(jù)多少而變化) 用來(lái)指示當(dāng)前棧頂?shù)奈恢谩?壓入的數(shù)據(jù)放入哪個(gè)單元或從那個(gè)單元彈出數(shù)據(jù)均由SP決定)堆棧段SSBottomXXXXXXXXTopSP初始SP棧底:棧頂:堆棧指針:544/3/2024堆棧的構(gòu)造一端固定,具有最大地址的單元(數(shù)據(jù)由8086堆棧的組織該片存儲(chǔ)區(qū)域所包含存儲(chǔ)單元數(shù),其值有由初始時(shí)SP的值決定(指向棧底+1單元)12H34H01954H01955H 如64KB的堆棧段不能滿足需要,可通過(guò)修改SS來(lái)改變當(dāng)前的堆棧段,使之指向另一片存儲(chǔ)區(qū)域,同時(shí)SP重新賦值堆棧段:由SS存放堆棧段段基值以決定其起始地址堆棧段的長(zhǎng)度:堆棧是按字組織的,數(shù)據(jù)的存取均為2字節(jié)操作數(shù)據(jù)在堆棧段內(nèi)的存放堆棧區(qū)域的擴(kuò)展:554/3/20248086堆棧的組織堆棧的三種基本操作SS、SP賦值(段的起始位置及長(zhǎng)度)
SP–2→SP ;棧頂向上浮動(dòng)
數(shù)據(jù)→(SS:SP)
(SS:SP)→R/M
SP+2→SP數(shù)據(jù) ;棧頂向下回落1、設(shè)置堆棧2、進(jìn)棧把數(shù)據(jù)壓入堆棧,在棧頂進(jìn)行3、出棧從棧頂取出數(shù)據(jù)送入R/M564/3/2024堆棧的三種基本操作SS、SP賦值(段的起始位置及長(zhǎng)度) S執(zhí)行堆棧指令PUSH和POP時(shí),指令地址是由SP給出當(dāng)前棧頂?shù)钠频刂?,故將SP稱為堆棧指針寄存器。SP和BP在使用上有區(qū)別:BP則是用來(lái)存放位于堆棧段中的一個(gè)數(shù)據(jù)區(qū)基址的偏移地址的,故將BP稱做基址指針寄存器。574/3/2024執(zhí)行堆棧指令PUSH和POP時(shí),指令地址是由SP給出當(dāng)前棧頂86系列指令系統(tǒng)中提供了專用的堆棧操作指令,其中PUSH是把字壓入堆棧,POP是把字彈出堆棧。在程序中采用堆棧操作指令時(shí),應(yīng)預(yù)置堆棧段寄存器SS、堆棧指示器SP的值,同時(shí),使SP的內(nèi)容為當(dāng)前堆棧段的棧頂。在執(zhí)行PUSH指令時(shí),首先,堆棧指示器SP自動(dòng)減2;然后,將一個(gè)字以源操作數(shù)傳送至棧頂。POP指令的執(zhí)行過(guò)程正好與PUSH指令相反,它把由SP指出的當(dāng)前堆棧段的棧頂?shù)囊粋€(gè)操作數(shù)(一個(gè)字),傳送到目的操作數(shù)中,然后,SP自動(dòng)加2,指向新的棧頂。2.堆棧操作指令584/3/202486系列指令系統(tǒng)中提供了專用的堆棧操作指令,POP指令中的目的操作數(shù)可以是除代碼段寄存器CS之外的其它寄存器和存儲(chǔ)器。在86系列指令系統(tǒng)中,不允許CS寄存器作為目的操作數(shù)使用。這是因?yàn)?一旦改變了代碼段寄存器CS的內(nèi)容,使程序有了新的當(dāng)前代碼段,就會(huì)導(dǎo)致CPU從新的CS和IP給出的毫無(wú)意義的地址中去取下一條指令,使程序錯(cuò)誤運(yùn)行。2.堆棧操作指令594/3/2024POP指令中的目的操作數(shù)可以是除代碼段寄存器CS之外例如,將16位通用寄存器CX的內(nèi)容壓入堆棧,然后,彈出棧頂至CX中,已知:(SS)=0200H,(SP)=0008H,(CX)=12FAH,其示意圖如下圖所示。2.堆棧操作指令–20200SS0008SP12FACXSS段首地址新棧頂原棧頂12FAH2000200620072008存儲(chǔ)器
12FA…×16PUSHCX指令的操作過(guò)程604/3/2024例如,將16位通用寄存器CX的內(nèi)容壓入堆棧,PUSH指令的功能微機(jī)原理及應(yīng)用吳麗娟614/3/2024PUSH指令的功能微機(jī)原理及應(yīng)用吳麗娟614/2例如,將16位通用寄存器CX的內(nèi)容壓入堆棧,然后,彈出棧頂至CX中,已知:(SS)=0200H,(SP)=0008H,(CX)=12FAH,其示意圖如下圖5.4和圖5.5所示。2.堆棧操作指令+20200SS0006SPSS段首地址原棧頂12FAH新棧頂2000200620072008存儲(chǔ)器
12FA…12FACX×16POPCX指令的操作過(guò)程624/3/2024例如,將16位通用寄存器CX的內(nèi)容壓入堆棧,POP指令的功能微機(jī)原理及應(yīng)用吳麗娟634/3/2024POP指令的功能微機(jī)原理及應(yīng)用吳麗娟634/2/例設(shè)SS=1234H,SP=0FEFEH,DX=0314H,AX=3010H。問(wèn):1)當(dāng)前棧頂?shù)奈锢淼刂贰?)執(zhí)行PUSHDXPUSHAXPOPAX后SP=?(1)MOVCX,AXMOVAX,BXMOVBX,CX(2)PUSHAXPUSHBXPOPAXPOPBX解:1)SS×16+SP=12340+0FEFE=2223EH2)SP–2SP=0FEFCH例寫出將AX和BX中內(nèi)容互換有哪幾種方法644/3/2024例設(shè)SS=1234H,SP=0FEFEH,DX=031例設(shè)堆棧指針SP的初值為2000H,AX=3000H,BX=5000H,試問(wèn):(1)執(zhí)行指令PUSHAX后SP=?(2)再執(zhí)行PUSHBXPOPAX后SP=?AX=?BX=?解:1)執(zhí)行指令PUSHAX后SP=2000H–2=1FFEH2)SP=1FFEH,AX=5000H,BX=5000H005000302000H654/3/2024例設(shè)堆棧指針SP的初值為2000H,AX=3000H,
3.交換指令交換指令XCHG可以實(shí)現(xiàn)字節(jié)交換,也可以實(shí)現(xiàn)字交換。交換過(guò)程可以在CPU的內(nèi)部寄存器之間進(jìn)行,也可以在內(nèi)部寄存器和存儲(chǔ)單元之間進(jìn)行,但不能在兩個(gè)存儲(chǔ)單元之間執(zhí)行數(shù)據(jù)交換過(guò)程。例如:XCHGAL,BL;AL和BL之間進(jìn)行字節(jié)交換XCHGBX,CX;BX和CX之間進(jìn)行字交換XCHG[2530],CX;CX和2530,2531兩單元的內(nèi)容交換MOVAX,5678H ;(AX)=5678HMOVBX,0FFFFH ;(BX)=0FFFFHXCHGAX,BX ;(AX)=0FFFFH,(BX)=5678H不能使用CS、IP作為操作數(shù)664/3/20243.交XCHG指令的功能微機(jī)原理及應(yīng)用吳麗娟674/3/2024XCHG指令的功能微機(jī)原理及應(yīng)用吳麗娟674/24.換碼指令XLAT是一條完成字節(jié)翻譯功能的指令,稱為換碼指令。它可以使累加器中的一個(gè)值變換為內(nèi)存表格中的某一個(gè)值,一般用來(lái)實(shí)現(xiàn)編碼制的轉(zhuǎn)換。使用換碼指令時(shí),要求BX寄存器指向表的首地址,AL中為表中某一項(xiàng)與表格首地址之間的偏移量,指令執(zhí)行時(shí),會(huì)將BX和AL中的值相加,把得到的值作為地址,然后將此地址所對(duì)應(yīng)的單元中的值取到AL中去。684/3/20244.換碼指令684/2/2024
圖5.6表示了換碼指令的功能。XLAT指令就是通過(guò)查表方式來(lái)完成翻譯功能的,因此,在執(zhí)行該指令之前,必須建立好一張翻譯表,該表的最大容量為256字節(jié)。圖5.6換碼指令的功能694/3/2024圖5.6表示了換碼指令的功能。XLAT指令就是通過(guò)查表方式執(zhí)行XLAT指令可將任意一個(gè)十進(jìn)制數(shù)翻譯成7段顯示碼,其操作步驟如下:(1)將譯碼表定位到某個(gè)邏輯段的一片連續(xù)地址中,并將其表首址的偏移地址置入BX寄存器中。(2)將待翻譯的十進(jìn)制數(shù)字送入AL寄存器中。(3)執(zhí)行XLAT指令。例如,假設(shè)這段數(shù)據(jù)存放在偏移地址為2000H開始的內(nèi)存中,取出“3”所對(duì)應(yīng)的7段碼,用如下幾條程序助記符即可完成:MOVBX,2000HMOVAL,3XLAT704/3/2024執(zhí)行XLAT指令可將任意一個(gè)十進(jìn)制數(shù)翻譯成7段顯示碼XLAT指令的功能微機(jī)原理及應(yīng)用吳麗娟714/3/2024XLAT指令的功能微機(jī)原理及應(yīng)用吳麗娟714/25.2.2目標(biāo)地址傳送指令這是一類專用于傳送地址碼的指令,用來(lái)傳送操作數(shù)的段地址或偏移地址,共包含以下3條指令:1.取有效地址指令取有效地址指令LEA的功能是將存儲(chǔ)器地址送到一個(gè)寄存器.LEA指令格式中,要求源操作數(shù)必須為內(nèi)存單元地址,目的操作數(shù)必須為一個(gè)16位的通用寄存器。1.取有效地址指令LEA2.取偏移地址及數(shù)據(jù)段首址指令LDS3.取偏移地址及附加數(shù)據(jù)段指令LES724/3/20245.2.2目標(biāo)地址傳送指令這是一類專用5.2.2目標(biāo)地址傳送指令這條指令常用來(lái)使一個(gè)寄存器作為地址指針。例如:LEAAX,[2728];將2728單元的偏移量送AX,指令執(zhí)行后,AX=2728LEABX,[BP+SI];指令執(zhí)行后,BX中的內(nèi)容為BP+SI的值LEASP,[0482];使堆棧指針SP為482例如:主存偏移地址的獲取。MOVBX,0100H ;(BX)=0100HMOVSI,0210H ;(SI)=0210HLEABX,1234[BX+SI] ;(BX)=1544H注:LEABX,1234[BX+SI]等同于LEABX,[BX+SI+1234]734/3/20245.2.2目標(biāo)地址傳送指令這條指令常用來(lái)使一個(gè)寄存器作為如LEABX,[2700H];將(相對(duì)于DS)偏移地址2700H送BX;(BX)=2700H例:設(shè)DS=3000H,BX=2000H,SI=1000H,問(wèn)(1)執(zhí)行LEAAX,[BX+SI+1000H]后,AX=?(2)執(zhí)行MOVAX,[BX+SI+1000H]后,AX=?8DH80H00H10H56H12HDS30000HBX2000HSI1000H+1000H34000H34000HEA4000HAX操作碼位移量代碼段數(shù)據(jù)段LEA與MOV指令的區(qū)別4000H1256H即:MOV指令傳送操作數(shù)的內(nèi)容,LEA傳送操作數(shù)的地址。744/3/2024如LEABX,[2700H]2.將地址指針裝到DS和另一個(gè)寄存器的指令LDS指令的功能是把4個(gè)字節(jié)的地址指針(其中包括一個(gè)段地址和一個(gè)偏移量)傳送到兩個(gè)目的寄存器,其中,地址指針的后兩個(gè)字節(jié)即段地址一定送到DS中。比如,設(shè)2130H~2133H這4個(gè)單元中存放著一個(gè)地址,2130H和2131H中為地址的偏移量,2132H和2133H中為地址的段值,執(zhí)行指令:LDSDI,[2130H]使2130H和2131H中的偏移量送到DI,2132H和2133H中的段值送到DS。754/3/20242.將地址指針裝到DS和另一個(gè)寄2.將地址指針裝到DS和另一個(gè)寄存器的指令
設(shè)[1000H]、[1001H]、[1002H]、[1003H]這四個(gè)存儲(chǔ)單元存放的地址分別為12H、34H、56H、78H,則執(zhí)行完LDSDI,[1000H]后,DS=?,DI=?答案:DS=7856H,DI=3412H764/3/20242.將地址指針裝到DS和另一個(gè)寄存器的指令答案:DS=73.將地址指針裝到ES和另一個(gè)寄存器的指令LES指令與LDS指令的操作基本相同,所不同僅在于將源操作數(shù)所指向地址指針中的段基址(后兩個(gè)字節(jié))傳送到ES段寄存器,而不是DS段寄存器。774/3/20243.將地址指針裝到ES和另一個(gè)寄存器的指令774/2/2LDS或LES指令將源操作數(shù)指定的4個(gè)連續(xù)字節(jié)單元內(nèi)容分別送入指令指定的寄存器以及DS或ES中。其中:低16位送到一個(gè)指定的字寄存器,高16位送到DS或ES中。57H13H68H24H例:(DS)=C000H,(C2480H)=1357H,(C2482H)=2468HDS:2480HDS:2481HDS:2482HDS:2483H1357SI2468DSLDSSI,[2480]784/3/2024LDS或LES指令將源操作數(shù)指定的4個(gè)連續(xù)字節(jié)單元內(nèi)容分別送5.2.3標(biāo)志位傳送指令可完成標(biāo)志位傳送的指令共有4條:1.讀取標(biāo)志指令LAHF2.設(shè)置標(biāo)志指令SAHF3.標(biāo)志寄存器進(jìn)棧指令PUSHF4.標(biāo)志寄存器出棧指令POPF794/3/20245.2.3標(biāo)志位傳送指令可完成標(biāo)志位傳送的指令共有圖5.7LAHF指令的功能1.讀取標(biāo)志指令讀取標(biāo)志指令LAHF被執(zhí)行時(shí),將標(biāo)志寄存器中的低8位傳送到AH中,如圖5.7所示。D5D3D1三位任意!804/3/2024圖5.7LAHF指令的功能1.讀取標(biāo)志指令D52.設(shè)置標(biāo)志指令設(shè)置標(biāo)志指令SAHF被執(zhí)行時(shí),將AH寄存器的相應(yīng)位傳送到標(biāo)志寄存器的低8位。用下圖表示。814/3/20242.設(shè)置標(biāo)志指令814/2/2024
3.對(duì)標(biāo)志寄存器的壓入堆棧指令和彈出堆棧指令PUSHF指令將標(biāo)志寄存器的值壓入堆棧頂部,同時(shí),堆棧指針SP的值減2,此指令在執(zhí)行時(shí)標(biāo)志寄存器的值不變。POPF指令的功能正好相反,此指令在執(zhí)行時(shí)從堆棧中彈出一個(gè)字送到標(biāo)志寄存器中,同時(shí)堆棧指針SP的值加2。PUSHFPOP AXOR AH,01HPUSH AXPOPF利用這兩條指令可以方便的修改FR中某一位。如,86/8088系統(tǒng)中無(wú)直接能修改TF標(biāo)志位的指令,可用右邊程序?qū)崿F(xiàn):824/3/20243.對(duì)標(biāo)志寄存器的壓入堆棧指令5.2.4輸入/輸出數(shù)據(jù)傳送指令輸入/輸出指令用來(lái)完成累加器(AX/AL)與I/O端口之間的數(shù)據(jù)傳送.執(zhí)行輸入指令時(shí),CPU可以從一個(gè)8位端口讀入一個(gè)字節(jié)到AL中,也可以從兩個(gè)連續(xù)的8位端口讀一個(gè)字到AX中。執(zhí)行輸出指令時(shí),CPU可以將AL中的一個(gè)字節(jié)寫到一個(gè)8位端口中,或者將AX中的一個(gè)字寫到兩個(gè)連續(xù)的8位端口中。CPU外設(shè)外設(shè)I/OI/OPORT834/3/20245.2.4輸入/輸出數(shù)據(jù)傳送指令輸入/輸出指令用來(lái)完成累IN有四種形式:(1)語(yǔ)句格式:INAL,PORT 功能:(PORT)→AL(2)語(yǔ)句格式:INAX,PORT 功能:(PORT)→AXINAL,50H;將50H端口的字節(jié)讀入ALINAX,70H;將70H、71H兩端口的值讀入AX,70H端口的內(nèi)容讀入AL,71H端口的內(nèi)容讀入AH①源操作數(shù)“50H、70H”從形式上來(lái)說(shuō)是立即數(shù),實(shí)際上是端口地址,因而指令的尋址方式為直接尋址。②“MOV”指令中,直接尋址要加中括號(hào),輸入輸出指令不加。如MOVAL,[2000H];INAL,25H
這兩句:
直接IN指令(端口地址只能8位)間接IN指令(口地址是16位,也可8位。)
MOVDX,0FFF2HINAL,DX844/3/2024IN有四種形式:①源操作數(shù)“50H、70H”從形式上來(lái)說(shuō)(3)語(yǔ)句格式:INAL,DX;從DX所指的端口中讀取一個(gè)字節(jié) 功能:([DX])→AL(4)語(yǔ)句格式:INAX,DX;從DX和DX+1所指出的兩個(gè)端口中讀取一個(gè)字,較低地址端口中的值讀到AL中,較高地址端口中的值讀到AH中;功能:([DX])→AL注意:這兩條指令為寄存器間接尋址,但對(duì)DX不加中括號(hào)。如MOVAL,[BX]
INAL,DX854/3/2024(3)語(yǔ)句格式:INAL,DX;從DX所指的端口中OUT有四種形式:(1)語(yǔ)句格式:OUTPORT,AL功能:(AL)→PORT(2)語(yǔ)句格式:OUTPORT,AX 功能:(AX)→PORTOUT44H,AL;將AL中的一個(gè)字節(jié)輸出到44H端口OUT80H,AX;將AX中的內(nèi)容輸出到80H,81H兩端口,AL中的內(nèi)容輸出到80H,AH中的內(nèi)容輸出到81H直接OUT指令(端口地址只能8位)864/3/2024OUT有四種形式:直接OUT指令864/2/2024(3)語(yǔ)句格式:OUTDX,AL;將AL中的字節(jié)輸出到DX所指的端口(4)語(yǔ)句格式:OUTDX,AX;將AL中的字節(jié)輸出到DX所指的端口中,同時(shí)將AH中的字節(jié)輸出到DX+1所指的端口中
間接OUT指令(端口地址是16位,也可8位。)MOVDX,87FEHMOVDX,80HMOVAL,40HOUTDX,ALOUTDX,AL例1例2874/3/2024(3)語(yǔ)句格式:OUTDX,AL;將AL中的字節(jié)在計(jì)算機(jī)內(nèi)部表示二進(jìn)制數(shù)的方法通常稱為數(shù)值編碼,把一個(gè)數(shù)及其符號(hào)在機(jī)器中的表示加以數(shù)值化,這樣的數(shù)稱為機(jī)器數(shù)。機(jī)器數(shù)有兩個(gè)基本特點(diǎn),其一,數(shù)的符號(hào)數(shù)值化。整數(shù)有正數(shù)和負(fù)數(shù),因?yàn)橛?jì)算機(jī)只能表示0、1兩種狀態(tài),數(shù)據(jù)的正號(hào)“+”或負(fù)號(hào)“–”,在機(jī)器里就用一位二進(jìn)制的0或1來(lái)區(qū)別。通常這個(gè)符號(hào)放在二進(jìn)制數(shù)的最高位,稱符號(hào)位,以0代表符號(hào)“+”,以1代表符號(hào)“–”,這樣正負(fù)符號(hào)就被數(shù)值化了。因?yàn)橛蟹?hào)占據(jù)一位,數(shù)的形式值就不等于真正的數(shù)值,帶符號(hào)位的機(jī)器數(shù)對(duì)應(yīng)的數(shù)值稱為機(jī)器數(shù)的真值。補(bǔ)充:機(jī)器數(shù)884/3/2024在計(jì)算機(jī)內(nèi)部表示二進(jìn)制數(shù)的方法通常稱為數(shù)值機(jī)器數(shù)的另一個(gè)特點(diǎn)是二進(jìn)制的位數(shù)受機(jī)器設(shè)備的限制。機(jī)器內(nèi)部設(shè)備一次能表示的二進(jìn)制位數(shù)叫機(jī)器的字長(zhǎng),一臺(tái)機(jī)器的字長(zhǎng)是固定的。字長(zhǎng)8位叫一個(gè)字節(jié)(Byte),現(xiàn)在機(jī)器字長(zhǎng)一般都是字節(jié)的整數(shù)倍,如字長(zhǎng)8位、16位、32位、64位。字長(zhǎng)為8位時(shí),D7為符號(hào)位;字長(zhǎng)為16位時(shí),D15為符號(hào)位。如,一個(gè)8位字長(zhǎng)的計(jì)算機(jī)中,帶符號(hào)數(shù)的格式如下:
D7D6D5D4D3D2D1D0D7D6D5D4D3D2D1D0正數(shù)負(fù)數(shù)其中,最高位D7是符號(hào)位,其余D6~D0是數(shù)值位。01894/3/2024機(jī)器數(shù)的另一個(gè)特點(diǎn)是二進(jìn)制的位數(shù)受機(jī)器設(shè)備1、機(jī)器數(shù)的范圍機(jī)器數(shù)的范圍由計(jì)算機(jī)的硬件決定。
溫馨提示
- 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 直播電商中直播電商的互動(dòng)營(yíng)銷實(shí)踐對(duì)GMV增長(zhǎng)研究
- 店面安全管理應(yīng)急預(yù)案方案(3篇)
- 美容外科安全應(yīng)急預(yù)案范文(3篇)
- 韓山師范學(xué)院《城市垃圾處理與處置》2024-2025學(xué)年第一學(xué)期期末試卷
- 工廠反恐防暴應(yīng)急處置預(yù)案(3篇)
- 山東外國(guó)語(yǔ)職業(yè)技術(shù)大學(xué)《康養(yǎng)建筑設(shè)計(jì)》2024-2025學(xué)年第一學(xué)期期末試卷
- 陜西藝術(shù)職業(yè)學(xué)院《建筑設(shè)計(jì)7》2024-2025學(xué)年第一學(xué)期期末試卷
- 黃河科技學(xué)院《計(jì)算思維與人工智能基礎(chǔ)》2024-2025學(xué)年第一學(xué)期期末試卷
- 江蘇師范大學(xué)科文學(xué)院《文化市場(chǎng)營(yíng)銷學(xué)》2024-2025學(xué)年第一學(xué)期期末試卷
- 沈陽(yáng)工業(yè)大學(xué)《建筑裝飾材料與工程概預(yù)算》2024-2025學(xué)年第一學(xué)期期末試卷
- 6G多維度切片QoS保障-洞察及研究
- 2025-2026學(xué)年外研版(三起)(2024)小學(xué)英語(yǔ)四年級(jí)上冊(cè)教學(xué)計(jì)劃及進(jìn)度表
- 2025年安徽國(guó)控集團(tuán)所屬企業(yè)招聘7人筆試備考題庫(kù)及答案解析
- 2025年海南省警務(wù)輔助人員招聘考試(公共基礎(chǔ)知識(shí))歷年參考題庫(kù)含答案詳解(5套)
- 城市道路清掃保潔協(xié)議
- 2025年醫(yī)學(xué)檢驗(yàn)在編考試題庫(kù)
- 特色食品賣場(chǎng)建設(shè)方案(3篇)
- 子宮癌肉瘤護(hù)理查房
- 鄉(xiāng)村產(chǎn)業(yè)融合發(fā)展路徑與振興策略研究
- 夫妻離婚協(xié)議書(2025版)
- 消費(fèi)券提振機(jī)制-洞察及研究
評(píng)論
0/150
提交評(píng)論