码表的作用有那些?

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

多谢&nbsp;maychang!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

235

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部