【指令的组成】
指令由操做码和地址码组成。编码
在汇编语言中的操做码和地址码:
操做码: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]