请赐教,8086汇编,很大的二进制数怎么转为十进制输出?

49 EEBC 961E D279 B02B 1EF4 F28D 19A8 4F59 73A1 D2C7 8000 0000 0000
比如这个数,16位除法怎么操作能分离出每一个十进制位?
更新:参考老外的算法,已经解决了

ASCII码表示的十进制数转换为二进制数并显示
将SI指向的缓冲区BUF中保存的五位ASCII码十进制数(0-65535)转换成对应的二进制数并存放在DX中,再以二进制形式显示。
DATA SEGMENT
BUF DB '25092'
C DB 'B',0DH,0AH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUF ;将BUF的地址放到SI中
MOV DX,0 ;清DX为0;
MOV CX,5 ;置循环次数为5
MOV BX,10
GET_ASC: MOV AL,[SI] ;取出一个字符
CMP AL,'0' ;必须保证5个数都是十进制数(0-9)
JB EXIT
CMP AL,'9'
JA EXIT ;判断是否是“0”-“9”
DEC_BIN: SUB AL,30H ;减30H变二进制数
MOV AH,0
PUSH AX ;转换为对应的数并置于AX中,转存堆栈
MOV AX,DX
MUL BX ;AX内容乘10
MOV DX,AX
POP AX
ADD DX,AX ;(DX)←(DX) * 10 + (AX)
INC SI ;使指针SI指向下一个字符
DEC CX
JNZ GET_ASC
MOV BX,DX ;取要显示的字符到BL中
MOV CL,16 ;移16次,最大数64000
NEXT: MOV DX,0
SAL BX,1
RCL DX,1
ADD DX,30H
MOV AH,2
INT 21H
DEC CL
JNE NEXT
LEA DX,C ;取C的地址,以便显示单位B与回车换行
MOV AH,9
INT 21H
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
现在的的话还蛮多的但是非要说哪一个好玩的话就没有什么标准了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-03-21
还晒有很大的机会
第2个回答  2022-04-14
题主是怎么解决这个问题的呀,我也碰到这个问题了
相似回答