匯程式設計序學習,怎麼學習彙編

時間 2023-05-12 02:03:06

1樓:歸來一笑

1、王爽的《組合語言》第2版;

2、羅雲彬的《windows環境下32位組合語言程式設計》第2版;

3、溫冬蟬,沈美明:清華大學出版社,《ibm pc 組合語言程式設計教程》;

4、【美】kip 著,溫玉傑等譯:《intel 組合語言程式設計》(第四版)。

設ax=0001h,bx=0001h,則加法指令如下:

add ax,bx

執行後,ax=0002h,bx=0001h

2樓:網友

我建議你先從計算機cpu組成上學起,彙編最大的優點就是對硬體的高效控制,所以直接跳過硬體學程式是不可取的。學會編要抓好基礎。

先寫匯程式設計序之前,先把計算機基本結構那部分搞明白(比如:進製換算,暫存器的分類,為什麼段最大是64k,位址匯流排的寬度,為什麼要用段暫存器+偏移位址的方式定址),先把這些基本知識搞明白。

網上的彙編資料有很多,別的書不推薦,就王爽的那本組合語言就非常不錯,非常適合新手入門,循序漸進,慢慢來就會有收穫。

3樓:匿名使用者

350111547,我整套書籍打包給你,通俗易懂,外加非計算機專業入門必備。

4樓:我代表斯布雷斯

王寫的彙編書。 第二個可以這麼說。因為被cs:ip指向的資料才叫指令。

怎麼學習彙編

5樓:懂視生活

一、彙編大多是指組合語言,匯程式設計序。把組合語言翻譯成機器語言的過程稱為彙編。在組合語言中,用助記符代替操作碼,用位址符號或標號代替位址碼。

這樣用符號代替機器語言的二進位製碼,就把機器語言變成了組合語言。於是組合語言亦稱為符號語言。

二、怎麼學習彙編:

1、彙編的除錯環境總的來說比較少,也很少有非常好的編譯器。

2、設計的輕鬆彙編是一款非常適合初學者的彙編編譯器。輕鬆彙編是乙個組合語言整合開發環境,主要面向組合語言初學者,也可以用它進行開發。

3、除了普通。

匯程式設計序基礎語法

6樓:機器

注意:立即數書寫必須以數字開頭,若十六進製制數第一位為字母,可在前面新增0。

變數一旦被定義,就具有以下三個屬性:

表示該變數存放在哪個邏輯段中,變數的段基值可以用seg運算子獲取。

表示變數所在位置與段起始點之間的位元組數,變數的偏移量可以用offset運算子獲取。

變數的型別屬性可以用type運算子獲取。

示例:只分配儲存空間,初始值為任意值。

示例:示例:

dw和dd偽指令不能用兩個以上字元構成的字串賦初值(即便dd有4個位元組的空間),否則將出錯。

dup成為重複資料操作符,用於批量分配儲存空間。

注意:移位運算子移位指令不同。

移位運算子的操作物件為具體的數,移位操作在彙編時完成。

移位指令的操作物件為暫存器或儲存單元,移位操作在程式執行時執行。

注意:邏輯運算子均為按位運算。

注意:關係運算子比較的兩個表示式必須同為常數或為同乙個邏輯段中的變數。

常量比較,按無符號數進行比較。

變數比較,比較兩者偏移量大小

關係運算的結果為真(全1)或假(全0)

取變數或標號所在段的段基值。

取變數或標號所在段內的偏移量。

取變數或標號的型別屬性,返回結果為數字。

變數長度。

若變數用重複資料操作符dup說明,則length運算取外層dup給定的值。

若沒有用dup說明,則length運算返回值為1。

示例:size運算子只能作用於變數,返回該變數type和length的乘積。

對變數、標號或儲存器運算元的型別屬性進行修改或指定。

將位址表示式所指定的變數、標號或以其它形式表示的儲存器位址的型別屬性修改為所指定的型別值。

注意:此類修改為臨時的,作用域為本語句。

將表示式的值分離出高位元組和低位元組。

輸入的字元(ascii碼)會儲存在al暫存器中。

輸出dl暫存器中的字元。

loop s執行過程:

如何快速看懂組合語言程式?

7樓:太平洋電腦網

首先得了解彙編指令吧,其次得用機器的邏輯思考問題,明白其中的儲存、累加、判斷、轉移等概念。

比如,1+2+..100這樣的問題,雖然我們可以給出公式計算,但機器並不知道,它只能知道,而且只能每次做乙個加法,而且鑑於cpu的架構不能存所有的這些數值-如果這些數量不定的話更複雜,比如這些數是放在乙個記憶體區域的,記憶體區域約定如下:第乙個數表示總共有多少個數,後面是相應的資料,在這些數沒有規律時是不能用公式的。

另外,許多cpu約定只有乙個累加器(同時也是乙個暫存器,假設它是暫存器ax),它允許從記憶體讀乙個數(mov或者ld指令),只能進行記憶體資料加法(add [位址])。

於是我們只能這樣,首先設定指標暫存器bx:

start: mov bx,#位址 ; 設定記憶體區域起始位址,儲存在bx中。

mov cx,[bx]; 取出總數到cx中,假設cx可以做簡單遞增或遞減。

dec cx ; 預減一次計數器,因為加法只需做cx-1次。

inc bx

mov ax, [bx]; 取出資料。

loop: inc bx ;遞增bx,使之指向真實資料。

add ax,[bx];用下一資料進行累加,並將結果儲存在ax中。

dec cx ;假定這個減法會影響標誌位zf

jnz loop ;如果沒有減到0就繼續loop到這裡之間的操作。

mov [bx], ax; 儲存累加結果到資料區的尾部。

halt ; 停機。

可以看出,上述**並不能告訴我具體結果是多少,除非我們通過工具去訪問這一記憶體區域,於是乙個系統會設計出來專門讓我們進行基本的輸入輸出,把計算機的內部情況甚至記憶體情況通過i/o口送出來,這些io裝置,比如鍵盤負責接收我們的機器指令(可以是彙編結果,也可以是高階語言產生的二進位制指令和資料流),把結果輸出到印表機或者crt這樣的輸出裝置上(通常對映為埠,io port)。這就是bios完成的工作,如int 8負責時鐘,int 10負責螢幕,int 16負責鍵盤等等。更進一步,可以進一步封裝稱dos呼叫,如int 21負責基本的輸入輸出包括檔案操作等等。

windows等作業系統則通過驅動層進行多級抽象提供操作介面給程式設計人員,程式設計人員再進一步封裝出對話方塊或全屏文字選單或流式(行式操作)操作介面給終端使用者。

如何學習組合語言?

8樓:匿名使用者

學習組合語言過程:

一,要有一定的微機硬體基礎知識,因為彙編很底層,更加接近機器語言,往往很多的東西要從機器層面來支援理解。

二,最好先學習一門高階語言,因為高階語言更接近人的語言,相對比較容易理解。掌握了一門高階語言後再學彙編,一來不易產生畏懼感,二來遇到問題,只能侷限於已學的彙編知識來來思考遇到的問題,此時跳出彙編,旁援掌握的語言有助拓新思路,而不只侷限與彙編乙個思路。

三,細緻,踏實的學習態度是少不了的,更為重要的是實踐。比喻為:猶如乙個戰士進入敵營中心地帶,要冷靜,小心,還要勇敢,智慧型,要在敵中心步步為勝,留意敵人的一舉一動,將敵一掃而光,不可大意一步,因為接近核心了,稍一大意有可能留下極大隱患。

四,乙個狂熱的學習勁頭,是學習的動力。勤奮,刻苦,等品質也將幫你一路順進。

9樓:匿名使用者

個人覺得彙編比較簡單,用起來複雜,建議不用學,而且每個cpu指令系統不一樣,麻煩啊。。。如果有興趣買本彙編書看,自己編程式設計序就行。

10樓:曾記否烈火雄心

學習組合語言我主張由實踐到理論。對於書本上的內容沒有必要去死記硬背,但是當你在程式設計時遇到問題就一定要回到書本查詢,最好靠自己解決,這樣印象比較深刻。總之一句話是要,程式設計中得到提公升!

11樓:好名字都死光咯

彙編入門你可以找楊季文的《80x86組合語言程式設計》先入門知道如何使用指令系統之類,接著可以學學保護模式下的程式設計或者win32彙編隨你。樓上說彙編簡單,這個我不認同。。。

12樓:網友

中國人寫的(我覺得國人計算機方面的著作就算彙編比較有出席拉) 一本是王爽寫的《組合語言》和羅雲彬寫的windows環境下32位組合語言程式設計,這2本書在學習彙編的人心中地位都非常高現在都出了第2版了,而且網上都有電子版。其他還有一些書比如: 溫冬蟬,沈美明:

清華大學出版社,《ibm pc 組合語言程式設計教程》, 美】kip 著,溫玉傑等譯:

intel 組合語言程式設計》(第四版),都是比較經典的,如果有機會可以看看!

13樓:網友

自己做幾個專案就懂了。

如何快速看懂組合語言程式

14樓:wwg墨竹

不同機器,彙編**不一樣啊。怎麼說呢?

先熟悉指令集,最起碼要知道一條執行指令後對哪些暫存器有可能會有影響。

看程式的時候,先分清每個段的範圍。

遇到不明的中斷處理,可以查詢中斷向量表。

15樓:匿名使用者

找到組合語言指抄令手襲冊,看到什麼指令不明白就查,這樣肯定是最快的方法。

了,但是要求你有比較好的理解領悟能力。 首先你應該對基本的暫存器有個大概的了解,另外大致了解一下匯程式設計序基本的執行過程,這並不要花費多少時間的。

16樓:匿名使用者

個人沒什麼敲門,看匯程式設計序,都是一行一行的看。

必須的記住每一條命令的功能,和效果。

然後就是看程式的命名,和注釋了。

然後就是能操作看到實際的執行效果。

17樓:匿名使用者

有些人編寫的小程式沒有分段落、注釋也不清楚。可以先將其編譯鏈結生成可執行檔案,再用等反彙編工具進行反彙編。

18樓:匿名使用者

就象學一門外複語,要看懂,得先弄清楚。

制英文單詞的意思,然後是句話的意思,然後是一段話的意思,……最後整篇文章也就差不多弄明白了。所以要先熟悉那些常用的語句,一些基本的程式結構,一本可以象查英文單詞一樣查閱的組合語言書。

19樓:小石頭

邊讀程式邊查詢組合語言指令手冊各個語句的含義並在語句後面注釋。

組合語言,軟體,程式等等

20樓:扣

學語言主要是實踐,我學過c語言,不過我是個菜鳥 2級c給菜過了 好開心,不過我對語言不感興趣,看看基礎的書 多看看例子 個人的菜鳥意見。

求匯程式設計序,編寫組合語言,匯程式設計序基礎語法

什麼都沒有,怎麼寫?匯程式設計序基礎語法 注意 立即數書寫必須以數字開頭,若十六進製制數第一位為字母,可在前面新增0。變數一旦被定義,就具有以下三個屬性 表示該變數存放在哪個邏輯段中,變數的段基值可以用seg運算子獲取。表示變數所在位置與段起始點之間的位元組數,變數的偏移量可以用offset運算子獲...

匯程式設計序是怎麼編譯的?什麼是編譯程式和匯程式設計序?

編譯程式是把用高階程式語言或計算機組合語言書寫的源程式,翻譯成等價的機器語言格式目標程式的翻譯程式,屬於採用生成性實現途徑實現的翻譯程式。編譯程式以高階程式語言書寫的源程式作為輸入,而以組合語言或機器語言表示的目標程式作為輸出 編譯出的目標程式通常還要經歷執行階段,以便在執行程式的支援下執行,加工初...

匯程式設計序mov al,的意思 急 謝啦

將si所指向位址儲存單元中的資料送給al,比如si 1000h,那 si 表示便宜位址為1000h單元裡面儲存的資料,假設1000h位址單元裡存放的是81h,則把81h送給al,即al 81h。 main printf nchinease char s c while s 0 getch 彙編中 m...