【指令的組成】
指令由操做碼和地址碼組成。編碼
在彙編語言中的操做碼和地址碼:
操做碼:code
地址碼:效率
【尋址方式】
尋址方式對機器運行的速度和效率有很大的影響。
8086的機器代碼格式:
變量
【1. 當即數尋址方式】
當即數(imm)能夠是8位數值i8(00H ~ FFH),也能夠是16位數值i16(0000H ~ FFFFH)。
當即數尋址方式經常使用來給寄存器賦值。二進制
MOV AX, 1234H
【2. 寄存器尋址方式】
操做數存放在CPU的內部寄存器reg中,能夠是:im
MOV BX, AX
【3. 存儲器尋址方式】
指令中給出操做數的主存地址信息(偏移地址,稱爲有效地址EA),而段地址在默認的或用段超越前綴指定的段寄存器中。數據
多種存儲器尋址方式:img
mov ax, [2000H] mov ax, ES:[2000H]
mov ax, [si]
mov ax, [DI+06H] mov bx, [BP+06H]
mov ax, [BX+SI] mov ax, [BP+DI] mov ax, DS:[BP+DI]
mov ax, [BX+SI+06H]
在寄存器相對尋址或相對基址變址尋址方式中,位移量能夠用符號來表示:語言
mov ax, [SI+COUNT] ;COUNT是預先定義好的變量或常量(數值) mov ax, [BX+SI+WNSUM]
同一尋址方式能夠寫成不一樣的形式:co
mov ax, [BX][SI] ;至關於mov ax, [BX+SI] mov ax, COUNT[SI] ;至關於mov ax, [SI+COUNT] mov ax, WNSUM[BX][SI] ;至關於mov ax, WNSUM[BX+SI] ;至關於mov ax, [BX+SI+WNSUM]
段內間接尋址
轉移的有效地址值在寄存器或存儲器中。指令中直接給出了寄存器名或給出訪問存儲器的各類尋址方式,以便在存儲器中找到轉移的有效地址。
指令格式:
JMP BX
JMP WORD PTR[BP+TABLE]
例:
設(DS)=2000H, (BX)=1256H, (SI)=528FH
位移量=20A1H, (232F7H)=3280H, (264E5H)=2450H
JMP BX ;(IP)=1256H JMP TABLE[BX] ;(IP)=3280H JMP [BX][SI] ;(IP)=(264E5H)=2450H
段間間接尋址
新的段地址(CS)和偏移地址(IP)在存儲器的連續4個字節單元中(段地址在高地址中,偏移地址在低地址中)。存儲器的地址由指令中給出的各類尋址方式(當即尋址方式和寄存器尋址方式除外)求得。其段地址隱含爲數據段。 指令格式: JMP DWORD PTR[INTERS+BX]