打印

码表的作用有那些?

[复制链接]
2806|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
DAVIDYE|  楼主 | 2007-4-12 08:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TE, ov, HC, CD, BCD
在汇编语言中,我们常用的码表除了显示固定要求的数值外,好像在运算程序中也有出现,本人菜鸟,对运算程序中的码表看不懂?
佛一段程序:(对那个用查表来实现*0.0625有点不明)请各路英豪指教!
;****************************************************************************
;处理温度BCD码子程序
;****************************************************************************
CONVTEMP:      MOV    A,TEMPH
               ANL    A,#80H       ;取符号位
      JZ     TEMPC1       ;如果符号位为0,则为正值,转
      CLR    C
      MOV    A,TEMPL      ;负值,温度值为补码形式
      CPL    A
      ADD    A,#01H    ;将补码转换为原码
      MOV    TEMPL,A      ;将原码送回
      MOV    A,TEMPH
      CPL    A
      ADDC   A,#00H       ;将高位转换为原码,带进位加是为了加上低位的进位
      MOV    TEMPH,A    ;将原码送回
      MOV    TEMPHC,#11   ;“—”号字型码顺序号
      JMP    TEMPC11
;
TEMPC1:        MOV    TEMPHC,#10   ;正数消隐符号位
TEMPC11:       MOV    A,TEMPHC
               SWAP   A            ;将符号调整到高半字节
      MOV    TEMPHC,A     ;TEMPHC高半字节=符号
      MOV    A,TEMPL    
      ANL    A,#0FH       ;取出底半字节的小数部分
      MOV    DPTR,#TEMPDOTTAB
      MOVC   A,@A+DPTR    ;小数部分以0.0625为步进,通过查表来实现乘0.0625
      MOV    TEMPLC,A    ;TEMPLC低半字节=小数部分BCD
;
               MOV    A,TEMPL
      ANL    A,#0F0H      ;取TEMPL的整数部分
      SWAP   A
      MOV    TEMPL,A
      MOV    A,TEMPH
      ANL    A,#0FH       ;取TEMPH的整数部分
      SWAP   A
      ORL    A,TEMPL      ;A中存放完整的整数部分
      CALL   HEX2BCD1     ;将单字节十六进制整数部分转BCD
      MOV    TEMPL,A
      ANL    A,#0F0H      ;取“十”位的BCD码
      SWAP   A            ;低位存放
      ORL    A,TEMPHC     ;TEMPHC高半字节为符号
      MOV    TEMPHC,A     ;“符号”位与“十”位置入TEMPHC***********************
      MOV    A,TEMPL
      ANL    A,#0FH       ;取“个”位的BCD码
      SWAP   A      ;高位存放
      ORL    A,TEMPLC    ;TEMPLC低半字节为小数部分BCD
      MOV    TEMPLC,A     ;“个”位与“小数”位置入TEMPLC***********************
      MOV    A,R7         ;R7中存放“百”位BCD
      JZ     TEMPC12      ;“百”位为0,退出
      ANL    A,#0FH       ;取“百”位(“百”位不是0,需将TEMPHC中内容重新调整
                          ;高半字节存“百”位,低半字节存“十”位,不显示符号 )
      SWAP   A
      MOV    R7,A
      MOV    A,TEMPHC
      ANL    A,#0FH       ;取“十”位的BCD码
      ORL    A,R7
      MOV    TEMPHC,A     ;“百”位与“十”位置入TEMPHC*************************
TEMPC12:       RET
;
;**************************************************
;          小数部分码表
;**************************************************
TEMPDOTTAB:    DB     00H,01H,01H,02H,03H,03H,04H,04H,05H,06H,06H,07H,08H,08H,09H,09H

相关帖子

沙发
maychang| | 2007-4-12 12:07 | 只看该作者

和日常生活中的查表完全相同

学校里根据学号查分数,这里根据二进制值查十进制小数值。

使用特权

评论回复
板凳
DAVIDYE|  楼主 | 2007-4-12 17:10 | 只看该作者

THANKS

多谢 maychang!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

235

帖子

2

粉丝