嵌入式系统学习笔记(5)——指令系统(2)

  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 一般在多个数据连加的时候用到ADDC指令,比如三个数相加,先前两个数用ADD,然后再用ADDC指令加上第三个数 在这里插入图片描述
  • 即使溢出也不会使得进位寄存器改变,算一种循环加一的操作,加满了就归0.如果加一的操作对象是I/O口,先读锁存器内值,再加一,再输出到I/O口中 在这里插入图片描述
  • 压缩BCD码的意思是用高4位BCD码表示10进制数的十位,低4位表示个位,而普通BCD码只有4位。DA A只能用于加法运算 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 这里00减1会变成FF。此外,DPTR可以加一不可以减一;乘法指令需要把两个乘数分别放在A B中,并且乘积的高8位在B中取得,低8位在A中取得;AB之前没有空格;进位标志C始终为0。对外部I/O口的读-修改-读操作同加一指令 在这里插入图片描述
  • 注意字节清零指令只能对累加器A使用,将A的所有位清零,不能对其它寄存器使用。如果想对其它寄存器字节清零,用MOV 移0进去就行。同乘法,进位C始终为0 在这里插入图片描述
  • 这些也都是只能对A使用。RL指令运行后第7位会放入第0位 在这里插入图片描述在这里插入图片描述
  • 在这里插入图片描述
  • 注意结果并非都是存放到A中,结果是放到第一操作数中 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 如果每次用LJMP都要算一下要跳转的指令所在地址是很麻烦的,后续会介绍一个方法,可以对指令进行标注,并使用该标注作为该指令所在地址,编译时会自动算出标号指令所在地址。“标号隐藏着地址信息” 在这里插入图片描述
  • 同理,使用标号,编译时会自动算出偏移量。注意,跳转目标与当前PC值的地址偏移量超出128个字节将会编译出错。解决方法是二次跳转,跳转到范围内的一条LJMP跳转指令即可 在这里插入图片描述
  • 在这里插入图片描述
  • 该指令实际通过减法操作实现,但是并不改变减数和被减数的内容 在这里插入图片描述
  • 在这里插入图片描述
  • 与JMP指令不同之处在于这里涉及压栈保存现场,而且子程序执行完会返回该指令处顺序执行下一条指令 在这里插入图片描述
  • NOP指令不做任何操作,等一个机器周期 在这里插入图片描述
  • 字节传送和位传送都是MOV,编译器通过观察操作数得出是字节传送还是位传送,即,当操作数中出现位变量时执行位传送指令,并把06H当作位地址;字节清零和位清零都是CLR,但是字节清零只能对A操作,所以如果操作数是地址,那么一定是位地址,执行位清零 在这里插入图片描述
  • ANL C,/bit 表示先将bit中的内容取反再与,结果存回C 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 在这里插入图片描述
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值