組合語言指令系統

來源:互聯網
上載者:User

1.mov在上篇文章中已經介紹

2.PUSH和PoP指令都必鬚根據當前SP的內容來確定進棧或出棧的儲存單元,而且必須及時修改指標,以保證(SP)指向當前的棧頂。
(1) 堆棧的存取必須以字為單位,(IBM PC中不允許位元組堆棧),所以PUSH和POP指令只能作字操作。
(2) 它們可以使用初立即數以外的其他定址方式。
(3) 指令也可以指定段寄存器作為運算元,注意POP絕對不能使用程式碼片段(CS)寄存器。
(4) 這兩條指令不影響標誌位。 

利用堆棧進行現場保護:
push AX
push BX
  .
         .其他要執行的程式
         .
pop BX
pop AX
注意進出棧的順序。

3.
XCHG交換指令
   格式為      XCHG   OPRl,  OPR2
    執行操作:         (OPRl) 〈一一〉 (OPR2)其中OPR表示運算元。該指令的兩個運算元中必須有一個在寄存器中,因此,它可以是寄存器之間;寄存器和儲存空間之間交換資訊,注意不能使用段寄存器。指令允許字和位元組操作,且不會影響標誌位。

4.累加器專用傳送指令
IN      (input)    輸入
OUT  (output)  輸出
XLAT(Translate)   換碼
這組指令只限於使用累加器AX和AL傳送資訊。

注意:
(1) 所有的I/O連接埠與CPU之間的通訊都由IN和OUT指令來完成。其中IN完成從I/O到CPU的資訊傳送,而OUT完成從CPU到I/O的資訊傳送。
(2) CPU只和累加器(AX或AL)進行接收或發送資訊,外部最多可以有64K個連接埠,連接埠號碼為0000H – FFFFH。
(3) 長格式:對於前256個連接埠,可以在指令中直接指定,這就是常格式的連接埠(PORT)。
(4) 短格式:當連接埠號碼大於等於256時,則必須先將連接埠號碼置於DX寄存器中,然後再利用IN或OUT進行資訊的傳遞。
(5) 注意,在利用IN/OUT進行資訊傳遞時,所有的連接埠號碼(或DX的內容)均為地址,而傳送的均為連接埠號碼的內容。
輸入、輸出指令不影響標誌位。
例      IN        AX,28H
              MOV   DATA_WORD , AX
這兩條指令把地口28的內容經過AX傳送到儲存單元DATA_WORD中。
例     MOV    DX,3FCH
IN         AX,DX
從連接埠03FCH送一個字到AX寄存器中。
例         OUT     5,   AL
從AL寄存器輸出一個位元組到連接埠5

5.XLAT換碼指令
格式為;         XLAT    OPR
                 或    XLAT
執行的操作:  (AL)  〈一  ((BX)十(AL))
功能:將一種代碼轉換為另一種代碼。
在使用這條指令之前,應該先建立一個位元組表格,表格的首地址提前存入BX寄存器,需要轉換的代碼應該是相對於表格首地址的位移量也提前存放在AL寄存器中,表格的內容則是需要轉換的代碼,該指令執行後就可在AL中得到轉換後的代碼。
該指令可以使用XLAT或XLAT   OPR兩種格式中的任一種,使用XLAT   OPR時,OPR為表格的首地址(一般為符號地址),但在這裡的OPR只是為提高程式的可讀性而設定的,指令執行時只使用預先已存入BX中的表格首地址,而並不用彙編格式中指定的值。該指令不影后標誌位。
例       如(BX) = 0040H,(AL)=0FH,(Ds)=F000H
 
指令                  XLAT
把   F0000H+0040H+0FH的內容送AL,所以指令執行後:(AL) = 2CH
     即指令把AL中的代碼0FH轉換為2CH。
必須注意,由於AL為8位二進位位,所以表格的最大長度不能超過256。

6.地址傳送指令
LEA   有效地址送寄存器
LDS   指標送寄存器和DS
LES   指標送寄存器和ES
這一組指令完成把地址送到指定寄存器的功能。
1.LEA   有效地址送寄存器
             格式:    LEA   REG,SRC
     執行過程:    (REG)<-   SRC
     完成功能:    指令將有效地址送到指定的寄存器中。
2.LDS   指標送寄存器和DS
    格式:    LDS   REG,SRC
    執行的操作:(REG)〈一(SRC)
                           (DS)〈-   (SRC十2)
把源運算元指定的4個相繼位元組送到由指令指定的寄存器及DS寄存器中。該指令通常用來指定SI寄存器。
3.LES   指標送寄存器和ES
    格式:    LES   REG,SRC
    執行的操作:(REG)〈一(SRC)
                           (ES)〈-   (SRC十2)
把源運算元指定的4個相繼位元組送到由指令指定的寄存器及ES寄存器中。該指令通常用來指定DI寄存器。
注意:以上三條指令,不能指定段寄存器,指令操作不影響標誌位
本組指令把變數的位移地址(LEA)或段地址和位移地址(LDS和LES)送給寄存器,以提供訪問變數的工具。
    例 :         LEA    BX,[BX十SI十0F62H]
    如指令執行前 (BX)=0400H,(SI)=003CH
    則指令執行後 (BX)=0400十003C十0F62=139EH
    必須注意,在這裡BX寄存器得到的是位移地址而不是該儲存單元的內容。
    例:        LDS   SI,[10H]
    如指令執行前  (DS)=C000H,(C0010H)=0180H,(C0012H)=2000H
    則指令執行後    (S1)=0180H,(DS)=2000H
    例           LES    DI,[BX]
    如指令執行前  (DS)=B000H,(BX)=080AH,(0B080AH)=05AEH,(0B080CH)=4000H
    則指令執行後    (D1)=05AEH,  (ES)=4000H

7. 標誌位寄存器傳送指令
LAHF    標誌寄存器的低位元組送AH
SAHF    AH送標誌寄存器的低位元組
PUSHF  標誌進棧
POPF     標誌出棧
1.LAHF  標誌送AH指令
格式為:    LAHF
執行的操作:  (AH)〈- (PSW寄存器的低位元組)
2.SAHF    AH送標誌寄存器指令
格式為:   SAHF
執行的操作:(PSW的低位元組)一〉(AH)
3.PUSHF   標誌進棧指令
格式為;    PUSHF
執行的操作:  (SP) 〈-  (SP)-2
((SP)+1,(SP))〈-   (PSW)
4.POPF   標誌出棧
格式為:POPF
執行過程為:   (PSW)    〈--     ((SP)十1,(SP))
                                     (SP) 〈一  (SP)十2
      這組指令中的LAHF和PUSHF不影響標誌位。SAHF相POPF則由裝入的值來確定標誌位的值

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.