Exemple de subrutine mici în asamblare, asamblare, articol, programare - programare

Traducerea numerelor în formă binară (sub forma unei linii)

Această procedură convertește un cuvânt pe 16 biți într-un șir ASCIIZ, adică numărul 7 este convertit în linia 0000000000000111. În șirul de caractere sunt incluse zerouri în frunte. Șirul ASCIIZ este un set de caractere care se termină cu 0.







Citirea valorii contorului de timp

Determinați tipul de procesor

Următoarea procedură WhatCPU determină tipul de procesor instalat pe sistem. Rezultatul este returnat în registrul AX. Procedura poate fi compilată și cu un compilator pe 16 biți, în ciuda faptului că utilizează instrucțiuni pe 32 de biți pentru a determina diferența dintre 386, 486 și Pentium.

Următorul fragment încarcă setul de caractere de pe ROM în memorie RAM și ajustează astfel înălțimea afișării caracterelor.

Transformări liniare în sisteme cu punct fix

Următoarea subrutină convertește inci la milimetri, dar poate fi utilizată și pentru orice transformări liniare, care este suficientă pentru a schimba factorul de conversie.

Numerele sunt prezentate într-un format de punct fix pe 32 de biți. Cel mai mare cuvânt conține partea intregă a numărului, iar cuvântul inferior conține partea fracționată. Se presupune că se utilizează numai numere pozitive.

Codul folosește instrucțiuni pe 32 de biți, dar poate fi și compilat cu un compilator pe 16 biți.

FAT tabel de alocare a fișierelor

Primul sector (cu numărul 0) al discului este sectorul de încărcare. Primele octeți conțin următoarele informații:

Rularea programului copil

DOS alocă toată memoria disponibilă programului curent, indiferent cât de mult este necesar. Prin urmare, trebuie să eliberați o parte din memorie pentru a încărca și a executa programul copil. Aceasta se face prin procedura Setmem. Fiecare paragraf ocupă 16 octeți. Spațiul cerut de programul curent este calculat ca dimensiunea în paragrafe = Lseg - Psp + 1
unde Lseg este segmentul aflat după ultimul octet al programului, iar Psp este segmentul în care se află PSP-ul programului.

Următorul fragment de cod rulează programul CHILD.COM cu parametrul / HELP.

Citirea opțiunilor liniei de comandă

De exemplu, dacă programul dvs. este numit KOE.COM și îl porniți tastând comanda

pe linia de comandă DOS, procedura ReadCL returnează șirul 4abcs în format ASCIIZ.

TSR: Termină și rămâi în memorie







Instalarea programului TSR se desfășoară în trei etape:
  • Se încarcă partea rezidentă în memorie. Verificați dacă programul nostru este deja în memorie. Salvați informațiile necesare pentru a elimina în continuare rezidentul din memorie. Eliberarea memoriei ocupate de o copie a variabilelor de mediu pe care să le salvați.
  • Setarea parametrilor pentru partea rezidentă. De obicei întreruperile sunt interceptate în acest stadiu.
  • Finalizarea programului de instalare, în timp ce partea rezidentă rămâne în memorie.

Desenarea în SVGA

Următoarea procedură atrage un pixel pe ecran. Coordonatele pixelilor sunt în registrele AX și BX, iar în registrul CX culoarea pixelului este transferată. În procedură se presupune că dimensiunea ferestrei este de 64 KB, ceea ce este adevărat, de exemplu, pentru chips-urile S3.

Desenați un pixel în modul grafic

Aceste moduri grafice pot fi împărțite în șase grupe în funcție de numărul de biți alocați fiecărui pixel este de 1 bit / pixel, 2 culori, un plan de biți: Mod CGA 6 640 * 200 2 biți / pixel, 4 culori, un plan de biți: CGA modul 4, o rezoluție de 320 x 200 4 biți / pixel, 16 culori, patru planuri de biți: mod de EGA rezoluție 0Dh de 320 * 200 mod EGA 0Eh 640 * 200 modul EGA 10h 640 * 350 mod VGA 12h 640 * 480 VESA rezoluție modul 102h 800 * 600 mod VESA 104H 1024 * 768 mod VESA 106h 1280 1024 * 8 biți / pixel 256 de culori, un plan de biți: rezoluție VGA mode 13h de 320 * 200 mod VESA 100h permis e 640 * 400 VESA mode 101H 640 * 480 VESA rezoluție Mod 103h de 800 * 600 Mod VESA 105h 1024 * 768 16 biți / pixel, 65536 culori, un plan de biți (există, de asemenea, modul 32,768 color): Mod VESA 111h 640 * 480 mod VESA rezoluție 114h 800 * 600 24 biți / pixel, 16777216 culori, avion cu un singur bit: mod VESA 112h rezoluție 640 * 480

Excepțiile sunt modurile CGA 4 și 6, în care linii paralele și paralele sunt situate în segmente de memorie diferite.

Modurile CGA, EGA și VGA sunt acceptate de toate sistemele BIOS standard. Trecerea la aceste moduri se face de obicei apelând simplu funcțiile BIOS.

În toate modurile VGA, următoarea procedură Pixel $ poate desena un pixel. Trebuie remarcat faptul că procedura este destul de lentă, deoarece se fac apeluri la funcțiile BIOS.

Modul VGA cel mai interesant este modul 13h cu capacitatea de a afișa 256 culori și o rezoluție de 320 * 200. Numărul de culori 0. 255 corespunde valorilor din paletă, unde toate culorile sunt reprezentate ca anumite combinații de componente roșii, verzi și albastre. Următoarea procedură VGApxl atrage un pixel în acest mod. Funcționează destul de repede, dar există și opțiuni mai rapide.

Funcția sinusoidală într-un sistem punct fix pe 32 de biți

Procedura Rsin $ calculează păcatul funcției trigonometrice din argumentul pe 32 de biți. Un sistem punct fix pe 32 de biți este definit după cum urmează:

Utilizarea procedurii:
Intrare: mutați argumentul la BX, transferați rezultatul în AX. Argumentul stabilește unghiul în grade.
Ieșire: valoarea funcției sin, scrisă la o variabilă a cărei decalare este determinată de registrul AX. Valorile registrelor nu sunt salvate.

De exemplu, păcatul (30,5 °) se calculează după cum urmează:

Ca urmare a acestui apel, veți obține rezultatul 0.50752, în timp ce valoarea corectă este egală cu 0.50754

Verificarea disponibilității unității

Programul verifică disponibilitatea dispozitivului. Dacă dispozitivul nu este gata, programul cere să apăsați tasta ESC.







Trimiteți-le prietenilor: