调用readHex值不等待用户输入

时间:2018-10-05 01:03:10

标签: assembly x86

我正在编写一个程序来提示用户输入句子,一个十六进制值表示要从该句子中删除的字符数,另一个第二个十六进制值表示要从中删除的位置。我遇到一个问题,提示用户输入第一个十六进制值,由于某种原因,汇编器没有在等待用户输入值。提示句子正在起作用(正在等待用户),这是输入十六进制值的最后一条指令。为什么会这样呢?

String1 BYTE "Enter a sentence: ", 0
String2 BYTE "Please enter the number of characters to delete(in 
hexidecimal): ", 0
String3 BYTE "Please enter to position from where to start deleting(in 
hexidecimal): ", 0
StringIn BYTE 50 DUP (?)
hexA WORD ?
hexB WORD ?

.code
main proc
call DeleteString

main endp

DeleteString PROC
mov edx, OFFSET String1
call WriteString
mov edx, OFFSET StringIn
call ReadString ;this instruction is waiting for user input
mov edx, OFFSET String2
call WriteString
call ReadHex ;this is my issue, it is being passed over by assembler
mov hexA, ax
mov al, 0Ah
call WriteChar
mov al, 0Dh
call WriteChar
mov edx, OFFSET String3
call WriteString
call ReadHex ;this instruction is waiting for user input
mov hexB, ax

DeleteString ENDP
end main

1 个答案:

答案 0 :(得分:1)

所以我需要将缓冲区大小添加到ECX。现在工作!

mov edx, OFFSET String1
call WriteString
mov ecx, 50 ;######## THIS WAS MISSING ########
mov edx, OFFSET StringIn
call ReadString

mov edx, OFFSET String2
call WriteString
call ReadHex
mov hexA, eax
mov edx, OFFSET String3
call WriteString
call ReadHex
mov hexB, eax
相关问题