天天看點

微機原理筆記04-彙編語言程式設計

彙編語言源程式

微機原理筆記04-彙編語言程式設計
  • 彙編語言源程式:用助記符編寫
  • 彙程式設計式:源程式的編譯程式

程式執行過程

微機原理筆記04-彙編語言程式設計

語句類型和格式

語句類型

  • 指令性語句:CPU執行的語句,能夠生成目标代碼
  • 訓示性語句:CPU不執行,由彙程式設計式(編譯器)執行的語句,不生成目标代碼

語句格式

指令性語句:

[ 标 号 : ] [ 前 綴 ] 助 記 符 [ 操 作 數 ] , [ 操 作 數 ] [ ; 注 釋 ] [标号:]\quad[字首]\quad助記符\quad[操作數],[操作數]\quad[;注釋] [标号:][字首]助記符[操作數],[操作數][;注釋]

  • 串操作指令的助記符前面可以加字首,字首不是指令,它表示一種循環重複執行的概念,和助記符連在一起可構成循環體
    • 無條件重複字首
    • 條件重複字首
  • 标号代表指令的符号位址
  • 标号後要有冒号

訓示性語句:

[ 名 字 ] 僞 指 令 助 記 符 操 作 數 [ , 操 作 數 , ⋅ ⋅ ⋅ ] [ ; 注 釋 ] [名字]\quad僞指令助記符\quad操作數[,操作數,···]\quad[;注釋] [名字]僞指令助記符操作數[,操作數,⋅⋅⋅][;注釋]

  • 名字是變量的符号位址,其後不加冒号

語句中的操作數

  • 寄存器
  • 存儲器單元
  • 常量
微機原理筆記04-彙編語言程式設計
  • 變量或标号
微機原理筆記04-彙編語言程式設計
  • 表達式
    • 算術運算:加減乘除、取模
    • 邏輯運算:與或非異或
    • 關系運算
    • 取值運算和屬性運算
    • 其他運算
微機原理筆記04-彙編語言程式設計
微機原理筆記04-彙編語言程式設計
  • LENGTHOF運算符:計算數組中元素的個數
  • TYPE運算符傳回變量單個元素的大小,這個大小是以位元組為機關計算

僞指令

  • 僞指令:由彙程式設計式(編譯器)執行的“指令系統”
  • 作用: 幫助計算機了解指令性語句
    • 定義變量;
    • 配置設定存儲區
    • 定義邏輯段;
    • 訓示程式開始和結束;
    • 定義過程

資料定義僞指令

  • 用于定義資料區中變量的類型及其所占記憶體空間的大小
  • 格式:
微機原理筆記04-彙編語言程式設計
  • 資料定義僞指令助記符:
    • DB(Define Byte):定義的變量為位元組型
      • 每一個操作數占一個位元組單元
    • DW(Define Word):定義的變量為字類型
      • 每一個操作數占一個字單元
    • DD(Define Double Word):定義的變量為雙字型
    • DQ(Define Quadword):定義的變量為四字型
    • DT(Define Tenbytes):定義的變量為十位元組型
定義字元串必須用DB僞指令助記符

【例】資料定義僞指令定義的變量在記憶體中的分布

微機原理筆記04-彙編語言程式設計
微機原理筆記04-彙編語言程式設計
  • 重複操作僞指令助記符:用于配置設定存儲區
微機原理筆記04-彙編語言程式設計
  • "?"的作用:
微機原理筆記04-彙編語言程式設計

【例】變量在記憶體中的存儲配置設定

微機原理筆記04-彙編語言程式設計
微機原理筆記04-彙編語言程式設計

符号定義僞指令

微機原理筆記04-彙編語言程式設計
  • 作用類似C語言中的宏

段定義僞指令

微機原理筆記04-彙編語言程式設計
  • 用來定義一個邏輯段
  • 邏輯段的段名就是段基位址(一個數)

【例】段定義僞指令

微機原理筆記04-彙編語言程式設計

設定段寄存器僞指令

微機原理筆記04-彙編語言程式設計
  • 用段寄存器辨別邏輯段是什麼段
    • 資料段
    • 附加段
    • 堆棧段
    • 代碼段

結束僞指令

微機原理筆記04-彙編語言程式設計
  • 标号通常是第一條指令性語句前的标号

源程式基本結構

微機原理筆記04-彙編語言程式設計

【例】一個完整源程式結構

微機原理筆記04-彙編語言程式設計
  • 段寄存器初始化後次系統才會配置設定前面定義的記憶體空間

過程定義僞指令

微機原理筆記04-彙編語言程式設計
  • 用來定義一個子程式
  • 過程名是子程式第一條指令性語句在記憶體的符号位址
  • 若為近過程,

    NEAR

    可省略
  • 過程體的最後一條指令必須是

    RET

【例】過程定義及調用

微機原理筆記04-彙編語言程式設計
  • 子程式用到的寄存器,為了不影響調用程式的寄存器原來的值,需要在執行子程式之前,将調用程式原來寄存器的值儲存到堆棧,在執行子程式結束後,将調用程式原來寄存器的值從堆棧恢複(先進後出)

宏指令僞指令

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-CR6z0uVD-1651766032141)(https://s2.loli.net/2022/05/02/QhF7z6YD1K9X5Re.png)]

  • 與子程式的不同:不能通過編譯連結,成為一個獨立的程式,隻能是源程式的一部分,不能被其他源程式調用

【例】宏定義與宏調用

微機原理筆記04-彙編語言程式設計
  • 該宏的作用:X+Y賦給Z

調整偏移量僞指令

[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-gvtBRtBk-1651766032143)(https://s2.loli.net/2022/05/02/p5djRnJcomIx2UC.png)]

微機原理筆記04-彙編語言程式設計

流程控制僞指令

.REPEAT 僞指令執行循環體,然後測試 .UNTIL 僞指令後面的運作時條件:

.REPEAT
  statements
.UNTIL condition
           

.WHILE 僞指令在執行循環體之前測試條件:

.WHILE condition
  statements
.ENDW
           

繼續閱讀