首页 > 解决方案 > 调用 readHex 值不等待用户输入

问题描述

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

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

标签: assemblyx86

解决方案


所以我需要将我的缓冲区大小添加到 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

推荐阅读