1 / 89
文档名称:

汇编语言-指令集.ppt

格式:ppt   大小:378KB   页数:89页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

汇编语言-指令集.ppt

上传人:分享精品 2018/3/8 文件大小:378 KB

下载得到文件列表

汇编语言-指令集.ppt

相关文档

文档介绍

文档介绍:80x86/8088指令系统
8086/8088的指令系统丰富,而且指令的功能也强。
大多数指令既能处理字数据,又能处理字节数据。
指令系统可分为如下6个功能组:
(1)数据传送
(2)算术运算
(3)逻辑运算
(4)串操作
(5)程序控制
(6)处理器控制
汇编语言中,指令语句可由四部分组成,一般格式如下:
[标号:] 指令助记符[操作数1 [,操作数2]] [;注释]
(一)数据传送指令
可以实现数据传送的指令可分为:传送指令,交换指令,地址传送指令,堆栈操作指令,标志传送指令。
1. 传送指令
其格式如下:MOV DST , SRC
源操作数可以是累加器、寄存器、存储单元及立即数,
目的操作数可以是累加器、寄存器和存储单元。
传送不改变源操作数。
传送指令能实现下列传送功能:
(1)CPU内部寄存器之间的数据传送。例如:
MOV AH , AL MOV DL , DH
MOV BP , SP MOV AX , CS
注意:源和目的操作数不能同时是段寄存器;代码段寄存器CS不能作为目的数;指令指针IP不能作为源,也不能作为目的操作数。
(2)立即数送至通用寄存器或存储单元。例如:
MOV AL , 3
MOV SI , -5
MOV VARB , -1 ; VARB是变量名,代表一个存储单元
MOV VARW , 3456H;VARW是一个字变量
MOV [SI] , 6543H
注意: 立即数不能直接送到段寄存器,
立即数永远不能作为目的操作数。
(3)寄存器与存储器间的数据传送。例如:
MOV AX , VARW MOV BH , [DI]
MOV DI , ES :[SI + 3] MOV VARB , DL
MOV DS : [BP] , DL MOV VARW , DS
MOV ES , VARW
注意: 源操作数和目的操作数不能一个为字节另一个为字;
源操作数和目的操作数不能同时是存储器操作数(串指令除外)
如果要在两个存储单元间传送数据,怎么办呢?
那么可利用通用寄存器过渡的方法进行:
例如:把字变量VARW1的内容送到字变量VARW2
MOV AX , VARW1
MOV VARW2 , AX
这种方法也适用于段寄存器间的数据传送。例如:
MOV AX , CS
MOV DS , AX
请熟悉下面语句:
MOV AL , ‘D’; 立即数(字符’D’的ASCII码)送到AL寄存器
MOV BX , OFFSET TABLE
;把TABLE的偏移地址(不是内容)送到BX寄存器,OFFSET为属性操作符。

利用交换指令可方便地实现通用寄存器与通用寄存器或存储单元的数据交换。交换指令的格式如下:
XCHG OPRD1 , OPRD2
此指令把操作数OPRD1的内容与操作数OPRD2的内容交换。操作数同时是字节或字。
例如: XCHG AL , AH
XCHAG SI , BX
OPRD1和OPRD2可以是通用寄存器或存储单元。但不能包括段寄存器,也不能同时是存储单元,还不能有立即数。
对于要交换的存储单元,可有多种寻址方式。
例如:XCHG BX , [BP + SI]
如指令执行前:(BX)=6F30H,(BP)=0200H,(SI)=0046H,
(SS)=2F00H,(2F246)=4154H
指令执行后(BX) = 4154H , (2F246H)=6F30H

8086/8088有3条地址传送指令。
(1)LEA (Load Effective Address)
LEA REG , OPRD
把操作数OPRD的有效地址传送到操作数REG。
操作数OPRD必须是指存储器,
操作数REG必须是一个16位的通用寄存器。
例如:
LEA AX , BUFFER ; BUFFER是变量名
LEA SI , [BP + SI + 4]
例如: LEA BX , [BX + SI + 0F62H]
如执行指令前(BX) = 0400H , (SI) = 003CH
执行指令后(BX)= 0400 + 003C + 0F62 = 139EH
(2)LDS (Load pointer into DS)
段值和段内偏移构成32位指针(两个16位地址)。
LDS用于传送32位地址指针,格式如下:
LDS REG , OPRD
执行的操作: (REG) <- (SRC)
(DS) <- (SRC + 2)
该指令把操作数OPRD中所含的一个32位地址指针的段值部分送到数据段寄存器,把偏移部分送到指令给出的通用寄存器REG。操作