汇编的八位无符号BCD数转换成二进制数的原代码.doc_第1页
汇编的八位无符号BCD数转换成二进制数的原代码.doc_第2页
汇编的八位无符号BCD数转换成二进制数的原代码.doc_第3页
汇编的八位无符号BCD数转换成二进制数的原代码.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

这是汇编的八位无符号BCD数转换成二进制数的原代码,欢迎使用。转载时请标明作者和出处。;=; Translate a eight-bit BCD code to binary code; BCDtoBIN: Main program(source data: BCDh,BCDl; destination data: BINh, BINl); Multiply: Subroutine of multiplied by 10; Designed by mmtcyq, 23/05/2007.; All rights reserved.;=; Variaesorg 0200h ; as the case may be variaeBCDh DW 00000h ; BCD code, high wordBCDl DW 00000h ; BCD code, low wordBINh DW 00000h ; BIN code, high wordBINl DW 00000h ; BCD code, low wordMultenh DW 00000h ; Multiplier, high wordMultenl DW 00000h ; Multiplier, low word;=; Programorg 08000h ; as the case may be variaeBCDtoBIN push R5 ; BCD digit pointerpush R6 ; Content of the digitpush R7 ; Temporary counterpush R8 ; Temporary variaemov #00001h,R5clr BINhclr BINlclr Multenhmov BCDl,R6mov R6,R8BtBmainloop cmp #00009h,R5jc BtBendcmp #00005h,R5jz BtBBCDhighwordcmp #00006h,R5jc BtBBCDhighword1bic #0fff0h,R8jmp BtBmulstartBtBBCDhighword mov BCDh,R6mov R6,R8BtBBCDhighword1 bic #0fff0h,R8BtBmulstart mov R5,R7mov R8,Multenlclr MultenhBtBmultimeloop cmp #00001h,R7jz BtBupdateonedigitcall #Multiply ; MultenhMultenl * 10dec R7jmp BtBmultimeloopBtBupdateonedigit add Multenl,BINladc BINhadd Multenh,BINhinc R5clrcrra R6rra R6rra R6rra R6mov R6,R8jmp BtBmainloopBtBend pop R8pop R7pop R6pop R5ret;-Multiply push R5push R6rla Multenlrlc Multenhmov Multenh,R6mov Multenl,R5rla R5rlc R6rla R5rlc R6add R5,Multenladc Multenhadd R6,MultenhMultiplyend pop R6pop R5ret;=Multenh DW 00000h ; Multiplier, high wordMultenl DW 00000h ; Multiplier, low word这两个数值怎么取值啊?这是Multiply函数的变量,对它的赋值是在Multiply函数中进行的。其值被这样使用:add Multenl,BINladc BINhadd Multenh,BINhMMTCYA 你好,谢谢你的指点,但是我还是没搞懂,Multenh DW 00000h ; Multiplier, high wordMultenl DW 00000h ; Multiplier, low word 这两个数值应该怎么取呢? 作用是什么呢?谢谢!这两个值是计算过程中用的中间变量,结果在BINh和BINl中。以上代码在1.26B上通过。BCDh和BCDl是入口数据,出口数据则是BINh和BINl。将要转换的BCD码(最多八位)赋值给BCDh(高四位)和BCDl(低四位)。;-mov #01234h,BCDhmov #04567h,BCDlcall #BCDtoBIN;-结果是:0BC614Eh。其中BINh=000bch,BINll=0614eh。注:数据限定为无符号数。MMTCYA 你好,谢谢你的指点,我今天晚上回去在调试一下您给我的程序,现在我想请问您一下,就是我用 BCD-BIN的转换是用在按键程序中的,我的按键程序是调几个数值,在调的时候BCD码是分开的,意思是假设我想调65535,但是要分开调,6,5,5,3,5,然后在合到一起65535,然后在变成二进制数,您说这个合到一起的过程应该怎么处理呢? 是6乘10000H,5乘1000H,5乘100H,3乘10H,然后在加到一起吗?如果是这样的话程序处理的过程就很长,影响速度,您能给指点一下吗? 有好的建议吗?如果这些分开的数都是十进制的数,就先移位,后相加。比如BCD_2 = 0x0001h,BCD_1 = 0x0002h,将这两个数相加,构成BCD数:rla BCD_2rla BCD_2rla BCD_2rla BCD_2clrcdadd BCD_1,BCD_2 结果是BCD_2 = 0x0012h我的帐号是MMTCYQMMTCYQ 你好,多谢你的指点,豁然开朗,我还是书看的少,很多东西凭想象是不行的!你的程序中这段Variaesorg 0200h ; as the case may be variaeBCDh DW 00000h ; BCD code, high wordBCDl DW 00000h ; BCD code, low wordBINh DW 00000h ; BIN code, high wordBINl DW 00000h ; BCD code, low wordMultenh DW 00000h ; Multiplier, high wordMultenl DW 00000h ; Multiplier, low word是给变量一个地址或是附值一个数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论