文档详情

计算机组成原理指令.doc

发布:2017-05-29约1.9万字共25页下载文档
文本预览下载声明
8086/8088指令 除串操作指令外,所有指令只允许有一个操作数在存储器中。 1. 传送类指令 (数据传送指令,专用累加器传送指令,标志位传送指令,地址传送指令) (一) 数据传送指令 (1) MOV数据传送指令 指令格式:MOV DST,SRC; 操作数可以是字节、字,源、目的操作数位数必须一致且不能同时在存储器中。 源操作数:可在通用R、段R、存储器中、或为立即数。 目的操作数:不能为立即数。 目的地址是段R名时,源操作数不能是立即数(立即数不能直接传给段R)段R间不能直接传送数据。 例 1:立即数送R或存储单元 MOV AH,2AH; 字节传送; MOV CX,1234H; 字传送; MOV DA_BYTE, 02FH; 字节传送; MOV DA_WORD,1020H; 字传送; 例 2: 寄存器之间传送 MOV AL, BL; MOV ES, AX; 例 3:R 与 M 之间传送。 MOV AL, DB_BYTE 例 4: 把DA_BYTE1字节单元内容传送到DA_BYTE2字节单元中。 MOV AH, DA_BYTE1 MOV DA_BYTE2, AH 例 5: 把立即数1020H传送给DS ,ES。 MOV AX , 1020H MOV DS , AX MOV ES , AX (2)XCHG交换指令 XCHG DST, SRC (SRC DST) 将源地址的内容与目的地址内容相互交换。 交换数据可为字、字节,只能在通用R之间或R 与M 之间进行。不能使用段R、立即数。 例、数据段中定义了两个字变量VAR1和VAR2,(VAR1)= 1234H,(VAR2)= 5678H; 将这两个字单元内容互换。 MOV AX,VAR1 XCHG VAR2,AX MOV VAR1,AX(或:XCHG VAR1,AX) (3)PUSH进栈指令 格式:PUSH SRC 1 8086的堆栈由SS指定的一段存储器( £ 64KB)构成。 自下向上生成的堆栈。 SP初始化:堆栈段长(MAX:FFFFH) SP初始值指向:(SS)*16 + 段长;(即:栈底+2单元 2 8086/8088堆栈规定:以字(2个字节)为单位进行存取。 低地址存放字的低字节单元的内容; 高地址存放字的高字节单元的内容。 3 堆栈操作: 设置堆栈:对堆栈段R(SS)及堆栈指针(SP)赋初值。编程设置堆栈段。 (4)POP出栈指令 格式:POP DST (5)、IN(input)输入指令 1、直接I/O端口寻址方式: IN AL,pn (字节) IN AX,pn (字) 指令功能:AL/AX ←(pn);其中:pn表示I/O端口地址(或称作:I/O端口号)。 2、间接I/O端口寻址方式: IN AL,DX (字节) IN AX,DX (字) 指令功能:AL/AX ←(DX);其中:DX中的内容为I/O端口地址。 例、把I/O端口379H的字节内容传送到主存数据段的VARBYTE字节单元中。 MOV DX,379H IN AL,DX MOV VARBYTE,AL (6)OUT(output)输出指令 1、直接I/O端口寻址方式: OUT pn,AL (字节) OUT pn,AX (字) 指令功能:pn ←(AL/AX);其中:pn表示I/O端口地址(或称作:I/O端口号)。 2、间接I/O端口寻址方式: OUT DX,AL (字节) OUT DX,AX (字) 指令功能:DX ←(AL/AX);其中:DX中的内容为I/O端口地址。 例、 把主存数据段的VARBYTE字节单元中的内容传送到I/O端口230H中。 MOV DX,230H MOV AL,VARBYTE OUT DX,AL (7)XLAT(translate)换码指令 指令格式:XLAT [TABADDR] 指令功能:AL ←((BX)+(AL)) 其中: [TABADDR]中的方括号表示本项内容可以省略,TABADDR表示换码表首地址的符号地址。BX的内容为换码表的首地址在数据段中的偏移量,AL的内容是相对于表格首地址的偏移
显示全部
相似文档