|
Thursday, 31 December 2009 18:23 |
|
There are no translations available.
Assembler label, jumps og variables
En kort forklaring på label, jumps og variables.
Labels:
Vert brukt til å merke delar av koden noko som gir oss muligheten til å finne igjen starten på en gitt kodeseksjon.
I assembler er en label et navn etterfulgt av et kolon. Vi kan ikkje ha labelar med samme navn, og navna kan heller ikkje bestå av reserverte ord. Men ellers står vi ganske fritt til å velge navn.
Jumps:
Vert som oftast brukt i forbindelse med ei sammenligning, og kan sjåast på som en if konstruksjon. Et hopp startar nesten alltid med en CMP instruksjon som sammenlignar verdiar. Dersom to verdiar er like vert et av CPU flagga (Zero flagg) satt.
JMP: En instruksjon som tar en operand, nemlig adressa som den skal hoppe til, eller evt den labelen som den skal til JZ: En avledning av JMP, men vert utført kun dersom zero flagget er satt
JNZ: Er det motsatte av JZ, vert utført kun dersom zero flagget ikkje er satt CMP: Sammenligner to verdiar. Dersom verdiane er like vert zero flagget satt
Eksempel på en if konstruksjon:
start: ; Label
;Les inn char
mov ah, 08
int 21h
;Sjekkar om innlest er lik ESC (som har ascii verdi 27)
cmp al, 27
;Hoppar dersom brukar ikkje tastar ESC
jnz er_ikkje_escape
;Dersom brukar tasta ESC
er_escape: ; Label
;Skriv ut 'E' 'S' 'C'
mov ah, 02
mov dl, "E"
int 21h
mov dl, "S"
int 21h
mov dl, "C"
int 21h
;Dersom brukar ikkje tasta ESC
er_ikkje_escape: ; Label
mov ah4c
int 21h
Variabler og strengar:
Variablar deklarerast med nøkkelorda db og dw
DB (Define byte): Setter av 8 bitar til variabelen DW (Define word): Setter av 16 bitar til variabelen Når ein har satt av plass til ein variabel kan den brukast på samme måten som eit vanlig register. Stringar definerast ved på samme måten som variablar
Eksempel på 4 variablar:
en_variabel db 10 to_variabel db "a" tre_variabel db "En streng må slutte med $" msg db "Grei måte å gjere det på. ",10, 13, "$"
Den nederste måten er en grei måte å definere en streng på. Tala 10 (CR) og 13 (LF) fortell assembleren at vi vil ha ei ny line etter setninga er skrevet ut. Det er også greit å ha i minnet at alle strengar må slutte med "$", dersom dette tegnet manglar vil vi berre få ut tulletegn i lange baner.
|
|
Last Updated on Sunday, 18 July 2010 22:57 |