如何从数据库字符串中打印字符?

时间:2014-01-20 16:43:23

标签: assembly masm masm32

我很难搞清楚如何从数据库字符串中打印字符。所以我要说我有

str1 DB "hello"
tmp DB ?

我要打印'e'char。

mov ah, [str1 +1*1]
mov tmp, ah
Invoke StdOut, addr tmp

然而,这段代码没有打印任何东西。我想知道我做错了什么。谢谢!

3 个答案:

答案 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)

您必须将代码构建为控制台应用程序。否则你不会打印任何东西。 查看您的项目/构建选项。