Asembler x86/Łączenie z językami wysokiego poziomu/Wstawki
Przedstawiam sposób wprowadzania wstawek asemblerowych do języków wysokiego poziomu. Przykładowa funkcja w C/C++:
void ByteToHalfByte(BYTE* buf, int pos, BYTE byte_data)
{
buf[pos] = (byte_data >> 4);
buf[pos+1] = (byte_data & 0x0F);
}
Realizacja w asemblerze jako wstawka w kod C/C++:
void ByteToHalfByte(BYTE* buf, int pos, BYTE byte_data)
{
asm
{
mov al, byte_data
mov ah, al
shr al, 04h
and ah, 0Fh
mov ecx, buf
mov edx, pos
mov [ecx+edx], al
mov [ecx+edx+0x01], ah
}
}
Jest to składnia Intel, stosowana w kompilatorach Microsoftu i Borlanda. W GCC stosuje się notację AT&T.