搜索
bottom↓
回复: 9

请教这段代码的含义

[复制链接]

出0入0汤圆

发表于 2013-5-19 20:34:16 | 显示全部楼层 |阅读模式
                   MOV   A,@R0
                   JB    ACC.7,multiple
                   CJNE  A,#0CH,Jump1000
Jump1000:          JC    multiple
                   MOV   R2,#75H
                   MOV   R3,#30H
                   LJMP  GetRusl
;===========================================
multiple:          MOV   R6,#00H
                   MOV   R7,#0AH
                   LCALL Multi_Routine           //@R0@R0+1 *        R6R7
                   MOV   R6,#00H
                   MOV   R7,#01H
                   LCALL Div_routine          //@R0@R0+1 /R6R7
GetRusl:           MOV   A,R2
                   MOV   @R0,A
                   INC   R0
                   MOV   A,R3
                   MOV   @R0,A
                   RET
------------------------------------------------------------------------------------------------------------------
        请教各位高手:这段条件判断有何作用?JB    ACC.7,multiple是判断@R0@R0+1是否是负数。就是不明白CJNE  A,#0CH,Jump1000的作用。
             MOV   A,@R0
                   JB    ACC.7,multiple
                   CJNE  A,#0CH,Jump1000
Jump1000:     JC    multiple
                 

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-5-19 20:36:18 | 显示全部楼层
晕,汇编啊,爱莫能助哈

出0入0汤圆

发表于 2013-5-19 21:13:13 | 显示全部楼层
就是A不等于#0CH的时候跳转到Jump1000呗 还能有啥意思。。。

出0入4汤圆

发表于 2013-5-19 21:30:56 | 显示全部楼层
对C的影响:按无符号数减法。前数减后数,有借位C = 1,否则C = 0。
下面就有 JC   multiple   来判断被减数与减数的大小以决定去哪个分支

出0入0汤圆

发表于 2013-5-19 22:18:09 | 显示全部楼层
                        CJNE  A,#0CH,Jump1000
Jump1000:          JC    multiple
                          MOV   R2,#75H
好像这程序不完整,就是这句没意义啊  CJNE  A,#0CH,Jump1000,不管A等不等于#0CH,都要执行下一句Jump1000:

出0入0汤圆

发表于 2013-5-19 23:01:24 | 显示全部楼层
JB    ACC.7,multiple是判断@R0是否是负数。
如果是负数,跳到multiple,
否则是非负数,继续执行
【CJNE  A,#0CH,Jump1000】:
【JC    multiple】:
比较该数据(@R0),是否小于12(#0CH)
如果小于12  ,就执行multiple
否则,执行:
MOV   R2,#75H
                   MOV   R3,#30H
                   LJMP  GetRusl
///////////////////////////////////////////////////////
关键是要把【CJNE  A,#0CH,Jump1000】:
【JC    multiple】:
这两条指令,组合起来判断

出0入4汤圆

发表于 2013-5-21 13:32:52 | 显示全部楼层
wjwjwjwj98 发表于 2013-5-19 22:18
CJNE  A,#0CH,Jump1000
Jump1000:          JC    multiple
                     ...

对啊,这里逻辑有问题!

出0入0汤圆

发表于 2013-5-22 22:07:38 | 显示全部楼层
哎呦,汇编啊!

出0入0汤圆

发表于 2013-5-23 12:53:54 | 显示全部楼层
同意楼上的

楼主的程序可以简化为

                 MOV   A,@R0    //把R0所指的地址的值赋给A
                    JB    ACC.7,multiple  //如果A的最高位为1(代表负数)则跳转到multiple
//                   CJNE  A,#0CH,Jump1000   如果A不等于0xC,跳转到Jump1000(也就是下一行),否则执行下一行
Jump1000:          JC    multiple      //如果CY等于一,就跳转到multiple
                    MOV   R2,#75H        //R2载入立即数75   
                    MOV   R3,#30H       //R3载入立即数30
                    LJMP  GetRusl         //跳转到GetRusl
;===========================================
multiple:          MOV   R6,#00H      //R6清零
                    MOV   R7,#0AH         //R7载入立即数A(00001010)
                    LCALL Multi_Routine           //@R0@R0+1 *        R6R7
                    MOV   R6,#00H
                    MOV   R7,#01H
                    LCALL Div_routine          //@R0@R0+1 /R6R7
GetRusl:           MOV   A,R2          //R2赋值给A
                    MOV   @R0,A           //A的值载入到R0所指地址中(数据存储器中)
                    INC   R0                  //R0(地址)自增一
                    MOV   A,R3              //R3赋值给A
                    MOV   @R0,A           //A的值载入到R0所指地址中(数据存储器中)
                    RET                         //返回断点,继续执行LJMP GetRusl下面的语句

出0入0汤圆

 楼主| 发表于 2013-6-16 23:26:19 | 显示全部楼层
非常多谢各位的解析。
这段代码的作用是@R0@R0+1是负数或者@R0<#0cH则(@R0@R0+1)*10.我不明白的是@R0<#0cH这个条件比较是一个上限比较,但是@R0@R0+1是作为一个整形数,为什么@R0+1不参与比较?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 16:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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