输入十进制转为二进制然后显示出来的程序不得结果!/
这个程序是个输入十进制转为二进制然后显示出来的程序帮我看呀 没有错不过不得结果! DATA SEGMENT BUF0 DB 'PLEASE INPUT NMUBER:',0DH,0AH,'$' BUFI db 7 db ? db 7 dup(0) ;输入缓冲区 BUFER DB 0DH,0AH,'$' DATA ENDS STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,BUF0 ;提显 mov AH,9 int 21h lea DX,BUFI ;-------开始输入-------------------- MOV AH,10 INT 21H MOV CH,BUFI+1;输入的个数 lea DI,BUFI+2 ;的偏移地址 CALL CHANGE;转换 lea dx,bufer mov ah,9 int 21h CALL DISPBXB ;显示二进制子程序 MOV AH,4CH INT 21H CHANGE PROC NEAR;------转换子程序---------------------- ;push ds ;mov ax,0 ;push ax ;保护现场 ;mov ax,data ; mov ds,ax ;送段地址 lea di,BUFI+2;instr的偏移地址 mov ax,0 next: mov bl,[di];送要转换数的数 SUB BL,30H mov bh,0 mov si,ax MOV CL,3 shl ax,CL ;*8 shl si,1 ;*2 add ax,si ;10*p add ax,bx ;10*p+Q dec CH;下一个个数 jz exit;退出子程序 inc di;指向下一个数 jmp next exit: ret CHANGE endp DISPBXB PROC NEAR;----------显示二进制----------------- MOV CX,16 LP: ROL AX,1 JC Data1 MOV DL,30H JMP OUTP Data1:MOV DL,31H OUTP:mov AH,2 INT 21H LOOP LP MOV DL,'B' ;-----显示B------- MOV AH,2 INT 21H RET DISPBXB ENDP CODE ENDS END START |