找回密码
 注册
关于网站域名变更的通知
查看: 313|回复: 2
打印 上一主题 下一主题

[EMC小知识] 2大EMC基本指令误区

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-3-23 14:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

$ n0 `' e8 O9 Z6 y1.减法指令的误区" x; N/ }8 t& D0 s2 r
1 ~3 D. e9 `  K9 |5 t' o; D
之一:关于ACC) p( k0 @2 V, A
+ Z! y+ Y- X( U6 O. k
EMC的减法指令有三条,如下:- x& y8 F  Y7 G3 Z9 Z0 X

; m4 W; j0 P2 G+ lSUB A,R (R-A→A)7 y4 v4 _4 C( {4 ^6 z; A4 U

+ I) G' Z  X5 P$ Y& q6 {9 w( `SUB R,A (R-A→R)9 |6 I! A! Z8 D3 {6 k  ?" L
. L* Q" E( h6 Q$ R' m4 Y& n
SUB A,K (K-A→A)% J7 ]# b* w% h9 Y# ~
% e  A- F! B' J0 H' r9 j
需要注意的是,不论A的位置在前面还是后面,A都是减数,不是被减数。  c$ m+ l' @3 ~

( |: N' }% i" g也就是說如果我們想計算A-2的值,如果寫成:
4 \+ J/ k4 h" ~9 i4 _, W
1 k' v0 |) F8 S. k. r' JSUB A,@2; h2 j0 w# K. N" M: o1 v- b; N

, O6 @: f2 J) b& ]/ |2 b其實是執行2-A
. b' q; o% Q6 G- q! ?% P2 ]
# Z* X4 ?1 H, W解決方法如下:
& A* n+ N1 e1 _, h
9 N0 E! S+ N% uADD A,@256-2 或- l1 F% r1 {' J' @8 L; x/ N

5 f( Q. ~  u! j# i/ XADD A,@254
$ d/ H% o# i! @2 z+ B; y( z/ j' s- g$ ^1 O" m" m
之二:关于CY
! o! x: P+ T6 o" L3 q6 b4 [2 p4 R! X4 A$ }4 c5 t" a5 X
一般来说,加/减法都会影响到进位标志CY., u2 ?9 m! W/ g$ n. t' ~! K! ~

, u+ X/ a6 {$ N在其它一些 单片机 指令系统中,当减法发生借位时,CY=1,未发生借位时CY=0.+ [/ m% K& W* E5 t) E/ a" w
+ R. ]: d+ Q; ^: c; _8 y
如果你以为EMC的减法也是如此,哈哈,你就要吃药了!( G5 c6 f% _9 R8 {

; Z- U0 O, i! V, E3 r: K原来,在EMC的指令系统中。当减法发生借位时,CY=0,未发生借位时CY=1.: h5 \% m4 b/ t. _5 L
5 J8 |7 |9 D% ], \3 M2 C6 J
如果不注意这点,很容易在一些运算或判断程序中留下BUG
$ J( G1 w" O' d  j
7 C7 j. d* i7 N9 O+ [1 P2.查表(散转)指令的误区# _3 v3 G, T! S* t7 h5 r; R8 F

4 p" `$ m. W& J7 {之一:关于“ADD R2,A”指令1 q! O2 f, U8 a$ \8 @9 S" _
4 V2 V; N4 k2 x1 G2 E
在EMC153/156的指令系统中,没有TBL指令(这一点要切记),当要查表时只好用“ADD R2,A”(或MOV R2,A)来代替; C, b) O1 H. R; v$ ?! o% C
/ r3 n: E% k- k4 I) n3 e
但是使用“ADD R2,A”时要注意,这条指令只能改变PC指针的低8位(即256字节),高位其它位一律清零!
- n6 G/ n( p; c/ r$ P" L# d' r4 c: t. J0 U1 A3 _1 j1 X7 X8 M: Q5 \
所以使用“ADD R2,A”时必须保证整个表格都在ROM的每一页的前256字节区间内。(153/156只有一页)
* M, b# R8 `! l- k  F4 F% k" `# o6 [- i; J! g5 @; r
大表格的使用受到了限制,而且为了将表格“挤入”00H~FFH的ROM空间,程序的结构受到破坏。5 }2 h: C9 i; |8 n% t4 \0 _1 @( L
  g+ p$ ~( f) I, I! v* {9 }' T; o2 I
之二:关于“TBL”指令
- c* ^5 ]* [1 P6 x) W+ l7 C( P/ q7 s: t% j" H! k
刚才说道,“ADD R2,A”指令使用的诸多不爽之处。
$ D3 }4 n0 [- K. z* b' y1 B: J* u
为此,EMC在447/458及后续的芯片的指令系统中,增加了一条新指令----就是TBL指令。0 g  n2 d& j% o& W: u; v' K

0 F! o& f6 i6 N  nTBL是查表指令。号称可以放在程序的任何位置。
  • TA的每日心情

    2019-11-20 15:22
  • 签到天数: 2 天

    [LV.1]初来乍到

    2#
    发表于 2022-3-23 14:58 | 只看该作者
    EMC尽然还有指令

    点评

    我也是第一次听,世界之大啊  详情 回复 发表于 2022-3-23 15:24
  • TA的每日心情

    2019-11-19 15:32
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2022-3-23 15:24 | 只看该作者
    mutougeda 发表于 2022-3-23 14:58/ `  |! Z0 L2 u! I8 O9 L0 Z! ^* u
    EMC尽然还有指令
    6 e& E) z( r5 J5 N
    我也是第一次听,世界之大啊
    : b- t. r& H( ?  a2 \/ [
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-18 20:00 , Processed in 0.109375 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表