传送指令的用法及8086的寻址方法

合集下载

微机原理课件第三章8086寻址方式和指令系统

微机原理课件第三章8086寻址方式和指令系统
2取 单.如操元果作的指数 地令寄, 址中存钥 。用器匙对寄就于间存或相寄接器=当存D寻B于器SP址×进存间1方行储接6+式间D接I的寻E址A计,寄则算存默器 认操作
数寻在址堆方栈式段来中说,,操就作相数当的于段钥地匙址在段寄存器SS中,操 作放数在的寄物存理器地中址,=即SS寄×存1器6+给BP出。 了要访问的存储单元地址。
DS 3000H ×16

SI 2000H
操作码
+ COUNT 4000H
00
代码段
40
寄存器3相60对00H寻址方式也允许使┋用段超越前缀,
如MOV BX,ES:COUNT[DI]则段地址为ES,物
理地址=ES×16+DI+COUNT。
BH
BL

BX 56
78
36000H
78
56
数据段

指令MOV BX,COUNT[SI]的执行过程
{{ }} 组合起来([B只X能]+相[S加I)]+,D同8或时D还1可6 以加上一个8位或
((1SE86IE8和位A种A种=D的=)I)位也移不[[[[[[[BBB量能BSDBXPPPIIX]],]同]]]]+++但时++++[[[DDDDSDB出8888IIIX现或 或或 或]]]和+++在DDBDDD11P方1188866不66或 或 或括能DDD号111同寄中666时;存出器现相 变在相对 址方对基 寻括寻号址 址址中,
{ 设((D3E86A种S0==0M)300HO0)V[[[[0HBSBD=XIPIB,5]]]]X6或S7,+I8=18H[2S6位0I位0+位0C位H移O,移U量位N量T移] 量COU默 默N认 认T=DS4SS0段 段00H,

数据传送类指令

数据传送类指令

05
06
不允许直接向段寄存器传送立即数。
该指令不影响标志位。
06
数据传送类指令
例3-12
指出下列指令中的错误 (1)MOV [DI], [SI] (2)MOV DS, 1000H (3)MOV 2000H, AX
(1)两个操作数不能同时为存 储器操作数。
(2)不能直接向段寄存器传送 立即数,正确的指令应为:
(1)在CPU内部寄存器之间 进行数据传送。
例如,MOV BL, AL MOV BX, AX MOV DS, AX
(2)在CPU内部寄存器与存 储器之间进行数据传送。
例如,MOV AX, [1000H] MOV BX, [SI][BX] MOV DATA[BP], ES
(3)将立即数传送给寄存器。 例如,MOV AX, 1234H MOV SI, 1000H
例3-14
数据传送类指令
已知:(BX)=1122H,(DS)=3000H,(31000H)=1234H。执行指令: XCHG BX, [1000H] 源操作数的物理地址为:(DS)×16+1000H=31000H。 指令执行的结果为:(BX)=1234H,(31000H)=1122H。
要实现两个存储单元X与Y之间的数据交换, 可以执行如下指令:
数据传送类指令
例3-15 已知:(DS)=3000H,(32000H)=12H,(32001H)
=34H,(32002H)=56H,(32003H)=78H。执行指令: LDS SI, [2000H]
地址传送指令
1.5 输入输出指令
数据传送类指令
输入输出指令用于在I/O端口与CPU之间传送数据。
MOV AX, 1000H MOV DS, AX (3)立即数不能作为目的操 作数。

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)
微机原理

第3章_3 8086指令系统(传送类)

第3章_3 8086指令系统(传送类)
10045 栈 10044 方

12H 34H
56H 10043
1 (DEST) (SP)+1, (SP)
CX
78H 10042 9AH 10041
(CX)=2105H
2 (SP) + 2→(SP)=0046H
一、数据传送指令 •地址传送指令
DS:1000H
5、LEA指令——EA地址送寄存器指令。
… …
34H 56H 78H 9AH
(SDI I) 56H 34H
7、LES指令——指针地址传送ES指令 格式:LES REG, SRC
9AH 78H (DES)
功能:(REG) (SRC)
(ES) (SRC+2)

LES DI,[2012H]
操作: DI (2013H:2012H)
• 不影响标志位 • REG 16位寄存器,不能是段寄 存器。 • SRC为双字存储单元
内存
AX,BX CX,DX SI,DI BP,SP
立即数
AH,AL CH,CL DH,DL BH,BL
DS,ES,SS
•dest不能是CS和立即数 •不影响标志位 •dest、src不同为段寄存器
MOV DS, ES
• 立即数不能直接送段寄存器
MOV DS, 2000H
一、数据传送指令
•通用数据传送指令
PORT端口地址为16位: 格式:
IN AL, DX (字节) IN AX, DX (字) 功能:
(AL) ( (DX) ) (字节) (AX) ( (DX)+1, (DX) ) (字)
• 不影响标志位
•端口号00H~FFH可直 接在指令中指定

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指令1.数据传送指令
(1)通用传送指令
(2)累加器专用传送指令
(3)地址传送指令
2.算术运算指令
(2)减法指令
(5)符号扩展指令
(6)十进制调整指令
3.逻辑运算和移位指令(1)逻辑运算指令
(2)移位指令
注:OPR不能为立即数和段寄存器,若CNT大于1,应先将CNT存入CL寄存器中,移位指令中CNT写为CL即可。

4.串操作指令
(1)重复前缀指令
(2)串传送指令
(3)串比较指令
5.控制转移指令
(1)无条件转移指令
(2)条件转移指令
①简单条件转移指令(根据某一标志位的值决定是否有转移,测试的标志位有S、Z、C、P、O 5个,每个标志位可能取“0”和“1”,共10条)
②无符号数比较条件转移指令
③有符号数比较条件转移指令
④测试CX的值为0则转移的指令
(3)子程序调用和返回指令
(4)循环控制指令
(5)中断指令
6.处理机控制指令
(2)其他处理机控制指令
7.伪指令
(1)数据定义伪指令
(2)分析运算符
(3)属性操作符
(4)符号定义指令
(5)地址计数器与对准伪操作
(6)宏与过程(子程序)的定义和调用。

微机原理与接口技术 8086的寻址方式和指令系统[3-5]

微机原理与接口技术 8086的寻址方式和指令系统[3-5]

5
§3-3 控制转移指令
【8086的指令系统】
两种提供地址的方式:
直接转移
指令码中直接给出转移的目的地址,目的操作数用一个标号来表示,它 又可分为段内直接转移和段间直接转移。
间接转移
目的地址包含在某个16位寄存器或存储单元中,CPU根据寄存器或存 储器寻址方式,间接地求出转移地址。这种转移类型又可分为段内间接 转移和段间间接转移。
12
§3-3 控制转移指令
【8086的指令系统】
【例】 JMP BX
解: 若该指令执行前BX=4500H; 则指令执行时,将当前IP修改成4500H; 程序转向段内偏移地址为4500H处执行。
【例】 JMP WORD PTR 5[BX]
解:设指令执行前,DS=2000H,BX=100H,(20105H)=04F0H; 则指令执行后,IP=(20000H+100H+5H)=(20105H)=04F0H; 转到代码段内偏移地址为04F0H处执行。
指令格式:JMP 目的 指令功能:程序无条件地转移到指定的目的地址去执行。
两种转移类型: 段内转移或近(NEAR)转移 转移指令的目的地址和JMP指令在同一代码段中,转移时,仅改变IP 寄存器的内容,段地址CS的值不变。 段间转移,又称为远(FAR)转移 转移指令的目的地址和JMP指令不在同一段中,转移时,CS和IP的 值都要改变,程序转到另一代码段去执行。
JMP NEAR PTR 标号 (或:JMP 标号)
特点:
▲目的操作数均用标号表示;
▲程序转向的有效地址=当前IP寄存器的内容+8/16位位移量(DISP)。 16位:近转移,范围在-32768~+32767个字节之间; 8位:短转移,范围在-128~+127个字节之间;

微机原理课件第三章8086寻址方式和指令系统

微机原理课件第三章8086寻址方式和指令系统
8086处理器的中断系统
支持外部中断和内部中断,用于处理各种事 件和异常。
通过寄存器的内容来访问数据。
寄存器相对寻址
通过寄存器的内容加上偏移量来计算内存地 址,然后访问数据。
指令格式
操作码和操作数
指令由操作码和操作数组成。
操作数的个数
指令前缀
指令可以有不同数量的操作数, 包括零个、一个、两个或更多。
指令前缀用于改变指令的行为 或影响指令的执行方式。
指令系统
1
数据传送指令
微机原理课件第三章8086 寻址方式和指令系统
本章将介绍8086微处理器的寻址方式和指令系统。内容包括不同的寻址方式, 指令格式,指令系统,指令执行周期,以及8086处理器的特点和功能。
寻址方式
直接寻址
通过直接给出内存地址来访问数据。
寄存器间接寻址
通过寄存器的内容所指向的内存地址来访问 数据。
寄存器直接寻址
从内存中获取指令。 执行指令中的操作。 将结果存储回内存。 处理器响应中断请求。
8086处理器
8086处理器的特点
具有16位的数据总线和地址总线,支持最多 1MB的内存。
8086处理器的工作模式
包括实模式和保护模式,可以用于运行不同 类型的软件。
8086处理器的寄存器
包括通用寄存器、段寄存器和指令指针寄存 器。
用于在寄存器和内存之间传输数据。算,如加法、减法、乘法、除法和位操作。
3
逻辑指令
执行逻辑操作,如与、或、非和异或。
4
比较指令
用于比较两个值的大小,并根据比较结果设置标志位。
5
转移指令
用于无条件或有条件地改变指令执行的顺序。
指令执行周期
取指令周期 执行指令周期 存储指令周期 中断响应周期
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

传送指令的用法及8086的寻址方法
传送指令可以将数据从一个寄存器、内存或端口传送到另一个寄存器、内存或端口。

根据操作数的不同,传送指令可以分为两类:立即传送指令和直接传送指令。

立即传送指令:指令中给出的数据是立即数,直接传送到指定的操作数寄存器、内存或端口。

例如:MOV AX, 1234H;将立即数1234H传送到AX寄存器中。

直接传送指令:指令中给出的是一个地址,指令执行时会将该地址中的数据传送到指定的操作数寄存器、内存或端口。

例如:MOV AX, [BX];将BX寄存器中的偏移地址所指向的字存储单元中的数据传送到AX寄存器中。

8086的寻址方法:
8086采用段地址和偏移地址的方式寻址。

在8086CPU中,每个地址由两个部分组成:段地址和偏移地址。

段地址乘以16再加上偏移地址,就是实际的物理地址。

通过将段地址和偏移地址通过两个8位的寄存器组合成16位的地址,来访问任意地址空间。

8086的寻址方式可以分为以下几种:
1. 直接寻址:使用一个寄存器或一个立即数来指定一个地址,例如:MOV AX, [BX]。

2. 寄存器间接寻址:使用一个寄存器中存储的地址来访问内存,例如:MOV AX, [SI]。

3. 基址寻址:使用一个基地址加上一个偏移量的方式计算得到一个地址,例如:MOV AX, [BX+SI]。

4. 变址寻址:使用一个变址寄存器中的值来做地址的计算偏移,例如:MOV AX, [DI+1234H]。

5. 相对寻址:使用一个偏移量来计算相对于当前指令地址的距离,例如:JMP SHORT LABEL。

以上这些寻址方式可以对任意的内存地址进行访问,使得8086具有了很好的灵活性和通用性。

相关文档
最新文档