mov ax , [bx] mov ax , [bx+si] |
mov ax , [bx+di]
mob ax , [bp]
|
mov ax , [bp+si]
mov ax , [bp+di]
|
mov ax , [bp] mov ax , [bp+idata] mov ax , [bp+si] mov ax , [bp+si+idata] |
( ax )=( ( ss )*16+( bp ) ) ( ax )=( ( ss )*16+( bp )+idata ) ( ax )=( ( ss )*16+( bp ) ) ( ax )=( ( ss )*16+( bp )+( si )+idata ) |
尋址方式 | 含義 | 名稱 | 經常使用格式 |
[idata] | EA=idata ; SA=(ds) | 直接尋址 | [idata] |
[bx] [si] [di] [bp] |
EA=(bx);SA=(ds) EA=(si);SA=(ds) EA=(di);SA=(ds) EA=(bp);SA=(ss) |
寄存器間接尋址 | [bx] |
[bx+idata] [si+idata] [di+idata] [bp+idata] |
EA=(bx)+idata;SA=(ds) EA=(si)+idata;SA=(ds) EA=(di)+idata;SA=(ds) EA=(bp)+idata;SA=(ss) |
寄存器相對尋址 | 用於結構體: [bx].idata 用於數組: idata[si] , idata[di] 用於二維數組: [bx][idata]([bx+idata]) |
[bx+si] [bx+di] [bp+si] [bp+di] |
EA=(bx)+(si);SA=(ds) EA=(bx)+(di);SA=(ds) EA=(bp)+(si);SA=(ss) EA=(bp)+(di);SA=(ss) |
基址變址尋址 | 用於二維數組: [bx][si] |
[bx+si+idata] [bx+di+idata] [bp+si+idata] [bp+di+idata] |
EA=(bx)+(si)+idata;SA=(ds)
EA=(bx)+(di)+idata;SA=(ds)
EA=(bp)+(si)+idata;SA=(ss)
EA=(bp)+(di)+idata;SA=(ss)
|
相對基址變址尋址 | 用於表格(結構)中的數組項: [bx].idata[si] 用於二維數組: idata[bx][si] |
; word ptr 指明指令訪問的內存單元是一個 字單元 mov word ptr ds:[0] , 1 inc word ptr [bx] inc word ptr ds:[0] add word ptr [2] , 2 |
; byte ptr 指明指令訪問的內存單元是一個 字節單元 mov byte ptr ds:[0] , 1 inc byte ptr [bx] inc byte ptr ds:[0] add byte ptr [bx] , 2 |
一、除數:有8位和16位兩種,存放在一個寄存器或內存單元中。
二、被除數:默認存放在 AX 或 DX 和 AX 中,若是除數爲8位,被除數則爲16位,默認在 AX 中存放;若是除數爲16位,被除數則爲32位,在 DX 和 AX 中存放,DX 存放高16位,AX 存放低16位。
三、結果:若是除數爲8位,則 AL 存儲除法操做的商,AH 存儲除法操做的餘數;若是除數爲16位,則 AX 存儲除法操做的商,DX 存儲除法操做的餘數。
|
; 利用除法指令計算100001/100 ; 由於100001大於65535,只能用 dx 和 ax 兩個寄存器存放。除數100能夠用一個8位寄存器,可是被除數32位,因此只能用16位寄存器 ; 100001十六進制表示是:186A1H mov dx , 1h ; dx存放高16位 mov ax , 86A1h ; ax存放低16位 mov bx , 100 div bx ;最終結果保存在AX和DX中 //AX 存放商,DX存放餘數,最後結果:1000 ... 1 |
; 利用除法指令計算1001/100 ;被除數1001能夠用ax寄存器來存放,100能夠用8位寄存器存放 mov ax , 1001 mov bl , 100 div bl ; 結果存放在ax中 //結果爲:0A ... 01( 10...1 ) |
data segment db 1 ; 01H 數據在data:0處,佔一個字節 dw 1 ;0001H 數據在data:1處,佔一個字 dd 1 ;00000001H,數據在data:3處,佔兩個字 data ends |
定義數據類型 重複的次數 dup (重複的數據) db 3 dup (0) ;定義了3個字節,它們的值都是0,至關於db 0 , 0 , 0db 3 dup (0 ,1 ,2) ; 定義了9個字節,它們是0,1,2,0,1,2,0,1,2,至關於db 0,1,2,0,1,2,0,1,2db 3 dup ('abc' , 'ABC') ; 18個字節,db 'abcABCabcABCabcABC' |