2023年匯編筆試知識點_第1頁
2023年匯編筆試知識點_第2頁
2023年匯編筆試知識點_第3頁
2023年匯編筆試知識點_第4頁
2023年匯編筆試知識點_第5頁
已閱讀5頁,還剩6頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

一.匯編基礎

1.機器語言與匯編語言的區別:

機器語言是由機器指令構成的CPU可以直接辨認并執行的指令,而匯編語言由匯編指令

集,偽指令集及其使用規則的統稱

2.編譯型語言和解釋型語言:

編譯型語言是解釋完程序之后生成可執行的程序后,運營后不需要編譯程序在場,比如

C語言而解釋性語言是邊解釋邊執行,比如BASIC和腳本語言,java等

3.匯編語言的特點:

?占用空間少

?執行速度快

?直接控制硬件能力強

?開發周邊長,可移植性差,不易掌握

?效率更高,速度更快

?減小對存儲空間的需求

4.馮.諾伊曼的結構:運算器,存儲器,控制器,輸入設備,輸出設備。具體:數據和程序

都以二進制的形式不加區分的放在存儲器中,存儲位置由地址決定,地址碼也是二進制

形式

5.計算機的組成:硬件+軟。硬件組成:CPU,總線,輸入輸出設備,存儲器;軟件組成:

系統軟件,用戶軟件

6.8086微解決器的結構圖,理解掌握

2ora

電址加法器

通用16位

寄存器A總線接口部件(bus

interfaceunit,BIU)

輸入輸出

控制電路4負責與存儲器、I/O

內部暫存器罐端口傳送數據。

16位

|運算司存崩|》執行部件

執行部分

123456(executionunit,EU)

控制電路

指令隊列懾沖器負責指令的執行。

執行部件(EU)總線接口部件(BIU)

這里要解決20位總線和16位寄存器的沖突,方法是物理地址求和,段基址與偏移地址的組

7.寄存器定義:寄存器是CPU內存放操作數的地方,它的操作速度比內存操作數快

8.BP和SP,指針寄存器,重要來訪問堆棧內的存儲單元;BP,可直接存取堆棧中的數據,

SP只能訪問棧頂

9.內存管理模式:

?一個字的內容是該地址指向的字節單元與下一個單元拼接而成

?一個雙子的內容是該地址指向的單元及其后面的3個單元拼接而成的

?拼接的原則:高地址存放高位內容,低地址存放低位內容

10.段寄存器和指針寄存器的配對使用:CS與IP取指令所用的段寄存器和偏移量,串操作中

目的操作數的段寄存器和偏移量一定是ES和DI,堆棧操作中段寄存器和偏移量一定是

SS和SP

11.標志寄存器就一個FLAG,6個狀態標志,3個控制標志,7位保存,

標志寄存器中的狀態標志位含義如下

CF(carryflag):進位標志,在進行字/字節運算產生進位或借位時置1,否則

置0。

PF(parityflag):奇偶性標志,結果有偶數位為1時置1,否則置0。

AF(auxiliarycarryflag):輔助進位標志,當進行字節運算有低4位向高4位

進位或借位時置1,否則置0。在作BCD碼運算時常常使用。

ZF(zeroflag):零標志,當運算結果為。時置1,否則置0。

SF(signflag):符號標志,運算結果為負,即結果最高位為1時置1,否則置

0。

OF(overflowflag):溢出標志,運算溢出時自動置1,當它為1時可用溢出中

彳觸令產生中斷。

控制標志:

?IF,中斷標志,IF=1則開中斷,IF=0,關中斷

?TF,陷阱標志,TF=1則單步中斷

?DF,方向標志,在串操作數指令操作中,DF=1則自減,DF=0則自增

12.數據表達:,二進制在后面跟B,八進制跟Q,十六進制跟H,十進制跟D,十六進制假

如第一個是字母的話必須在前面加0

13.BCD碼,分為壓縮和非壓縮BCD碼

?非壓縮的BCD碼是用一個字節表達一位十進制數,高四位為0000,低四位表達0-9

?壓縮的BCD碼是用一個字節表達兩位十進制數,高四位表達十位數字,低四位表達

個位數字

十進制壓縮的非壓縮的

12000100100000000100000010

6230000011000100011000001100000001000000011

9100000100100010000000010010000000100000000

14.補碼的擴展問題:

?正數的符號擴展應當添0補足,負數應當用1補足,n位二進制數補碼表達數的范

15.浮點數的表達方法

1sleF

1

ll8|23|

s:符號位;

e:有偏指數,真正指數為e—127;

1.F:尾數,規格化處理:尾數的最高位必須是1,落

表示中省略1;

N=(-1/X2e-127Xl,F0<e<255

4表示和的范南,+-T26?+,+128____________________

二.指令系統

16.關于操作數

?單操作數指令的操作數只能是寄存器操作數或者內存操作數

?雙操作數指令的目的操作數只能是寄存器操作數或內存操作數,而源操作數可以使

三種操作數,但是2種操作數不能同時是內存操作數

?內存操作數的關鍵是找到其所在的地址,即必須找到所在段和相對段首的偏移地址

即EA,然后求和得到物理地址

17.尋址方式是重點

?直接尋址中,可以用變量符號代替數值地址

可以用符號地址代替數值地址,如:

MOVAX,VALUE:或者

MOVAX,[VALUE]口

VALUE為存放操作數單元的符號地址。

?寄存器間接尋址,仍然是運用物理地址尋址,只但是地址存在寄存器里面,比如

BX,SI,DI

?寄存器相對尋址是前2者的最一般情況,

?基址變址尋址方式,BX與DI,SI,BP與SI,DI

?相對基址變址就是多一個立即數的偏移量

18.指令系統中所關心的有3點:

“要清楚指令操作數的尋址方式,不同尋址方式,執行時間大不相同;

“指令對標志位的影響、標志位對指令的影響

”指令的執行時間,對可完成相同功能的指令要選用執行時間短的指令

19.一些指令的執行時間,算術運算中IDIV是最多的,另一方面是乘法IMUL,最快的是

mov和移位指令,另一方面是ADD;加法指令執行時間,最慢的是立即數到存儲器,另一

方面是寄存器到存儲器,最快的是寄存器到寄存器;各種尋址方式里面,最快的是寄存

器間接尋址,最慢的是相對基址變址

20.MOV指令的注意事項

?MOV指令時使用的最頻繁的指令

?2種操作數不能同時是存儲器,段寄存器

?目的操作數不能是立即數,不能是CS

?不能直接給段寄存器賦值,必須要通過寄存器來賦值

?IP不能是MOV的操作數

?MOV不改變FLAG中的值

21.堆棧操作POP和PUSH

?PUSHCS合法但是POPCS不合法

?PUSH和POP操作數都不能是立即數

?PUSH和POP只能按字來訪問堆棧,仍然遵守高高低低的原則,不能按字節來訪問

?PUSH和POP不影響標志位

22.XCHG命令

?XCHG不影響標志位

?操作數不涉及段寄存器,也不能是立即數

?2個操作數不能同時是存儲器

23.XLAT(查表轉換指令)有2個隱藏的操作數,功能:表首是由DS:BX決定,偏移量為AL,

然后取出相應字節數據放到AL中

24.IN和OUT

格式一:端口輸入INAL,port

端口輸出OUTport,AL

功能:IN從指定的外設端口讀數據到AL寄存器,OUT將AL寄存

器的內容傳送到指定的外設端口。

說明:這里端口地址port為立即數,限制在0?255,只能使用

AX或AL收發端口數據。

格式二:端口輸入MOVDX,port

INAL,DX

端口輸出MOVDX,port

OUTDX,AL

說明:這里端口地址可以在0?65535

25.LAHF,將標志寄存器狀態標志SF,AF,CF,PF,ZF轉送到AH的相應位置,若沒有的則AH的位

不變;相反SAHF,是將AH的相應位值給標志位。注意,這2種操作不影響FLAG的高

位,比如OF,TF,IF,DF

26.PUSHF將整個FLAG寄存器中的內容壓入棧且不影響標志寄存器,POPF是將堆棧中的內

容傳送到標志寄存器中,執行命令后悔使標志位發生改變

27.LEA,取有效地址,功能一般是對BX,SI,DI賦初始值,它的源操作數是必須是16位存儲

器,且不影響標志位;相應的LDS/LES,則是取段寄存器地址

LDSBX,DD_VAR;DD_VAR為雙字變量

將DDVAR所在的段的段基址送到DS,將DDVAR的偏移量送到BX。

28.算術運算(加減乘除),只能對整數進行操作,而不能對浮點數進行計算

29.ADC多用于多字節加法運算,2個操作數不能同時是存儲器。由于帶進位CF,先做低位

運算再做高位運算,注意ADC和ADD均可以作用于有符號數和無符號數(SUB和SBB

注意事項差不多,只是SBB的進位表達意義其實是借位)

LDSBX,DD_VAR;DD_VAR為雙字變量

將DDVAR所在的段的段基址送到DS,將DDVAR的偏移量送到BX。

30.INC,進行運算的時候視為無符號數,影響標志位,但是不影響CF(DEC同樣)

31.CMPDST,SRC表達DST-SRC,不改變值,但是改變標志位、

32.NEGDST,對DST求反,意義是用0減去DST,影響標志位,注意CF只有當DST是0

的時候為0,只要DST不為0,則CF=1

33.加減法的有效性:

?CF標志位用來表達無符號數的溢出,OF來表達有符號數的溢出

?CF當符號位進位的時候為1,但OF只有當符號位沒有進位而數據位(符號位前一

位)有進位或者當符號位有進位而數據位沒有進位的時候才是1(此時CF同時也

是1)

34.MUL和IMUL,只有一個顯式操作數,有一個操作數是默認的,AL或者AX,假如是AL

乘后的結果存放在AX里面,若為AX,則結果存到(DX),(AX)中,DX是高位,AX是低位,

IMUL是有符號數的乘法

35.DIV和IDIV,它只有一個顯式的操作數,尚有一個是默認的,假如除數是一個字節型的,

那么被除數是AX,余數存在AH中,商存在AH中;假如是字型的則除數是(DX),(AX),

除法之后,余數存在DX中,商存在AX中。這里必須注意IDIV,有符號數的除法的余

數的符號與被除數相同

36.CBW和CWD,CBW默認的操作數是AL,CWD是AX,假如最高位為0,則高位補齊0,

假如最高位是1,高位補齊1(也就是全F)

37.壓縮的BCD碼加減法的調整,DAA:被調整的加法內容應當存放在AL中,必須在ADC

或者ADD之后(DAS也是同樣)

38.非壓縮型的BCD碼,AAA,AAS,AAM,AAD,其中AAD必須在除法之前調整,其他要在運

算之前進行調整,且在b調整之前都必須把運算結果放在AL中,而AAD之前,AH為

十位數字,AL為個位數字

39.邏輯指令

ANDDST,SRC;按位相與,結果送(DST)

ORDST,SRC;按位相或,結果送(DST)

XORDST,SRC;按位異或,結果送(DST)

NOTOPR;對操作數按位取反

TESTOPR1,OPR2;按位相與,結果影響標志位但不保存

說明:(1)NOT指令不允許使用立即數;

(2)NOT指令不影響標志位,其余4條指令對CF和OF清0,影響SF、ZF、PF,

對AF無定義。

邏輯指令的舉例,見67頁PDF

40.基本移位

SHL(SAL)OPR,CNT邏輯(算術)左移CNT次,左邊溢出的位數存到CF中,后面補0,假如

CNT大于1,則要用寄存器存放,用CX

SHROPR,CNT邏輯右移CNT次,高位用0填充,溢出的存到CF中

SAROPR,CNT算術右移CNT次,高位用符號位填充,不是0,溢出的存到CF中,因此

41.循環移位

ROLOPR,CNT循環左移CNT次,高位溢出存入CF,同時填充低位

ROROPR,CNT循環右移CNT次,低位溢出存入CF,同時填充高位

RCLOPR,CNT帶進位循環左移CNT次,高位溢出存入CF,CF加上高位溢出的填充低位

RCROPR.CNT帶進位循環右移CNT次,低位溢出存入CF,CF加上低位溢出的填充高位

(帶進位就是加上CF的值在填充位)

42.字符串操作,需要注意的是ES:DI,DS:SI

?MOVS(MOVSBMOVSW)是將[si]給[di]賦值

?STOS(STOSBSTOSW)是將AL或者AX的值給[DI]

?LODS(LODSBLODSW)是將【Si】中的值給AL或者AX

?CMPS(CMPSBCMPSW)影響標志位,但不保存計算結果是【di】-【si】

?SCAS(SACSBSCASW)影響標志位但是不保存結果,是AL或者AX減去【di】

?字符串前都可以加命令REP(REPE,REPNE)

43.一些對標志位的操作

CLC清進位標志(clearCF)CF-0

CMC進位位取反(complementCF)CF—NOT(CF)

STC進位位置1(setCF)CF-1

CLD清DF標志(clearDF)DF-0

STD置DF標志為1(setDF)DF—1

CLI清IF標志為0(關中斷,cleaEF)IF-0

STI置IF標志為1(開中斷,setIF)IF—1

44.HLT解決器暫停,WAR■解決器等待,總線封鎖LOCK,空操作NOP

45.定義邏輯段時,其實完整的格式是

〈段名〉SEGMENT[定位類型H組合類型][尋址方式][類另中

<段名〉ENDS

缺省的定位類型是PARA,表達段的起始地址是以字節為單位,缺省的組合類型是

PRIVATE,表達本段與其他邏輯段沒有關系

46.ASSUME中NOTHING關鍵字表達某個段寄存器不與任何段相應

47.END后面的語句都不會執行,一般都在最后

48.£€^和=,=可以多次賦值,但是EQU只能對一個變量賦值

49.簡化段定義格式,考試不規定

50.〈名字〉LABEL〈類型〉,為下一個存儲單元起名字且定義類型,但是不分派存儲空間

£0^與$配合使用,得到變量分配的字節數

例如:

MSGDB'Thisisfirststring.'

COUNTEQU$-MSG

MOVCL,COUNT;(CL)=MSG的串長=21

固定格式,COUNT要在數據段中定義,

52.關于返回值操作符

?SEG取變量或者標號的段基址,OFFSET取變量或者標號的偏移地址,TYPE是返回

類型所占字節的大小(字節為1),若是標號的話,NEAR為-1,FAR為-2,LENGTH返

回的是<N>DUP類型的長度N,SIZE返回的返回變量所占的字節數,只對<N>DUP

定義的變量故意義|SIZE=LENGTH*TYPE。

53.關于屬性操作符,不理解,有PTR等等,第三章PDF44

54.字節分離操作符,HIGH<表達式〉取高位字節,LOWV表達式,取低位字節

55.關于標號的屬性

?FAR類型在一個標號被其他段中的轉移指令訪問時,不僅需要修改IP還要修改使其

指向跳轉的段

?若要顯示定義標號,有2中方法。LIEQUTHISFAR;L2LABELFAR

56.跳躍表法

例如:根據AL寄存器中哪一位是1,把程

溫馨提示

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

評論

0/150

提交評論