PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   組合語言 (https://www.pcdvd.com.tw/showthread.php?t=796286)

mirage5e 2008-05-29 05:35 PM

引用:
作者果汁吧店長
組合語言的好處
在於~~~~
寫的時候看得懂,隔個三天就不懂~~~~~再放個一個星期~~~
只有cpu 才看得懂


夯ㄚ萊ㄟ.... :flash:
現在週遭都是寫C的,寫Assembly越來越少,要準備轉行了. :think:

aston 2008-05-29 05:52 PM

引用:
作者果汁吧店長
組合語言的好處

在於~~~~

寫的時候看得懂,隔個三天就不懂~~~~~再放個一個星期~~~

只有cpu 才看得懂 :laugh: :laugh:


基本上,只要了解原理就不難。但是~~~這種事是要靠天份的~

像我,如果有 c 可以用,那怕是轉換率太差,我也要用 C

為什麼呢?

因為,根據一位有十來年的程式設計師私下告訴我

寫程式加註解~~~~那是嘴巴上說說,實際上是不會出現的~~~

因為懶~~~~~~

而組合語言呢,一旦沒有了註解,嘿嘿嘿~~~~很快你就看不懂了


所以,要學會組合語言,不難。但是~~~~~記得要加註解哦~


中肯!

自己寫的組合程式,過一段時間後,
常常要回想一下,才知道自己當時為什麼這樣寫。
這也要怪自己懶得寫註解,
因為有時候工作一趕,連寫程式的時間都沒有,那還有心思寫註解。

jkling 2008-05-29 06:00 PM

很簡單阿
多寫
多看
上網找IA32的spec看第二集有組語的指令集可以參考

PCDVD_KING 2008-05-29 06:05 PM

我是苦命的工程師, Assembly算一算也有寫了近十年,

從最早的4bit MCU 到 8051 到 RISC 到 DSP.....

有時候組合語言是在某些注重效能的特殊應用上是不可取代的,

要把它學好真的要靠對CPU架構的瞭解才有辦法.

當你cpu架構通了後, 換晶片只是換一種寫法, 換一種指令代碼,

只要熟析該晶片特別Offer的功能和用法就好了.

不然當初3~6個月就要新學一顆mcu並把案子做完,

一疊的原文資料會把人弄瘋的.

Devil 2008-05-29 06:43 PM

以前讀書時上到組合語言的課
我一直覺得,其實組合語言是外星人的一個陰謀
發明來整地球人的

1024BITS 2008-05-29 07:46 PM

這讓我想到在學校時

當時有教TURBO C 跟 8051(用組合語言)
但是我怎樣想就是想不通C的寫作方式.只會用printf :cry:
使用組合語言寫8051卻有辦法讓他運作.
我覺得還是要看個人吧.

qqa177 2008-05-29 10:48 PM

當初為了學組合語言
買了一本施威銘的組合語言實務和松崗出的...
書本前面幾張被我翻到黃掉,還是學不起來
即使知道一行指令,但一整串都不知道要做什麼
對於一個數理邏輯都不行的我來說.....可能要天賦吧...

jenzh 2008-05-30 12:17 AM

x86還有一個叫「保護模式」東西,這個東西早在386就有了。

但是國內組合語言書本卻很少提到它,大多都是在講DOS的中斷呼叫、BIOS呼叫。

不過我是認為學BIOS呼叫是比較有用,DOS中斷呼叫(int 21)的話呢…

換個作業系統,int 21就失靈了。:stupefy:


還有像是mmx、sse、3DNow,這些東西要翻intel or amd的CPU手冊才知道。:stupefy:

RogerShih 2008-05-30 01:34 AM

引用:
作者jenzh
x86還有一個叫「保護模式」東西,這個東西早在386就有了。

但是國內組合語言書本卻很少提到它,大多都是在講DOS的中斷呼叫、BIOS呼叫。

不過我是認為學BIOS呼叫是比較有用,DOS中斷呼叫(int 21)的話呢…

換個作業系統,int 21就失靈了。:stupefy:


還有像是mmx、sse、3DNow,這些東西要翻intel or amd的CPU手冊才知道。:stupefy:


286就有保護模式了,只是 286 的模式切換非常花時間,所以效率不好。386一出來,當時軟體都跳去用386保護模式了,286就給丟了。

386 增加的是在保護模式下運作的 v86 模式.

darkangel 2008-05-30 01:41 AM

引用:
作者jenzh
x86還有一個叫「保護模式」東西,這個東西早在386就有了。

但是國內組合語言書本卻很少提到它,大多都是在講DOS的中斷呼叫、BIOS呼叫。

不過我是認為學BIOS呼叫是比較有用,DOS中斷呼叫(int 21)的話呢…

換個作業系統,int 21就失靈了。:stupefy:


還有像是mmx、sse、3DNow,這些東西要翻intel or amd的CPU手冊才知道。:stupefy:


以我的印象,我記得 Protected Mode 是從 286 就有的,只是 286 時的 Protected Mode 設計得很爛,所以大家都當做286沒保護模式,一直到 386 之後的保護模式才算是較為完整,也才有人針對 386 保護模式設計軟體,如當時紅極一時的 Watcom C 的 DOS4GW.EXE,第一代的 Doom 其實就是靠這東西解決大解析圖片翻轉的問題,如果老玩家有印象,應該記得最早沒使用 DOS4GW.EXE 的 Demo 版本是如何的慢。
此外,以前最有名的軟體除錯器 S-ICE 其實也是利用 386 的保護模式機制的軟體之一,因此以前做保護有一些手段來防 S-ICE 例如把 Debug Register 拿來用。
還有,中斷的分類方式並不是 BIOS 與 DOS 這種分法,而應該是 Hardware, Software, 是否為 NMI 等分法...
組合語言真的沒想像中的難,我覺得組合語言不會比 BASIC 難到哪去,debug 開下去,有耐心點 trace 觀察暫存器變化跟用力查資料,你會發現組合語言真的不難。
我覺得難的地方是電腦系統架構、作業系統、硬體規格與演算法,組合語言反而是其次。
此外,以我碰過的組合語言來說,x86 的組合語言比起其他 RISC (MIPS, ARM...) 的組語來說,算是比較複雜的。
如果是非必要,其實用 C 來寫程式會比較有效率,只要你對 C 夠熟,用C也不見得會比組合語言慢到哪去。


所有的時間均為GMT +8。 現在的時間是03:57 PM.

vBulletin Version 3.0.1
powered_by_vbulletin 2026。