我必须提取存储在si寄存器中的数字。这是我的代码
lea si, userInput
inc si
mov bx, [si]
mov dx, [si+bx]
add dx, 30h
mov ah, 2h
int 21h
因此,我认为,如果我将硬值放在mov dx, [si+2]
之类的dx寄存器中,代码会很好地工作,但是如果尝试使用mov dx, [si+bx]
,则它无法正常工作,并且无法按预期提供输出
答案 0 :(得分:0)
假设您的 userInput 指向DOS的缓冲输入功能0Ah所需的输入结构,这些是我对修改代码的建议:
mov dx, 30h
)此字符可以表示一个(数字)数字,一个字母,一个标点符号或其他任何东西,这一事实并没有改变。您的代码将变为:
lea si, userInput
inc si
mov bl, [si] ;Number of inputted characters
mov bh, 0 ;Need to zero to be able to use the whole address-register BX next
mov dl, [si+bx] ;Retrieve the last inputted character (right before the terminating CR)
mov ah, 02h
int 21h ;Display the character