第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是一個操作符,用來進行資料的重複。