assembly - 调用 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
解决方案
所以我需要将我的缓冲区大小添加到 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
推荐阅读
- azure - 管道 Azure Devops 中的“术语 'Set-AzureRmDataFactoryV2' 未被识别为 cmdlet 的名称”错误
- python - 'Access-Control-Allow-Origin' 需要多个值
- xamarin.ios - 如何修复 UICollectionView - 所有单元格消失 - Xamarin ios
- c++ - 如何写入 YML 格式并使用 OpenCV 和 C++ 再次读取?
- django - 如何使用验证码对 Django 会话进行身份验证?
- wix - Windows 安装程序 - 以管理员身份删除
- reactjs - 如何将反应组件用作函数?
- c# - Sage BOI - 在 AR_Customer_bus 上调用 NewObject 时出现错误 200。我的目标是使用 C# 通过 BOI 创建一个新客户
- python - 树莓派人数统计到谷歌表格
- android - 如何处理安卓应用的多个深层链接