CPU指令及匯編練習(xí)題_第1頁
CPU指令及匯編練習(xí)題_第2頁
CPU指令及匯編練習(xí)題_第3頁
CPU指令及匯編練習(xí)題_第4頁
CPU指令及匯編練習(xí)題_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

7.1匯編語言的基本概念:機器語言,高級語言,匯編語言,匯編語言源程序,匯編,匯編程序7.2匯編語言源程序的格式:分段結(jié)構(gòu)(匯編語言源程序由若干段組成,每個段以SEGMENT語句開始,以ENDS語句結(jié)束。整個源程序的結(jié)尾是END語句);語句分類:指令/偽指令語句;語句的格式:[名字]助記符[操作數(shù)][;注釋]LOOP1:MOVAL,DATA2[SI]DATA1DB0F8H,60H可以作為操作數(shù)的有常數(shù)、寄存器、標(biāo)號、變量和表達式:01011101B,0F2H,‘ABCDEFG’;標(biāo)號代表一條指令的符號地址,因此可以作為轉(zhuǎn)移(無條件轉(zhuǎn)移或條件轉(zhuǎn)移)、過程調(diào)用CALL以及循環(huán)控制LOOP指令的操作數(shù);變量的類型屬性有DB、DW、DD。MOVAX,DATA;表達式:算術(shù)運算符(+,?,*,/、MOD、SHL、SHR):32MOD5,邏輯運算符:AND,OR,XOR和NOT,24HAND0FH;關(guān)系運算符:EQ,NE,LT,GT,LE,GE等,MOVAX,4EQ3,當(dāng)關(guān)系不成立(假)時,結(jié)果為0(全0);當(dāng)關(guān)系成立(真)時,結(jié)果為0FFFFH(全1);分析運算符:SEG、OFFSET、TYPE、LENGTH和SIZE,MOVAX,SEGARRAY,MOVDI,OFFSETDATA1,LENGTH運算符可得到這個變量的個數(shù)。如果未用DUP說明,則得到的結(jié)果總是1。類型BYTEWORDDWORDQWORDTBYTENEARFARType值124810-1-2SIZE=LENGTH*TYPE7.3偽指令語句1、偽指令與指令語句的區(qū)別:指令是給CPU的命令,偽指令是給匯編程序的命令;匯編以后,每條指令產(chǎn)生一一對應(yīng)的目標(biāo)代碼;而偽指令則不產(chǎn)生與之相應(yīng)的目標(biāo)代碼。2、數(shù)據(jù)定義偽指令(DB,DW,DD)定義一個變量的類型,給變量賦初值,或者僅僅給變量分配存儲單元,而不賦予特定的值。

DATADB101,0F0H;存入65H,F(xiàn)0H EXPRDB2*8+7;存入17H STRDB‘Hello!';存入6個字符的ASCII碼值

ABDB'AB';存入41H,42H BADW'AB';存入42H,41H BUFFERDB 10DUP(?) ZERODW 30DUP(0) MASKDB 5DUP('OK!') ARRAYDB 100DUP(3DUP(8),6)3、符號定義偽指令*(EQU)給一個符號重新命名,或定義新的類型屬性等。

X1EQU0DHCOUNT=COUNT?104、段定義偽指令(SEGMENT/ENDS,ASSUME):ASSUME偽指令定義符應(yīng)該放在可執(zhí)行程序開始位置的前面。將某一個段寄存器設(shè)置為存放某一個邏輯段的段地址,并沒有給段寄存器賦予實際的初值。5、過程定義偽指令(過程名PROC,過程名ENDP)DATASSEGMENT

DATA1DB0F8H,60H,50DATA2DW5678HDA1DB2*8+7VARDW?X1DB'AB'X2DW'AB'X3DD'AB'ARRAYDD10DUP(?)STRDB‘ATEST‘LEQUSTR-DA1DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENT

ASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:MOVAX,DATASMOVDS,AX;此處計算相關(guān)內(nèi)容

MOVAL,LMOVAX,TYPEVARMOVBX,TYPEARRAYMOVCX,TYPESTRMOVDX,LENGTHARRAYMOVSI,SIZEARRAY

MOVAH,4CHINT21HCODESENDSENDSTART0F8H60H32H=5078H56H17H?41H42H42H41H42H41H00H00H?……?41H空格ASCIIT-ASCII33HDATA1DATA2?VARDA1X1X2X3ARRAY……STR10*4=40BYTE6BYTE字符4將下列詞匯和說明關(guān)聯(lián)起來:(1)CPU;(2)EU;(3)BIU;(4)IP;(5)SP;(6)存儲器;(7)堆棧;(8)指令;(9)狀態(tài)標(biāo)志;(10)控制標(biāo)志;(11)段寄存器;(12)物理地址;(13)匯編語言;(14)機器語言;(15)匯編程序;(16)連接程序;(17)目標(biāo)碼;(18)偽指令A(yù).保存當(dāng)前棧頂?shù)刂返募拇嫫鳎籅.指示下一條要執(zhí)行指令的地址;C.總線接口部件,實現(xiàn)執(zhí)行部件所需要的所有總線操作;D.分析并控制指令執(zhí)行的部件;E.存儲程序、數(shù)據(jù)等信息的記憶裝置,

PC機有RAM和ROM兩種;F.以后進先出方式工作的存儲器空間;G.把匯編語言程序翻譯成機器語言程序的系統(tǒng)程序;H.惟一代表存儲器空間中的每個字節(jié)單元的地址;I.能被計算機直接識別的語言;J.用指令的助記符、符號地址、標(biāo)號等符號書寫程序的語 言;K.把若干個模塊連接起來成為可執(zhí)行文件的系統(tǒng)程序;L.保存各邏輯段的起始地址的寄存器;M.控制操作的標(biāo)志,PC機有三位:DF、IF、TF;N.記錄指令操作結(jié)果的標(biāo)志,

PC機有六位:OF、SF、ZF、AF、PF、CF;O.執(zhí)行部件,由算術(shù)邏輯單元(ALU)和寄存器組等組成;P.由匯編程序在匯編過程中執(zhí)行的指令;Q.告訴CPU要執(zhí)行的操作,在程序運行時執(zhí)行;R.機器語言代碼。練習(xí)題5(1)CPU;(2)EU;(3)BIU;(4)IP;(5)SP;(6)存儲器;(7)堆棧;(8)指令;(9)狀態(tài)標(biāo)志;(10)控制標(biāo)志;(11)段寄存器;(12)物理地址;(13)匯編語言;(14)機器語言;(15)匯編程序;(16)連接程序;(17)目標(biāo)碼;(18)偽指令A(yù).保存當(dāng)前棧頂?shù)刂返募拇嫫鳎籅.指示下一條要執(zhí)行指令的地址;C.總線接口部件,實現(xiàn)執(zhí)行部件所需要的所有總線操作;D.分析并控制指令執(zhí)行的部件;E.存儲程序、數(shù)據(jù)等信息的記憶裝置,

PC機有RAM和ROM兩種;F.以后進先出方式工作的存儲器空間;G.把匯編語言程序翻譯成機器語言程序的系統(tǒng)程序;H.惟一代表存儲器空間中的每個字節(jié)單元的地址;I.能被計算機直接識別的語言;J.用指令的助記符、符號地址、標(biāo)號等符號書寫程序的語 言;K.把若干個模塊連接起來成為可執(zhí)行文件的系統(tǒng)程序;L.保存各邏輯段的起始地址的寄存器;M.控制操作的標(biāo)志,PC機有三位:DF、IF、TF;N.記錄指令操作結(jié)果的標(biāo)志,

PC機有六位:OF、SF、ZF、AF、PF、CF;O.執(zhí)行部件,由算術(shù)邏輯單元(ALU)和寄存器組等組成;P.由匯編程序在匯編過程中執(zhí)行的指令;Q.告訴CPU要執(zhí)行的操作,在程序運行時執(zhí)行;R.機器語言代碼。指令系統(tǒng)及匯編語言練習(xí)題1、分別指出下列指令中的源操作數(shù)和目的操作數(shù)的尋址方式1)MOVSI,2002)MOVCX,DATA[SI]3)ADDAX,[BX][DI]4)ANDAX,BX5)MOV[SI],AX6)PUSHF7)XLAT1)源:立即尋址;目:寄存器尋址。2)源:變址尋址/寄存器相對尋址;目:寄存器尋址。3)源:基址變址尋址;目:寄存器尋址。4)源:目:寄存器尋址。5)源:寄存器尋址;目:寄存器間接尋址。6)源:寄存器尋址;目:直接尋址。7)源:基址變址尋址;目的:寄存器尋址2、試述指令的區(qū)別1)MOVAX,2010H2)MOVAX,DS:[2010H]1)把2010H→AX中2)把數(shù)據(jù)段的2010H及2011H兩個相鄰單元地址中的一個字的內(nèi)容→AX中

3、寫出以下指令中內(nèi)存操作數(shù)的所在地址。1)MOVAL,[BX+5]2)MOV[BP+5],AX3)INCBYTEPTR[SI+3]4)MOVDL,ES:[BX+DI]5)MOVBX,[BX+SI+2]4、判斷下列指令書寫是否正確。1)MOVAL,BX2)MOVAL,CL3)INC[BX]4)MOV5,AL5)MOV[BX],[SI]6)MOVBL,F5H7)MOVCS,AX8)MOVIP,[BX+1230H]9)MOVSS,DS10)MOV[DI],[BX]11)SUBARRAY[DI],[BX]12)MOVDS,1230H13)INC36H(1)(DS)*10H+(BX)+5(2)(SS)*10H+(BP)+5(3)(DS)*10H+(SI)+3(4)(ES)*10H+(BX)+(DI)(5)(DS)*10H+(BX)+(SI)+214)PUSHAL15)PUSHCS16)PUSH4567H17)POPCS18)XCHG[2530],[CX]19)XCHGIP,AX20)XCHGDS,AX21)INBL,65H22)OUTBX,AX23)OUT2345H,AX24)LEAAX,BX25)LEADS,[BP][DI]26)ADD[BX+DI],DSXXXXXXXXXXXXXXXXXXXXXXLEA指令中的目的操作數(shù)必須是一個16位通用寄存器,源操作數(shù)必須是一個存儲器操作數(shù);段寄存器不能參加、減、乘、除運算。5、設(shè)堆棧指針SP的初值為2000H,AX=3000H,BX=5000H,試問:1)執(zhí)行指令PUSHAX后SP=?2)執(zhí)行PUSHBX及POPAX后SP=?AX=?BX=?6、要想完成把[2000H]送[1000H]中,用指令:MOV[1000H],[2000H]是否正確?如果不正確,應(yīng)用什么方法?7、假如想從100中減去AL中的內(nèi)容,用SUB100,AL是否正確?如果不正確,應(yīng)用什么方法?1)SP=1FFEH;2)SP=1FFEH,AX=5000H,BX=5000HMOVAX,[2000H]MOV[1000H],AX

MOVAX,[2000H]MOVBX,[1000H]MOVBX,AXNEGALADDAL,1008、用兩種方法寫出從88H端口讀入信息的指令。再用兩種方法寫出從42H口輸出100H的指令。9、假如AL=20H,BL=10H,當(dāng)執(zhí)行CMPAL,BL后,問:(1)AL,BL中內(nèi)容是兩個無符號數(shù),比較結(jié)果如何?影響哪幾個標(biāo)志位?(2)AL、BL中內(nèi)容是兩個有符號數(shù),結(jié)果又如何,影響哪幾個標(biāo)志位?1)MOVAL,100HOUT42H,AL2)MOVDX,0042HINAL,100HOUTDX,AL1)INAL,88H2)MOVDX,0088HINAL,DX比較指令的執(zhí)行結(jié)果影響狀態(tài)標(biāo)志位,常常與條件轉(zhuǎn)移指令結(jié)合起來使用,完成各種條件判斷和相應(yīng)的程序轉(zhuǎn)移。例如:1)若兩個被比較的內(nèi)容相等,則(ZF)=1;2)當(dāng)無符號數(shù)的較小數(shù)減較大數(shù)時,因不夠減而產(chǎn)生借位,此時進位標(biāo)志CF置1;3)當(dāng)帶符號數(shù)的較小數(shù)減較大數(shù)時,將得到負的結(jié)果,則符號標(biāo)志SF置1;4)帶符號數(shù)相減如果結(jié)果溢出,則OF置1。1)AL>BL,CF=0,ZF=02)AL>BL,SF=0,OF=010、讀下面程序段,請問:在什么情況下,本段程序的執(zhí)行結(jié)果是AH=0?BEGIN:INAL,5FHTESTAL,80HJZBRCH1MOVAH,0JMPSTOPBRCH1:MOVAH,0FFHSTOP:HLTAL中的最高位為1時AH=0。

(2)測試指令TEST(TESTornon-destructivelogicalAND)TESTdst,src;(dst)∧(src)TEST指令的操作實質(zhì)上與AND指令相同,即把目的操作數(shù)和源操作數(shù)進行邏輯“與”運算。二者的區(qū)別在于TEST指令不把邏輯運算的結(jié)果送回目的操作數(shù),只將結(jié)果反映在狀態(tài)標(biāo)志位上。例如,“與”的結(jié)果最高位是“0”還是“1”,結(jié)果是否為全“0”,結(jié)果中“1”的個數(shù)是奇數(shù)還是偶數(shù)等,分別由SF、ZF和PF狀態(tài)標(biāo)志位體現(xiàn)。和AND指令一樣,TEST指令總是將CF和OF清零,但使AF的值不確定。例如:TESTTESTBH,7SI,BP;寄存器''與''立即數(shù)(結(jié)果不回送,下同);寄存器''與''寄存器TEST[SI],CH;存儲器''與''寄存器TEST[BX][DI],BYTEPTR6AH;存儲器''與''立即數(shù)2.48086/8088指令系統(tǒng)TEST指令常常用于位測試,它與條件轉(zhuǎn)移指令一起,共同完成對特定位狀態(tài)的判斷,并實現(xiàn)相應(yīng)的程序轉(zhuǎn)移。這樣的作用與比較指令CMP有些類似,不過TEST指令只比較某一個指定的位,而CMP指令比較整個操作數(shù)(字節(jié)或字)。例如以下幾條指令判斷一個端口地址為PORT的外設(shè)端口輸入的數(shù)據(jù),若輸入數(shù)據(jù)的第1、3、5位中的任一位不等于零,則轉(zhuǎn)移到NEXT。INAL,PORTTESTAL,00101010BJNZNEXT;從端口PORT輸入數(shù)據(jù);測試第1、3、5位;任一位不為0,則轉(zhuǎn)移NEXT:…

2.48086/8088指令系統(tǒng)11、讀程序,假設(shè)20H端口內(nèi)容是06H,30H端口內(nèi)容是05HSTART:INAL,20HMOVBL,ALINAL,30HMOVCL,ALMOVAX,0ADLOP:ADDAL,BLADCAH,0DECCLJNZADLOPHLT請問:(1)本程序?qū)崿F(xiàn)什么功能?(2)結(jié)果在哪里?完成06H*05H,結(jié)果在AX中,AX=001EH。12、請編一段程序完成AX*10

溫馨提示

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

評論

0/150

提交評論