【发布时间】:2012-09-20 01:21:20
【问题描述】:
嗨,我想在 Nasm 中创建一个循环。我有循环工作,但想在它循环时更改字符串,似乎无法让它工作。
我有这个工作:
main:
mov ebx,0 ; set ebx to 0
myloop: ;
inc ebx ;
mov [msg], 2Ah ; Immediate move * to msg
mov eax, 2Ah ;
push ecx ; save ecx as printf uses it
push OFFSET msg ; parameter used by printf
call printf ; print string msg
add esp, 4 ; remove pointer to msg
pop ecx ; restore ecx
cmp ebx,[len] ;
jl myloop ;
ret
.DATA
msg db "Hello, World+!", 0Ah, 0 ; 0A cariage return
; 0 end of string
star BYTE 2Ah ; 2A (hex) = Ascii *
len equ $ - (msg +1) ; length of string msg
end
它会输出 *ello, World!正确的次数,但我希望它输出这个
*ello, World!
**llo, World!
***lo, World!
****o, World!
等等。
谁能帮帮我。
我还必须注意,它链接到 C 库以使用 printf 进行输出。
【问题讨论】:
-
这个 NASM 怎么样?更像 MASM
-
Nasm 和 Masm 几乎是一回事?
-
很抱歉,它们就像白天和黑夜一样不同!
-
好吧,对不起,我是新手,被告知这是 Nasm。如果你有一个 Masm 是这样做的,我很乐意尝试。