Asembler X86/Łączenie z językami wysokiego poziomu/Wstawki
Z Wikibooks, biblioteki wolnych podręczników.
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, 0x04 and ah, 0x0F 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.