組合語言 第6~8章
6.1 在程式碼段中使用資料:在程式中定義我們希望處理的資料,這些資料就會被編譯、連線程式作為程式的一部分寫到可執行檔案中。當可執行檔案中的程式被加入記憶體時,這些資料也同時被加入記憶體中,我們要處理的資料也就自然而然的獲得了儲存空間。
6.2 在程式碼段中使用棧:程式執行時,定義的資料存放在cs:0~cs:F單元中,共8個位元組單元。依次將,將這8個字單元。依次將這8個字,單元的資料入棧,按後再出棧到這8個字單元中,從而實現資料的逆序存放。
6.3 將資料、程式碼、棧放入不同的段:用和定義程式碼段一樣的方法來定義多個段,然後在這些段裡面定義需要的資料,或通過定義資料來取得棧空間。
7.4 大小寫轉換的問題:小寫字母的ASCII碼值比大寫字母的ASCII碼值大20H。
7.5 [bx+idata]:指令mov ax,[bx+200]的含義:將一個記憶體單元的內容送入ax,這個記憶體單元的長度為2個位元組(即單元),存放一個字,偏移地址為bx中的數值加上200,段地址在ds中。數字化的描述為:
(ax)=((ds)*16+(bx)+200)。
7.8 [bx+si]和[bx+di]: [bx+si]和[bx+di]含義相似,以 [bx+si]為例: [bx+si]表示一個記憶體單元,他的偏移地址為(bx)+(si)(即bx中的數值加上si中的數值)。
7.10 不同定址方式的靈活運用:我們可以考慮將需要暫存的資料放到記憶體單元中,需要使用的時候,再從記憶體單元中恢復。這樣我們需要開闢一段記憶體空間。
一般來說,在需要暫存資料的時候,我們都應該使用棧。
8.2 機器指令處理的資料在什麼地方:在機器指令這一層來講,並不關心資料的值多少,而關心指令執行前一刻,它將處理的資料所在的位置。指令在執行前,所要處理的資料可以在3個地方:CPU內部、記憶體、埠。
8.4 定址方式:
8.9 dup:dup是一個操作符,在組合語言中同dp、dw、dd等一樣,也是由編譯器識別處理的符號。他是和dp、dw、dd等資料定義偽指令配合使用的,用來進行資料的重複。