注册 登录
编程论坛 汇编论坛

如何将字数据转换为非压缩的BCD数

a392271275 发布于 2010-05-18 21:19, 581 次点击
在DAT单元中存放着一个字数据,编程将其转换为非压缩的BCD数,结果存入BUF开始的内存单元  
琢磨半天了  还是想不出来
-a100
13C0:0100 jmp 10e
13C0:0102 db '123456'
13C0:0108 db '      '
13C0:010E mov cx,6
13C0:0111 mov si,102
13C0:0114 mov di,108
13C0:0117 mov al,[si]
13C0:0119 and al,0f
13C0:011B mov [di],al
13C0:011D inc si
13C0:011E inc di
13C0:011F loop 117
13C0:0121 int 20
13C0:0123
-g=100

Program terminated normally
-d102 10f
13C0:0100        31 32 33 34 35 36-01 02 03 04 05 06 B9 06     123456........
这是一个朋友写给我的,看不懂···
希望大家能给我详细代码让我参考一下! 谢谢了
2 回复
#2
ONEPROBLEM2010-05-18 22:13
呵呵...程序不是已经在里面了吗?
jmp 10e
 :0102 db '123456'
 :0108 db '      '
 :010e mov cx,6
 mov si,102
 mov di,108
 :0117 mov al,[si]
and al,0f
 mov [di],al
 inc si
inc di
 loop 117
 int 20
#3
a3922712752010-05-19 12:04
这么写对吗?
这么写对吗?
DATAS SEGMENT
  data db '123456'
  buf db 6 dup()
   
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    mov cx,6
    lea si,data
    lea di,buf
a: mov al,[si]
    and al,0fh
    mov [di],al
    inc si
    inc di
    loop a
   
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START
1