bits 16 ; 16-bits instruksjoner takk ;-) org 100h ; start 256 bytes ut i COM-fila mov ah, 9 ; Gir AH (argumentet for APIet til DOS) funksjonsnummeret til funksjonen ; vi vil ha, der 9 er printmodus mov ah, 0x2C ; Henter ut time/minutt/sekund til CH (time), CL (minutt) og DH ([sekund) fra adressen 0x2C int 0x21 ; Kaller DOS med argumentene.. (9, printmodus) mov al, dh ; Gir AL verdien til DH (husk, sekund) sjekk: ; Typisk label, ikke noe spesielt int 0x21 ; Kaller DOS igjen - få nye verdier i CH osv. Husk at argumentene fortsatt er de samme cmp dh, al ; Er AL (gamle DH-verdi) det samme som den nye verdien til DH (sekund)? je sjekk ; Nei nei, vi må vente litt til! :-) jmp ferdig1 ; Ja, det er den. Hopp til ferdig1 ferdig1: mov si, strengen ; Gir SI verdien til første byte i "strengen" mov di, 0x1420 ; Tenk deg en peker, jeg lar DI starte på minneadressen 0x1420 (strengen) kopier: mov al, [si] ; Gir AL det som minneadressen SI inneholder mov [di], al ; Gir minneadressen DI verdien til AL cmp al, '$' ; Inneholder AL (minneadressen til DI, en indeks) ascii'en $? je ferdig2 ; Ja, har vi truffet siste byte i strengen, som er "$" (sluttegn for streng) inc si ; Ikke ferdig, inkrementer verdien til SI inc di ; ---- || ----- jmp kopier ; $ har vi ikke sett! La oss prøve en gang til ferdig2: mov ah, 9 ; Vi bruker 9 som API-argument igjen; printmodus mov dx, 0x1420 ; DX får en verdi som er adressen der strengen starter int 0x21 ; Kom til meg, DOS! Vi har argumenter mov ah, 0x4C ; Gir AH argumentet for å avslutte programmet int 0x21 ; Kall DOS! strengen: db "Denne strengen tok ca. 1 sek aa printe ut, pga. klokkesjekking + kopieringsfunksjon!", 13, 10, '$'