想像你在學校的點心間拿零食,每種「定址法」就像是你拿零食的不同方式: --- ## 故事背景 小明放學後肚子餓,跑到學校的點心間(就像電腦的記憶體)去拿餅乾和牛奶。點心間裡有很多格子(記憶體位址),每格放一樣東西。 --- ### 1. 立即定址(Immediate Addressing) **比喻**:老師直接把一包餅乾遞給你。 - **故事**:小明跟老師說:「我要一包餅乾!」老師打開抽屜,直接給你一包餅乾。 - **特點**:餅乾已經在老師手上,不用去點心間找。 - **對應**:指令裡就寫著要的數字或資料,CPU 直接用就好。 --- ### 2. 直接定址(Direct Addressing) **比喻**:你知道餅乾放在格子 10,你直接打開格子拿。 - **故事**:小明看指示牌:「餅乾在第 10 格」,於是走到第 10 格,一把抓起裡面的餅乾。 - **特點**:位置固定、簡單明瞭,但格子空間要留給點心。 - **對應**:指令裡有 memory[10],CPU 直接去那個位址讀或寫。 --- ### 3. 間接定址(Indirect Addressing) **比喻**:老師給你一張紙條,上面寫著「格子裡有零食的位置」,你再去那格拿。 - **故事**:老師:「去看看這張紙條。」紙條上寫「去第 5 格拿東西」,你先讀紙條,才知道要到第 5 格。 - **特點**:第一步先找紙條(指標),第二步才去拿真正的點心。 - **對應**:指令裡有一個指標位址,CPU 先去指標那格讀出「真正的位址」,再去讀寫。 --- ### 4. 索引定址(Indexed Addressing) **比喻**:你有一本「口袋書」,上面寫著「格子基準是 20」,而你要去「基準+偏移量」的格子拿。 - **故事**:小明:「餅乾都在第 20 格起,隔 3 格就有一包巧克力!」於是他把 20(基準)+3(偏移)=第 23 格,拿到巧克力。 - **特點**:可以輕鬆連續拿多個相似東西(像陣列)。 - **對應**:address = base + offset,常用於陣列、清單。 --- ### 5. 相對定址(Relative Addressing) **比喻**:你在走廊上,老師說「向前走 5 步,有飲料」。 - **故事**:小明站在教室門口,老師喊:「從這裡往前 4 格,有蘋果汁!」他就從門口算起,走到第 4 格拿。 - **特點**:不管你現在在哪裡,都能「往前/往後」移動固定步數。 - **對應**:跳轉指令常用,像是「如果零食吃完了,就往後跳 10 步」。 --- ## 小結 - **立即定址**:老師直接給你(資料就在指令裡)。 - **直接定址**:你去固定格子拿(指令帶地址)。 - **間接定址**:先拿紙條,再去紙條指示的格子(雙重讀取)。 - **索引定址**:基準+偏移,適合連續取物(陣列)。 - **相對定址**:從當前位置加減,常用於跳轉(控制流程)。 透過這些「拿零食」的小故事,就能理解電腦如何用不同方法從記憶體裡取資料囉~ 下面再用三個生活化情境,來對比說明這五種定址法: --- ## 1. 超商買飲料(便利商店) - **立即定址**:店員直接遞給你「一瓶可樂」,你不用走到架上去拿。 - **直接定址**:你看標籤寫「可樂放在架子第 3 排、第 2 列」,走到那格拿就對了。 - **間接定址**:櫃台上的螢幕先顯示「請到第 5 架第 1 列拿」,你先看螢幕(指標),再去拿真正的飲料。 - **索引定址**:你知道「汽水類都從第 10 架開始」,而可樂在第 10 架後第 4 位,就到「基準 10 + 偏移 4」的位置拿。 - **相對定址**:店員指著你面前那瓶綠茶說:「再往右走兩格就是可樂」,直接從「當前位置」移動。 --- ## 2. 圖書館借書 - **立即定址**:圖書管理員直接拿給你書本,不用你自己去找。 - **直接定址**:館藏目錄上寫「《哈利波特》在書架 A 區第 12 格」,你拿起第 12 格的那本。 - **間接定址**:你先查索書卡(指標),索書卡上又寫了書架位置,然後再去那裡取書。 - **索引定址**:你想看歷史類小說,書架標示從第 100 本開始,想要第 5 本,就到「第 100 + 4」的那格。 - **相對定址**:圖書館在一排排書架走廊,告訴你「從你站的位置往前走三排再往左二格就是」,只要數格走就到。 --- ## 3. 公司檔案櫃取資料 - **立即定址**:秘書直接把你要的那份報表遞給你。 - **直接定址**:檔案櫃貼標籤「年度報表─第三抽屜」,你拉開第三抽屜拿裡面的報表。 - **間接定址**:你先看「工作清單」(存在綁在檔案櫃上的紙條),清單上寫「去第 2 抽屜第 4 格取」,再去那裡抽取。 - **索引定址**:每個抽屜內文件夾從 1 號開始編號,要第 7 份,就到「抽屜基準 + 6 號」的文件夾裡取。 - **相對定址**:你站在櫃子最左邊,主管說「向右數三個抽屜就是合同」,直接依相對位置去拉。 --- 透過這些不同場景,你可以更靈活地把「定址」想像成: - 老師/店員/秘書第一時間給你(**立即定址**) - 告訴你確切格子/抽屜號(**直接定址**) - 先看指示卡片再去正確位置(**間接定址**) - 用起點+偏移算位置(**索引定址**) - 從你所在位置往前或往後數(**相對定址**) 希望這些例子能幫助你輕鬆理解各種定址法!
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up