欢迎来到天天文库
浏览记录
ID:19002711
大小:33.00 KB
页数:6页
时间:2018-09-20
《8086指令系统》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、8086指令系统 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分别是目的操作数和源操作数。 功
2、能 完成数据传送。 具体来说,一条数据传送指令能实现: ⑴ 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] M
3、OV [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的存储单元中去,
4、MOV指令不能直接完成这样的传送,但我们可以CPU内部寄存器为桥梁来完成这样的传送: MOV AL,AREAl MOV AREA2,AL ③两个段寄存器之间不能直接传送信息,也不允许用立即寻址方式为段寄存器赋初值;如:MOV AX,0;MOV DS,AX ④目的操作数,不能用立即寻址方式。 2.堆栈指令 (简述堆栈的概念及存取特点,如先进后出) 包括入栈(PUSH)和出栈(POP)指令两类。仅能进行字运算。(操作数不能是立即数) (1) 入栈指令 PUSH 一般格式 PUSH OPRD 源操作数可以是CPU内部的16位通用寄存器、
5、段寄存器(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
6、 DS 3.交换指令 XCHG 一般格式 XCHG OPRD1,OPRD2 功 能 完成数据交换 这是—条交换指令,把一个字节或一个字的源操作数与目的操作数相交换。交换能在通用寄存器与累加器之间、通用寄存器之间、通用寄存器与存储器之间进行。但段寄存器和立即数不能作为一个操作数,不能在累加器之间进行。 【例如】 XCHG AL,CL XCHG AX,DI XCHG BX,SI XCHG AX,BUFFER XCHG DATA[SI],DH 4.累加器专用传送指令 有三种,输入、输出和查表指令。前两种又称为输入输出指令。 (
7、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
8、,AX ; W
此文档下载收益归作者所有