- 1、本文档共55页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
任务二 P1口外接8只LED发光二极管模拟彩灯 3.1 MCS-51指令系统概述 寄存器间接寻址方式的寻址范围: (1)内部RAM低128单元 对内部RAM低128单元的间接寻址,应使用R0或R1作间址寄存器,其通用形式为@Ri(i=0或1)。 (2)外部RAM 64KB 对外部RAM 64KB的间接寻址应使用DPTR作间址寄存器,其形式为@DPTR。例如:MOVX A,@DPTR,其功能是把DPTR指定的外部RAM单元的内容送累加器A。 外部RAM的低256单元是一个特殊的寻址区,除可以使用DPTR作间址寄存器寻址外,还可使用R0或R1作间址寄存器寻址。例如MOVX A,@R0,即把R0指定的外部RAM单元的内容送累加器A。 此外对于堆栈操作指令(PUSH和POP)也应算作是寄存器间接寻址,即以堆栈指针(SP)作间址寄存器的间接寻址方式。 6. 变址寻址方式 MCS-51的变址寻址是以DPTR或PC作基址寄存器,以累加器A作变址寄存器,并以两者内容相加形成的16位地址作为操作数地址。例如指令: MOVC A, @A+DPTR 其功能是把DPTR和A的内容相加,再把所得到的程序存储器地址单元的内容送A。假定指令执行前(A)=54H,(DPTR)=3F21H,则该指令的操作示意请参见图3- 2。 3.3.3 带借位减法指令组 带进位减法指令也有四条: SUBB A,Rn ;A←(A)-(Rn)-(CY) SUBB A,direct ;A←(A)-(direct)-(CY) SUBB A,@Ri ;A←(A)-((Ri))-(CY) SUBB A,#data ;A←(A)-data-(CY) 这些指令的功能是从累加器A中减去不同寻址方式的操作数以及进位标志CY状态,其差再回送累加器A。 减法运算只有带借位减法指令,而没有不带借位的减法指令。若进行不带借位的减法运算,只需用CLR C指令先把进位标志位清0即可。 带借位减法指令影响PSW的状态,如果位3有借位,则AC置1,否则清0;如果位7有借位,则CY置1,否则CY清0;此外两个带符号数相减也有溢出的问题,如溢出位OV置1测表示有溢出出现。 3.3.4 加1指令组 共有五条加1指令: INC A ;A←(A)+1 INC Rn ;Rn←(Rn)+1 INC direct ;direct←(direct)+1 INC @Ri ;(Ri)←((Ri))+1 INC DPTR ;DPTR←(DPTR)+1 这些指令可以对累加器、寄存器、内部RAM单元以及数据指针进行加 1操作。加1指令的操作不影响程序状态字PSW的状态。即使INC DPTR指令在加1过程中低8位有进位,也是直接进上高8位而不置位进位标志CY。 3.3.5 减1指令组 共有四条减1指令: DEC A ;A←(A)-1 DEC Rn ;Rn←(Rn)-1 DEC direct ;direct←(direct)-1 DEC @Ri ;(Ri)←((Ri))- 1 这些指令可以进行累加器、寄存器以及内部RAM单元的减1操作。减1操作不影响程序状态字PSW的状态。此外还应注意,在MCS-51指令系统中,只有数据指针DPTR加1指令,而没有DPTR减1指令。 3.3.6 乘除指令组 1.乘法指令 MUL AB 这条指令把累加器A和寄存器B中的两个无符号8位数相乘,所得16位乘积的低位字节放在A中,高位字节放在B中。 乘法运算影响PSW的状态,包括进位标志位CY总是被清0,溢出标志位状态与乘积有关,若乘积小于FFH(即B的内容为0),则OV清0,否则OV被置1。 2.除法指令 DIV AB 这条指令进行两个8位无符号数的除法运算,其中被除数置于累加器A中,除数置于寄存器B中。指令执行后,商存于A中,余数存于B中。 除法运算影响PSW的状态,包括进位标志位CY总是被清0,而溢出标志位OV状态则反映除数情况,当除数为0(B=0)时,OV置1,表明除法没有意义,无法进行;其它情况OV都被清0。 3.3.7 十进制调整指令 十进制调整指令是一条专用指令,用于对BCD码十进制数加法运算的结果进行修正。其指令格式为: DA A 因相加
文档评论(0)