Assembler är ett sätt att uttrycka maskinkoden för en dators processor på ett sätt som människor kan läsa och skriva. Maskinkod består av mönster av ettor och nollor och är i allmänhet svår för programmerare att använda. Assembler tillåter att bitmönstren istället skrivs med bokstäver och siffror, så kallade mnemoniska symboler, vilket väsentligen underlättar programmerarens arbete. Vidare tillhandahåller assembler möjligheten att använda symboliska namn för minnesadresser.
Det finns assemblerspråk definierade för alla processorer, men varje typ av processor har sin egen assembler. Detta gör att det i allmänhet inte går att använda ett assemblerprogram skrivet för en processor på en annan typ av processor. För att göra det möjligt att flytta program mellan olika processortyper används istället ett högnivåspråk.
En kompilator för ett högnivåspråk översätter programkod skriven i språket till processorspecifik maskinkod och genom att använda olika kompilatorer kan samma högnivåkod användas för olika processortyper.
Det förekommer även att kompilatorn översätter högnivåspråket till en mellannivå, intermediärkod, som vid körningsögonblicket interpreteras. En sådan mellannivå tar ofta mindre plats att lagra, och gör det möjligt att ha maskinneutral körbar kod. Välkända exempel på detta är P-kod för Pascal, och Byte-kod för Java.
Program skrivna i assembler översätts med en assemblator till maskinkod. Maskinkoden, som är binärkod, kan via ett deassemblerande program för processorn direkt läsas ut som assemblerkod vilket normalt inte är möjligt i högnivåspråk. Nackdelen är att läsbarheten är i det närmaste noll då alla hoppadresser vanligtvis listas med nummer, exempel Label_0, Label_1 o.s.v, och variablerna med deras index i dataminnet, alternativt som exempelvis var_0, var_1 o.s.v. Det brukar medföra att om man vill veta programmets funktion så måste man följa koden instruktion för instruktion. För att underlätta det så brukar en monitor i stället användas. Dessa har normalt en dissassemblator inbyggd samt en "trace" funktion som exekverar en instruktion i taget och mellan dessa listar innehållet i processorregistren, stacken och liknande. Därefter inväntas användarens respons innan nästa instruktion utförs.
mov ah,9 mov dx,offset hello int 21h mov ah,4Ch int 21h hello db 'Hello, World!',0dh,0ah,'$'
lbu $t5 0($t2) nop addiu $t5 $t5 1 nop sb $t5 0($t2) sw $t2 4($s1) ; store $gp sw $t3 8($s1) ; store $sp sw $t4 0($s1) ; write back pcb1 sw $s2 0($s0) ; change curpcb <= pcb2 lw $k1 0($s2) ; change CP+4 lw $gp 4($s2) ; change $gp <= glob2 lw $sp 8($s2) ; change $sp nop b restore nop
Assembler (Informatik) | Assembler | Ensamblador | Programme assembleur | אסמבלר | Asembler | Ассемблер
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Assembler".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world