我想教自己大会(出于对学习的好奇和兴趣),并开发了一些代码,从五到0.这就是它所做的一切。我想知道下面的代码是否有效?装配数量为零
.386
.model flat, stdcall
.data
i dd 5
.code
main:
MOV cx, 5
lp:
LOOP lp
MOVZX eax, cx
RET
END main
请注意,我用的是MOVZX
指令的cx
值复制到eax
(什么我的编译器使用返回)。 我这样做是因为我的程序不会组装,如果我只是使用MOV
。是否使用MOVZX
渴望?还是有更有效的方法我应该这样做?
你会注意到在我的代码中,我有i dd 5
我原来的计划是MOV cx, i
但我的编译器拒绝汇编,当我尝试。 (MOVSX
产生相同的结果)。所以我的第二个问题是,如何将i
的值移入cx
寄存器?
酷,谢谢。我想我应该看看可用于我的不同的寄存器:) –
寄存器根据它们的宽度有不同的名称。没有前缀的寄存器是16位宽。带有'E'前缀的寄存器是32位,'R'寄存器是64位。最重要的是,具有相同基本名称的寄存器共享低位位。如果您将某些东西加载到EAX中,然后加载到AX中,EAX的低16位将会改变。 – Wug