控制计算机完成指定操作并能够被计算机所识别的命令。
指令中应包含的信息:
执行的操作——操作码运算数据的来源——指令的操作对象运算结果的去向——指令的操作对象其中,寄存器操作数和存储器操作数可以表征数据存放的地址
[ ]中的内容是存放操作数的内存单元的偏移地址。
参加运算的数据是存放在内存中的。存储器操作数在指令中既可作为源操作数,也可作为目标操作数。一般情况下,若指令中没有明确指出操作数所在段,则CPU就采用默认的段寄存器来确定操作数的段基地址。存储器操作数的偏移地址可以通过不同的寻址方式由指令给出。一台计算机能够识别的所有指令的集合称为该机的指令系统。
同一系列机器的指令都是兼容的。
寻址方式是寻找操作数所在地址的方法,讨论的对象主要是源操作数。
操作数可能的来源或存放处:
由指令直接给出寄存器内存单元指令中的源操作数是立即数,操作数存在操作码之后。
MOV AX, 3102H这条指令的含义是将3102H这个立即数赋值给AX:
AH: 31HAL: 02H指令中直接给出存储器操作数的16位偏移地址,默认在数据段DS中。
上面的指令表示将附加段ES中偏移地址为1200H单元的内容送到BL寄存器中。
操作数在CPU内的寄存器中。
寄存器的内容为存放操作数的内存单元的偏移地址。
此时寄存器中的内容不再是操作数本身,而是存放数据的偏移地址,操作数本身在内存储器中。
存放操作数的内存偏移地址(EA)为间址寄存器的内容加上8位或16位的位移量。
相对寻址主要用于存取表格或一维数组中的元素。
在汇编语言中,相对寻址指令的书写格式允许有几种不同的形式。例如,以下几种写法实质上是完全等价的:
MOV AL, DATA[SI] MOV AL, [SI]DATA MOV AL, DATA+[SI] MOV AL, [SI]+DATA MOV AL, [SI+DATA] MOV AL, [DATA+SI]操作数的偏移地址为一个基址寄存器(BX或BP)的内容 + 一个变址寄存器(SI或DI)的内容
基址寄存器为BX,默认在数据段基址寄存器为BP,默认在堆栈段该寻址方式允许段重设,且与相对寻址方式一样,主要用于一维数组操作。
操作数的偏移地址为基址寄存器内容+变址寄存器内容+位移量
操作数的段地址由选择的基址寄存器决定,且允许段重设。基址变址相对寻址方式主要用于二维表格操作。
基址-变址-相对寻址指令也可以表示成多种形式:
MOV AX, DATA[SI][BX] MOV AX, [BX+DATA][SI] MOV AX, [BX+SI+DATA] MOV AX, [BX]DATA[SI] MOV AX, [BX+SI]DATA指令中隐含了一个或两个操作数的地址,即操作数在默认的地址中。
例: MUL BL ;AL×BL AX