【问题标题】:Nasm building a stringNasm 构建字符串
【发布时间】: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 是这样做的,我很乐意尝试。

标签: nasm masm masm32


【解决方案1】:

我不会评论它

SECTION .data
msg     db  "Hello, World+!", 0Ah, 0  
len     equ $ - msg - 2

SECTION .text 
main:
    xor     ebx, ebx
    mov     esi, msg

    push    esi
    call    printf
    add     esp, 4 
.DoStar:
    mov     byte [esi + ebx], 2Ah
    push    esi
    call    printf
    add     esp, 4 

    inc     ebx
    cmp     ebx, len
    jne     .DoStar
    ret

【讨论】:

    猜你喜欢
    • 2017-09-26
    • 1970-01-01
    • 2013-11-26
    • 1970-01-01
    • 2014-12-22
    • 1970-01-01
    • 2017-11-30
    • 2022-01-17
    • 1970-01-01
    相关资源
    最近更新 更多