tekst1 DB 'Hallo', 0Dh, 0Ah, '$' DB=define byte=resevere et stykke hukommelse til at holde din tekst, eller anden form for data.
'hallo'=siger sig selv, skriver hallo i hukommelsen.
0Dh= 13 decimalt, som er lig med en return, som vil sige at den sætter corsuren helt til venstre
0Ah=10 decimalt, som er lig med et line feed, som vil sige at den hopper til næste linje.
alså 0Dh, 0Ah=linje skift ;)
'$' er sandsynlig vis det karakter som personen der har lavet rutinen bruger til at angive at hans tekst er slut.
btw: jeg tror nu heller ikke det har så meget med ASP at gøre, men OK der er ikke nogle ASM kategori, så et eller andet sted skulle du jo smide dit spørgmål ;)
tekst1 bliver til 8 bytes i hukommelsen. Startende med 'H' og sluttende med '$'
Men sjovere er:
MOV AH,9 MOV DX,OFFSET tekst1 INT 21h
Det er nemlig et "gammelt" kald til en DOS rutine. Den har nummer 9, og det tal gemmes i registret AH - det er konventionen. Denne funktion får så adressen på teksten med i DX-registret. Og det den gør, og har gjort lige siden DOS blev opfundet, er at udskrive teksten indtil, men ikke med, det første $-tegn den møder. Skør idé, men det virker.
og INT 21H er måden man kalder en DOS rutine på. Det svarer fuldstændigt til et interrupt fre en ekstern enhed, men bliver altså lavet i et program. Det der sker er så bestemt af indholdet af diverse registre.
De først par K af lageret på en go' gammel 8086-er (og også i de nye) er afsat til interruptvektorer. 4 bytes til hver. De første 4 bytes til interrupt 0, de næste 4 til nummer 1, osv. Nogle af disse er koblet til ydre enheder (tastatur, disk, ur), og nogle er ikke. Nummer 21H er ikke.
Når der sker en interrupt med det pågældende nummer hoppes til den pågældende adresse, hvor der så er en interrupt-handler-rutine.
Nummer 21H bliver ikke brugt til hardware. Men DOS sætter en adresse ind i den allivel. Og kommer man til den adresse kan man altså udføre rutiner i DOS (læse filer, skrive på skærmen osv.)
Det er meget bedre en at skulle hoppe til adressen direkte fra et program, for den præcise adresse afhænger af DOS version, og diverse drivere man har.
Undskyld erikjacobsen, du ar jo sådan set svaret det det sidste også! Men gider du ikke at forklare det "like i was a ten year old!" Også lave det til en svar?!
Forstår jeg det rigtig hvis jeg så mener; At når interrupptet bliver kaldet bliver der kigget på registret AH, og fordi den er 9, ved den er der skal skrives, læses osv. og da da dx er lige offset værdien af teksten, bliver den udskrevet?!
Ja, undskyld jeg lyder dum! Men jeg er ved at læse til eksamen, og skal lige ahve helt styr over nogle eksempler som vores lærer har lavet! Andet er det sådan set ikke!
Ok, da. Det sker ikke så tit man graver sig ned i dette af egen fri vilje, Men du kan tro det var sjovt at skrive drivere i assembler i gamle dage - hmm, er det virkelig så længe siden....?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.