许老二

  • 2019-05-26
  • 回复了主题帖: 请高手解释数字电压表的汇编程序

    gmchen 发表于 2019-5-25 07:21 MUL  AB             ;把小数部分的二进制值乘以10(是把所得积的低字节传给累加器A,高字节 ...
    谢谢老师在百忙中给予指点。程序中ADD  A,#5这条指令是四舍五入中的五入(当余数大于除数51的一半26时,商肯定大于0.5,需要进行五入),我还有一点疑问是,日常算术运算中,对小数部分四舍五入是按照小数的千分位、百分位、十分位的顺序依次进行四舍五入的,而上面的程序却按照小数十分位、百分位的顺序进行四舍五入,请问老师,程序中这种顺序的四舍五入有什么依据?谢谢!!!

  • 2019-05-24
  • 发表了主题帖: 请高手解释数字电压表的汇编程序

    本帖最后由 许老二 于 2019-5-24 16:50 编辑 我是刚学习51单片机的一位新手。最近看了有关数字电压表的汇编程序,对其中的有些指令的作用不甚理解,期盼高手不吝赐教。                     ;将0~255转换为0.00~5.00                    MOV  R0,#70H                   MOV  A,P0                   MOV  @R0,A                   MOV   A,@R0     ;把R0内存储的数值所指向RAM单元的内容(模拟电压转换成的二进制数值)传给累加器A                   MOV   B,#51      ;把十进制数51(代表1伏电压值)传给寄存器B                   DIV    AB           ;相除得到模拟电压的整数部分和小数部分的二进制值                   MOV   78H,A    ;把整数部分的二进制值放入RAM的78H存储单元                   MOV  A,B          ;把小数部分的二进制值传入累加器A                   CLR F0               ;用户标志位清零                   SUBB  A,#1AH   ; 把小数部分的二进制值与0.5伏电压的二进制值(十六进制为1AH)相减                   MOV  F0,C         ;把借位标志传送给用户标志位                   MOV  A,#10       ;把十进制数10传给累加器A                   MUL  AB             ;把小数部分的二进制值乘以10(是把所得积的低字节传给累加器A,高字节传给寄存器 B 吗?)                   MOV  B,#51       ;把十进制数51传给寄存器B                   DIV   AB             ;把小数部分的二进制值乘以10所的积的低字节除以51                                            (积的低字节除以51得到的商不可能是十分位的小数值吧?)                   JB  F0,LOOP1     ;判断小数部分的二进制值是否低于0.5伏电压的二进制值                   ADD  A,#5         ;如果小数部分的二进制值大于0.5伏电压的二进制值,则把乘积的低字节除以51得到的商加5                                             (这样怎么会是四舍五入,如果是,为什么首先就在十分位小数值上四舍五入呢?                                               算术上不是先从小数的百分位上四舍五入,后在小数的十分位上四舍五入吗?) LOOP1:    MOV  79H,A        ;如果小数部分的二进制值小于0.5伏电压的二进制值,则把乘10以后除以51得到十分位小数值传给RAM的79H存储单元                  MOV  A,B                  CLR   F0                SUBB A,#1AH                MOV  F0,C                  MOV  A,#10                  MUL  AB                  MOV  B,#51                  DIV  AB                  JB   F0,LOOP2                  ADD  A,#5                  LOOP2: MOV  7AH,A    请高手指点了上面我用红色字体所标注的疑问,谢谢!!!

最近访客

< 1/1 >

统计信息

已有3人来访过

  • 芯币:23
  • 好友:--
  • 主题:1
  • 回复:1
  • 课时:--
  • 资源:--

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言