iT邦幫忙

鐵人檔案

2019 iT 邦幫忙鐵人賽
回列表
Software Development

8086下16位元DOS組合語言學習筆記 系列

本系列文章適合零基礎想要學習組合語言的朋友,歡迎和我一起進入 x86 組合語言的世界。

參賽天數 10 天 | 共 12 篇文章 | 40 人訂閱 訂閱系列文 RSS系列文
DAY 1

達標好文 [Day01] 第一個 Hello World 程式

組合語言是最接近底層的語言,雖然現在用到的地方越來越少,連韌體都可以用 C 語言來寫,但我認為學習底層語言對寫程式還是有幫助的,可以藉由學習組合語言更了解電腦核...

DAY 2

[Day02] CPU 如何和外部溝通 - 存儲器和總線

機器語言 電腦只看得懂 0 和 1,現在所有的程式語言 ASM、C++、C#、Python,等等...最終都會經過編譯或直譯轉換成機器碼 CPU 才能執行,現在...

DAY 3

[Day03] 記憶體地址空間和第一次反組譯

上一篇結尾講到尋址能力,尋址就是定位記憶體的地址空間,相信很多人知道 XP 作業系統有記憶體 4G 的限制,因為 XP 是 32 位元的作業系統,所以最多只能尋...

DAY 4

[Day04] 通用暫存器

暫存器 接下來要介紹最令我頭痛的暫存器,8086 的 CPU 有 14 個暫存器,分別是: AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、D...

DAY 5

[Day05] 物理地址和段暫存器

物理地址 前面提到可以將所有存儲器看成一個單一的邏輯空間,物理地址就是這邏輯空間上的真實地址,CPU 透過物理地址才能定位其上的單元空間。 如何計算物理地址 8...

DAY 6

[Day06] Debug 工具的使用

今天要介紹 Debug 工具,在第一篇的時候已經有將環境安裝好,所以就直接開始吧,Debug 可以用來單步執行程式、查看暫存器和記憶體內容,除了基本的偵錯功能外...

DAY 7

[Day07] 字型數據的儲存和數據段暫存器

字在記憶體中的儲存 接下來開始進入記憶體的部分,一個記憶體單元可以儲存一個 字節 (byte) 的資訊。 0 | 01H 1 | 02H 2 | 03H 4 |...

DAY 8

[Day08] 棧段暫存器

棧 學過資料結構的朋友應該都知道 棧 stack 的概念,棧就像一個開口向上的容器,可以將數據放入和取出,由於開口只有一邊,所以有 後進先出 LIFO 的特性,...

DAY 9

[Day09] 回頭再看 Hello World

今天要回頭看第一篇的 Hello World 程式,經過這麼多篇不知道大家有沒有覺得 Hello World 親切許多,回去看 Hello World 絕對不是...

DAY 10

[Day10] 循環指令 - loop

loop 今天要介紹組合語言的循環指令 loop,結構如下: p: ;循環內容 loop p loop 會搭配 cx 暫存器 一起使用,執行到 loo...