欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    導讀:我寫了一個名為 “Toy CPU” 的教育性復古計算機程序,以便我的學生能夠學習機器語言。

    本文字數:5482,閱讀時長大約:8分鐘

    我寫了一個名為 “Toy CPU” 的教育性復古計算機程序,以便我的學生能夠學習機器語言。

    我兼職教授大學課程,包括一個對所有專業開放的一般計算機主題的課程。這是一門入門課程,向學生講授技術是如何運作的,以消除圍繞計算的神秘感。

    雖然不是計算機科學課程,但這門課的一個部分涉及計算機編程。我通常用非常抽象的術語談論編程,所以不會讓聽眾聽不懂。但是今年,我想讓我的學生以 “老派” 的方式做一些需要 “動手” 的編程。同時,我又想保持簡單編程用什么處理器好,以便讓每個人都能跟上。

    我喜歡將我的課程結構化,以顯示你是如何從 “那里” 到 “這里” 的。理想情況下,我會讓我的學生學習如何編寫一個簡單的程序。然后,我將從這里開始,展示現代編程是如何讓開發人員創建更復雜的程序的。我決定嘗試一種非常規的方法 —— 教學生學習終極的低級別編程語言:機器語言。

    機器語言編程

    早期的個人電腦如 Apple II(1977 年)、TRS-80(1977 年)和 IBM PC(1981 年)讓用戶用鍵盤輸入程序,并在屏幕上顯示結果。但計算機并不總是帶有屏幕和鍵盤。

    8800 和 IMSAI 8080(均為 1975 年制造)要求用戶使用面板上的 “開關和燈” 輸入程序。你可以用機器語言輸入指令,使用一組開關,機器會點亮 LED 燈以代表每個二進制指令的 1 和 0。

    控魚用路亞鉗好還是控魚器好_櫥柜門用拉手好還是反彈器好_編程用什么處理器好

    8800 計算機的圖片

    對這些早期機器進行編程,需要了解被稱為 “操作碼()” (操作代碼的簡稱)的機器語言指令,以執行基本操作,如將兩個數字相加或將一個值存儲到計算機的存儲器中。我想向我的學生展示程序員是如何通過開關和燈,手工輸入一系列指令和內存地址的。

    然而,在這門課上,使用實際的 8800 就有點太復雜了。我需要一些簡單的、任何初級水平的學生都能掌握的東西。理想情況下,我希望能找到一個簡單的 “業余” 復古計算機,其工作原理與 8800 相似,但我無法找到一個價格低于 100 美元的合適的 “類似 ” 的設備。我找到了幾個 “” 軟件模擬器,但它們忠實地再現了 8800 的操作碼,這對我的需求來說太過沉重。

    我決定編寫我自己的 “教育” 復古計算機。我稱它為 “Toy CPU”。你可以在我的 代碼庫 上找到它,包括幾個可以運行的版本。第一版是一個實驗性的原型,運行在 上。第二版是一個更新的原型,在 Linux 上用 運行。版本 3 是一個 程序,在圖形模式下運行。

    Toy CPU 的編程

    Toy CPU 是一個非常簡單的復古計算機。它只有 256 字節的內存和一個最小化的指令集,其目的是在復制 “開關和燈” 編程模式的同時保持簡單化。它的界面模仿 8800,有一系列 8 個 LED 燈,分別代表計數器(程序的 “行號”)、指令、累積器(用于臨時數據的內部存儲器)和狀態。

    當你啟動 Toy CPU 時,它通過清除內存來模擬 “啟動”。當它啟動時,它也會在屏幕右下方的狀態燈中顯示 “INI”(初始化)?!癙WR”(電源)燈亮表示 Toy CPU 已被打開。

    Toy CPU 的啟動屏幕

    當 Toy CPU 準備好讓你進入一個程序時,它通過狀態燈指示 “INP”(“輸入”模式),并讓你從程序的計數器 0 開始。Toy CPU 的程序總是從計數器 0 開始。

    在 “輸入” 模式下,用上下方向鍵顯示不同的程序計數器,按回車鍵編輯當前計數器上的指令。當你進入 “編輯” 模式時,Toy CPU 的狀態燈上會顯示 “EDT”(“編輯” 模式)。

    櫥柜門用拉手好還是反彈器好_編程用什么處理器好_控魚用路亞鉗好還是控魚器好

    Toy CPU 編輯屏幕

    Toy CPU 有一張速查表,被 “貼” 在顯示屏的前面。它列出了 Toy CPU 可以處理的不同操作碼。

    ?(STOP):停止程序執行。?(RIGHT):將累加器中的位向右移動一個位置。值變成,變成。?(LEFT):將累加器中的位向左移動一個位置。值變成,變成。?(NOT):對累加器進行二進制非操作。例如,值變成。?(AND):對累加器用存儲在某一地址的值進行二進制與操作。該地址被存儲在下一個計數器中。?(OR):對累積器用存儲在某一地址的值進行二進制或運算。?(XOR):對累加器用存儲在某一地址的值進行二進制異或運算。?(LOAD):將一個地址的值加載(復制)到累加器中。?(STORE):存儲(復制)累加器中的值到一個地址。?(ADD):將存儲在某一地址的數值加入到累加器中。?(SUB):從累積器中減去儲存在某一地址的數值。?(GOTO):轉到(跳到)一個計數器地址。?():如果累加器為零,轉到(跳到)一個計數器地址。?(NOP):空操作,可以安全地忽略。

    當處于 “編輯” 模式時,使用左右方向鍵選擇操作碼中的一個位,然后按空格鍵在關閉(0)和開啟(1)之間翻轉數值。當你完成編輯后,按回車鍵回到 “輸入” 模式。

    Toy CPU 輸入模式屏幕

    一個示例程序

    我想通過輸入一個簡短的程序來探索 Toy CPU,將兩個數值相加,并將結果存儲在 Toy CPU 的內存中。實際上,這執行的是算術運算A+B=C。要創建這個程序,你只需要幾個操作碼:

    ?(LOAD)?(ADD)?(STORE)?(STOP)

    LOAD、ADD和STORE指令需要一個內存地址,這個地址總是在下一個計數器的位置。例如,程序的前兩條指令是:

    控魚用路亞鉗好還是控魚器好_編程用什么處理器好_櫥柜門用拉手好還是反彈器好

    1. 計數器 000010100
    2. 計數器 1:某個內存地址,第一個值 A 存放在那里

    計數器 0 中的指令是LOAD操作,計數器 1 中的值是你存儲某個值的內存地址。這兩條指令一起將內存中的數值復制到 Toy CPU 的累加器中,在那里你可以對該數值進行操作。

    將一個數字A裝入累加器后,你需要將數值B加到它上面。你可以用這兩條指令來做:

    1. 計數器 200010110
    2. 計數器 3:存儲第二個值 B 的內存地址

    假設你把值1(A)裝入累加器,然后把值3(B)加到它上面。現在累加器的值是4。現在你需要用這兩條指令把數值4復制到另一個內存地址(C):

    1. 計數器 400010101
    2. 計數器 5:一個內存地址(C),我們可以在那里保存新的值

    把這兩個值加在一起后,現在可以用這條指令結束程序:

    1. 計數器 6: 00000000

    計數器 6 之后的任何指令都可以供程序作為存儲內存使用。這意味著你可以用計數器 7 的內存來儲存值A,計數器 8 的內存來儲存值B,計數器 9 的內存來儲存值C。你需要將這些分別輸入到 Toy CPU 中:

    1. 計數器 7000000011
    2. 計數器 8000000113
    3. 計數器 9000000000,以后會被覆蓋)

    在弄清了所有指令和A、B和C的內存位置后,現在可以將完整的程序輸入到 Toy CPU 中。這個程序將數值 1 和 3 相加,得到 4:

    1. 計數器 000010100
    2. 計數器 1000001117
    3. 計數器 200010110
    4. 計數器 3000010008
    5. 計數器 400010101
    6. 計數器 5000010019
    7. 計數器 600000000
    8. 計數器 7000000011
    9. 計數器 8000000113
    10. 計數器 9000000000,以后會被覆蓋)

    編程用什么處理器好_櫥柜門用拉手好還是反彈器好_控魚用路亞鉗好還是控魚器好

    要運行程序,在 “輸入” 模式下按下R鍵。Toy CPU 將在狀態燈中顯示 “RUN”(“運行” 模式),并從計數器 0 開始執行你的程序。

    Toy CPU 有一個明顯的延遲,所以你可以看到它執行程序中的每一步。隨著程序的進行,你應該看到計數器從(0)移動到(6)。在計數器 1 之后,程序從內存位置 7 加載數值1,累積器更新為(1)。在計數器 3 之后,程序將加數值3,并更新累加器顯示(4)。累加器將保持這種狀態,直到程序在計數器 5 之后將數值存入內存位置 9,然后在計數器 6 結束。

    在運行模式下的 Toy CPU

    探索機器語言編程

    你可以使用 Toy CPU 來創建其他程序編程用什么處理器好,并進一步探索機器語言編程。通過用機器語言編寫這些程序來測試你的創造力。

    一個在累積器上閃燈的程序

    你能點亮累加器上的右四位,然后是左四位,然后是所有的位嗎?你可以用兩種方法之一來寫這個程序。

    一種直接的方法是,從不同的內存地址加載三個數值,像這樣:

    1. 計數器 0LOAD
    2. 計數器 1:“右邊”
    3. 計數器 2LOAD
    4. 計數器 3:“左邊”
    5. 計數器 4LOAD
    6. 計數器 5:“所有”
    7. 計數器 6STOP
    8. 計數器 700001111(“右邊”)
    9. 計數器 811110000(“左邊”)
    10. 計數器 911111111(“全部”)

    控魚用路亞鉗好還是控魚器好_櫥柜門用拉手好還是反彈器好_編程用什么處理器好

    寫這個程序的另一種方法是嘗試使用NOT和OR二進制操作。這樣可以得到一個更小的程序:

    1. 計數器 0LOAD
    2. 計數器 1:“右邊”
    3. 計數器 2NOT
    4. 計數器 3OR
    5. 計數器 4:“右邊”
    6. 計數器 5STOP
    7. 計數器 600001111(“右邊”)

    從一個數字開始倒數

    你可以把 Toy CPU 作為一個倒數計時器。這個程序行使測試,只有當累加器為零時,程序才會跳轉到一個新的計數器:

    1. 計數器 0LOAD
    2. 計數器 1:“初始值”
    3. 計數器 2IFZERO(這也是倒計時的“開始”)
    4. 計數器 3:“結束”
    5. 計數器 4SUB
    6. 計數器 5:“1
    7. 計數器 6GOTO
    8. 計數器 7:“開始”
    9. 計數器 8STOP
    10. 計數器 900000111(“初始值”)
    11. 計數器 1000000001(“1”)

    Toy CPU 是學習機器語言的一個好方法。我在入門課程中使用了 Toy CPU,學生們說他們發現寫第一個程序很困難,但寫下一個程序就容易多了。學生們還表示,用這種方式編寫程序其實很有趣,他們學到了很多關于計算機實際工作的知識。Toy CPU 既具有教育性,也很有趣味性!

    via:

    作者:Jim Hall選題:lkxed譯者:wxy校對:wxy

    本文由LCTT原創編譯,Linux中國榮譽推出

    LCTT 譯者 :.Wang

    翻譯:948.0篇|貢獻:3101天2014-07-25→2023-01-20歡迎遵照 CC-BY-SA 協議規定轉載,如需轉載,請在文章下留言 “轉載:公眾號名稱”,我們將為您添加白名單,授權“轉載文章時可以修改”。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有