Har börjat kika på assembler. Vet oxå att det ska gå att bygga in i c++. Men vilket kommando använder man? använder DEV c++ Tack nu acepterar Dev c++ asm bloket men inte koden :( Det finns två syntaxer för x86-assembly: Intel och AT&T. Du har skrivit Intel-syntax, men GCC vill ha AT&T-syntax.Asseambler i c++
vill typ kunna skriva
void main()
{
asm
{
mov xxx xxx xx
}
}Sv: Asseambler i c++
asm (
"movl $0x10, %eax;"
"movl $0x20, %ebx;"
);
Dev-C++ använder GCC och där skrivs inbäddad assembly som <b>asm("kod")</b> eller <b>__asm("kod")</b>. Man använder alltså en enda sträng med assembly (flera strängar separerade med "white-space" som ovan slås ihop till en enda sträng). Använder man flera assemblyinstruktioner måste man skilja dessa åt med radbrytningar (t.ex. <b>"movl $0x10, %eax\n"</b>) eller med semikolon (som jag gjort ovan).
Sv:Asseambler i c++
hitta detta exemplet på nätet
asm(
"mov Ax,0B800h;" //startadressen för skärmminnet (i textläge)
"mov es,Ax;" //lägg startadressen i es
"xor di,di;" //nollställ di (börja vid början av skärmen)
"mov al, 65;" //65 = ascii för tecknet 'A' till al
"mov ah, 16*4+1;" //Attribut = blå text på röd bakgrund till ah.
"mov cx,2000;" //25*80 = 2000 tecken på skärmen
"rep stosw;" //skriv ax till skärmminnet och räkna upp di 2000 ggr
);
vore tacksam om nån kan hjälpa mig rätta till koden
felmedelande: To many memory reference for 'mov'Sv: Asseambler i c++
En del om skillnaden mellan de två syntaxerna: http://madchat.org/coding/asm/att-vs-intel.txt
Mer om x86-assembly: http://en.wikibooks.org/wiki/Programming:x86_assembly