<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7956169723833283644</id><updated>2012-02-16T18:26:05.149-08:00</updated><category term='Assembly'/><category term='bulletin'/><category term='system software'/><title type='text'>Assembly and System Programming</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ncuasm.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ncuasm.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>system</name><uri>http://www.blogger.com/profile/07096472456502428826</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7956169723833283644.post-979952921238359038</id><published>2007-06-27T21:02:00.000-07:00</published><updated>2007-06-27T21:05:21.653-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Assembly'/><title type='text'>Assembly Chapter 11 Overview</title><content type='html'>本章有三個重點，前兩個是32位元視窗環境下，主控台模式及圖形模式應用程式的開發，第三個則是IA-32記憶體管理架構． &lt;br /&gt;&lt;br /&gt;從系統程式的角度來看，本章是是往上延伸至視窗程的開發所需的programming技巧，因此會使用到相關的Windows API．在這些函數中，有兩個被使用的字元集合型態：8位元的ANCII/ANSI字元集合以及16位元的wide/Unicode (Windows NT、2000以及XP)字元集合．在Windows API函數中，被使用的標準MS-Windows資料型態必須被轉換成MASM的資料型態，例如：BOOL (Windows 型態)轉換成BYTE (MASM型態)…等．&lt;br /&gt;&lt;br /&gt;32位元的主控台模式(32 bits console mode)外觀和行為很類似16位元的MS-DOS程式設計，兩者的程式都要從標準輸入讀取並寫入到標準輸出中，兩者也都支援自訂命令列參數、文字的顏色。然而32位元主控台程式和DOS程式在底層是不同的，前者在保護模式(Protected Mode)下執行，後者卻是在真實模式(Real address mode)下執行，而且他們使用不同的函式庫：Win 32程式呼叫的函式庫跟圖形模式的視窗應用程式所呼叫的是一樣的，DOS程式則使用BIOS和來自IBM-PC的中斷．以下介紹幾個常用的Win32主控台函數：&lt;br /&gt;&lt;br /&gt;&lt;li&gt;在主控台視窗中，用來做輸入/輸出的主控台控制碼是32位元的整數．必須透過GetStdHandle函數取得．輸入可呼叫ReadConsole函數，輸出則呼叫WriteConsole函數．當建立或開啟檔案時，則呼叫CreateFile函數；讀取與寫入，則分別呼叫ReadFile及WriteFile函數．除此之外CloseHandle函數可以關閉檔案，若想要移動檔案指標時，可呼叫SetFilePointer函數． &lt;br /&gt;&lt;li&gt;若要操控主控台螢幕緩衝區，則必須呼叫SetConsoleScreenBufferSize；要改變文字顏色，可呼叫SetConsoleTextAttribute．要取得系統時間或設定系統時間，可用GetLocalTime及SetLocalTime，這兩個有關時間的函數都是使用SYSTEMTIME結構．&lt;br /&gt;&lt;br /&gt;圖形模式的視窗應用程式，其程式的主要架構其實是固定不變的，必須宣告一個主視窗類別WNDCLASS，並且填滿其中的資訊，包括：取得目前這個程式的控制碼GetModuleHandle、讀入程式的圖示LoadIcon和滑鼠的游標LoadCursor、登錄程式的主視窗RegisterClass、建立主視窗CreateWindowEx、顯示ShowWindow和更新主視窗UpdateWindow，以及開始一個接受GetMessage和發出訊息DispatchMessage的迴圈．一個應用程式要處理那些訊息則完全由使用自定的副程式（如WinProc）決定，而這個副程式與主視窗類別的鏈結是宣告WINDCLASS第二個參數即設定的．&lt;br /&gt;&lt;br /&gt;最後在記憶體管理的部份主要集中在兩個主要的議題：將邏輯位址轉換成線性位址以及將線性位址轉換成實體位址(分頁paging)，課本說明其實不夠詳細，可以在網上查詢一下GDTR和LDTR，會更加清楚．&lt;br /&gt;&lt;br /&gt;&lt;li&gt;邏輯位址指向一個區段描述表，負責指向一個在線性位址中的區段．區段描述表包含區段的資訊 (大小和位址型態)．描述表有兩種：一個單一的全域描述表(GDT)和一個或多個區域描述表(LDT)． &lt;br /&gt;&lt;li&gt;分頁是IA-32處理器一個重要的特徵，它讓電腦可執行比實際記憶體還要大的程式．處理器只會讀一部份程式到記憶體內，其他的部份仍舊留在硬碟內．處理器會使用分頁目錄(page directory)、分頁表(page table)和分頁框架(page frame)來產生實體位址，其中分頁目錄包含了指向分頁表的指標，分頁表則包含指向分頁框架的指標．&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;學習目標：&lt;br /&gt;&lt;br /&gt;&lt;li&gt;32位元的程式如何處理文字的輸入/輸出、處理顏色、處理時間和日期 &lt;br /&gt;&lt;li&gt;Console mode Windows application programming  &lt;br /&gt;&lt;li&gt;Graphical mode Windows application programming  &lt;br /&gt;&lt;li&gt;IA-32 Memory management&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7956169723833283644-979952921238359038?l=ncuasm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ncuasm.blogspot.com/feeds/979952921238359038/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7956169723833283644&amp;postID=979952921238359038' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/979952921238359038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/979952921238359038'/><link rel='alternate' type='text/html' href='http://ncuasm.blogspot.com/2007/06/assembly-chapter-11-overview.html' title='Assembly Chapter 11 Overview'/><author><name>Jahui</name><uri>http://www.blogger.com/profile/04407009593178832508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7956169723833283644.post-5674870352610231831</id><published>2007-06-25T01:11:00.000-07:00</published><updated>2007-06-25T01:13:26.955-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bulletin'/><title type='text'>2007/06/25 PM:18:30~19:30 講解SIC作業</title><content type='html'>時間: 2007/06/25 PM:18:30~19:30&lt;br /&gt;地點: A208&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7956169723833283644-5674870352610231831?l=ncuasm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ncuasm.blogspot.com/feeds/5674870352610231831/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7956169723833283644&amp;postID=5674870352610231831' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/5674870352610231831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/5674870352610231831'/><link rel='alternate' type='text/html' href='http://ncuasm.blogspot.com/2007/06/20070625-pm18301930-sic.html' title='2007/06/25 PM:18:30~19:30 講解SIC作業'/><author><name>Stanley Fan 范登凱</name><uri>http://www.blogger.com/profile/00552079070299670477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7956169723833283644.post-7094442128452335783</id><published>2007-05-23T08:24:00.000-07:00</published><updated>2007-05-24T21:16:58.542-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='system software'/><title type='text'>System Software Chapter 1</title><content type='html'>Beck這本書用來做為系統程式教材已有十多年歷史,本書所談的系統程式或軟體(System Software)包括Assembler, Linker, Loader, Macro Processor等. 相對於系統軟體的另一個名稱是應用程式(Application Software), 所謂系統軟體是由支援電腦作業的許多不同程式組成,與底層作業系統及使用的機器相關是系統軟體和應用軟體最主要的差別之一, 應用軟體是以計算機為工具來解決問題因此大多與底層計算機架構無關, 而系統軟體則著重點在支援計算機本身的運作, 並不是在特殊的應用上因此系統軟體經常和執行的機算機結構有關.&lt;br /&gt;&lt;br /&gt;本書以一個簡化的指令計算機(SIC)來討論上述系統軟體的設計方法. SIC是一部假想的計算機, 它的設計包括大部分實際機器的特色, 並且避開了不常用或無關的複雜性. SIC分為兩種: 標準型和延伸版(XE version), 請參考課本內容.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;System Software vs Application Software&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Simplified Instructional Computer (SIC, SIC/XE)&lt;br /&gt;&lt;dd&gt;Memory, Register, Instruction Formats, Addressing Models, Data formats, Instruction Set, Input and Output&lt;/dd&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;RISC vs CISC&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7956169723833283644-7094442128452335783?l=ncuasm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ncuasm.blogspot.com/feeds/7094442128452335783/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7956169723833283644&amp;postID=7094442128452335783' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/7094442128452335783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/7094442128452335783'/><link rel='alternate' type='text/html' href='http://ncuasm.blogspot.com/2007/05/system-software-chapter-1.html' title='System Software Chapter 1'/><author><name>Jahui</name><uri>http://www.blogger.com/profile/04407009593178832508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7956169723833283644.post-8352731760496154356</id><published>2007-05-22T08:38:00.000-07:00</published><updated>2007-06-27T21:01:08.322-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Assembly'/><title type='text'>Assembly Chapter 8 Overview</title><content type='html'>本章主要在詳細介紹副程式(procedure)進階相關問題．副程式的設計通常有參數，同時各個副程式中也可以有區域變數．參數分為register parameters跟stack parameters，利用暫存器來傳參數，我們已在第六章介紹過，本章則著重在利用推疊來傳遞參數．參數傳遞有分為call by value（傳值）及call by reference（傳址）兩種，因此呼叫副程式用（CALL或INVOKE)時，有時要加ADDR有時不用．&lt;br /&gt;&lt;br /&gt;更重要的一點則是堆疊因副程式呼叫所產生的變化，也就是所謂的stack frame，當呼叫一個副程式時，parameters, return address, ebp, local variable, used registers會依序放入堆疊，此處ebp暫存器扮演存取參數及區域變數的參考指標，因而所有副程式中使用到的變數及區域變數都會轉成[ebp- 12], [ebp-8], [ebp+4], [ebp+8]等記憶位置．&lt;br /&gt;&lt;br /&gt;學習提要&lt;br /&gt;1. Stack parameter &amp;amp; stack frame&lt;br /&gt;&lt;dd&gt;Pass by value, pass by reference&lt;br /&gt;&lt;dd&gt;Function of ebp&lt;br /&gt;&lt;br /&gt;2. Difference between&lt;br /&gt;&lt;dd&gt;CALL vs. INVOKE&lt;br /&gt;&lt;dd&gt;OFFSET vs. LEA&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7956169723833283644-8352731760496154356?l=ncuasm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ncuasm.blogspot.com/feeds/8352731760496154356/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7956169723833283644&amp;postID=8352731760496154356' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/8352731760496154356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/8352731760496154356'/><link rel='alternate' type='text/html' href='http://ncuasm.blogspot.com/2007/05/assembly-chapter-8-overview.html' title='Assembly Chapter 8 Overview'/><author><name>Jahui</name><uri>http://www.blogger.com/profile/04407009593178832508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7956169723833283644.post-949338771991593236</id><published>2007-05-08T20:43:00.000-07:00</published><updated>2007-05-08T20:46:36.577-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bulletin'/><title type='text'>[公告] 五月九日(星期三), 課程內容</title><content type='html'>1. 期中考題解答&lt;br /&gt;2. 教學評量&lt;br /&gt;3. 下半學期課程討論&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7956169723833283644-949338771991593236?l=ncuasm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ncuasm.blogspot.com/feeds/949338771991593236/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7956169723833283644&amp;postID=949338771991593236' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/949338771991593236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/949338771991593236'/><link rel='alternate' type='text/html' href='http://ncuasm.blogspot.com/2007/05/blog-post.html' title='[公告] 五月九日(星期三), 課程內容'/><author><name>Jahui</name><uri>http://www.blogger.com/profile/04407009593178832508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7956169723833283644.post-226435123272539864</id><published>2007-04-13T07:15:00.000-07:00</published><updated>2007-05-23T00:58:31.994-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bulletin'/><title type='text'>[公告] 四月十八日(星期三),組合語言小考</title><content type='html'>考試範圍: 第五章~第六章&lt;br /&gt;考試方式: 筆試, open book&lt;br /&gt;考試地點: 教室A209&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7956169723833283644-226435123272539864?l=ncuasm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ncuasm.blogspot.com/feeds/226435123272539864/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7956169723833283644&amp;postID=226435123272539864' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/226435123272539864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/226435123272539864'/><link rel='alternate' type='text/html' href='http://ncuasm.blogspot.com/2007/04/blog-post.html' title='[公告] 四月十八日(星期三),組合語言小考'/><author><name>Tsai</name><uri>http://www.blogger.com/profile/08561269186652479461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7956169723833283644.post-8853082590329420531</id><published>2007-04-13T03:21:00.000-07:00</published><updated>2007-06-27T21:01:08.322-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Assembly'/><title type='text'>Assembly Chapter 6 Overview</title><content type='html'>本章主要內容為組合程式語言中IF指令和條件處理(Conditional Processing), 首先介紹支援程式設計邏輯運算的二進位制基礎, 然後再說明CPU如何使用CMP指令和狀態旗標(State flag)來比較指令運算元, 最後匯集上述觀念來藉由組合語言, 來完成高階語言邏輯結構.&lt;br /&gt;&lt;br /&gt;按位元指令(bitwise instruction), 包括AND, OR, XOR, NOT及TEST等邏輯運算元, 執行時來源參數中的每個位元與目的參數中相同位置的位元做運算.&lt;br /&gt;&lt;br /&gt;CMP指令將目的運算元和來源運算元作比較, 換句話說, 由目的參數減來源參數而不保留相減的結果, CMP會依這個隱含的減法指令結果來修改CPU狀態的旗標值(flag value). CMP的後面通常緊接著條件跳耀指令(conditional jump instruction), 來將程式控制權移到某個程式碼標籤處, 常見的跳耀指令類型有:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;根據特定指標值(Jumps based on Specific flags), 例如: JC(jump carry), JZ(jump zero)..等. &lt;/li&gt;&lt;li&gt;根據是否相等(Jumps based on Equality), 例如: JE(jump equal), JNE(jump not equal)...等. &lt;/li&gt;&lt;li&gt;根據有號整數比較結果(Jumps based on Signed Comparisons), 例如:JL(jump if less), JG(jump if greater)...等. &lt;/li&gt;&lt;li&gt;根據無號整數比較結果(Jumps based on Signed Comparisons), 例如:JA(jump if above), JB(jump if below)...等. &lt;/li&gt;&lt;/ul&gt;.IF, .ELSE, ELSEIF以及.ENDIF等組譯器指令, 則是籍由近乎高階語言的寫法, 減化低階組語寫法, 這些指令在組譯後會轉換成相對應的CPU指令. 另外亦可使用.WHILE及.REPEAT指令來建立條件迴圈. 有了這些條件判斷組譯器指令, 寫組合語言相對簡單許多, 但對於資工系的學生而言, 必須要知道組譯器是如何轉換的.&lt;br /&gt;&lt;br /&gt;學習目標:&lt;br /&gt;1. Boolean and Comparison Instructions &lt;ul&gt;&lt;li&gt;CPU Status Flags &lt;/li&gt;&lt;li&gt;AND, OR, XOR, NOT and TEST instructions &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;2. Conditional jumps &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Jumps Based on (Specific flags, equality, unsigned comparisons...) &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;3. Conditional Structures &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Block-Structured IF statements &lt;/li&gt;&lt;li&gt;Compound Expression with AND &lt;/li&gt;&lt;li&gt;Compound Expression with OR &lt;/li&gt;&lt;li&gt;WHILE Loops &lt;/li&gt;&lt;li&gt;TABLE-Driven Selection&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7956169723833283644-8853082590329420531?l=ncuasm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ncuasm.blogspot.com/feeds/8853082590329420531/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7956169723833283644&amp;postID=8853082590329420531' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/8853082590329420531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/8853082590329420531'/><link rel='alternate' type='text/html' href='http://ncuasm.blogspot.com/2007/04/assembly-chapter-6-overview.html' title='Assembly Chapter 6 Overview'/><author><name>Tsai</name><uri>http://www.blogger.com/profile/08561269186652479461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7956169723833283644.post-778091354610988421</id><published>2007-04-10T21:28:00.000-07:00</published><updated>2007-06-27T21:01:08.322-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Assembly'/><title type='text'>Assembly Chapter 5 Overview</title><content type='html'>本章首先介紹本書的連結函式庫(link library), 它可以讓你在組合語言的應用程式中, 跳過尚未介紹到I/O來處理輸入及輸出. 連結函式庫中常見的程序(procedure)有Clrscr, Delay, DumpMem, DumpRegs等.&lt;br /&gt;&lt;br /&gt;本章的重點在堆疊(stack)的概念, 執行時期堆疊(runtime stack)是一個特別的記憶體空間, 用來當作一個暫時的存放空間, 儲存位址或資料. 堆疊亦稱為LIFO結構(後進先出),  因為最後存進堆疊中的值會最先被取出. 堆疊的操作元為push及pop. PUSH運算會將一個資料複製到堆疊中. POP運算則會由堆疊之中移除一個資料, 並將它複製到一個暫存器或變數之中, 堆疊經常用來保存程序的回傳位址, 程序參數, 區域變數及在程序內部所使用的暫存器.&lt;br /&gt;&lt;br /&gt;任何大小的程式都應藉由程式說明來小心的設計, 標準的方法是使用功能性分解(由上而下設計)來將程式分解為數個程序, 在確認程序之間的連結關係及順序後, 再填寫程序的細節內容.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;學習目標: &lt;br /&gt;&lt;br /&gt;1. 如何在組合語言的環境中進行輸入輸出的動作. &lt;br /&gt;2. 學習關於執行時期堆疊(runtime stack), 以及它如何讓我們能夠呼叫函數(function)的運作原理. &lt;br /&gt;3. 如何透過流程圖(flowcharts)來表示出程式的邏輯結構.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7956169723833283644-778091354610988421?l=ncuasm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ncuasm.blogspot.com/feeds/778091354610988421/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7956169723833283644&amp;postID=778091354610988421' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/778091354610988421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/778091354610988421'/><link rel='alternate' type='text/html' href='http://ncuasm.blogspot.com/2007/04/assembly-chapter-5-overview.html' title='Assembly Chapter 5 Overview'/><author><name>Jahui</name><uri>http://www.blogger.com/profile/04407009593178832508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7956169723833283644.post-202244862318732067</id><published>2007-04-10T21:26:00.000-07:00</published><updated>2007-06-27T21:01:08.322-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Assembly'/><title type='text'>Assembly Chapter 4 Overview</title><content type='html'>本章主要在介紹組合語言中基本的指令(mov, add/sub)及其參數使用的基本限制．另外也介紹組譯器提供的處理陣列變數的directives．最後一部分則是介紹在組合語言下如何用JMP,LOOP來實踐C語言中的for，while迴圈以及條件選擇．&lt;br /&gt;&lt;br /&gt;一般而言，CPU指令的參數可以是直接的值(immediate), 或來自暫存器, 或來自記憶體．immediate值即是直接編在cpu instruction內，通常依照destination的type(即大小)編成適當的大小，每個暫存器則有相對應的代號，最複雜的則是記憶體位址，有多個表逹記憶體位址的方法，我們稱為定址方法(addressing)．這章內我們可以看到direct addressing, direct-offset addressing, indirect addressing, indexed addressing等四種．&lt;br /&gt;&lt;br /&gt;了解參數型態之後，我們就可以解釋搬移指令MOV以及加法減法等指令在參數使用上有四個基本限制，原則上兩個參數大小要相同，最多只能有一個memory參數，immediate值不可直接搬移到segment register，以及CS, EIP不可以做為destination等限制．&lt;br /&gt;&lt;br /&gt;關於陣列變數的使用上，組譯器同時也提供OFFSET, TYPE, SIZEOF, LENGTHOF等指令來提領陣列中的屬性值．比較特別的是PTR,相當於高階語言的強制型別轉換，用來告訴組譯器該如何取用(1, 2, or 4 byte)指定的記憶位址．&lt;br /&gt;&lt;br /&gt;本章另一個重點則是carry及overflow 兩個旗標在加法及減法的運算邏輯，用來做為unsigned及signed整數運算結果是否溢位的判斷．&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;學習目標&lt;br /&gt;&lt;br /&gt;1.Constraints on the use of operands for MOV instruction.&lt;br /&gt;2.Three Types of Operands (Immediate, Register, Memory)&lt;br /&gt;3. Memory Addressing (Direct, Direct-offset, Indirect, Indexed)&lt;br /&gt;4. Assembly Directives for array variables: &lt;br /&gt;OFFSET, TYPE, SIZEOF, LENGTHOF, etc.&lt;br /&gt;5. How ADD &amp; SUB modifies OF and CF?&lt;br /&gt;6. JMP and LOOP Instructions&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7956169723833283644-202244862318732067?l=ncuasm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ncuasm.blogspot.com/feeds/202244862318732067/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7956169723833283644&amp;postID=202244862318732067' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/202244862318732067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/202244862318732067'/><link rel='alternate' type='text/html' href='http://ncuasm.blogspot.com/2007/04/assembly-chapter-4-overview.html' title='Assembly Chapter 4 Overview'/><author><name>Jahui</name><uri>http://www.blogger.com/profile/04407009593178832508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7956169723833283644.post-803047920244175176</id><published>2007-03-15T07:26:00.000-07:00</published><updated>2007-06-27T21:01:08.323-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Assembly'/><title type='text'>Assembly Chapter 3 Overview</title><content type='html'>&lt;div align="justify"&gt;Assembly Chapter 3 Overview&lt;br /&gt;&lt;br /&gt;本章主要是組合語言的基礎介紹, 包括常用的整數運算式, 字元字串的定義等基本的寫法. 組合語言也具有一般高階語言的特性保留字清單(reserved words), 只允許在正確的環境下使用, 程式設計師在自訂的識別碼(identifier)時, 並需注意不可是組合語言的保留字.&lt;br /&gt;組合語言指令(introduction)是在程式被載入記憶體後, 由處理器執行的語法, 主要包括四個部份: Label(選用), Instruction Mnemonic(必要), Operrands(通常需要), 註解(選用), 其中instruction mnemonic是一個簡短的組譯器關鍵字, 對應相對動作的指令; label則是一種作為程式或資料位置標記的識別碼; 每個指令可以有0~3個運算元, 每個運算元可以是 暫存器,記憶體運算元,常數運算式或I/O埠. 組合語言的程式區段可分三個邏輯區段, 分別為程式碼, 資料與堆疊. 程式碼區段有可執行的指令; 堆疊區段堆放著處理程序參數, 區段變數, 及回傳位址; 而資料區段則存有變數. 使用者在自訂變數時,可依不同的型態來做設定; 例如: BYTE (定義八位元變數), WORD(定義十六位元變數), DWORD(定義三十二位元變數)...&lt;br /&gt;&lt;br /&gt;一如大部份高階語言, 組語程式需經過組譯之後, 產生object code (OBJ), 再經由鏈結函式庫後得到執行檔(EXE), 才可以載入記憶體中執行. 一般我們所定義的變數(data labels)及組語指令(instructions)都是run time 時真正存在並會執行, 但是Directive 及Symbolic constants則是Assembly time由組譯器運用執行的指令及符號常數, 是比較重要且需釐清的觀念.&lt;br /&gt;學習目標:&lt;br /&gt;1. Basic element of Assembly language &lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;Integer expression &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Reserved Words and Identifiers &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Character and string constants &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Mnemonics and Operands &lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;br /&gt;2. Defining data &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;Intrinsic Data Types &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Data Definition Statement&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;3. Symbolic constants &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;Equal-sign (integer expression) &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;EQU (expression or text) &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;TEXTEQU (text macro)&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7956169723833283644-803047920244175176?l=ncuasm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ncuasm.blogspot.com/feeds/803047920244175176/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7956169723833283644&amp;postID=803047920244175176' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/803047920244175176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/803047920244175176'/><link rel='alternate' type='text/html' href='http://ncuasm.blogspot.com/2007/03/assembly-chapter-3-overview.html' title='Assembly Chapter 3 Overview'/><author><name>system</name><uri>http://www.blogger.com/profile/07096472456502428826</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7956169723833283644.post-3681214789556835944</id><published>2007-03-14T23:24:00.000-07:00</published><updated>2007-06-27T21:01:08.323-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Assembly'/><title type='text'>Assembly Chapter 2 Overview</title><content type='html'>本章最主要是概括性的介紹微處理機架構, 記憶體管理, 微電腦元件以及輸出入系統. 一個CPU裡包括有控制單元(CU), 運算單元(ALU), clock及暫存器等. 藉由clock來同步微算機裡的各個component. 一機器指令的執行主要可分為: 擷取, 解碼, 參數抓取, 執行,及儲存五個步驟. 為了加快CPU執行的速度, 而有pipeline及superscalar的設計. 本書以IA-32處理器為主, 做為複雜指令集的代表, 有三種基本的運作模式: 保護模式, 實體模式及系統管理模式, 另有一個虛擬8086模式是在保護模式中的特例.&lt;br /&gt;&lt;br /&gt;對於任一處理器的介紹, 通常包含暫存器(16-bit or 32-bit data bus), 可存取的記憶體範圍(i.e. 20-bit or 32-bit address bus), 指令集(CISC or RISC)等基本項目. 這一系列Intel中央處理器, 每個暫存器都有一個名字, 也有其相對的功能, 浮點運算(80-bit floating point data registers), 多媒體運算(64-bit MMX registers)以及單一指令多個資料運算(128-bit XMM registers)也有其特別暫存器.&lt;br /&gt;&lt;br /&gt;Intel系列的處理器還有一個特點, 在早期實體模式中記憶體的管理, 有所謂的區塊位址(segment address)及offset address, 組合成線性位址(linear address). 後來為了要支援多工(multitasking), 才有保護模式的設計.&lt;br /&gt;&lt;br /&gt;學習目標:&lt;br /&gt;1. General Concepts: understand the following terms:&lt;br /&gt;   --Instruction Execution Cycle&lt;br /&gt;   --Multistage pipeline, Superscaler&lt;br /&gt;   --Multitasking&lt;br /&gt;2.&lt;br /&gt;   IA-32 Architecture:&lt;br /&gt;   --Modes of operation&lt;br /&gt;   --Registers&lt;br /&gt;   --RISC 和 CISC 的差別&lt;br /&gt;3. Differentiate the concepts among&lt;br /&gt;   --cache&lt;br /&gt;   --memory&lt;br /&gt;   --virtual memory&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7956169723833283644-3681214789556835944?l=ncuasm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ncuasm.blogspot.com/feeds/3681214789556835944/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7956169723833283644&amp;postID=3681214789556835944' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/3681214789556835944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/3681214789556835944'/><link rel='alternate' type='text/html' href='http://ncuasm.blogspot.com/2007/03/assembly-chapter-2-overview.html' title='Assembly Chapter 2 Overview'/><author><name>system</name><uri>http://www.blogger.com/profile/07096472456502428826</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7956169723833283644.post-7044321198281778630</id><published>2007-03-14T06:09:00.000-07:00</published><updated>2007-06-27T21:01:08.323-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Assembly'/><title type='text'>Assembly Chapter 1 overview</title><content type='html'>本章主要目的是為了讓初學者對組合語言有初步的認識,介紹了一些計算機架構、機器語言以及低階程式設計的差異以及基本概念,例如高階語言跟組合語言之間的關連性,對於在組合語言下的各種資料標示法也做了詳盡的描述。&lt;br /&gt;&lt;br /&gt;學習目標:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;什麼是Assembly language?&lt;/li&gt;&lt;li&gt;Data Representation&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;         整數的2進位, 10進位, 16進位等資料表示法的相互轉換 &lt;/p&gt;&lt;p&gt;         signed 整數: 2's complement 轉換以及表示法         &lt;/p&gt;&lt;p&gt;         字元儲存: ASCII code. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7956169723833283644-7044321198281778630?l=ncuasm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ncuasm.blogspot.com/feeds/7044321198281778630/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7956169723833283644&amp;postID=7044321198281778630' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/7044321198281778630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/7044321198281778630'/><link rel='alternate' type='text/html' href='http://ncuasm.blogspot.com/2007/03/assembly-chapter-1-overview.html' title='Assembly Chapter 1 overview'/><author><name>system</name><uri>http://www.blogger.com/profile/07096472456502428826</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7956169723833283644.post-5062777583791149974</id><published>2007-03-13T08:02:00.000-07:00</published><updated>2007-03-15T08:02:58.574-07:00</updated><title type='text'>Schedule</title><content type='html'>Schedule&lt;br /&gt;&lt;br /&gt;Week 1&lt;br /&gt;&lt;a href="http://www.csie.ncu.edu.tw/~chia/Course/Assembly/chap01.ppt"&gt;Basic Concepts&lt;/a&gt;&lt;br /&gt;Week 2&lt;br /&gt;&lt;a href="http://www.csie.ncu.edu.tw/~chia/Course/Assembly/chapt_02.ppt"&gt;IA-32 Processor Architecture&lt;/a&gt;&lt;br /&gt;Week 3&lt;br /&gt;&lt;a href="http://www.csie.ncu.edu.tw/~chia/Course/Assembly/chapt_03.ppt"&gt;Assembly Language Fundamentals&lt;/a&gt;&lt;br /&gt;Week 4&lt;br /&gt;&lt;a href="http://www.csie.ncu.edu.tw/~chia/Course/Assembly/chapt_04.ppt"&gt;Data Transfers, Addressing and Arithmetic&lt;/a&gt;&lt;br /&gt;Week 5&lt;br /&gt;&lt;a href="http://www.csie.ncu.edu.tw/~chia/Course/Assembly/chapt_05.ppt"&gt;Procedures&lt;/a&gt;&lt;br /&gt;Week 6&lt;br /&gt;&lt;a href="http://www.csie.ncu.edu.tw/~chia/Course/Assembly/chapt_06.ppt"&gt;Conditional Processing&lt;/a&gt;&lt;br /&gt;Week 7&lt;br /&gt;&lt;a href="http://www.csie.ncu.edu.tw/~chia/Course/Assembly/chapt_07.ppt"&gt;Integer Arithmetic&lt;/a&gt;&lt;br /&gt;Week 8&lt;br /&gt;&lt;a href="http://www.csie.ncu.edu.tw/~chia/Course/Assembly/chapt_08.ppt"&gt;Advanced Procedures&lt;/a&gt;&lt;br /&gt;Week 9&lt;br /&gt;Mid-term&lt;br /&gt;Week 10&lt;br /&gt;&lt;a href="http://www.csie.ncu.edu.tw/~chia/Course/Assembly/sic.ppt"&gt;SIC/XE&lt;/a&gt;&lt;br /&gt;Week 11&lt;br /&gt;&lt;a href="http://www.csie.ncu.edu.tw/~chia/Course/Assembly/assembler.ppt"&gt;Assembler I&lt;/a&gt;&lt;br /&gt;Week 12&lt;br /&gt;&lt;a href="http://www.csie.ncu.edu.tw/~chia/Course/Assembly/assembler.ppt"&gt;Assembler II&lt;/a&gt;&lt;br /&gt;Week 13&lt;br /&gt;&lt;a href="http://www.csie.ncu.edu.tw/~chia/Course/Assembly/assembler.ppt"&gt;Assembler III&lt;/a&gt;&lt;br /&gt;Week 14&lt;br /&gt;&lt;a href="http://www.csie.ncu.edu.tw/~chia/Course/Assembly/macro.ppt"&gt;Macro Processor I&lt;/a&gt;&lt;br /&gt;Week 15&lt;br /&gt;&lt;a href="http://www.csie.ncu.edu.tw/~chia/Course/Assembly/macro.ppt"&gt;Macro Processor II&lt;/a&gt;&lt;br /&gt;Week 16&lt;br /&gt;&lt;a href="http://www.csie.ncu.edu.tw/~chia/Course/Assembly/loader.ppt"&gt;Linker&lt;/a&gt;&lt;br /&gt;Week 17&lt;br /&gt;&lt;a href="http://www.csie.ncu.edu.tw/~chia/Course/Assembly/loader.ppt"&gt;Loader&lt;/a&gt;&lt;br /&gt;Week 18&lt;br /&gt;Final Exam&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7956169723833283644-5062777583791149974?l=ncuasm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ncuasm.blogspot.com/feeds/5062777583791149974/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7956169723833283644&amp;postID=5062777583791149974' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/5062777583791149974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/5062777583791149974'/><link rel='alternate' type='text/html' href='http://ncuasm.blogspot.com/2007/03/schedule.html' title='Schedule'/><author><name>system</name><uri>http://www.blogger.com/profile/07096472456502428826</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7956169723833283644.post-7169682852980281890</id><published>2007-03-13T07:54:00.000-07:00</published><updated>2007-03-15T07:56:05.647-07:00</updated><title type='text'>TextBook</title><content type='html'>&lt;p&gt;Text Books: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Assembly Language for Intel-based Computers&lt;br /&gt;by Kip R. Irvine, 4rd Edition, 2003. (全華圖書公司代理) &lt;/li&gt;&lt;li&gt;Web Site: &lt;a href="http://www.nuvisionmiami.com/books/asm/"&gt;http://www.nuvisionmiami.com/books/asm/&lt;/a&gt;&lt;br /&gt;System Software An Introduction To Systems Programming&lt;br /&gt;by Leland .L. Beck, Addison-Wesley, 3rd Edition, 1997. (台北圖書公司代理)&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7956169723833283644-7169682852980281890?l=ncuasm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ncuasm.blogspot.com/feeds/7169682852980281890/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7956169723833283644&amp;postID=7169682852980281890' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/7169682852980281890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7956169723833283644/posts/default/7169682852980281890'/><link rel='alternate' type='text/html' href='http://ncuasm.blogspot.com/2007/03/textbook.html' title='TextBook'/><author><name>system</name><uri>http://www.blogger.com/profile/07096472456502428826</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
