我很难搞清楚如何从数据库字符串中打印字符。所以我要说我有
str1 DB "hello"
tmp DB ?
我要打印'e'char。
mov ah, [str1 +1*1]
mov tmp, ah
Invoke StdOut, addr tmp
然而,这段代码没有打印任何东西。我想知道我做错了什么。谢谢!
答案 0 :(得分:1)
您只为该地址定义了一个字节(在tmp和使用啊)。这在Windows中无法运行(我假设它是masm32标签和Invoke所需的平台)。地址应至少为16位,在现代版本的Windows中为32位或64位。
答案 1 :(得分:1)
str1 db 'hello',0 ;6 Bytes
tmp dd 0 ;DWORD
...
mov esi,offset str1 ;ESI = Source
mov edi,offset tmp ;EDI = Destination
inc esi ;Skip first letter
lodsb ;Load byte from ESI to AL
stosb ;Store AL in EDI
invoke StdOut,addr tmp ;Output
答案 2 :(得分:0)
您必须将代码构建为控制台应用程序。否则你不会打印任何东西。 查看您的项目/构建选项。