这是一个bcd码转ASCII的.
----------------------
BCD码,本身就是十进制数,不用转换,也无法转换;
这是一个BCD码转ASCII的程序。
DSEG SEGMENT
BCD DB 86H
ASCLL DB 2 DUP(0)
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG ;原本DS DSEG间少了冒号:
START: MOV AX ,DSEG
MOV DS ,AX
MOV AL,BCD
AND AL,0FH
ADD AL,30H
MOV ASCLL+1,AL
MOV AL,BCD
MOV CL,4
SHR AL,CL
add al,30h ;少了这句
MOV ASCLL,AL
;------可以用一下循环来验证ASCII是否正确
mov ah,02h
mov cx,02
lea di,ascll
l1: mov dl,[di]
int 21h
inc di
loop l1
;---------------------
MOV AH,4CH
INT 21H
CSEG ENDS
END START
你的程序应该是将BCD码转化成ASCII代码,以便之后输出吧!
如果是这样,那应该改成
SHR AL,CL
ADD AL,30H
MOV ASCII,AL
另外,你的开头
ASSUME CS:CSEG,DS:DSEG
你少写了一个冒号