看板 PLT 關於我們 聯絡資訊
https://helloworldcollection.github.io/ 這個網頁是各種語言寫的Hello World 程式 有565種 包括76人類語言 我看到用音符寫程式的Velato語言XD 如果用組合語言寫Hello World 程式 寫法就會因為不同機器而不同 例如Assembler(8051)的HELLO WORLD程式 ----------------------------------------------- Org 0 mov dptr,#msg mov R0,#30h loop: clr a movc a,@a+dptr jz end mov @R0,a inc R0 inc dptr sjmp loop end: jmp $ msg: db 'Hello World",0 ------------------------------------------------ 那個loop不知道在loop啥的 反正程式碼就是這樣 我猜是因為組合語言就是010110101機械語言的濃縮版 透過鍵盤來濃縮 本來要輸入0100 1000 代表 H 現在搞一個 H 按鈕 透過電路設計當按下按鈕時 送出0100 1000 給電腦 用八條電線? 還是用一條電線依序送出0 1 0 0 1 0 0 0? 總之就是按一下會輸入8個bit Hello world 總共要按10下 再來是有個指令mov 在其他的組合語言版本也有看到 我猜mov就是英文的move的意思 把輸入move到暫存區?? 其他的指令通通看不懂 暫存區就是電腦不知道你輸入hello world要幹嘛 先收起來放著 嚴格講起來電腦不知道你輸入的是hello world 電腦收到的是按下hello world按鈕所輸入的1010...訊號 而且是有順序的 h 在 e 前輸入 e 又在 l 前 所以hello world的二進位訊號 現在被搬進暫存區 等下一步指令 其實整段hello world 程式碼 通通都是0101...的型態 裝入暫存區內 然後大概有指令是告訴8051 準備輸出hello world 所以要再搞出顯示裝置 我有用過麵包板接出計時器 用這個邏輯 假如顯示器設計複雜一點 可以讓顯示器收到0100 1000 亮出 H 的點 例如製作個8*8解析度的顯示器好了 總共64顆LED燈泡 64亮出 HeloWrd 的形狀應該很夠了 (那個 W 可能不太清楚) 透過nand nor not邏輯閘組合出一個8bit控制64顆燈泡怎亮的電路 可能不用控制到64顆 有幾顆可能永遠不會亮 不用管他 不過也許有其他字母會讓它亮 所以設計時要考慮進來 總之 Hello world 終於順利顯示在螢幕上了 結論是這個程式碼會跟 1.輸入裝置 2.暫存器 3.輸出裝置 有很大的關係 只要有不同的電路設計 輸出的0101...在顯示器上就不是預期的形狀 但現在我看C C++ Java 這些程式 完全不care這些東西耶 我是指大家的電腦都不一樣阿 雖然鍵盤都一樣 但是大家的螢幕 CPU 記憶體都不一樣 有人用22吋 24吋 記憶體也有DDR2 DDR3 DDR4 CPU也有Intel AMD 主機板 顯示卡 也一堆不同廠商 大家用著各式各樣不同的零件組成的電腦 安裝完作業系統和C++編輯器 只要在C++的編輯器打入 --------------------------------------------- #include <iostream.h> main() { cout << "Hello World!" << endl; return 0; } -------------------------------------------- 編譯完 執行就能在命令提示字元顯示 Hello world -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.238.33.245 ※ 文章網址: https://www.ptt.cc/bbs/PLT/M.1504816399.A.B44.html ※ 編輯: nnlisalive (36.238.33.245), 09/08/2017 05:14:12
LPH66: 建議你去找本計算機概論從頭到尾讀完再回頭來看你的問題 09/08 08:12
james732: 底層原理其實一樣,但編譯器大神處理掉了 09/08 09:34
james732: 高階語言的重點就是不用管硬體啊XD 09/08 09:35
mars90226: 這問題有點尷尬...感覺你需要先搞懂計算機的基礎 09/08 16:45
mars90226: 簡單的說編譯器知道各機器所需要的機器碼 09/08 16:46
mars90226: 他會自動將你的code轉換成對應的機器碼 09/08 16:46
mars90226: 還有你說這那堆硬體其實都沒差,只有CPU的架構才有影響 09/08 16:48
mars90226: 這種簡單的程式只有CPU架構跟OS會影響生出來的執行檔 09/08 16:49
CoNsTaR: 你講的不就是編譯器在做的事嗎… 09/08 22:37
Neisseria: 去讀編譯器和直譯器的書就有解了 09/13 08:25
wgst88w: 白算盤講的軟韌體介面,就是你不知ASM在幹嘛的地方。 09/17 22:02
Davidhu127: 高階的特性就是可以從實際層面"抽離",所以又叫做"抽 10/15 14:54
Davidhu127: 象化",抽象化的好處是可以相容,跨平台都適用,設計 10/15 14:54
Davidhu127: 起來省力,壞處是中間的轉換(或許會)讓效能變差一點點 10/15 14:54
Davidhu127: 如果有興趣往高階走,比程式語言更高階的是演算法 10/15 14:57
CoNsTaR: 樓上,語言和算法是兩個完全不同的東西吧 = = 10/16 05:46
CoNsTaR: 還有抽象化是忽略整體的一部分,有助於將不同的東西歸類 10/16 05:46
truefalse: 樓上,我覺得樓上上只是在表達概念 11/18 16:14
truefalse: 因為演算法是跨越各種語言的 11/18 16:14
truefalse: 正如同高階語言跨越機械的概念相近 11/18 16:15
CoNsTaR: 語言也是跨越各種演算法的啊… 12/04 08:18
CoNsTaR: 而且不管高不高階,語言本來就是跨越機械的不是嗎 12/04 08:18
CoNsTaR: 我是指在有對應的編/組譯器的情況下 12/04 08:21