1.and指令,可以設定操作物件的相應位為0(與操作)。
2.or指令,可以設定操作物件的相應位位1(或操作)。
3.si和di是8086cpu中和bx功能相近的暫存器,si和di不能夠分成兩個8位暫存器來使用。
4.在程式設計的時候因為暫存器的數量有限,我們應該把臨時變數放到記憶體中(棧),這和高階語言中的local變數都儲存在棧中很類似。
5.在8086cpu中,只有bx,si,di,bp這四個暫存器可以用來進行記憶體單元的定址([...])。
6.在[...]中,這四個暫存器可以單個出現或只能以4中組合出現:bx和si,bx和di,bp和si,bp和di。當然他們也可以和立即數相加。比如
mov ax,[bx + si + idata]
7.只要在[...]中使用暫存器bp,而指令中沒有顯示的給出段位址,段位址就是預設在ss中的位址。
8.cpu處理的資料可以在三個地方儲存,cpu內部,記憶體,埠。
9.直接定址[idata],相當於c語言中的a[0],a[1]。
10.暫存器間接定址[bx],相當於c語言中的a[x]。
11.暫存器相對定址[bx+idata],相當於c語言中的結構體[bx].idata,二維陣列a[x][0]。
12.基址變址定址[bx+si],相當於c語言中的a[x][y]。
13.基址變址定址[bx+si+idata],相當於[bx].idata[si]。
14.通過暫存器的型別指明了資料的尺寸。mov ax,1是字操作。mov al,1是位元組操作。
15.在沒有暫存器名存在的情況下,用操作符x ptr指明。比如mov word ptr ds:[0], 1;mov byte ptr ds:[0],1。
16.push指令只能執行字操作。
17.div除法指令使用規則:
(1) 除數:有8位和16位兩種,在乙個暫存器中或者記憶體中。
(2) 被除數:預設放在ax或dx和ax中。如果除數是8位,被除數是16為,預設放在ax中。如果除數是16位,被除數是32位,在dx和ax中存放,dx存放高位16位,ax存放地位16位。
(3) 結果:如果除數是8位,則al儲存商,ah儲存餘數。如果是16位,ax儲存商,dx儲存餘數。
186a1(100001)
mov dx,1
mov ax,86a1h//
mov bx,100
div bx
執行結果ax=03e8h(1000),dx=1。
mov ax,1001
mov bl,100
div bl
al = 0ah ah = 1。
18.dd,dw,dd,dup都是偽指令。
db乙個位元組賦值
dw乙個字賦值
dd兩個字賦值
dup代表重複比如
db 3 dup(0) 相當於 db 0,0,0
db 3 dup(1,2,3)相當於db 1,2,3,1,2,3,1,2,3
19.jmp short 標號,是相對跳轉,跳轉範圍-128~127。
20.jmp near ptr 標號,是相對跳轉,跳轉範圍-32768~32767。
21.jmp far ptr 標號,是絕對跳轉,也就是按照目標位址跳轉,相對跳轉是按照偏移量跳轉。
22.jcxz是條件跳轉cx = 0時跳轉,cx != 0時什麼也不做,跳轉範圍-128~127。
23.jmp short,jmp near ptr,jcxz,loop都是相對跳轉,這種跳轉的好處是程式無論放到什麼記憶體位址中,都可以進行正確的跳轉。
組合語言 a 基礎知識
本專題是學習王爽的 組合語言 第三版 的學習筆記。這本書按照作者的意思是要教會讀者怎樣去循序漸進地學習組合語言。首先,什麼是組合語言呢?組合語言是人和計算機溝通的最直接方式,它描述了機器最終所要執行的指令序列。作為一門底層的語言,其可以直接與計算機進行互動。注意此書中如果沒有能夠完成檢測點的內容,則...
組合語言基礎知識
1.1機器語言 1.機器語言機器語言是機器指令的集合。2.cpu central processing unit,處理單元 cpu是一種微處理器,由於硬體設計和內部結構的不同,就需要不同的電平脈衝來控制使它工作,所以每一種微處理器都有自己的機器指令集,也就是機器語言。1.2組合語言的產生 1.例如,...
組合語言 基礎知識
組合語言是直接在硬體之上工作的程式語言,首先要了解硬體系統的結構,才能有效的應用組合語言對程式設計。機器語言就是機器指令的集合 機器指令展開來講就是一台機器可以正確執行的指令 主體是彙編的指令,機器指令便於記憶的書寫格式。彙編指令是機器指令的助記符 暫存器簡單的說是cpu中可以儲存資料的器件,乙個c...