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