可以用汇编管理以下寄存器:
32 位寄存器: EAX EBX ECX EDX ESP EBP ESI EDI
16 位寄存器: AX BX CX DX SP BP SI DI
8 位寄存器 : AL BL CL DL AH BH CH DH
16 位段寄存器: CS DS SS ES 以及协处理器寄存器堆栈: ST
加法计算
void __fastcall TForm3::Button5Click(TObject *Sender)
{
int a=100,b=245,c=0;
asm
{
mov eax,a;
mov ebx,b;
add ebx,eax;
mov c,EBX;
}
Caption = c;
}
CPU 提供了诸多寄存器, 但在 Delphi 的过程和函数中, 只有 EAX ECX EDX 三个寄存器可以自由使用;
如果改变了其他寄存器, 在过程和函数结束前要给恢复.
过程和函数默认的调用约定是 Register , 前三个参数通过寄存器传递, 其他参数存与栈.
它所指的三个寄存器就应该是 EAX ECX EDX 了.
看资料介绍应该是: EAX 先接受第一个参数再接受返回值, ECX EDX 接受后面两个参数.
但我不能进行完整的测试.
int a;
mov eax,&a; 这里&可以省略,如果变量名和寄存器重名了&就不能省略了