第六讲 数据传送指令

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

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