主题:按照5位十进制数的形式输出BX中的值
DATAS SEGMENT
db 5 duf('0'),0ah,0dh,'$'
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
mov ax,datas
push ds
;lea AX,SubData;取子程序所用的数据区段地址
MOV bx,11d
CMP BX,0
JGE next
MOV DL,'-'
MOV AH,2
INT 21H;显示负号’-’
NEG BX;求-BX,使其值为正数
next:MOV SI,4
MOV AX,BX
MOV CX,10d
again:XOR DX,DX
IDIV CX;DX存放余数,AX存放商
ADD DX,'0'
MOV [SI],DX
DEC SI
JGE again
pop ds
XOR DX,DX
MOV AH,09h
INT 21H;调用中断21的功能9,显示DS:DX指向的字符串
MOV AH,4CH
INT 21H
CODES ENDS
END START
原题是:按照五位十进制数的形式输出bx中的值。我假设bx中是11d,上面的程序怎么总是输出0,应该是00011呀,怎么回事的?哪错了?请大虾们看看,过了就要留下痕迹呀!
db 5 duf('0'),0ah,0dh,'$'
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
mov ax,datas
push ds
;lea AX,SubData;取子程序所用的数据区段地址
MOV bx,11d
CMP BX,0
JGE next
MOV DL,'-'
MOV AH,2
INT 21H;显示负号’-’
NEG BX;求-BX,使其值为正数
next:MOV SI,4
MOV AX,BX
MOV CX,10d
again:XOR DX,DX
IDIV CX;DX存放余数,AX存放商
ADD DX,'0'
MOV [SI],DX
DEC SI
JGE again
pop ds
XOR DX,DX
MOV AH,09h
INT 21H;调用中断21的功能9,显示DS:DX指向的字符串
MOV AH,4CH
INT 21H
CODES ENDS
END START
原题是:按照五位十进制数的形式输出bx中的值。我假设bx中是11d,上面的程序怎么总是输出0,应该是00011呀,怎么回事的?哪错了?请大虾们看看,过了就要留下痕迹呀!