原创 中颖4位单片机指令学习笔记

2011-9-8 16:51 3440 14 14 分类: MCU/ 嵌入式
刚接触中颖的4位单片机,一直在看中颖的资料,很郁闷有些资料有问题,也浪费了大量的时间。在论坛上提问也解决了几个问题。

关于SBC指令的,问题已经解决
http://bbs.sinowealth.com/viewthread.php?tid=1549&extra=page%3D1


你好,我们公司是无法使用QQ的,所以没有办法提供QQ联系方式。

   资料的话,由于你拿来做比较的两份资料,不是同一时期写的(英文版是刚出SH66系列时的,而印刷中文版是后来我们编写四位教材时写的,此时SH69系 列已出了很久了,两者相差4、5年左右),写的人不同而且当时对指令集的使用也不尽相同,而且教材有270页,所以存在错误也是难以避免的,在此我们表示 深深的歉意,也请多见谅。
   
   其实只要你学会方法,就能够自己来分析对与错了。

   要分析这个题,我们需要弄懂几件事:
   1.LDI和LDA是不会影响到CY位的,因此加入一开始是CY = 1,那么在进行SBC处理时,CY =1要带入进去计算。
   2.SBC Mx , bbb的运算方式为  Mx  -  A  +  CY,结果保存到A中,此处最容易造成误解的地方就是“+CY”,其实应该是这样的,如果计算前CY = 0,则应该是 Mx - A - 1,如果计算前CY = 1,则应该是Mx - A + 0
   3.SBC的运算对CY的影响:假如Mx - A + CY结果大于等于0,那么结果CY = 1,反之CY = 0。

   只要知道了上述三点,你就能够自己分析了。

   以第一题为例,$21H = 06h  $20H = 05h,CY = 0,那么
   LDA  $20H
 &nbsp************************
下面是我自己的另外一点总结

SBC常常与SUB指令配合使用,比如
;$21H=06H ,$20H=05H ,$22H=09H
LDA  20H,00H  ; 这里的00H是RAM BANK ,一个RAM BANK 128,就是LDA 20H,BANK0的意思,他们说现在多是
SUB  21H,00H  ; LDA Mx ,不是LDA Mx,bb了,Mx是RAM地址,bbb是BANK地址
              ; 06H-05H = 01H AC=$21H=01H CY=1
SBC  22H,00H  ; 上面的CY=1 说明没有借位发生  SBC 是 AC <- Mx-AC+CY  这里就是 09H-01H+0=08H,结果            ;大于0 ,CY就是等于1;


以前搞 Verilog  二进制运算,数字逻辑 ,还有点转不过来。 我大概猜的,就是对于减法指令, CY是=1的
如果2数相减大于等于0的话,CY没有被借位 ,否则CY被借位  CY=0;







文章评论0条评论)

登录后参与讨论
我要评论
0
14
关闭 站长推荐上一条 /2 下一条