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
--------------------- 
作者:D??? 
来源:CSDN 
原文:https://blog.csdn.net/qq_31424383/article/details/53180398 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值