Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 07 低階程式語言.

Similar presentations


Presentation on theme: "Chapter 07 低階程式語言."— Presentation transcript:

1 Chapter 07 低階程式語言

2 學習目標 列出電腦可以執行的動作 討論抽象層級與訂定具體演算法步驟的關係 描述 Pep/7 虛擬機器的重要特色
分辨 立即定址模式(immediate addressing mode ) 及 直接定址模式 (direct addressing mode) 將一簡單的演算法 轉換成 機器語言程式

3 學習目標(續) 分辨出 機器語言(machine language) 及 組合語言(assembly language) 的不同
描述建立及執行組合語言的步驟 將一簡單的演算法則轉換成組合語言程式 分辨出要送給組譯器 (assembler) 的指令 及 要被轉譯(translated) 的指令 描述兩種測試程式的方法 設計及實現 一個簡單組合語言程式之測試計畫

4 7.1 電腦的動作 電腦是可程式化的電子裝置,它可以儲存、擷取及運算資料
資料及運用資料的指令都是二進制的數元串列,在邏輯上(指他們都是 0 與 1 的序列)是相同的,它們可以被儲存在相同的地方,這也是范紐曼機器的基本概念 儲存、擷取及運算就是電腦處理資料的動作

5 7.2 抽象階段 本節討論抽象(abstraction)的不同等級 如何知道演算法中某個步驟是否夠具體?
取決於程式語言的支援程度 如第六章(p156)的 “將表單依字母順序排序” 及 “列印表單”,是抽象還是具體?依程式語言的不同共有 4 種可能。如果是抽象,就要再定義其完整細節 本章先討論將虛擬碼轉為機器語言及組合語言 第 8 章討論將虛擬碼轉為可支援的抽象等級較高的高階程式語言

6 7.3 機器語言 機器語言(machine language):建立於特定電腦硬體中的指令,只能於該特定機種執行
1950 年代時,因為還沒有中高階程式語言的概念及其相關編譯器,軟體工程師別無選擇的只能用機器語言寫程式

7 機器語言 每一種處理器( processor,即 CPU )都有其自己特有的一組機器指令,每一個指令需要一個二進碼來表示
處理器及其所能執行的機器指令之間的關係密切,兩者是完全整合在一起的 每一個機器語言指令僅僅做一個非常低階的工作,例如將某記憶體位址的內容上載到 CPU 的累加器暫存器,目前已沒有人直接用機器語言寫程式

8 機器語言程式範例 將 0 與 1 的位元串以 16 進制表示,最後以 zz 表示程式結束, zz 是用來告訴 Pep7 模擬器 “不用再讀了”,不是機器語言程式的一部份

9 Windows 範例 “0x ” 指令參考 的 “0x ” 記憶體位置不能為 written 畫面

10 Pep/7:一部虛擬電腦 一部虛擬電腦就是一台假想的機器,但是包含了真實電腦所應具備的一些重要特徵
由 Stanley Warford 所設計的 Pep/7 具有32個機器語言指令 (所以需要 5 個位元來表示各個指令) 我們不完整介紹 Pep/7 所有指令,只看其中幾個指令,重點在了解機器語言如何運作

11 Pep/7的特色 記憶單元是由 4,096 個位元組( 4096 x 8 個位元)的記憶體所組成,4096 = 212,所以需要 12 個位元來表示某一記憶體位置 字組 (word) 長度是2個位元組(即 16 個位元 ),資訊流入或流出 ALU 的基本長度是 16 位元

12 Pep/7的特色 有 7個暫存器,我們將焦點放在以下 4 個
程式計數器(Program Counter,簡寫為 PC),2 bytes,存放下一個將被執行的指令的位址 指令暫存器(Instruction Register,簡寫為 IR),3 bytes,含有目前正在執行的指令的拷貝 指標暫存器(X 暫存器),2 bytes,存放陣列相關運算的指標值 累加器(A 暫存器),2 bytes,存放資料及運算後的結果

13 Pep/7的特色 Pep/7 有 4 個狀態位元(status bits),我們僅展示以下 2 個:
N: (Negative) 當累加器的值為負 ,則其值為 1;否則為 0 Z: (Zero) 當累加器的值為 0 ,則其值為 1;否則為 0 狀態位元用於設計 迴圈 及 IF-ELSE 程式碼

14 Pep/7的特色 圖 7.1 Pep/7 的架構– CPU 的暫存器

15 Pep/7的記憶體 4095 圖 7.1 Pep/7 的架構– 記憶體

16 指令格式 一個指令包含兩個部分 : 8位元的指令設定(instruction specifier)
16位元的運算元設定(operand specifier)(不一定要有) 圖 7.2 Pep/7 的指令格式

17 指令格式 指令指標是由以下幾個部分組成的: 運算碼( The operation code )
暫存器設定(The register specifier): 0代表 A 暫存器,1 代表 X 暫存器 定址模式(The addressing-mode specifier) 暫存器設定(R)

18 指令格式 運算碼 指定將要執行何種指令(以下僅列 7 個) 單一位元組(unary)指令 LOADA or LOADX

19 指令格式 佔1個位元的暫存器指標 的值 若為 0,則代表暫存器 A(累加器)參與運算 若為 1 ,則代表暫存器 X(指標暫存器)參與運算 佔2個位元的定址模式指標指示如何解譯指令的運算元部分,本章僅展示 00 (immediate,組合語言以 i 表示)、01(direct ,組合語言以 d 表示)

20 指令格式 圖 7.3 立即模式定址與直接模式定址間的差異

21 機器碼 (1/6) LOADA 0007, i (08 00 07) 0007 直接載入 A 暫存器
LOADX 001F, i (0C 00 1F) 0007 直接載入 X 暫存器

22 機器碼 (2/6) LOADA (001F), d (09 00 1F) 記憶體位址 001F 及 0020 的內容載入 A 暫存器
LOADX (001F),d (0D F) 記憶體位址 001F 及 0020 的內容載入 X 暫存器

23 將 A 暫存器內容第 1 byte 存到記憶體位址 000A ,第 2 byte存到記憶體位址 000B
機器碼 (3/6) STOREA (000A), d ( A) 將 A 暫存器內容第 1 byte 存到記憶體位址 000A ,第 2 byte存到記憶體位址 000B ADDA 20A, i ( A) 將 A 暫存器內容再加上 020AH

24 將 A 暫存器內容再加上記憶體位址 020AH 及 020BH的內容
機器碼 (4/6) ADDX 20A, i (1C A) 將 X 暫存器內容再加上 020AH ADDA (20A), d ( A) 將 A 暫存器內容再加上記憶體位址 020AH 及 020BH的內容 23

25 將 X 暫存器內容再加上記憶體位址 020AH 的內容
機器碼 (5/6) ADDX (20A), d (1D A) 將 X 暫存器內容再加上記憶體位址 020AH 的內容 CharI (000A) (D A) 將 輸入字母存在記憶體位址 000AH

26 機器碼 (6/6) CharO h#41,i (E0 00 41) 41H 是 ‘A’ 字元的 ASCII 碼 輸出 ‘A’ 字元
CharO (000A), d (E A) 輸出 記憶體位址 000A的內容(那個 byte)

27 勘誤 第 190 -- 204 頁,specifier 的中文由 指標 改為 設定
如 指令指標 改為 指令設定,運算元指標 改為運算元設定,暫存器指標 改為 暫存器設定,定址模式指標 改為 定址模式設定 第 191 頁,第 2 段第 8 列,”記憶體位址” 後增加 “的內容” 第 191 頁,圖 7.3 ,運算元設定右方空格由 5 個改為 4 個,資料又方 17 格改為 16 格 第 191 頁,最後一段第 1, 2 列,虛指令(unary instruction)應為單一位元組指令


Download ppt "Chapter 07 低階程式語言."

Similar presentations


Ads by Google