有没有办法在汇编中的一行显示循环?

时间:2017-03-23 04:49:32

标签: loops assembly x86 masm irvine32

所以我正在尝试获得一个循环来显示五次而不需要换行。具体来说,我想显示单词" Loop"一行5次," LoopLoopLoopLoopLoop。"我可以很容易地在单独的行上显示它们,它似乎自动地自动转到一个新的行。我对汇编语言很陌生,所以如果有人能解释这里发生了什么,那将是一个巨大的帮助 这是我的代码:

INCLUDE Irvine32.inc
.data
myMessageOne BYTE "Loop",0dh,0ah,0
.code
main PROC
    call Clrscr
    mov edx, OFFSET myMessageOne
    mov ecx, 5
myloopOne:
    call WriteString
    loop myloopOne
    call DumpRegs
    exit

打印出来:

  

循环
  环
  环
  环
  环

但我需要:

  

LoopLoopLoopLoopLoop

我尝试过使用jmp尝试将其移回到线路,但它不起作用。我不知道太多其他命令和所有我试图找到解决方案的东西似乎都是寻求新线帮助的人,这与我需要帮助的完全相反。我非常感谢任何提示和帮助,因为我希望更好地了解我需要做什么。

另外,我使用的是Microsoft Visual C ++ 2010 Express。我的理解是,你使用的程序在装配中更重要。

1 个答案:

答案 0 :(得分:1)

只要CR / LF是你的字符串的一部分,它就会每次都显示出来。 删除它,然后再发一条消息:

INCLUDE Irvine32.inc
.data
myMessageOne BYTE "Loop",0
str_crlf     BYTE 0dh,0ah,0

.code
main PROC
    call Clrscr

; write 5 "loop"s 
    mov edx, OFFSET myMessageOne     
    mov ecx, 5
myloopOne:
    call WriteString
    loop myloopOne

; and then the newline
    mov edx, OFFSET str_crlf
    call WriteString

    call DumpRegs
    exit