单片机小程序分析

296关注537浏览

MOV30H,#12MOV31H,#23PUSH30HPUSH31HPOP30HPOP31H结果是30H中的值变为23,而31H中的值则变为12。也就两者进行了数据交换,请问如何分析这个程序。要详细的...

展开全部
收起
5回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • Ian0721

    19人对此回答表示赞同

    此程序是执行堆栈操作,堆栈原理是先进后出原理,也就是说先入栈的30H数值为12,后入栈的数值为23;先出栈的数值为23,执行pop 30h,既是将23赋值于30H
    展开
    19
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Sarah

    17人对此回答表示赞同

    够TM啰嗦
    XCH A,30H
    XCH A,31H
    XCH A,30H
    不就完了,节省资源速度还快
    展开
    17
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Ruby

    9人对此回答表示赞同

    下图中只是注明单元内容的值,不是指椎栈的地址,椎栈地址可以设置。对于51来说默认在数据空间的08H开始存放。

    展开
    9
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Michael

    8人对此回答表示赞同

    可能你不理解带进位加法,就是说加的时候把CY也加上,所以(A)=0ACH,(CY)=1,#98H三个相加等于45H,PSW是标志位,这里肯定是有进位的所一CY等于1,自己查查PSW就明白了。
    展开
    8
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 姜小小

    1人对此回答表示赞同

    很简单,你要理解一下血堆栈先进后出的原理,刚开始我们先把30H地址的值入栈,再把31H地址的值入栈,而出栈的时候我们出栈保存的值在30H,这样原来31H里面的值就进入了30H了,再POP 31H 那30H里面的值23H就进入了31H了!
    展开
    1
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部