匯編筆試知識點_第1頁
匯編筆試知識點_第2頁
匯編筆試知識點_第3頁
匯編筆試知識點_第4頁
匯編筆試知識點_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

一.匯編基礎(chǔ)機器語言與匯編語言的區(qū)別:機器語言是由機器指令構(gòu)成的CPU能夠直接識別并執(zhí)行的指令,而匯編語言由匯編指令集,偽指令集及其使用規(guī)則的統(tǒng)稱編譯型語言和解釋型語言:編譯型語言是解釋完程序之后生成可執(zhí)行的程序后,運行后不需要編譯程序在場,比如C語言而解釋性語言是邊解釋邊執(zhí)行,比如BASIC和腳本語言,java等匯編語言的特點:占用空間少執(zhí)行速度快直接控制硬件能力強開發(fā)周圍長,可移植性差,不易掌握效率更高,速度更快減小對存儲空間的需求馮.諾伊曼的結(jié)構(gòu):運算器,存儲器,控制器,輸入設(shè)備,輸出設(shè)備。具體:數(shù)據(jù)和程序都以二進制的形式不加區(qū)分的放在存儲器中,存儲位置由地址決定,地址碼也是二進制形式計算機的組成:硬件+軟。硬件組成:CPU,總線,輸入輸出設(shè)備,存儲器;軟件組成:系統(tǒng)軟件,用戶軟件8086微處理器的結(jié)構(gòu)圖,理解掌握這里要解決20位總線和16位寄存器的沖突,方法是物理地址求和,段基址與偏移地址的組合寄存器定義:寄存器是CPU內(nèi)存放操作數(shù)的地方,它的操作速度比內(nèi)存操作數(shù)快BP和SP,指針寄存器,主要來訪問堆棧內(nèi)的存儲單元;BP,可直接存取堆棧中的數(shù)據(jù),SP只能訪問棧頂內(nèi)存管理模式:一個字的內(nèi)容是該地址指向的字節(jié)單元與下一個單元拼接而成一個雙子的內(nèi)容是該地址指向的單元及其后面的3個單元拼接而成的拼接的原則:高地址存放高位內(nèi)容,低地址存放低位內(nèi)容段寄存器和指針寄存器的配對使用:CS與IP取指令所用的段寄存器和偏移量,串操作中目標(biāo)操作數(shù)的段寄存器和偏移量一定是ES和DI,堆棧操作中段寄存器和偏移量一定是SS和SP標(biāo)志寄存器就一個FLAG,6個狀態(tài)標(biāo)志,3個控制標(biāo)志,7位保留,控制標(biāo)志:IF,中斷標(biāo)志,IF=1則開中斷,IF=0,關(guān)中斷TF,陷阱標(biāo)志,TF=1則單步中斷DF,方向標(biāo)志,在串操作數(shù)指令操作中,DF=1則自減,DF=0則自增數(shù)據(jù)表示:,二進制在后面跟B,八進制跟Q,十六進制跟H,十進制跟D,十六進制如果第一個是字母的話必須在前面加0BCD碼,分為壓縮和非壓縮BCD碼非壓縮的BCD碼是用一個字節(jié)表示一位十進制數(shù),高四位為0000,低四位表示0-9壓縮的BCD碼是用一個字節(jié)表示兩位十進制數(shù),高四位表示十位數(shù)字,低四位表示個位數(shù)字補碼的擴展問題:正數(shù)的符號擴展應(yīng)該添0補足,負數(shù)應(yīng)該用1補足,n位二進制數(shù)補碼表示數(shù)的范圍是-2^n-1<=n<=2^n-1-1浮點數(shù)的表示方法二.指令系統(tǒng)關(guān)于操作數(shù)單操作數(shù)指令的操作數(shù)只能是寄存器操作數(shù)或者內(nèi)存操作數(shù)雙操作數(shù)指令的目標(biāo)操作數(shù)只能是寄存器操作數(shù)或內(nèi)存操作數(shù),而源操作數(shù)可以使三種操作數(shù),但是2種操作數(shù)不能同時是內(nèi)存操作數(shù)內(nèi)存操作數(shù)的關(guān)鍵是找到其所在的地址,即必須找到所在段和相對段首的偏移地址即EA,然后求和得到物理地址尋址方式是重點直接尋址中,可以用變量符號代替數(shù)值地址寄存器間接尋址,依然是利用物理地址尋址,只不過地址存在寄存器里面,比如BX,SI,DI寄存器相對尋址是前2者的最一般情況,基址變址尋址方式,BX與DI,SI,BP與SI,DI相對基址變址就是多一個立即數(shù)的偏移量指令系統(tǒng)中所關(guān)心的有3點:一些指令的執(zhí)行時間,算術(shù)運算中IDIV是最多的,其次是乘法IMUL,最快的是mov和移位指令,其次是ADD;加法指令執(zhí)行時間,最慢的是立即數(shù)到存儲器,其次是寄存器到存儲器,最快的是寄存器到寄存器;各種尋址方式里面,最快的是寄存器間接尋址,最慢的是相對基址變址MOV指令的注意事項MOV指令時使用的最頻繁的指令2種操作數(shù)不能同時是存儲器,段寄存器目標(biāo)操作數(shù)不能是立即數(shù),不能是CS不能直接給段寄存器賦值,必須要通過寄存器來賦值IP不能是MOV的操作數(shù)MOV不改變FLAG中的值堆棧操作POP和PUSHPUSHCS合法但是POPCS不合法PUSH和POP操作數(shù)都不能是立即數(shù)PUSH和POP只能按字來訪問堆棧,依然遵守高高低低的原則,不能按字節(jié)來訪問PUSH和POP不影響標(biāo)志位XCHG命令XCHG不影響標(biāo)志位操作數(shù)不包括段寄存器,也不能是立即數(shù)2個操作數(shù)不能同時是存儲器XLAT(查表轉(zhuǎn)換指令)有2個隱藏的操作數(shù),功能:表首是由DS:BX決定,偏移量為AL,然后取出對應(yīng)字節(jié)數(shù)據(jù)放到AL中IN和OUTLAHF,將標(biāo)志寄存器狀態(tài)標(biāo)志SF,AF,CF,PF,ZF轉(zhuǎn)送到AH的對應(yīng)位置,若沒有的則AH的位不變;相反SAHF,是將AH的對應(yīng)位值給標(biāo)志位。注意,這2種操作不影響FLAG的高位,比如OF,TF,IF,DFPUSHF將整個FLAG寄存器中的內(nèi)容壓入棧且不影響標(biāo)志寄存器,POPF是將堆棧中的內(nèi)容傳送到標(biāo)志寄存器中,執(zhí)行命令后悔使標(biāo)志位發(fā)生改變LEA,取有效地址,功能一般是對BX,SI,DI賦初始值,它的源操作數(shù)是必須是16位存儲器,且不影響標(biāo)志位;對應(yīng)的LDS/LES,則是取段寄存器地址算術(shù)運算(加減乘除),只能對整數(shù)進行操作,而不能對浮點數(shù)進行計算ADC多用于多字節(jié)加法運算,2個操作數(shù)不能同時是存儲器。因為帶進位CF,先做低位運算再做高位運算,注意ADC和ADD均可以作用于有符號數(shù)和無符號數(shù)(SUB和SBB注意事項差不多,只是SBB的進位表示意義其實是借位)INC,進行運算的時候視為無符號數(shù),影響標(biāo)志位,但是不影響CF(DEC一樣)CMPDST,SRC表示DST-SRC,不改變值,但是改變標(biāo)志位、NEGDST,對DST求反,意義是用0減去DST,影響標(biāo)志位,注意CF只有當(dāng)DST是0的時候為0,只要DST不為0,則CF=1加減法的有效性:CF標(biāo)志位用來表示無符號數(shù)的溢出,OF來表示有符號數(shù)的溢出CF當(dāng)符號位進位的時候為1,但OF只有當(dāng)符號位沒有進位而數(shù)據(jù)位(符號位前一位)有進位或者當(dāng)符號位有進位而數(shù)據(jù)位沒有進位的時候才是1(此時CF同時也是1)MUL和IMUL,只有一個顯式操作數(shù),有一個操作數(shù)是默認的,AL或者AX,如果是AL乘后的結(jié)果存放在AX里面,若為AX,則結(jié)果存到(DX),(AX)中,DX是高位,AX是低位,IMUL是有符號數(shù)的乘法DIV和IDIV,它只有一個顯式的操作數(shù),還有一個是默認的,如果除數(shù)是一個字節(jié)型的,那么被除數(shù)是AX,余數(shù)存在AH中,商存在AH中;如果是字型的則除數(shù)是(DX),(AX),除法之后,余數(shù)存在DX中,商存在AX中。這里必須注意IDIV,有符號數(shù)的除法的余數(shù)的符號與被除數(shù)相同CBW和CWD,CBW默認的操作數(shù)是AL,CWD是AX,如果最高位為0,則高位補齊0,如果最高位是1,高位補齊1(也就是全F)壓縮的BCD碼加減法的調(diào)整,DAA:被調(diào)整的加法內(nèi)容應(yīng)該存放在AL中,必須在ADC或者ADD之后(DAS也是一樣)非壓縮型的BCD碼,AAA,AAS,AAM,AAD,其中AAD必須在除法之前調(diào)整,其他要在運算之前進行調(diào)整,且在b調(diào)整之前都必須把運算結(jié)果放在AL中,而AAD之前,AH為十位數(shù)字,AL為個位數(shù)字邏輯指令A(yù)NDDST,SRC;按位相與,結(jié)果送(DST)ORDST,SRC;按位相或,結(jié)果送(DST)XORDST,SRC;按位異或,結(jié)果送(DST)NOTOPR;對操作數(shù)按位取反TESTOPR1,OPR2;按位相與,結(jié)果影響標(biāo)志位但不保存 說明:(1)NOT指令不允許使用立即數(shù);(2)NOT指令不影響標(biāo)志位,其余4條指令對CF和OF清0,影響SF、ZF、PF,對AF無定義。邏輯指令的舉例,見67頁PDF基本移位SHL(SAL)OPR,CNT邏輯(算術(shù))左移CNT次,左邊溢出的位數(shù)存到CF中,后面補0,如果CNT大于1,則要用寄存器存放,用CXSHROPR,CNT邏輯右移CNT次,高位用0填充,溢出的存到CF中SAR OPR,CNT算術(shù)右移CNT次,高位用符號位填充,不是0,溢出的存到CF中,因此循環(huán)移位ROLOPR,CNT循環(huán)左移CNT次,高位溢出存入CF,同時填充低位ROROPR,CNT循環(huán)右移CNT次,低位溢出存入CF,同時填充高位RCLOPR,CNT帶進位循環(huán)左移CNT次,高位溢出存入CF,CF加上高位溢出的填充低位RCROPR.CNT帶進位循環(huán)右移CNT次,低位溢出存入CF,CF加上低位溢出的填充高位(帶進位就是加上CF的值在填充位)字符串操作,需要注意的是ES:DI,DS:SIMOVS(MOVSBMOVSW)是將【si】給【di】賦值STOS(STOSBSTOSW)是將AL或者AX的值給[DI]LODS(LODSBLODSW)是將【SI】中的值給AL或者AXCMPS(CMPSBCMPSW)影響標(biāo)志位,但不保留計算結(jié)果是【di】-【si】SCAS(SACSBSCASW)影響標(biāo)志位但是不保留結(jié)果,是AL或者AX減去【di】字符串前都可以加命令REP(REPE,REPNE)一些對標(biāo)志位的操作HLT處理器暫停,WAIT處理器等待,總線封鎖LOCK,空操作NOP定義邏輯段時,其實完整的格式是缺省的定位類型是PARA,表示段的起始地址是以字節(jié)為單位,缺省的組合類型是PRIVATE,表示本段與其他邏輯段沒有關(guān)系A(chǔ)SSUME中NOTHING關(guān)鍵字表示某個段寄存器不與任何段對應(yīng)END后面的語句都不會執(zhí)行,一般都在最后EQU和=,=可以多次賦值,但是EQU只能對一個變量賦值簡化段定義格式,考試不要求<名字>LABEL<類型>,為下一個存儲單元起名字且定義類型,但是不分配存儲空間固定格式,COUNT要在數(shù)據(jù)段中定義,關(guān)于返回值操作符SEG取變量或者標(biāo)號的段基址,OFFSET取變量或者標(biāo)號的偏移地址,TYPE是返回類型所占字節(jié)的大?。ㄗ止?jié)為1),若是標(biāo)號的話,NEAR為-1,F(xiàn)AR為-2,LENGTH返回的是<N>DUP類型的長度N,SIZE返回的返回變量所占的字節(jié)數(shù),只對<N>DUP定義的變量有意義關(guān)于屬性操作符,不理解,有PTR等等,第三章PDF44字節(jié)分離操作符,HIGH<表達式>取高位字節(jié),LOW<表達式>取低位字節(jié)關(guān)于標(biāo)號的屬性FAR類型在一個標(biāo)號被其他段中的轉(zhuǎn)移指令訪問時,不僅需要修改IP還要修改使其指向跳轉(zhuǎn)的段若要顯示定義標(biāo)號,有2中方法。L1EQUTHISFAR;L2LABELFAR跳躍表法(練習(xí)題28,29)LOOPNE,LOOPE與REPE,REPNE一個道理80X86能處理256種中斷號,類型號從0h-0ffh,(中斷號越小,優(yōu)先級越高)中斷向量表中,每個中斷號都對應(yīng)中斷向量表,每個表占4個字節(jié),兩個字節(jié)存中斷的段地址,另外2個字節(jié)存放中斷的偏移量,所以中斷表為1K,起止于0000H到3FFFH關(guān)于宏的使用方法宏的定義方式宏的引用:宏名字[實參1,實參2……],注意實參的個數(shù)可以與形參不同,少于形參時,沒有對應(yīng)的用空來對應(yīng),如果多于形參,

溫馨提示

  • 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

提交評論