8086 8088数据传送指令

合集下载

04 8088(8086)的指令系统

04 8088(8086)的指令系统

INC OPRD
操作数:通用寄存器、存储器 (不能是段寄存器或立即数) 执行的操作:OPRD OPRD + 1
功能: 用于在循环中修改地址指针及循环次数等。
注:该指令影响标志位
例: INC BX INC byte ptr [SI]
1. 先将SP所指单元内容 送至AL, 然后 SP+1SP ;
2. 再SP所指单元内容送 至AH, 然后 SP+1 SP
例:MOV AX,5678H POP AX
(3) 交换指令 XCHG OPRD1, OPRD2
在寄存器间或寄存器与存储器间交换信息(不允许使用段寄存器)。
源操作数: 寄存器、存储器 目的操作数:寄存器、存储器 执行的操作:( OPRD1) (OPRD2 )
DS=1000h
buffer 10100h 00 02 00 20
0100h BX
(2) LDS 把源操作数指定的内存的4个相继字节的内容送至指定寄存器及DS中
LDS REG, SRC
(REG) (SRC)
(DS) (SRC+2)
目的操作数
源操作数
(16位通用寄存器) (内存操作数)
• 该指令完成一个32位地址指针的传送; • 该指令通常指定 SI 作寄存器 REG。
• CPU内部寄存器之间的数据传送(除CS,IP外) MOV AL,BL MOV DX, DI MOV SI, BP MOV DS, BX MOV AX,DX
• 立即数传送到CPU内部通用寄存器组(AX,BX,CX,DX,BP,SP,DI,SI)
MOV CL, 4 MOV DX, 03FFH MOV DI, 04BFH
DST+SRC+C

8086 8088数据传送指令

8086 8088数据传送指令

AX=5678H
SP=1000H
例:MOV AX,5678H MOV SP,1000H PUSH AX
3条指令执行后 AX=5678H SP=0FFEH
微机原理
2.通用数据传送指令
(3)POP指令 格式: POP DST 功能: ( SRC) ← (SP+1,SP) , SP ←SP+2
微机原理
例:将CX寄存器内容送至DX。 MOV DX,CX
例:将AX的内容送至ES 。
MOV ES,AX
2.通用数据传送指令
CS
DS,SS,ES
AX,BX,CX,DX BP,SP,SI,DI
存 储 器
立即数
微机原理
例:将立即数2000H送至数据段 偏移地址为1000H单元的存储器。 方法1:MOV [1000H],2000H 方法2:MOV BX,1000H
1.基本情况
微机原理
数据传送指令 (1)通用数据传送指令 (2)累加器专用传送指令
用于寄存器、存储器单元、输入输 出端口之间传送数据或地址。
MOV PUSH、POP、XCHG
IN、 OUT、 XLAT
(3)地址传送指令
LEA、LDS、LEA
(4)状态标志寄存器传送指令 LAHF、SAHF、 PUSHF、 POPF
IN、 OUT、 XLAT
(3)地址传送指令
LEA、LDS、LEA
(4)状态标志寄存器传送指令 LAHF、SAHF、 PUSHF、 POPF
2.通用数据传送指令
(2)PUSH指令 格式: PUSH SRC
操作数需以字为单位
功能: SP ←SP-2,(SP+1,SP) ←( SRC)
微机原理

80868088指令系统

80868088指令系统

第4章 80x86指令系统
2. 地址指针装入 指令 地址指针装入DS指令 指令格式: 指令格式: LDS reg16, mem32 此指令的功能是将源操作数所对应的双字长的 内存单元中的高字内容(一般为16位段基址 送入DS, 位段基址) 内存单元中的高字内容(一般为 位段基址)送入 , 低字内容(一般为偏移地址) 低字内容(一般为偏移地址)送入指令所指定的寄存 器中。例如: 器中。例如: LDS DI, [2130H] DM
第4章 80x86指令系统
②间接寻址的输入指令 指令格式及操作: 指令格式及操作: IN acc, DX ;(acc) ←((DX)) ⑵ 输出指令 ①直接寻址的输出指令 指令格式及操作: 指令格式及操作: OUT port, acc ; (port) ← (acc) ②间接寻址的输出指令 指令格式及操作: 指令格式及操作: OUT DX, acc ; ((DX)) ← (acc)
第4章 80x86指令系统
⑵ 弹出堆栈指令 指令格式及操作: 指令格式及操作: POP dst ; (dst) ←((SP)+1:(SP)), (SP) ←(SP)+2 dst 目的操作数可以是寄存器操作数和存储器操作 且必须是16位的操作数 但不能是立即数。 位的操作数, 数,且必须是 位的操作数,但不能是立即数。 3.交换指令 交换指令 指令格式及操作: 指令格式及操作: XCHG opr1, opr2
;(opr1) ←→ (opr2)
第4章 80x86指令系统
(二) 累加器专用指令 二 这类指令中的一个操作数必须是累加器。 这类指令中的一个操作数必须是累加器 。 累加 器操作数可以是8位的 也可以是16位的 位的, 位的。 器操作数可以是 位的,也可以是 位的。 1.输入 输出指令 输入/输出指令 输入 输入输出指令可以分为两大类: 输入输出指令可以分为两大类 : 一类是直接端 口地址的输入/ 输出指令: 一类是通过DX寄存器间 口地址的输入 / 输出指令 : 一类是通过 寄存器间 接端口地址的输入/输出指令。 接端口地址的输入/输出指令。 ⑴ 输入指令 ①直接寻址的输入指令 指令格式及操作: 指令格式及操作: IN acc, port ;(acc) ←(port)

第3章 8086 8088指令系统

第3章  8086 8088指令系统

字节2
6 5 4 3 2 1 0 7· · · 0 7· · · · ·0 7· · · · · 0 7· · · · · 0 DISPH DATAL DATAH
OP code
D w MOD REG R/M DISPL
操作码字节 寻址方式字节 位移量 立即数 •OP code为操作码,表示该指令要完成的操作。 为操作码, OP code为操作码 表示该指令要完成的操作。 •D=0:第一个操作数是目的操作数, 1:第二个操作数是目的操作数 D=0: 是目的操作数, 第二个操作数是目的操作数 D=0 第一个操作数是目的操作数 •W=0:8位操作数, 1:16位操作数 W=0: 位操作数, 16位操作数 W=0 •MOD指明寻址方式: MOD=11 寄存器寻址 MOD指明寻址方式 MOD指明寻址方式: MOD= MOD≠11存储器寻址 MOD≠11存储器寻址 00没有偏移量 1016 16位偏移量 00没有偏移量 01 8位偏移量 1016位偏移量 •REG用编码方式指明操作中所使用的寄存器。 REG用编码方式指明操作中所使用的寄存器 REG用编码方式指明操作中所使用的寄存器。 •R/M用编码方式指出存储器有效地址计算方法。 R/M用编码方式指出存储器有效地址计算方法 R/M用编码方式指出存储器有效地址计算方法。 •DISP表示地址偏移量。DATA则指明立即数。 DISP表示地址偏移量 则指明立即数。 DISP表示地址偏移量。DATA则指明立即数
DATA
操作码 00 02
DS : 80000 BX: 1000 DI: + 2000 DATA: + 0200 83200H
AX 30 40
码 段
40 30
83200 83201
数 据 段

80868088的指令系统(通用数据传送指令)

80868088的指令系统(通用数据传送指令)

通用数据传送指令
PUSH 和 POP指令 • 基本格式和功能
• •
指令格式:
PUSH POP SRC DEST
执行的操作: PUSH 压入。源操作数进栈至栈顶。“先减再压”
(SP) ← (SP)-2 SS:((SP),(SP)+1) ← (SRC)

POP 弹出。栈顶出栈到目的操作数。“先弹再加” (DEST) ← SS:((SP),(SP)+1) (SP) ← (SP)+2
通用数据传送指令
PUSH 和 POP指令 • 基本格式和功能
• •
与标志的关系:
与各标志位无关,不影响标志位
寻址方式: PUSH mem / reg POP mem / reg
注意: 操作数一律为16位操作数。允许使用段寄存器,但 POP操作数不允许为CS。可以使用除立即数以外的任 何数据寻址方式。
通用数据传送指令
MOV 指令 • 例子
• reg ←→reg
MOV DH, AL MOV DS, AX
• r ←→m
MOV DL, DA_BYTE MOV DL, [SI] MOV AX, DA_WORD
通用数据传送指令
MOV 指令 • 例子
• m →m
MOV DL, DA_BYTE1 MOV DA_BYTE2, DL
传送实质上是复制,对源操作数无影响。 16位数据的传送遵循地址“高对高,低对低”的原
则。这个原则不仅对MOV指令适用,对所有的传送 皆适用。
通用数据传送指令
MOV 指令 • 例子
• 立即数→r/m
MOV CL, 05H MOV AX, 1234H MOV ADDR, 12H MOV ADDR, 1234H

8086CPU中的数据传送类指令

8086CPU中的数据传送类指令

8086CPU 中的数据传送类指令数据传送类指令注意点1. 除 SAHF 、POPF 指令外,其余传送类指令CPU 执⾏后,对6个状态标志均⽆影响。

也就是说,除 SAHF 、POPF 指令外,CPU 只是做了数据传送,并没有进⾏数据运算,对状态标志位⽆影响。

2. 语法规则1)⽴即数只能做源操作数2)类型⼀致3)类型明确4)当ES 、DS 、SS 做⽬的操作数时,源操作数不能是⽴即数。

5)CS 、IP 不能做⽬的操作数6)两存储器单元之间不能直接操作数据传送类指令通⽤数据传送指令-MOVmov 指令的格式为取有效地址指令-LEALEA 指令的格式为REG_16表⽰⼀个16位寄存器,理论上只要是16位即可,但是因为存放有效地址,所以最好是 BX 、BP 、SI 、DIMEM 是5种存储器寻址⽅式之⼀指明的⼀个存储器单元。

例如等同于功能⼀样。

取地址指针指令-LDS 、LES这两个指令是将双字变量MEM 内容中的⾼16位送⼊DS/ES ,低16位送⼊指定的REG16中。

这⾥REG16不允许为段寄存器。

不常⽤,了解。

以LDS 为例,格式为REG_16表⽰⼀个16位寄存器MEM 是5种存储器寻址⽅式之⼀指明的⼀个存储器单元例如得到地址指针,就可以很容易取数据MOV DST ,SRCLEA REG_16,MEMLEA BX ,data1 ;data1是变量,直接寻址找到这个存储单元把有效地址送给BXMOV BX ,OFFSET data1LDS REG_16,MEMTABLE DB 10H ,20H...LDS BX ,TABLE ;TABLE 的段地址->(DS ),TABLE 的偏移地址->(BX)Processing math: 100%MOV DX,[BX]实际中LEA⽤的⽐较多。

标志传送指令-LAHF、SAHF指令LAHF(load AH register from flags)可以将PSW寄存器中的低8位传送到AH中,指令SAHF(store AH register from flags)可以将AH 的内容传送到PSW寄存器中的低8位。

8086指令系统

8086指令系统

8086/8088的指令系统8086/8088指令系统有133条指令,共6组,功能较强数据传送指令串处理指令算术指令控制转移指令逻辑指令处理机控制指令一、数据传送指令1、基本传送指令MOV X, Y;X←Y2、堆栈操作指令PUSH 源;将源操作数推入堆栈POP 目的;将当前SP所指向的堆栈顶部的一个字传送到指定目的操作数中对标志寄存器进行堆栈操作PUCHFPOPF3、交换指令XCHG X,Y ;X←→Y,RR←→[MEM],RR’将一个字或字节的源操作数目的操作数相交换4、换码指令XLAT (OPR);AL←[BX+AL] 将一个字节从一种代码转换成另一种代码5、LDS RR,[MEM] ;RR←[MEM],DS←[MEM+2]该指令RR常用SI,它是将地址指针送寄存器和DS。

6、LES RR,[MEM];RR←[MEM],ES←[MEM+2],指针送寄存器和ES,该指令RR常用DI。

7、LEA RR,[MEM];RR←MEM的有效地址。

8、LAHF;AH←PSW的低字节,AH←PSWL 标志传送指令SAHF;PSWL←AH9、输入输出指令输入指令输出指令IN AC,DX OUT DX,ACIN AC,PORT OUT PORT,AC二、算术运算指令1、加/减指令a.不带进位位的加/减指令ADD X,Y;X←X+YSUB X,Y;X←X-Yb. 带进位位的加/减指令ADC X,Y;X←X+Y+CFSBB X,Y;X←X-Y-CFc. 加1/减1指令INC Z ;Z←Z+1 对目的操作数加1,结果送回目的操作数DEC Z ;Z←Z-12、比较指令CMP X,Y ;X-Y,X,Y的定义与前相同注意:X-Y的差不送回X,但影响标志位。

3、求补指令NEG Z;Z←0-Z将目的操作数每一位求反后加1,包括符号位。

结果送入目的地址4、乘法指令MUL Z;无符号数乘法IMUL Z;带符号数乘法①AX←AL*Z,Z为单字节数,单字节乘法;②DXAX←AX*Z,Z为双字节数,双字节乘法5、除法指令DIV Z;无符号数除法Z;无符号数出法AX÷Z,AH←余数,AL←商,16位÷8位②DXAX÷Z,DX←余数,AX←商,32位÷16位6、扩展指令CBW ;把AL的符号位(D7)扩展到AH,字节扩展;CBD ;把AX的符号位(D15)扩展到DX,使AX扩展扩展成双字扩展指令多用于带符号数运算,被扩展数的符号位为0,则所扩展的寄存器每位为0,被扩展数的符号位为1,扩展寄存器的每位为1。

8086(8088)指令手册

8086(8088)指令手册
源操作数可以是8/16位通用寄存器、存储器操作数或立即数;目标操作数不允许是立即数,其他同源操作数。且不允许两者同时为存储器操作数。
ADC d,s
;d←d+s+CF
带进位加法。
指令的操作过程与ADD指令基本相同,惟一的不同是进位标志位CF的原状态也将一起参与加法运算,待运算结束,CF将重新根据结果置成新的状态。
IN AL,DX;AL←(端口(DX))
IN AX,DX;AX←(端口(DX))
注意:I/O指令只能用累加器作为执行I/O数据传送的机构,而不能用其他寄存器代替。另,当用直接I/O指令时,寻址范围仅为0~255,这适用于较小规模的微机系统;当需要寻址大于255的端口地址时,则必须用间接寻址的I/O指令。例如,在IBM PC/XT微机系统中,既用了0~255范围的端口地址,也用了255~65535范围的端口地址。
IMUL s
有符号乘法指令,它完成两个带符号的8/16位二进制相乘的功能。
对于两个带符号的数相乘,如果简单采用与无符号数乘法相同的操作过程,那么会产生完全错误的结果。为此,专门设置了IMUL指令。
IMUL指令除计算对象是带符号二进制数以外,其他都与MUL是一样的,但结果不同。
IMUL指令对OF和CF的影响是:若乘积的高一半是低一半的符号扩展,则OF=CF=0;否则均为1。它仍然可用来判断相乘的结果中高一半是否含有有效数值。另外,IMUL指令对其他标志位没有定义。
表三、数据寄存器的隐含使用………………………………………………第19页
表四、标志寄存器……………………………………………………………第20页
8086/8088指令分类
8086/8088的指令按功能可分为6类:数据传送、算术运算、逻辑运算、串操作、程序控制和CPU控制。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第3章 8086/8088指令系统数据传送指令(1)
MOV AX,1234H MOV AX,[1234H]
MOV AX,BX MOV AX,[BX]
MOV AX,[BX+02H] MOV AX,[BX+SI]
MOV AX,[BX+SI+02H]
请说出右边7条指令中源操作数的寻址方式
用于寄存器、存储器单元、输入输数据传送指令
出端口之间传送数据或地址。

(1)通用数据传送指令MOV、PUSH、POP、XCHG (2)累加器专用传送指令IN、 OUT、 XLAT
(3)地址传送指令LEA、LDS、LEA
(4)状态标志寄存器传送指令LAHF、SAHF、 PUSHF、 POPF
数据传送指令
用于寄存器、存储器单元、输入输
出端口之间传送数据或地址。

(1)通用数据传送指令MOV
PUSH、POP、XCHG
(2)累加器专用传送指令IN、 OUT、 XLAT
(3)地址传送指令LEA、LDS、LEA
(4)状态标志寄存器传送指令LAHF、SAHF、 PUSHF、 POPF
MOV 指令
格式: MOV DST, SRC
功能: DST ←(SRC ) ;将源操作数送至目的操作数地址
目的操作数地址
源操作数地址
源/目的操作数之间传送关系图:
CS
DS,SS,ES
存储器
立即数
AX ,BX ,CX ,DX BP ,SP ,SI ,DI
MOV 指令
格式: MOV DST, SRC 功能: DST ←(SRC )
目的操作数地址
源操作数地址
源/目的操作数之间传送关系图:
例:将DX 寄存器内容送至CX 。

MOV CX,DX
例:将立即数2000H 送至寄存器BX 。

MOV BX,2000H
例:将CX 寄存器内容送至DX 。

MOV DX,CX
例:将AX 的内容送至ES 。

MOV ES,AX
CS
DS,SS,ES
存储器 立即数
AX ,BX ,CX ,DX BP ,SP ,SI ,DI
微机原理
2.通用数据传送指令
CS
DS,SS,ES
存储器
立即数
AX ,BX ,CX ,DX BP ,SP ,SI ,DI
例:将立即数2000H 送至数据段
偏移地址为1000H 单元的存储器。

方法1:MOV [1000H],2000H
方法2:MOV BX,1000H MOV [BX],2000H 方法3:MOV BX,0FFEH MOV [BX+02H],2000H 方法4:MOV BX,0FFEH MOV SI,0002H
MOV [BX+SI],2000H 方法5:请你来写
微机原理
2.通用数据传送指令
CS
DS,SS,ES
存储器
立即数
AX ,BX ,CX ,DX BP ,SP ,SI ,DI
例:将1000H 送至ES 。

MOV AX,1000H
MOV ES,AX
微机原理第3章 8086/8088指令系统
数据传送指令(2)
微机原理1.基本情况
数据传送指令
用于寄存器、存储器单元、输入输
出端口之间传送数据或地址。

(1)通用数据传送指令MOV
PUSH、POP、XCHG
(2)累加器专用传送指令IN、 OUT、XLAT
(3)地址传送指令LEA、LDS、LEA
(4)状态标志寄存器传送指令LAHF、SAHF、 PUSHF、 POPF
微机原理
(2)PUSH 指令 格式: PUSH SRC
功能: SP ←SP -2,(SP+1,SP ) ←( SRC )
2.通用数据传送指令
操作数需以字为单位
例:MOV AX,5678H MOV SP,1000H PUSH AX
AX=5678H
SP=1000H
微机原理
例:MOV AX,5678H MOV SP,1000H PUSH AX 3条指令执行后AX=5678H SP=0FFEH
微机原理
(3)POP 指令 格式: POP DST
功能: ( SRC ) ← (SP+1,SP ) , SP ←SP+2
2.通用数据传送指令
例: POP BX
微机原理(4)XCHG指令
格式: XCHG OPR1,OPR2
功能:( OPR1)(OPR2)
2.通用数据传送指令
例: MOV AX,1234H
MOV BX,5678H
XCHG AX, BX
MOV [1000H],BX XCHG AH, AL
XCHG AX,[1000H]
AX 34H
12H
BX 78H
56H
AX 78H
56H BX 34H
12H DS:1000H 34H
12H BX 34H
12H AX 56H
78H
AX 34H
12H DS:1000H 56H
78H
其中1个操作数须是通用寄存器
微机原理第3章 8086/8088指令系统数据传送指令(3)
微机原理1.基本情况
用于寄存器、存储器单元、输入输数据传送指令
出端口之间传送数据或地址。

(1)通用数据传送指令MOV、PUSH、POP、XCHG
(2)累加器专用传送指令IN、 OUT、 XLAT
(3)地址传送指令LEA、LDS、LEA
(4)状态标志寄存器传送指令LAHF、SAHF、 PUSHF、 POPF
(1)IN 指令
格式功能寻址方式地址范围
IN AL,PORT AL (PORT)
直接I/O端口寻址00H~FFH IN AX,PORT AX (PORT+1,PORT)
IN AL,DX AL (DX)
间接I/O端口寻址0000H~FFFFH IN AX,DX AX (DX+1,DX)
(2)OUT 指令
格式功能寻址方式地址范围
OUT PORT, AL (PORT) AL
直接I/O端口寻址00H~FFH OUT PORT, AX (PORT+1,PORT) AX
OUT DX, AL (DX) AL
间接I/O端口寻址0000H~FFFFH OUT DX, AX (DX+1,DX) AX
例1:将端口地址为20H的键盘接口8位内容送至AL 中。

例2:将8位数34H送至端口地址为2000H的打印机中。

IN AL,20H
或 MOV DX,0020H
IN AL,DX
MOV DX,2000H MOV AL,34H OUT DX, AL
微机原理(3)XLAT指令
格式: XLAT
功能: AL←(BX+AL)
2.通用数据传送指令
例: MOV BX,1000H MOV AL,02H XLAT
BX 00H
10H AX 02H BX+AL=1002H AX 98H
格式功能名称
LEA REG,SRC REG SRC 有效地址传送指令
LDS REG,SRC REG (SRC)
DS (SRC+2) 指针送寄存器和DS
LES REG, SRC REG (SRC)
ES (SRC+2) 指针送寄存器和ES
例3:MOV SI,1000H
MOV [SI],1234H MOV [SI+2],5678H MOV [SI+4],9012H LEA BX, [SI]
LDS DI, [SI]
LES DI,[SI+2]
微机原理4.标志寄存器传送指令
格式功能
LAHF AH FLAG寄存器的低字节
SAHF FLAG寄存器的低字节 AH
PUSHF
SP SP-2 (SP+1,SP) FLAG
POPF FLAG (SP+1,SP) SP SP+2
微机原理下次课见。

相关文档
最新文档