DATAS SEGMENT
NUMS DB 30H,31H,41H,38H,39h,32h,33H,36H,31H ;ASCII码
NUMO DB 4 DUP(?)
DLEN =$-NUMS
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
MOV CX,DLEN
MOV SI,OFFSET NUMS ;ASCII码首地址
MOV BX,0
A1:
MOV DI,OFFSET DLEN
MOV AH,0
MOV AL,[SI]
SUB AL,30H
JC A5 ;JC进位则跳 低于30H则转A5
CMP AL,9
JNG A4 ;JNG不大于跳转 为"30~39"则转A4
A5:
INC SI ;ASCII码地址加一
JMP A1 ;转换下一个
A4:
DEC DI
MOV DX,0
MOV CX,2
DIV CX
XCHG AX,DX;数据交换
MOV [DI],AL;存入目标地址
MOV AX,DX
CMP DX,0000H
JNE A4
A2:
CMP DI,OFFSET NUMO;与目标地址的首址比较
JZ A3;等于首地址转A3,否则将剩余地址填00H 等0跳转
DEC DI
MOV AL,00H
MOV [DI],AL
JMP A2
A3:
MOV CX,4 ;循环次数
MLOOP:
MOV AL,[DI];将SI地址的数依次赋值给AL
INC DI
ADD AL,30H ;ascii码
MOV DL,AL ;输出
MOV AH,2
INT 21H
LOOP MLOOP ;循环
MOV DL,' ' ;输出
MOV AH,2
INT 21H
INC SI
INC BX
CMP BX,7
JBE A1
MOV AH,4CH
INT 21H
CODES ENDS
END START
【汇编】ASCII码转BCD码并输出
最新推荐文章于 2022-10-25 18:13:41 发布