第六讲 数据传送指令

合集下载

数据传送类指令

数据传送类指令

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)立即数不能作为目的操 作数。

数据传送指令

数据传送指令

数据传送指令数据传送指令包括数据的传送、交换、堆栈数据的压入与弹出,是最基本、使用率最高的一类指令。

助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP共八种。

1.MOV类指令及功能(16条)这类指令的功能是从源操作数到目的操作数的数据传送。

MOV A, Rn ;Rn→A,寄存器Rn的内容送到累加器AMOV A, direct ;(direct)→A,直接地址中的内容送AMOV A, @Ri ;(Ri)→A,Ri间址的内容送AMOV A, #data ;data→A,立即数送AMOV Rn,, A ;A→Rn,累加器A中的内容送寄存器RnMOV Rn, direct ;(direct)→Rn;直接地址中的内容送RnMOV Rn, #data ;data→Rn;立即数送RnMOV direct, A ;A→(direct),A中的内容送入直接地址中MOV direct, Rn ;Rn→(direct),寄存器内容送入直接地址中MOV direct, direct ;(direct) →(direct),源操作数直接地址的内容送入;目的操作数的直接地址中MOV direct, @Ri ;(Ri)→(direct),Ri间址内容送入直接地址中MOV direct, #data ;data→(direct),立即数送入直接地址中MOV @Ri, A ;A→(Ri),A中内容送到Ri间址单元中MOV @Ri, direct ;(direct)→(Ri),直接地址中内容送入Ri间址单元中MOV @Ri, #data ;data→(Ri),立即数送入Ri间址单元中MOV DPTR, #data16 ;data16→DPTR,16位常数送入数据指针DPTR中,高8;位送入DPH,低8位送入DPH,低8位送入DPL中从上述指令可以看出目的操作数有A累加器、Rn寄存器、直接地址direct及间接地址@Ri,源操作数除此之外还多一种立即数data。

数据传送指令

数据传送指令
PUSH DS PUSH AX PUSH MARK[SI]
3.2.1数据传送指令
(4) 格式:POP DST 操作:(DST)←((SP+1),(SP)),(SP)←(SP)+2 先出栈,后指针加2,按字取出。目标操作数DST的寻址方式为 立即寻址方式之外的所有存储器操作数寻址方式和寄存器寻址
POP AX POP [BX+SI]
3.2.1数据传送指令
(5) 该指令把存储器操作数的有效地址送到指定的寄存器中。 格式: LEA REG,SRC 操作:(REG)←SRC,即把源操作数(SRC应是存储器操 作数)的有效地址送到指定的寄存器中(REG LEA DX,[BX+SI+0B62H] 执行前:(BX)=3000H,(SI)=00C3H 执行后:(DX)=3000H+00C3H+0B62H=3C25H(有效地址
操作:(AL)←[(DX)](字节);(AX)←[(DX)+1,(DX)](字)
3.2.1数据传送指令
(2)
格式Ⅰ:OUT PORT ,AL OUT PORT ,AX ;字输出
操作:(PORT) ←AL(字节);(PORT+1,PORT)←AX
格式Ⅱ:OUT AL, DX OUT AX, DX
操作:[(DX)] ←(AL)(字节),[(DX)+1,(DX)] ←(AX)(字)IN/OUT 指令有两种格式,选择哪一种,取决于 外部设备端口地址的宽度。格式Ⅰ指令有两个字节,称长格式, 格式II指令只有一个字节,称短格式。
3.2.1数据传送指令
3. (1) LAHF
格式: LAHF 操作:(AH)←(PSW的低字节),即标志寄存器 (PSW)的低字节传送到AH (2) SAHF 格式:SAHF 操作:(PSW的低字节)←(AH),即将AH 寄存器的内

第六章 S7-200PLC特殊功能指令..

第六章 S7-200PLC特殊功能指令..

SHL_W
EN IN N SLW OUT, N ENO OUT
SHL_DW
EN IN N SLD OUT, N ENO OUT
说明: (1)把输入端(IN)指定的数据右移/左移N位,结果存入 OUT单元; (2)移位时,移出位进入SM1.1,另一端自动补0。SM1.1 始终存放最后一次被移出的位; (3)移位次数最大分别为8、16、32。 (4)如果移位结果是0,零存储器位(SM1.0)置位。
二、移位和循环移位指令
SHR_B SHR_W
EN IN N SRW OUT, N ENO OUT
SHR_DW
EN IN N SRD OUT, N ENO OUT
(1)右移位指令
EN IN N
ENO OUT
SRB OUT, N
(2)左移位指令
SHL_B
EN IN N SLB OUT, N ENO OUT
执行操作:LN(IN)=OUT。
IN
LN IN OUT
3、指数指令:EXP
把一个双字长(32位)的实数IN取以e为底的
EXP
EN IN ENO OUT
指数,得到32位的实数结果OUT。 4、正弦、余弦、正切指令
EXP IN OUT
即正弦、余弦、正切指令。将把一个双字长( 32 位)的实数
弧度值 IN 分别取正弦、余弦、正切,各得到 32 位的实数结果 OUT。
例:移位和循环指令编程
循环前 AC1 1010 0101 0001 1001 SM1.1
SM1.1 移位前 1101 0101 1001 1011 VW300
循环后 AC1 1101 0010 1000 1100
SM1.1 1
SM1.1 移位后 1 1010 1011 0011 0110 VW300

汇编语言基本指令详解

汇编语言基本指令详解

汇编语言基本指令详解在计算机科学和计算机工程领域,汇编语言是一种计算机底层编程语言,用于直接控制计算机硬件。

它是机器语言的文本形式,使用符号和助记符来代表机器指令,相对于高级编程语言来说更加底层。

汇编语言基本指令是使用汇编语言进行编程时必不可少的内容。

下面将详细介绍汇编语言中常用的基本指令。

1. 数据传送指令数据传送指令用于在寄存器之间传递数据,常见的指令有MOV、ADD、SUB、MUL等。

MOV指令用于将数据从一个位置传送到另一个位置,格式为MOV 目标操作数, 源操作数。

例如,MOV AX, BX可以将BX的值传送给AX。

ADD指令用于将两个操作数相加,并将结果保存到目标操作数中。

格式为ADD 目标操作数, 源操作数。

例如,ADD AX, BX可以将AX与BX的值相加,并将结果保存在AX中。

SUB指令用于将源操作数的值从目标操作数中减去,并将结果保存到目标操作数中。

格式为SUB 目标操作数, 源操作数。

例如,SUB AX, BX可以将BX的值从AX中减去,并将结果保存在AX中。

MUL指令用于将两个操作数相乘,并将结果保存到目标操作数中。

格式为MUL 目标操作数, 源操作数。

例如,MUL AX, BX可以将AX与BX的值相乘,并将结果保存在AX中。

2. 算术逻辑指令算术逻辑指令用于进行各种算术和逻辑运算,例如加法、减法、乘法、除法、与、或、非等。

ADD指令在前面已经提到,用于将两个操作数相加。

SUB指令在前面已经提到,用于将源操作数的值从目标操作数中减去。

MUL指令在前面已经提到,用于将两个操作数相乘。

DIV指令用于将目标操作数除以源操作数,并将商保存到目标操作数,余数保存在DX中。

格式为DIV 操作数。

例如,DIV BX可以将AX的值除以BX,并将商保存在AX中,余数保存在DX中。

AND指令用于对两个操作数进行按位与运算,并将结果保存到目标操作数中。

格式为AND 目标操作数, 源操作数。

例如,AND AX,BX可以将AX与BX的值按位与,并将结果保存在AX中。

第六讲数据传送指令PPT课件

第六讲数据传送指令PPT课件

(1)一般传送指令
该类指令的功能是实现数在片内RAM单元之间、寄存器 之间、寄存器与RAM单元之间的传送。所有指令具有统一的 格式,其格式如下:
MOV <目的操作数>,<源操作数>;目的操作数单元←源 操作数(或单元)
操作码助记符都是"MOV",目的操作数和源操作数不同 寻址方式的组合就派生出该类的全部指令。因此,记忆这类指 令的关键在于掌握两个操作数的各种寻址方式的组合关系。
例如:已知累加器A中有一个0-9范围内的数,用查 表指令编出能查找出该数的平方值的程序
(1)采用PC作为基址寄存器
为了便于理解,我们把如下查表程序定位在1FFBH
ORG 1FFBH
1FFBH
ADD A , #data
1FFDH
MOVC A , @A+PC
1FFEH
SJMP $
2000H
DB 0
2001H
DB 1
2002H
DB4

2009H
DB 81
END
(2)采用DPTR作为基址寄存器 采用DPTR作为基址寄存器的查表程序比较简单,也容易
理解,只要预先使用一条十六位数传送指令,把表的是始址 2000H送入DPTR,然后进行查表就行了。相应程序为:
MOV DPTR , #2000H MOVC A , @A+DPTR 思考:用查表方法把累加器中的十六进制数转换为ASCII码, 并送回累加器中。
例如: 设(R0) = 30H,30H = 4AH,(A) = 28H,则 执行XCH A, @R0后,结果为(A) = 4AH,(30H) = 28H。 执行XCHD A,@R0后,结果为(A) = 2AH,(30H) = 48H。 执行SWAP A后,结果为(A) = 82H。

数据传送指令PPT课件

数据传送指令PPT课件
例3 若(A)=23H,执行MOV R1,A ,则R1的内 容为多少 (R1)=23H
.
以direct 为目的操作数的指令
1、指令 MOV direct, @Rn MOV direct,A MOV direct,#data MOV direct,Rn MOV direct,direct
.
2、功能 把源操作数送入由直接地址指向的存储
【作业】
1、设(A)=34H,(R0)=30H,(30H)=56H, 执行下列指令后A的内容是多少? XCHD A,@R0
2、若(R0)=37H,(A)=76H,执行 XCH A, R0 指令 结果:(A)=?,(R0)=?
3、设(SP)=32H,(32H)=70H,(31H) =60H,执行下述指令后SP是多少?
1、若(23H)= 30H,执行 MOV R6,23H 则 R6的内容为多少,该指令的寻址方式是什么?
2、若执行MOV R3,#24H , 则结果:(R3) =?
3、若(40H)=34H ,执行MOV A ,40H, 则结果: (A)=?
.
作业:
1、若(R1)= 30H,(30H)= 68H,执行 MOV A,@R1,则A的内容为多少,源操作数 的寻址方式是什么?
2、若执行MOV R1,#20H ,则R1的内容为多少 3、若(64H)=70H,(A)=78H,执行指令MOV
64H,A 则64H及A的内容为多少 4、若(R1)=35H,执行 MOV @R1,#40H 指
令则35H的内容为多少
.
用户RAM区或堆栈区(见教材P49)
• 供用户使用的一般RAM区,共有80个单 元,其单元地址为30H~7FH。在一般应用 中常把堆栈开辟在此区中。MCS—51单片机 堆栈区不是固定的, 原则上可设在内部RAM 的任意区域内, 但为了避开工作寄存器区 和位寻址区, 一般设在30H以后的范围内。

数据传送指令

数据传送指令

数据传送指令
1.MOV 目的,源将源操作数送到目的操作书中,源操作数不变
1源,目的操作数不能同为存储器操作数
2数据类型一致
3CS和立即数不能为目的操作数立即数不能直接传给段寄存器
2.压栈指令PUSH 源操作数将存储器或寄存器操作数压入堆栈
3.出栈指令POP 字数据将字数据弹到寄存器或存储单元
4.交换指令XCHG 目的,源将源操作数目的操作数互换段寄存器的内容不能互换
输入输出指令
1.输入指令IN
1直接寻址输入指令IN AL,PORT AL<---(PORT)
IN AX,PORT AL<---(PORT+1,PORT)
2间接寻址输入指令IN AL,DX AL<----(DX)
IN AX,DX AX<---(DX+1,DX)
从DX寄存器指定端口读入一个字节送给AL,首先应把端口地址送给DX
2.输出指令OUT
1直接寻址输出指令OUT PORT,AL OUT PORT,AX
2间接寻址输出指令OUT DX,AL OUT DX,AX
地址传送指令
1.取有效地址指令LEA 16位目的,源把源操作数有效地址EA1送到16位目的寄存器中
2.装入DS和有效地址指令LDS 16位目的,源
3.装入ES和有效地址指令LES 16位目的,源
4.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

执行结果为: 执行结果为:(DPTR)=0203H,(30H)=FFH, , , (0203H)=(A)=0FH。 。
例如:已知外部RAM的20H单元中有一个数x和内部 单元中有一个数x 例如:已知外部RAM的20H单元中有一个数 RAM的20H单元中有一个数 RAM的20H单元中有一个数y,试编出可以使它们相互 单元中有一个数y 交换的程序
第六讲
一、授课内容:第三章 80C51单片机的指 80C51单片机的指 授课内容: 令系统 二、授课目的:掌握数据传输指令基本语句 授课目的: 和应用。 和应用。 重点/难点: 三、重点/难点: 数据传输指令的基本应用
5、指令系统之数据传送类指令 指令系统之数据传送类指令
数据传送类指令共29条 它是指令系统中最活跃、 数据传送类指令共 条, 它是指令系统中最活跃、 使用 最多的一类指令。 一般的操作是把源操作数传送到目的操作数, 最多的一类指令。 一般的操作是把源操作数传送到目的操作数 即指令执行后目的操作数改为源操作数, 而源操作数保持不变。 即指令执行后目的操作数改为源操作数 而源操作数保持不变。 若要求在进行数据传送时, 不丢失目的操作数, 若要求在进行数据传送时 不丢失目的操作数 则可以用交换型 传送指令。 传送指令。
PUSH direct ;
(SP)←(SP)+ 1 ((SP))←direct
修改指针,使其指向栈顶上的一个存数单元 把直接地址单元的内容压入SP所指单元内
(direct)←((SP)+ 1) 把栈顶的数据弹出到直接寻址单元中去 POP direct ; (SP)←(SP)-1 修改指针,指向新栈顶
(1)一般传送指令 ) 该类指令的功能是实现数在片内RAM单元之间、寄存器 单元之间、 该类指令的功能是实现数在片内 单元之间 之间、寄存器与 单元之间的传送。 之间、寄存器与RAM单元之间的传送。所有指令具有统一的 单元之间的传送 格式,其格式如下: 格式,其格式如下: MOV <目的操作数 ,<源操作数 ;目的操作数单元 源 目的操作数>, 源操作数 源操作数>;目的操作数单元←源 目的操作数 操作数(或单元 操作数 或单元) 或单元 操作码助记符都是"MOV",目的操作数和源操作数不同 , 操作码助记符都是 寻址方式的组合就派生出该类的全部指令。因此, 寻址方式的组合就派生出该类的全部指令。因此,记忆这类指 令的关键在于掌握两个操作数的各种寻址方式的组合关系。 令的关键在于掌握两个操作数的各种寻址方式的组合关系。
(3)片外数据存储器数据传送指令
80C51单片机 单片机CPU对片外扩展的数据存储器 对片外扩展的数据存储器RAM或I/O口进 单片机 对片外扩展的数据存储器 或 口进 行数据传送,必须采用寄存器间接寻址的方法,通过累加器 来 行数据传送,必须采用寄存器间接寻址的方法,通过累加器A来 完成。这类指令共有以下4条单字节指令, 完成。这类指令共有以下4条单字节指令,指令操作码助记符都 为MOVX。 。 指令助记符 MOVX A,@DPTR , MOVX A,@Ri , MOVX @DPTR ,A MOVX @Ri,A , 操作功能注释 ; (A)←((DPTR)) ; (A)←((Ri)) ; ((DPTR))←(A) ; ((H MOVC A , @A+DPTR 思考:用查表方法把累加器中的十六进制数转换为 思考:用查表方法把累加器中的十六进制数转换为ASCII码, 码 并送回累加器中。 并送回累加器中。
6、堆栈操作指令
堆栈操作有进栈和出栈,即压入和弹出数据, 堆栈操作有进栈和出栈,即压入和弹出数据,常用于保存 或恢复现场。进栈指令用于保存片内 单元(低 字节 字节)或特 或恢复现场。进栈指令用于保存片内RAM单元 低128字节 或特 单元 殊功能寄存器SFR的内容;出栈指令用于恢复片内RAM单元 低 的内容;出栈指令用于恢复片内 单元(低 殊功能寄存器 的内容 单元 128字节 或特殊功能寄存器 字节)或特殊功能寄存器 的内容。 字节 或特殊功能寄存器SFR的内容。 的内容 该类指令共有如下两条指令: 该类指令共有如下两条指令:
设外部RAM(0203H)= FFH,分析以下指令执行后的结果。 例如 设外部 ,分析以下指令执行后的结果。 MOV DPTR,#0203H , MOVX A,@DPTR , MOV 30H,A , MOV A,#0FH , MOVX @DPTR,A , ;(DPTR)←0203H ;(A)←((DPTR)) ;(30H)←(A) ;(A)←0FH ;((DPTR))←(A)
第二条指令是以DPTR作为基址寄存器 累加器 的内容 作为基址寄存器, 累加器A的内容 第二条指令是以 作为基址寄存器 作为无符号数与DPTR内容相加 得到一个 16 位的地址 并 内容相加, 位的地址, 作为无符号数与 内容相加 把该地址指出的程序存储器单元的内容送到累加器A。 把该地址指出的程序存储器单元的内容送到累加器 。这条 指令的执行结果只与指针DPTR及累加器 的内容有关 与 及累加器A的内容有关 指令的执行结果只与指针 及累加器 的内容有关, 该指令存放的地址无关, 因此, 该指令存放的地址无关 因此 表格的大小和位置可以在 64 KB程序存储器中任意安排 并且一个表格可以为各个程序 程序存储器中任意安排, 程序存储器中任意安排 块所共用。 块所共用。
注意:堆栈操作指令是直接寻址指令,在书写格式中需要注意。 注意:堆栈操作指令是直接寻址指令,在书写格式中需要注意。 例如下列指令中,左列的是正确的,右列是错误的。 例如下列指令中,左列的是正确的,右列是错误的。 正确指令 PUSH ACC PUSH 00H POP ACC POP 00H 错误指令 PUSH A PUSH R0 POP A POP R0
(2)数据交换指令
数据传送指令一般都是将操作数自源地址单元传送到目的 地址单元,指令执行后,源地址单元的操作数不变, 地址单元,指令执行后,源地址单元的操作数不变,目的地址 单元的操作数则修改为源地址单元的操作数。交换指令数据作 单元的操作数则修改为源地址单元的操作数。 双向传送,涉及传送的双方互为源地址、目的地址, 双向传送,涉及传送的双方互为源地址、目的地址,指令执行 后每方的操作数都修改为另一方的操作数。因此, 后每方的操作数都修改为另一方的操作数。因此,两操作数均 未冲掉、丢失。数据交换指令共有如下 条指令 条指令: 未冲掉、丢失。数据交换指令共有如下4条指令:
MOV
R1 ,
#20H @R1 @R1
;
R1
20H x 20H , A 20H y
MOVX A , XCH A ,
; A ; ; x y
MOVX @R1 , A
例如:已知50H中有一个 --9的数, 例如:已知50H中有一个0--9的数,请编程把它变为相 中有一个0 应ASCII码的程序 ASCII码的程序
MOV R0 ,#50H MOV A , #30H XCHD A ,@R0 MOV @R0 , A
(4)访问程序存储器的数据传送指令
访问程序存储器的数据传送指令又称作查表指令, 访问程序存储器的数据传送指令又称作查表指令,采用基 址寄存器加变址寄存器间接寻址方式, 址寄存器加变址寄存器间接寻址方式,把程序存储器中存放的 表格数据读出,传送到累加器 。共有如下两条单字节指令, 表格数据读出,传送到累加器A。共有如下两条单字节指令,指 令操作码助记符为MOVC。 。 令操作码助记符为 指令助记符 MOVC A, @A+DPTR , MOVC A, @A+PC , 操作功能注释 ;(A)←((A)+(DPTR)) ;(PC)←(PC)+1,(A)←((A)+(PC)) ,
例如:已知累加器A中有一个0-9范围内的数,用查 例如:已知累加器A中有一个0 范围内的数, 表指令编出能查找出该数的平方值的程序
(1)采用 作为基址寄存器 )采用PC作为基址寄存器 为了便于理解,我们把如下查表程序定位在 为了便于理解,我们把如下查表程序定位在1FFBH ORG 1FFBH 1FFDH 1FFEH 2000H 2001H 2002H … 2009H DB 81 END 1FFBH
例如: 设(R0) = 30H,30H = 4AH,(A) = 28H,则 例如: , , , 执行XCH A, @R0后,结果为(A) = 4AH,(30H) = 28H。 执行 , 后 结果为 , 。 执行XCHD A,@R0后,结果为(A) = 2AH,(30H) = 48H。 执行 , 后 结果为 , 。 执行SWAP A后,结果为(A) = 82H。 执行 后 结果为 。
MOVC A, @A+PC MOVC A, @A+DPTR 这是两条很有用的查表指令, 这是两条很有用的查表指令 可用来查找存放在外部程序存 储器中的常数表格。第一条指令是以 作为基址寄存器 的内 作为基址寄存器, 储器中的常数表格。第一条指令是以PC作为基址寄存器 A的内 容作为无符号数和 PC的内容 ( 下一条指令的起始地址)相加后 的内容 下一条指令的起始地址) 得到一个 16 位的地址 并将该地址指出的程序存储器单元的内容 位的地址, 送到累加器A。 这条指令的优点是不改变特殊功能寄存器和PC 送到累加器 。 这条指令的优点是不改变特殊功能寄存器和 的状态, 只要根据A的内容就可以取出表格中的常数 的内容就可以取出表格中的常数。 的状态 只要根据 的内容就可以取出表格中的常数。缺点是表 个单元之中, 格只能放在该条查表指令后面的 256 个单元之中 表格的大小受 到限制, 而且表格只能被一段程序所利用. 到限制 而且表格只能被一段程序所利用
表1 访问片内RAM的一般传送指令表 访问片内RAM的一般传送指令表
例题
1、已知:R1=32H、(30H)=AAH、(31H)=BBH、(32H)=CCH, 、已知: 、 、 、 试问如下指令执行后累加器A、 中的内容是什么? 试问如下指令执行后累加器 、50H、R6、32H中的内容是什么? 、 中的内容是什么 MOV A,30H MOV 50H,A MOV R6,31H MOV @R1,30H
相关文档
最新文档