Assembly 如何在控制台而不是ascii中显示十进制值

Assembly 如何在控制台而不是ascii中显示十进制值,assembly,x86,ascii,Assembly,X86,Ascii,我刚开始组装,在显示十进制值时遇到问题 我有以下代码: mov ah,09h mov al,[0fcbh] mov bh,0 mov bl,0fh mov cx,0001h int 10h 我分配给内存位置的数据0fcbh=55。我想显示55本身,而不是“U”(这是ascii中55的等效字符)。有人可以帮忙吗?以前已经有人问过这个问题。参见例如,代码应该是什么?在我对所链接问题的回答中有代码。在打印值时,我将can更改为mov-ah,09h-mov-dx,[0fcbh]int-21h,但它显示

我刚开始组装,在显示十进制值时遇到问题

我有以下代码:

mov ah,09h
mov al,[0fcbh]
mov bh,0
mov bl,0fh
mov cx,0001h
int 10h

我分配给内存位置的数据
0fcbh=55
。我想显示
55
本身,而不是
“U”
(这是
ascii
55
的等效字符)。有人可以帮忙吗?

以前已经有人问过这个问题。参见例如,代码应该是什么?在我对所链接问题的回答中有代码。在打印值时,我将can更改为
mov-ah,09h-mov-dx,[0fcbh]int-21h
,但它显示不同类型的字符…您不能直接打印数字。您必须首先将它们转换为字符串;我在回答我链接的问题时展示了如何做。
.MODEL SMALL
.STACK 100H
.DATA

MSG1 DB 13,10,"ENTER 1ST NUMBER : $"
MSG2 DB 13,10,"ENTER 2ND NUMBER $"
ADDI DB 13,10,"PRESS 1 FOR ADDITION  $" 

SUBS DB 13,10,"PRESS 2 FOR SUBSTRACTION ? $"
MULT DB 13,10,"PRESS 3 FOR MULTIPLICATION ? $"
DIVI DB 13,10,"PRESS 4 FOR DIVISION ? $"
INVALID DB 13,10,"INVALID NUMBER  $"  
AG   DB 13,10,"WANT TO CALCULATE AGAIN ?? IF YES PRESS Y ELSE  N $" 
PROCESS DB '?'
.CODE



MAIN PROC

    MOV AX,@DATA
    MOV DS,AX 
    AGAIN:          
    MOV AH,2
    MOV DL,13
    INT 21H
    MOV DL,10
    INT 21H

    MOV AH,9
    LEA DX,ADDI
    INT 21H 

    LEA DX,SUBS
    INT 21H

    LEA DX,MULT
    INT 21H

    LEA DX,DIVI
    INT 21H

    MOV AH,1
    INT 21H
    MOV PROCESS,AL

    CMP PROCESS,'1'
    JE ADDITION    

    CMP PROCESS,'2'
    JE SUBSTRACTION 

    CMP PROCESS,'3'
    JE MULTIPLY  

    CMP PROCESS,'4'
    JE DIVISION 

    JNE EXIT 


    ADDITION:
    MOV AH,9

    LEA DX,MSG1
    INT 21H 
    XOR BX,BX
    MOV AH,1
    INT 21H  



    @INPUT:

    CMP AL, 0DH
    JE NEXTNUM
    CMP AL, 30H                 
    JL @ERROR                    

    CMP AL, 39H                 
    JG @ERROR                    

    AND AX, 000FH               

    PUSH AX                      

    MOV AX, 10                   
    MUL BX             
    MOV BX, AX             
    POP AX                   
    ADD BX, AX             
    MOV AH, 1               
    INT 21H
    CMP AL,13
    JE NEXTNUM                          
    JNE @INPUT                   

    @ERROR:
    MOV AH,9
    LEA DX,INVALID
    JMP EXIT

    NEXTNUM:
    MOV AH,9

    LEA DX,MSG2
    INT 21H 
    XOR CX,CX
    XOR AX,AX
    MOV AH,1
    INT 21H 

    INP:                                       
    AND AX,15              
    PUSH AX                      
    MOV AX, 10                
    MUL CX                    
    MOV CX, AX                 
    POP AX                      
    ADD CX, AX  
    MOV AH, 1                  
    INT 21H
    CMP AL,13
    JE PR                                
    JNE INP 


    PR:
    CMP PROCESS,'1'
    JE OUTSUM

    CMP PROCESS,'2'
    JE OUTSUB

    CMP PROCESS,'3'
    JE OUTMUL

    CMP PROCESS,'4'
    JE OUTDIV


    OUTSUM:   
    ADD BX,CX
    JMP EXIT

    OUTSUB:
    SUB BX,CX
    JMP EXIT

    OUTMUL:  
    MOV AX,CX
    MUL BX   
    MOV BX,AX    
    JMP EXIT

    OUTDIV:

    MOV AX,BX
    DIV CX 
    MOV BX,AX
    JMP EXIT















    SUBSTRACTION:
    MOV AH,9

    LEA DX,MSG1
    INT 21H 
    XOR BX,BX
    MOV AH,1
    INT 21H

    JMP @INPUT







    MULTIPLY:

    MOV AH,9

    LEA DX,MSG1
    INT 21H 
    XOR BX,BX
    MOV AH,1
    INT 21H

    JMP @INPUT





    DIVISION:

    MOV AH,9

    LEA DX,MSG1
    INT 21H 
    XOR BX,BX
    MOV AH,1
    INT 21H

    JMP @INPUT



    EXIT:
    MOV AH,9
    LEA DX,AG
    INT 21H
    MOV AH,1
    INT 21H
    CMP AL,'Y'
    JE AGAIN  

    MOV AH,4CH
    INT 21H

    MAIN ENDP
END MAIN