BCD码转为相应的数据

BCD码转二进制数据详解
这篇博客介绍了一个将BCD码转换为相应二进制数据的程序。通过汇编语言实现,展示了如何将特定的BCD码(如35H)转换成其对应的二进制形式(23H)。程序中包含了一系列宏定义,用于显示字符、字符串及十六进制数,并提供了`bcdto2`子程序进行BCD到二进制的转换。

例如将35H转换为二进制数据应得到23H、即十进制的35


DATAS SEGMENT

    ;此处输入数据段代码

    buf db 35h,64h,89h

    res db ?  

DATAS ENDS

 

STACKS SEGMENT

    ;此处输入堆栈段代码

STACKS ENDS

 

CODES SEGMENT

    ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

    MOV AX,DATAS

    MOV DS,AX

    ;此处输入代码段代码

     ;宏 显示一个字符

dispchar macro char

         mov ah,2

         mov dl,char

         int 21h

         endm

    ;宏定义完成

 

    ;宏 显示字符串

dispmsg   macro message

          mov ah,9

          lea dx,message

          int 21h

          endm

    ;宏定义完成

 

    ;宏 显示十六进制数的四位

disphex   macro hexdata

          local disphex1

          push ax

          push bx

          push cx

          push dx

          mov bx,hexdata

          mov cx,0404h

disphex1: rol bx,cl

          mov al,bl

          and al,0fh

          call htoasc

          dispchar al

          dec ch

          jnz disphex1

          pop dx

          pop cx

          pop bx

          pop ax

          endm

    ;宏定义完成

    

    

    mov cx,lengthof buf

    

    lea si, buf

    lea di, res

    ;disphex word ptr [si]

again:

    mov al,byte ptr [si]

    call bcdto2

    ;disphex ax

    mov byte ptr [di],al

    inc si

    inc di

    loop again

    

    disphex word ptr res

           

    MOV AH,4CH

    INT 21H

    

    ;BCD转二进制

 bcdto2 proc

     push cx

     mov ah,0h

     mov bl,10h

     div bl

     mov dl,ah

     mov bl,10

     mul bl

     add al,dl

     pop cx

     ret

 bcdto2 endp

    

 ;子程序十六进制转ASCII

 HTOASC proc

        push bx

        mov bx,offset ASCII

        and al,0fh

        xlat ASCII

        pop bx

        ret

ASCII db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h

      db 41h,42h,43h,44h,45h,46h

HTOASC  endp    

CODES ENDS

    END START


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值