8086的指令系统可以分为以下六个功能组:
1.数据传送(Data Transter) 2.算术运算(Arithmetic) 3.逻辑运算(Logic) 4.串操作(String menipulation) 5.程序控制(Program Control) 6.处理器控制(Processor Control) 一、数据传送指令 主要介绍 MOV,XCHG、堆栈和地址传送指令。 1.数据传送MOV指令 一般格式 MOV OPRD1,OPRD2 MOV 是操作码,OPRD1和OPRD2分别是目的操作数和源操作数。 功 能 完成数据传送。 具体来说,一条数据传送指令能实现: ⑴ CPU内部寄存器之间数据的任意传送(除了代码段寄存器CS和指令指针IP以外)。 MOV AL,BL;字节传送 MOV CX,BX;字传送 MOV DS,BX ⑵ 立即数传送至CPU内部的通用寄存器组(即AX、 BX、CX、DX、BP、SP、SI、DI), MOV CL,4 MOV AX,03FFH MOV SI,057BH ⑶ CPU内部寄存器(除了CS和IP以外)与存储器(所有寻址方式)之间的数据传送。 MOV AL,BUFFER MOV AX,[SI] MOV [DI],CX MOV SI,BLOCK[BP] MOV DS,DATA[SI+BX] MOV DEST[BP+DI],ES ⑷ 能实现用立即数给存储单元赋值 例如:MOV [2000H],25H MOV [SI],35H 对于MOV 指令应注意几个问题: ①存储器传送指令中,不允许对CS和IP进行操作; ②两个操作数中,除立即寻址之外必须有一个为寄存器寻址方式,即两个存储器操作数之间不允许直接进行信息传送; 如我们需要把地址(即段内的地址偏移量)为AREAl的存储单元的内容,传送至同一段内的地址为AREA2的存储单元中去,MOV指令不能直接完成这样的传送,但我们可以CPU内部寄存器为桥梁来完成这样的传送: MOV AL,AREAl MOV AREA2,AL ③两个段寄存器之间不能直接传送信息,也不允许用立即寻址方式为段寄存器赋初值;如:MOV AX,0;MOV DS,AX ④目的操作数,不能用立即寻址方式。 2.堆栈指令 (简述堆栈的概念及存取特点,如先进后出) 包括入栈(PUSH)和出栈(POP)指令两类。仅能进行字运算。(操作数不能是立即数) (1) 入栈指令 PUSH 一般格式 PUSH OPRD 源操作数可以是CPU内部的16位通用寄存器、段寄存器(CS除外)和内存操作数(所有寻址方式)。入栈操作对象必须是16位数。 功 能 将数据压入堆栈 执行步骤为:SP=SP-2;[SP]=操作数低8位;[SP+1]= 操作数高8位 【例如】 PUSH BX 执行过程为:SP=SP-1,[SP]=BH;SP=SP-1,[SP]=BL,如下图所示。 (2) 出栈指令POP 一般格式 POP OPRD 功 能 将数据弹出堆栈 对指令执行的要求同入栈指令。 【例如】 POP AX POP [BX] POP DS 3.交换指令 XCHG 一般格式 XCHG OPRD1,OPRD2 功 能 完成数据交换 这是—条交换指令,把一个字节或一个字的源操作数与目的操作数相交换。交换能在通用寄存器与累加器之间、通用寄存器之间、通用寄存器与存储器之间进行。但段寄存器和立即数不能作为一个操作数,不能在累加器之间进行。 【例如】 XCHG AL,CL XCHG AX,DI XCHG BX,SI XCHG AX,BUFFER XCHG DATA[SI],DH 4.累加器专用传送指令 有三种,输入、输出和查表指令。前两种又称为输入输出指令。 (1) IN 指令 一般格式 IN AL,n ; B AL←[n] IN AX,n ; W AX←[n+1][n] IN AL,DX ; B AL←[DX] IN AX,DX ; W AX←[DX+1][DX] 功能 从I/O端口输入数据至AL或AX。 输入指令允许把一个字节或一个字由一个输入端口传送到AL或AX中。若端口地址超过255时,则必须用DX保存端口地址,这样用DX作端口寻址最多可寻找64K个端口。 (2) OUT 指令 一般格式 OUT n,AL ; B AL→[n] OUT n,AX ; W AX→[n+1][n] OUT DX,AL ; B AL→[DX] OUT DX,AX ; W AX→[DX+1][DX] 功 能 将AL或AX的内容输出至I/O端口。 该指令将AL或AX中的内容传送到一个输出端口。端口寻址方式与IN指令相同。 (3) XLAT指令 一般格式 XLAT; AL=(DX)×16+(BX)+(AL)) 功 能 完成一个字节的查表转换。 要求:①寄存器AL的内容作为一个256字节的表的下标。②表的基地址在BX中,③转换后的结果存放在AL中. TABLE: 【例如】MOV BX,OFFSET TABLE MOV AL,8 …… IN AL,1 第9个字符 AAH XLAT ;查表 OUT 1,AL ;(AL)= AAH 表长度256 本指令可用在数制转换、函数表查表、代码转换等场合。
|
电工学习网 ( )
GMT+8, 2021-12-6 20:45