我目前正在學習英特爾x86彙編,並且在嘗試構建循環10次的簡單循環時遇到了問題。它應該在10個循環後停止,但它會一直持續下去。英特爾x86彙編中的循環永遠持續
這是我使用的代碼:
section .data
msg db "Hello, World!", 0x0a
len equ $-msg
section .text
global _start
_start:
mov cx, 10 ; loop counter
_loop_start:
mov ebx, 0x01
mov ecx, msg
mov edx, len
mov eax, 0x04
int 0x80
dec cx
cmp cx, 0
jge _loop_start
_done:
mov ebx, 0x00
mov eax, 0x01
int 0x80
之前嘗試寫這樣的代碼,我看着this tutorial做簡單的算術。
予編譯它像這樣:
nasm -f elf64 test.s -o test.o
和鏈路這樣的:預先
ld -s -o test_exec test.o
謝謝, Anickyan
啊。謝謝!我感覺有什麼東西在覆蓋它,但我不知道cx和ecx是一個(有點) – Anickyan 2013-04-26 07:22:25
@Anickyan [This](http://upload.wikimedia.org/wikipedia/commons/4/41/Table_of_x86_Registers .png)圖像會給你一個'寄存器層次結構'的概念。 – Aaron 2013-04-26 12:07:47
@ JesusPlusPlus11漂亮的圖像,但它缺少一些x86-64寄存器:'sil','dil','bpl','spl'。忽略這些子寄存器與包含其他x86-64通用寄存器不一致。它**完全錯誤**將'sp'和'esp'作爲'rip'的子寄存器! – nrz 2013-04-26 14:33:40