我需要读取输入并存储它,但输入需要超过1位数,如45或55.
我已经让它成功了,但我认为可以让它变得更好。我是这样做的:
mov ah, 1
int 21h
mov ah, 0
mov cl, 0Ah
sub al, 30h ;
mul cl
mov bx, ax
mov ah, 1
int 21h
sub al, 30h ; '0'
add bx, ax
mov temp_val, bl
retn
有可能吗?我不能以其他方式做到这一点。
答案 0 :(得分:2)
您的代码中存在一些问题
mov ah, 1
int 21h
mov ah, 0 ; <-- Here MOV AH,0 is useless because ...
mov cl, 0Ah
sub al, 30h
mul cl ; <-- ... MUL changes AH anyway
mov bx, ax
mov ah, 1
int 21h
sub al, 30h
; <-- Here you forgot MOV AH,0 so you can ...
add bx, ax ; <-- ... correctly add AX to BX
但如果你需要的只是一个2个字符的输入,请考虑以下
mov ah, 1
int 21h
mov cl, 0Ah
sub al, 30h
mul cl
mov bl, al
mov ah, 1
int 21h
sub al, 30h
add bl, al ; Largest number is 99 so it fits in BL
甚至不使用MUL指令和更短的
mov ah, 1
int 21h
mov bl, al
mov ah, 1
int 21h
mov ah,bl
sub ax, 3030h
aad
mov bl, al ; Largest number is 99 so it fits in BL