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
本指令可用在数制转换、函数表查表、代码转换等场合。
全站搜索