第4章指令系统及汇编语言程序设计-课程中心-山东大学.ppt

第4章指令系统及汇编语言程序设计-课程中心-山东大学.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章指令系统及汇编语言程序设计-课程中心-山东大学.ppt

§4.6算术运算类指令 指令助记符 影响标志 备注 CY OV AC ADD(加) × × × “×”表示可置1或清“0”, “0”表示总清“0” ADDC(带进位加) × × × SUBB(带借位减) × × × MUL(乘) 0 × DIV(除) 0 × DA(二十进制调整) × * * 该类指令主要完成加、减、乘、除四则运算,以及增量、减量和二十进制调整操作。除增量、减量指令外,大多数算术运算指令会影响到状态标志寄存器PSW。 表4-3 算术运算类指令对标志的影响 * * 2、MOVX指令(4条) * * 两种寄存器用于间接寻址 用R1或R0进行寄存器间接寻址。该方式能访问外部数据存储器(或扩展并行I/O口)256个字节中一个字节。 若要访问更大的空间,需使用P2口输出高8位地址。需先给P2和Ri赋值,然后执行MOVX指令。 用16位的数据存储器地址指针DPTR进行寄存器间接寻址。这种方法能遍访64KB的外部数据存储器(或扩展并行I/O口)的任何单元。 功能: 用于累加器A和外部RAM或扩展并行I/O口进行数据传送。这种传送只一种寻址方式, 即寄存器间接寻址。 2、MOVX指令(4条) 指令格式:MOVX 目的字节, 源字节 有4条指令 (A与外部RAM或I/O口进行数据传送) MOVX A, @DPTR ;A←(DPTR) MOVX A, @Ri ;A←(Ri) MOVX @DPTR, A ;(DPTR)←A MOVX @Ri, A ;(Ri)←A 注意:由于使用R1或R0寄存器间接寻址方式访问外部数据存储器时,寻址范围受到256字节限制,因此,在实际应用中,一般使用DPTR寄存器间接寻址方式访问外部数据存储器。 * * 2、MOVX指令(4条) 例如:若外部数据存储器单元中:(0100H)=60H,(0101H)=2FH 则执行: MOV DPTR , #0100H MOVX A, @DPTR ;执行后,累加器A=60H * * 3、程序存储器向累加器A传送指令——MOVC 查表:单片机提供2条查表指令,访问程序存储器。 指令采用变址寻址, 以PC或DPTR为基址寄存器, 以累加器A为变址寄存器, 基址寄存器与变址寄存器内容相加得到程序存储器某单元的地址值; MOVC指令把该存储单元的内容传送到累加器A中。 * * 格式: MOVC A, @A+PC ;PC←PC+, A←(A+PC) MOVC A, @A+DPTR ;A←(A+DPTR) 功能: 把A中内容与基址寄存器(PC, DPTR)内容相加, 求得程序存储器单元地址, 再把该地址单元内容A。 指令执行后不改变基址寄存器内容, 因执行16位加法, 从低8位产生的进位将传送到高位去, 不影响任何标志。 3、程序存储器向累加器A传送指令——MOVC MOVC A , @A+PC MOVC A , @A+DPTR 这两条指令主要用于查表,即完成从程序存储器读取数据的功能。 两条指令使用不同的基址寄存器, 使用范围也不同。 * * 以PC为基址寄存器时,CPU在取出本指令后PC自动加1,因为本指令为1字节指令,所以这时PC已不是原值,而是PC+1的值。 因累加器中内容为8位无符号整数, 这使得本指令查表范围只能在以PC当前值开始后的256字节范围内。 机器码:83H 机器码:93H 3、程序存储器向累加器A传送指令——MOVC MOVC A , @A+PC MOVC A , @A+DPTR 以DPTR作为基址寄存器时,由于DPTR的内容可赋不同的值,使得该指令应用范围较为广泛,表格常数可设置在64KB程序存储器的任何地址空间。 其缺点是,若DPTR已有它用,在赋表首地址之前必须保护现场,执行完查表后再予以恢复。 * * 3、程序存储器向累加器A传送指令——MOVC 【例4-1】 试编制根据累加器A中的数(0~9之间)查其平方表的子程序。 解:程序代码如下: COUNT: PUSH DPH PUSH DPL ;保护DPTR内容 MOV DPTR , #TABLE ;赋表首址→DPTR MOVC A , @A+DPTR ;据A中内容查表

您可能关注的文档

文档评论(0)

shiyouguizi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档