如何在汇编中获取字符串输入
How to take string input in Assembly
我尝试在论坛中搜索答案,但我得到的只是输入 16 位或 nasm。我尝试使用
push ecx
push edx
mov edx, offset myVar
mov ecx, sizeof myVar
call readstring
但它没有像我预期的那样工作。我正在尝试将 string/character 作为输入并将其递增(例如从 A 到 B)并将其打印在屏幕上。我的代码:
include irvine32.inc
.data
myVar BYTE ?
myVar2 BYTE ?
shifts DWORD 3
.code
main proc
push ecx
push edx
mov edx, offset myVar
mov ecx, sizeof myVar
call readstring
mov esi, offset [myVar]
mov al,[esi]
mov myVar2, al
mov eax, DWORD PTR myVar2
add eax, shifts
mov DWORD PTR myVar2,eax
mov edx, offset myVar2
call writestring
exit
main endp
end main
如果我用一个字符初始化 myVar 并递增它,代码工作正常但是(也向结果添加一个垃圾 ascii 字符我不知道为什么)所以我知道问题在于输入。
抱歉,Book 有答案。
.data
buffer BYTE 21 DUP(0) ; input buffer
byteCount DWORD ? ; holds counter
.code
mov edx,OFFSET buffer ; point to the buffer
mov ecx,SIZEOF buffer ; specify max characters
call ReadString ; input the string
mov byteCount,eax ; number of characters
我尝试在论坛中搜索答案,但我得到的只是输入 16 位或 nasm。我尝试使用
push ecx
push edx
mov edx, offset myVar
mov ecx, sizeof myVar
call readstring
但它没有像我预期的那样工作。我正在尝试将 string/character 作为输入并将其递增(例如从 A 到 B)并将其打印在屏幕上。我的代码:
include irvine32.inc
.data
myVar BYTE ?
myVar2 BYTE ?
shifts DWORD 3
.code
main proc
push ecx
push edx
mov edx, offset myVar
mov ecx, sizeof myVar
call readstring
mov esi, offset [myVar]
mov al,[esi]
mov myVar2, al
mov eax, DWORD PTR myVar2
add eax, shifts
mov DWORD PTR myVar2,eax
mov edx, offset myVar2
call writestring
exit
main endp
end main
如果我用一个字符初始化 myVar 并递增它,代码工作正常但是(也向结果添加一个垃圾 ascii 字符我不知道为什么)所以我知道问题在于输入。
抱歉,Book 有答案。
.data
buffer BYTE 21 DUP(0) ; input buffer
byteCount DWORD ? ; holds counter
.code
mov edx,OFFSET buffer ; point to the buffer
mov ecx,SIZEOF buffer ; specify max characters
call ReadString ; input the string
mov byteCount,eax ; number of characters