1. 程式人生 > >第5-8章總結

第5-8章總結

1、(al)、(bl)、(cl)等得到的資料為位元組型;(ds)、(ax)、(bx)等得到的資料為字型。idate表示常量。

2、inc bx的含義是bx中的內容加1。

3、執行loop指令時,要進行兩步操作:1)(cx)=(cx)-1;2)判斷cx中的值,不為零則轉至標號處執行程式,如果為零則向下執行。

4、用cx和loop指令相配合實現迴圈功能的3個要點:

     1)在cx中存放迴圈的次數;

     2)loop指令中的標號所標識地址要在前面;

     3)要迴圈執行的段程式,要寫在標號和loop指令之間。

5、將迴圈一次執行完,可以使用p命令來達到目的。

6、在彙編源程式中,如果用指令訪問一個記憶體單元,則在指令中必須用“[···]”來表示記憶體單元,如果在“[]”裡用一個常量idate直接給出記憶體單元的偏移地址,就要在“[]”的前面顯式地給出段地所在的段暫存器。如果在“[]”裡用暫存器,比如bx,間接給出記憶體單元的偏移地址,則段地址預設在ds中。當然,也可以顯式地給出段地址所在的段暫存器。

7、DOS方式下,一般情況,0:200~0:2ff空間中沒有系統或其他程式的資料或程式碼,我們需要向一段記憶體中寫入內容時,就使用0:200~0:2ff這段空間。

8、debug中a命令不支援‘a’這樣的寫法,e命令支援‘a’也支援ASCII碼,而彙編源程式都支援。

9、大寫->小寫          小寫->大寫          數值1->字元'1'          字元'1'->數值1

     mov dl,'A'            mov dl,'a'             mov dl,1                    mov dl,'1'

     或                       或                        或                              或

     or dl,20H            and dl,0dfH          add dl,30H                sub dl,30H

                                                           或                              或

                                                           or dl,30H                   and dl,ofH

10、debug不支援ds:[idate]這樣有段字首的寫法。

11、si和di是8086CPU中和bx功能相近的暫存器,si和di不能夠分成兩個8位暫存器來使用。用16位暫存器進行記憶體單元之間的資料傳送,一次複製2個位元組,一共迴圈8次。

12、在8086CPU中,只有bx、si、di和bp這四個暫存器可以用在“[···]”中來進行記憶體單元的定址。只要在[···]中使用暫存器bp,而指令沒有顯式地給出段地址,段地址就預設在ss中。

13、8086CPU的指令,可以處理兩種尺寸的資料,byte和word。

14、我們用db和dw定義位元組型資料和字型資料。dd是用來定義雙字型資料的。dup是一個操作符,用來進行資料的重複。