2013-12-11 13 views
1

我已经建立了一个汇编程序,当我尝试循环的标签,编译(0失误),并执行,我得到这个错误:Loop语句

ntvdm cpu has encountered an illegal instruction 

所以我删除代码进入标签,但我仍然得到这个错误! 如果我删除循环语句,程序工作

没有循环语句下面的sintax?

mov cx,5 
    loop foo 
    ;execute foo 5 times 
+0

'foo:'在哪里? – SubSevn

+0

foo:在循环语句中 – donadev

+0

如果我正确记得它应该是之前(例如http://stackoverflow.com/questions/5849606/tasm-embedded-loops)。 – SubSevn

回答

2

“foo”在哪里?

应该是这样的:

mov cx,5 
foo: 
;do stuff 
loop foo 
+0

foo:在循环语句 – donadev

+0

那就是你的问题了。这不是它的工作原理。 :-) –

+0

“循环”是完全可能的,尽管这不是最常见的情况。 – Michael

0

循环的替代方法是jmp语句,它有多种类型如:JE,JG,JNZ,JZ e.t.c.

mov cx,5;let you want to loop 5 time, move 5 in cx 
jmp foo; jumping to foo 

;some stuff if you want 

foo: 

    ;do some thing you want 

dec cx;decrease cx by 1 
jnz foo; jump to foo if value of cx is not zero 

;当值为零时,循环将结束,在循环之后你想要做的任何事情将会在这里出现

+0

我用这个解决方案.. – donadev