Assembly 如何显示两个数字的加法

Assembly 如何显示两个数字的加法,assembly,data-conversion,emu8086,Assembly,Data Conversion,Emu8086,我给出了两个输入,想把数字相加,然后显示输出。但在这里,它将ascii数字作为输出。我怎样才能解决这个问题 org 100h mov ah,1 int 21h mov bl,al int 21h mov ch,al add bl,ch mov ah,2 int 21h mov dl,10 int 21h mov dl,13 int 21h mov ah,2 int 21h mov dl,bl int 21h ret 当我输入5和5时,我希望是10,但将“j”作为输出 当我输入

我给出了两个输入,想把数字相加,然后显示输出。但在这里,它将ascii数字作为输出。我怎样才能解决这个问题

org 100h

mov ah,1
int 21h
mov bl,al

int 21h
mov ch,al

add bl,ch

mov ah,2
int 21h
mov dl,10
int 21h
mov dl,13
int 21h

mov ah,2
int 21h  
mov dl,bl
int 21h 

ret
当我输入5和5时,我希望是10,但将“j”作为输出

当我输入5和5时,我希望是10,但将“j”作为输出

当您输入这两个5时,您实际上收到的是字符而不是数字5!你需要进行转换。简单地减去48就可以了

  org 100h
  mov ah, 01h
  int 21h
  sub al, 48   ;Conversion
  mov bl, al
  mov ah, 01h
  int 21h
  sub al, 48   ;Conversion
将两个数字相加后,必须根据总和的值是否大于9将总和转换回1或2个字符

  add bl, al
  cmp bl, 10
  jb  LessThan10
  mov dl, "1"
  mov ah, 02h
  int 21h
  sub bl, 10
LessThan10:
  add bl, 48   ;Conversion
  mov dl, bl
  mov ah, 02h
  int 21h
如果要在这些操作之间输出回车符和换行符,请确保不会意外破坏后续步骤中所需的寄存器内容。因此,明智地选择寄存器和/或通过堆栈保存它们

请注意,您的代码有大量冗余的
int21h
指令更多当然不是更好

mov ah,2 int 21h mov dl,10 int 21h mov dl,13 int 21h
mov ah,2 int 21h