2013-12-11 56 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