一條指令 = 操作碼 + 操作數
例:1940 → 操作碼1(LOAD),操作數940(內存地址)
每條指令分兩階段:
假設指令編碼:
1xxx = LOAD (從內存xxx載入AC)
2xxx = ADD (AC += 內存xxx)
3xxx = STORE (AC → 內存xxx)
程序碼(內存地址從300開始):
300: 1940 ; LOAD 940 (將內存940處的值3載入AC) 301: 2941 ; ADD 941 (AC += 內存941處的值2 → AC=5) 302: 3942 ; STORE 942 (將AC=5存入內存942)
| 步驟 | 階段 | PC | IR | AC | 微操作描述 |
|---|---|---|---|---|---|
| 1 | 取指 | 300 | 1940 | - | PC(300)→MAR,內存[300]→MDR→IR,PC→301 |
| 2 | 執行 | 301 | 1940 | 3 | 解碼OP=1,ADDR=940→MAR,內存[940](3)→MDR→AC |
| 3 | 取指 | 301 | 2941 | 3 | PC(301)→MAR,內存[301]→MDR→IR,PC→302 |
| 4 | 執行 | 302 | 2941 | 5 | 解碼OP=2,ADDR=941→MAR,內存[941](2)→MDR,ALU: AC+MDR→AC |
| 5 | 取指 | 302 | 3942 | 5 | PC(302)→MAR,內存[302]→MDR→IR,PC→303 |
| 6 | 執行 | 303 | 3942 | 5 | 解碼OP=3,ADDR=942→MAR,AC(5)→MDR→內存[942] |
程序執行本質是取指→解碼→執行的無限循環。理解PC/IR/AC角色、指令格式、微操作流程,是掌握計算機組成原理、逆向分析、編譯器代碼生成的基石。