Hexadecimale code. Decimale getallen omzetten naar hexadecimaal - Assembler Converteren van decimaal naar hexadecimaal assembler

1. Inleiding

2. Algemene informatie over assembleertaal

3. Softwaregedeelte

· Beschrijving van het programma

· Stadia van ontwikkeling van assemblageprogramma's ___

· Programma voor het omzetten van decimale getallen in binaire en hexadecimale getalsystemen

4. Referenties


Invoering

De tools die zorgen voor het functioneren van computertechnologie zijn onderverdeeld in 2 delen: hardware en software.

De hardware omvat de volgende apparaten:

· centrale verwerker;

· RAM;

· randapparatuur;

Alle bovengenoemde apparaten zijn gebouwd op geïntegreerde schakelingen (IC's).

Een geïntegreerde schakeling is een micro-elektronisch product dat bepaalde conversiefuncties uitvoert, een hoge pakkingsdichtheid van elektrisch met elkaar verbonden elementen en componenten heeft, en één geheel vertegenwoordigt in termen van de vereisten voor acceptatie en werkingstesten.

Een voorbeeld van een IC zijn digitale apparaatcircuits: registers, optellers, half-optellers, tellers, encoders, decoders, enz.

Het softwaregedeelte omvat: een set programma's en regels met alle bijbehorende documentatie, waarmee u een computer kunt gebruiken om verschillende problemen op te lossen.

Een programma is een complete reeks machineopdrachten of programmeertaaloperatoren die een reeks acties definiëren om een ​​bepaald probleem op te lossen.

De taak in ons werk is: een decimaal getal van drie cijfers omzetten in binaire en hexadecimale getalsystemen. Deze taak wordt geïmplementeerd met behulp van assembleertaal. Deze taal op laag niveau gebruikt symbolische (ezelsbruggetjes) notaties voor machine-instructies en adressen. Het voordeel van deze taal is: ten eerste dat programma's die erin zijn geschreven aanzienlijk minder geheugen nodig hebben; ten tweede geeft kennis van deze taal en de resulterende machinecode een idee van de architectuur van de machine, wat waarschijnlijk niet zal worden gegeven bij het werken in een programmeertaal op hoog niveau.


Algemene informatie over assembleertaal

Symbolische assembleertaal kan de nadelen van het programmeren in machinetaal grotendeels wegnemen.

Het belangrijkste voordeel is dat in assembleertaal alle programma-elementen in symbolische vorm worden gepresenteerd. De conversie van symbolische commandonamen in hun binaire codes wordt toevertrouwd aan een speciaal programma: een assembler, die de programmeur bevrijdt van arbeidsintensief werk en de onvermijdelijke fouten elimineert.

Symbolische namen die worden ingevoerd bij het programmeren in assembleertaal weerspiegelen meestal de semantiek van het programma, en de afkorting van opdrachten weerspiegelt hun hoofdfunctie. Bijvoorbeeld: PARAM – parameter, TABLE – tabel, MASK – masker, ADD – optelling, SUB – aftrekking, enz. etc. Dergelijke namen zijn voor een programmeur gemakkelijk te onthouden.

Voor programmeren in assembleertaal heb je complexere hulpmiddelen nodig dan voor programmeren in machinetaal: je hebt computersystemen nodig die zijn gebaseerd op een microcomputer of pc met een reeks randapparatuur (alfanumeriek toetsenbord, tekenweergave, float drive en afdrukapparaat), evenals residente of kruisprogrammeringssystemen voor de vereiste soorten microprocessors. Met assembleertaal kunt u veel complexere programma's effectief schrijven en debuggen dan met machinetaal (tot 1 - 4 KB).

Assembleerttalen zijn machinegericht, d.w.z. afhankelijk van de machinetaal en structuur van de overeenkomstige microprocessor, omdat daarin aan elke microprocessorinstructie een specifieke symbolische naam wordt toegewezen.

Assembleertalen zorgen voor een aanzienlijke toename van de productiviteit van programmeurs in vergelijking met machinetalen en behouden tegelijkertijd de mogelijkheid om alle software-beschikbare hardwarebronnen van de microprocessor te gebruiken. Hierdoor kunnen ervaren programmeurs programma's schrijven die in minder tijd worden uitgevoerd en minder geheugen in beslag nemen dan programma's die in een taal op hoog niveau zijn geschreven.

In dit opzicht zijn bijna alle programma's voor het besturen van invoer-/uitvoerapparaten (stuurprogramma's) geschreven in assembleertaal, ondanks de aanwezigheid van een vrij groot aantal talen op hoog niveau.

Met behulp van assembleertaal kan de programmeur de volgende parameters instellen:

geheugensteuntjes (symbolische naam) van elko;

een standaardformaat voor regels van een programma geschreven in assembleertaal;

een formaat voor het specificeren van verschillende adresseringsmethoden en opdrachtopties;

formaat voor het specificeren van tekenconstanten en geheeltallige constanten in verschillende getalsystemen;

pseudo-opdrachten die het proces van het samenstellen (vertalen) van een programma besturen.

In assembleertaal wordt een programma regel voor regel geschreven, dat wil zeggen dat voor elke opdracht één regel wordt toegewezen.

Voor microcomputers die zijn gebouwd op basis van de meest voorkomende soorten microprocessors, kunnen er verschillende varianten van assembleertaal zijn, maar in de praktijk wordt er meestal één veel gebruikt: dit is de zogenaamde standaard assembleertaal. In wat volgt zullen we standaard assembleertalen beschouwen.

Elke regel van een programma geschreven in assembleertaal bevat vier velden:

ETIKETCODE OPERAND OPMERKING

Het LABEL-veld is optioneel; het markeert het adres van de geheugencel waarin de eerste byte van het gemarkeerde commando zich bevindt. Labels worden gebruikt als overgangsadressen voor besturingsoverdrachtsopdrachten, en dankzij hun aanwezigheid kan de programmeur niet met absolute adressen werken, maar met symbolische adressen, wat veel handiger is. Het label kan één tot zes tekens lang zijn, waarvan de eerste een letter moet zijn. Veel assemblers staan ​​labels van elke lengte toe, maar alleen de eerste zes tekens worden herkend. Het label mag geen spaties of leestekens bevatten. In sommige assemblers moet het laatste teken van het label worden gevolgd door een dubbele punt.

In een labelveld hoeft elk label slechts één keer te worden gedefinieerd, maar verwijzingen ernaar kunnen zo vaak als nodig worden gebruikt. Anders zal de assembler een diagnostisch bericht uitgeven over het meervoudig gedefinieerde label.

Het CODE-veld bevat de symbolische naam van het uit te voeren commando of pseudo-commando. Het geheugensteuntje voor de meeste opdrachten is een afkorting van zinnen in het Engels die hun hoofdfunctie karakteriseren.

Bijvoorbeeld:

MOV (MOVE) - overdracht, vooruit

TOEVOEGEN (TOEVOEGING) - toevoeging

SUB (SUBSTRACT) - aftrekken

LDA (LADEN DIRECT

ACCUMULATOR) - direct laden

INR (Batterij-INSCREMENT

REGISTREREN) - registratieverhoging

REGISTER) registreren verlagen

Commando-ezelsbruggetjes zijn assembler-sleutelwoorden, en als ze niet zijn opgenomen in de set geldige geheugensteuntjes, geeft de assembler een ongeldig commandobericht af.

Het OPERAND-veld wordt doorgaans gedefinieerd afhankelijk van het instructiecodeveld. Het kan een of meer operanden bevatten, gescheiden door komma's, of het kan geen operanden bevatten voor instructies die op interne werkregisters werken.

Een operand is een uitdrukking die mnemonische notatie, constanten en operatoren bevat.

De eenvoudigste operanden bevatten één geheugensteuntje of één constante.

De identificatiegegevens van interne werkregisters, labels en de huidige waarde van de programmateller kunnen als geheugensteuntje worden gebruikt.

Constanten kunnen in verschillende getalsystemen worden weergegeven.

Softwaregedeelte

Beschrijving programma's

In dit werk zullen we kijken naar een van de manieren om een ​​getal van het decimale getalsysteem naar binair en hexadecimaal te converteren met behulp van Assembleertaal. Voordat we een programma maken, zullen we in detail bekijken welke stappen hiervoor moeten worden genomen, dat wil zeggen, met andere woorden, we zullen een algoritme schrijven om ons probleem op te lossen. Om een ​​computer gegevens te laten verwerken, moet hij deze gegevens invoeren, wat betekent dat de eerste stap bij het oplossen van ons probleem het invoeren van een getal zal zijn. De tweede stap in het werk is het weergeven van een bericht over het ingevoerde nummer. Hierna converteren we het decimale getal naar het binaire systeem en geven we ons getal in binair equivalent weer op het scherm. De volgende stap is het omzetten van het getal naar het hexadecimale equivalent en de laatste stap is een lus waarmee u door kunt gaan met het invoeren van een nieuw decimaal getal. Laten we nu alle punten samenvoegen:

1. Een nummer invoeren via het toetsenbord.

2. Geef een bericht weer over het ingevoerde nummer.

3. Een getal converteren naar zijn binaire equivalent.

4. Geef een binair getal weer.

5. Een getal omzetten naar hexadecimaal.

6. Geef een hexadecimaal getal weer.

7. Cyclus (zullen we doorgaan?) Zo JA, dan punt 1, anders punt 8

8. Sluit het programma af.

Dit is het algoritme van een natuurlijke-taalprogramma.

ontwikkelingsstadia van assembler-programma's

1. Verklaring van het probleem. Bevat een betekenisvolle beschrijving van het probleem en de ontwikkeling van het algoritme.

2. Ontwikkeling van programmatekst.

3. Tekst invoeren in de computer. De tekst van het programma in geheugencodes wordt met behulp van een willekeurige teksteditor in de computer ingevoerd. Er wordt ook een tekstbestand aangemaakt met de extensie *.ASM.

4. Compilatie of montage. Een tekstbestand met de extensie *.ASM wordt geconverteerd naar een objectbestand dat een programma bevat in machinecode met de extensie *.OBJ. Ook in dit stadium kan een programmaoverzicht worden gemaakt. Een bestand met de extensie *.LST, dat basisinformatie over het programma bevat, evenals een kruisverwijzingsbestand met de extensie *.CRF. In dit stadium wordt de programmatekst gecontroleerd op fouten. De montage wordt uitgevoerd met behulp van het vertaalprogramma TASM.EXE (ASM.EXE - in assembler, MASM.EXE - in macro-assembler). TASM [opties] *.ASM [,] - commando voor het uitvoeren van vertalingen. Als er één komma is opgegeven in de opdracht, wordt het lijstbestand gegenereerd. TASM heeft twee opties: /ZI en /N. Ze heten: TASM.

5. Indeling. In dit stadium wordt een verplaatsbaar programma gemaakt dat in elk geheugengebied kan worden geladen. Opgeslagen in een bestand met de extensie *.EXE of *.COM. Gebruik hiervoor TLINK.exe (voor de macro-assembler LINK.EXE). De opties zijn /T en /X.

6. Uitvoering en foutopsporing (DEBUG).

7. De machinecode van het programma in ROM invoeren (misschien ontbreekt) Nu zullen we kijken naar het blokdiagram van ons programma, dat wil zeggen de bestelde acties.


; PROGRAMMA VOOR HET OMZETTEN VAN EEN DECIMAAL NAAR; BINAIRE EN HEXADECIMALE SYSTEMEN; CUMULATIES

;Gegevenssegment

;Conversietabel“cijfer – ASCII-code

tabl_ascii db "0123456789abcdef"

;____________________________________________________________________

;Conversietabel“ASCII-code-nummer

dB 0,1,2,3,4,5,6,7,8,9

db 0ah, 0bh, 0ch, 0dh, 0eh, 0fh

;____________________________________________________________________

;Reservatie en initialisatie van variabelen in het geheugen

x_ascii db 20h dup(?)

t1 db 0dh,0ah,"Voer een getal in en druk op Enter"

db 0dh, 0ah, "$"

t2 db 0dh,0ah,"U heeft een getal ingevoerd”,0dh,0ah "$"

t3 db 0dh, 0ah, "In binair ziet het er zo uit"

t4 db 0dh, 0ah, "In hexadecimaal zoals dit"

db 0dh, 0ah, "$"

buf db 16 dup(?),"$"

t5 db 0dh,0ah, "Zullen we doorgaan met het proces? (J/N)?"

;____________________________________________________________________

; Codesegment

;Hoofdprocedure

D: lead dx, t1

;Procedure voor het invoeren van een decimaal getal

;Procedure voor het weergeven van een decimaal getal

r1: mov dl,

; Een getal (decimaal) naar binair omzetten

v1: mul si

;Procedure voor het weergeven van een binair getal

; Procedure voor het converteren van een getal (binair) naar hexadecimaal

; en geef het weer op het scherm

Opmerkingen :

Hieronder staan ​​de commando's die in het programma worden gebruikt:

sub– binaire aftrekking. Trekt de inhoud van de tweede operand af van de eerste operand

Geheugensteuntjes:sub< operand 1>,< operand 2>

telefoongesprek– procedureoproep. Draagt ​​de controle over aan een procedure waarvan het adres wordt gespecificeerd door de operand nadat de procedure is voltooid, de uitvoering gaat verder met de opdracht die volgt op de oproepopdracht

Geheugensteuntjes: telefoongesprek< procedurenaam>

ret– terug naar de procedure

shr– ga logisch naar rechts

xor– exclusief OR

Geheugensteuntjes:xor<операнд 1>,<операнд 2>

lea– EA downloaden

Geheugensteuntjes:lea reg,<операнд>

duw– opnemen in stapel

Geheugensteuntjes: duw< operand>

knal– van de stapel halen

Geheugensteuntjes: pop<операнд>

beweeg- vooruit

Geheugensteuntjes:verplaats< ontvanger>,<источник>

incl– verhogen met 1

Geheugensteuntjes:incl<операнд>

dec– met 1 verlagen

Geheugensteuntjes: dec< operand>

stosb– stuurt verbindingen door naar het al- of ax-register waarnaar het di-register verwijst

lus– een commando om een ​​lus met een teller te organiseren, ook korte overgangen (127b) het commando verlaagt de waarde van de teller cx, zonder enige vlag te veranderen, als de verbinding cx >0, dan wordt de overgang naar het gegeven label uitgevoerd, anders eindigt de lus.

Geheugensteuntjes: lus< label>

.CODE– opent een codesegment

. GEGEVENS-- opent een gegevenssegment

.STAPEL N– definieert de segmentstapel(a); In dit geval worden er geen segmentsluitingsrichtlijnen gebruikt; N – toont de grootte van stapel(a) in bytes

Opmerking : Bij gebruik van dergelijke richtlijnen wordt het ds-register als volgt geïnitialiseerd: mov ax,@data

mov ds, bijl

veronderstellen wordt in dit geval niet gebruikt

Referenties

1. “Ik ben assembleertaal voor IBM PC en programmeren” Higher School 1992.

2. “IBM personal computer en MS-DOS-besturingssysteem” Radio en communicatie 1991.

3. Ilyushechkin V.N., Kostin A.E., Khokhlov M.M. “Systeemsoftware”, M., “Hogere school”, 1987

4. Norton P., Souhe D. “Assemblagetaal voor de IBM PC”, M., Uitgeverij “Computer”, 1993

Hexadecimaal getalsysteem(ook bekend als hexadecimale code) is een positioneel getalsysteem met een geheel getalgrondtal van 16. De term hex (uitgesproken als hex, een afkorting van het Engelse hexadecimaal) wordt soms ook in de literatuur gebruikt. De cijfers van dit nummersysteem worden meestal gebruikt in de Arabische cijfers 0-9, evenals in de eerste tekens van het Latijnse alfabet A-F. De letters komen overeen met de volgende decimale waarden:

  • * EEN-10;
  • *B-11;
  • *C-12;
  • *D-13;
  • *E-14;
  • * F-15.

Tien Arabische cijfers, gekoppeld aan zes Latijnse letters, vormen dus de zestien cijfers van het systeem.

Op onze website kunt u trouwens elke tekst omzetten in decimale, hexadecimale, binaire code met behulp van de Online Code Calculator.

Sollicitatie. Hex-code veel gebruikt in programmeren op laag niveau en in verschillende computerreferentiedocumenten. De populariteit van het systeem wordt gerechtvaardigd door de architecturale oplossingen van moderne computers: ze hebben een byte (bestaande uit acht bits) als de minimale informatie-eenheid - en de waarde van een byte wordt handig geschreven met behulp van twee hexadecimale cijfers. De bytewaarde kan variëren van #00 tot #FF (0 tot 255 in decimale notatie) - met andere woorden, met hexadecimale code, kunt u elke status van de byte schrijven, terwijl er geen “extra” cijfers zijn die niet in de opname worden gebruikt.

Gecodeerd Unicode Er worden vier hexadecimale cijfers gebruikt om het tekennummer vast te leggen. De RGB-kleurnotatie (Rood, Groen, Blauw) maakt ook vaak gebruik van hexadecimale code (#FF0000 is bijvoorbeeld een helderrode kleurnotatie).

Een methode voor het schrijven van hexadecimale code.

Wiskundige manier van schrijven. In wiskundige notatie wordt de basis van het systeem in decimale vorm geschreven als een subscript rechts van het getal. De decimale notatie van het getal 3032 kan worden geschreven als 3032 10, in het hexadecimale systeem zal dit getal de notatie BD8 16 hebben.

In de syntaxis van programmeertalen. De syntaxis van verschillende programmeertalen stelt het formaat voor het schrijven van een getal op verschillende manieren in hexadecimale code:

* De syntaxis van sommige varianten van assembleertaal gebruikt de Latijnse letter “h”, die rechts van het getal wordt geplaatst, bijvoorbeeld: 20Dh. Begint een getal met een Latijnse letter, dan wordt er een nul voor geplaatst, bijvoorbeeld: 0A0Bh. Dit wordt gedaan om waarden te onderscheiden met behulp van constanten van constanten. hexadecimale code;

* Andere soorten assembler, evenals Pascal (en zijn varianten zoals Delphi) en enkele Basic-dialecten, gebruiken het voorvoegsel "$": $A15;

* In de HTML-opmaaktaal, evenals in trapsgewijze CSS-bestanden, wordt het voorvoegsel “#” gebruikt om een ​​kleur in RGB-indeling aan te geven met een hexadecimale notatie: #00DC00.

Hoe hexadecimale code naar een ander systeem converteren?

Converteren van hexadecimaal naar decimaal. Om een ​​conversie van het hexadecimale systeem naar het decimale systeem uit te voeren, moet u het oorspronkelijke getal weergeven als de som van de producten van de cijfers in de cijfers van het hexadecimale getal en de macht van het grondtal.

Binaire SS

hex SS

U moet bijvoorbeeld het hexadecimale getal A14 vertalen: het heeft drie cijfers. Met behulp van de regel schrijven we het als een som van machten met een grondtal van 16:

A14 16 = 10,16 2 + 1,16 1 + 4,16 0 = 10,256 + 1,16 + 4,1 = 2560 + 16 + 4 = 2580 10

Getallen converteren van binair naar hexadecimaal en omgekeerd.

Voor de vertaling wordt een notitieboekjetafel gebruikt. Om een ​​getal van het binaire naar het decimale systeem om te zetten, moet u het van rechts naar links in afzonderlijke tetrads splitsen en vervolgens, met behulp van de tabel, elke tetrad vervangen door het overeenkomstige hexadecimale cijfer. Als het aantal cijfers bovendien geen veelvoud van vier is, is het noodzakelijk om het overeenkomstige aantal nullen rechts van het getal toe te voegen, zodat het totale aantal binaire cijfers een veelvoud van vier wordt.

Tabel met notitieboekjes voor vertaling.

Om van hexadecimaal naar binair te converteren, moet u de omgekeerde bewerking uitvoeren: vervang elk cijfer door een tetrad uit de tabel.

Binaire SS

Octale SS

Voorbeeld conversie van hexadecimaal naar binair: A5E 16 = 1010 0101 1110 = 101001011110 2

Voorbeeld conversie van binair naar hexadecimaal: 111100111 2 = 0001 1110 0111 = 1E7 16

In dit voorbeeld was het aantal cijfers in het oorspronkelijke binaire getal niet vier (9), dus werden er voorloopnullen toegevoegd voor een totaal van 12 cijfers.

Automatische vertaling. Een snelle conversie van het hexadecimale getalsysteem naar een van de drie populaire systemen (binair, octaal en decimaal), evenals de omgekeerde conversie, kunnen worden uitgevoerd met behulp van een standaardrekenmachine die bij Windows OS wordt geleverd. Open de rekenmachine, selecteer Beeld -> Programmeur in het menu. In deze modus kunt u het momenteel gebruikte nummersysteem instellen (zie menu aan de linkerkant: Hex, Dec, Oct, Bin). In dit geval levert het wijzigen van het huidige nummersysteem automatisch een vertaling op.

Hallo! Er is deze regel:

Var BD 2,2,3,3,4,4; 223344 decimaal 6-cijferig nummer in onverpakt formaat met verhoogde precisie (ASCII-formaat)

Hoe kan ik dit nummer 223344 omzetten in een hexadecimaal getal? Ik heb deze code gevonden die converteert van eencijferige en tweecijferige decimale getallen naar zestiencijferige getallen:

; Var. 17. Achterkant 1. Schrijf een subroutine om een ​​reeks decimalen om te zetten; ASCII-bytes. naar een array van BCD-bytes. Gebruik deze subroutine om twee arrays te verwerken; Gebruik de stapel om parameters door te geven. Naam Programma; Beschrijving van constanten; Beschrijving van variabelen Gegevenssegment x1 db 2h db 1h db 3h db 1h db 4h db 1h ; getallen in ASCII-formaat y1 db 3 dup (?) ; array in BCD-formaat x2 db 8h ;98 db 9h db 5h ;95 db 9h db 7h ;87 db 8h db 2h ;92 db 9h ; reeks december. ASCII-bytes Y2 db 4 dup (?) ; reeks december. BCD-bytes Data eindigt Stapel SEGMENT DW 16 dup(?) StkTOp LABEL woord Stapel eindigt Code SEGMENT ASSUME CS: Code, DS: Data, ES: Data, SS: Stack ; De subroutines abc proc push bp mov bp, sp worden hier beschreven. snap naar de bovenkant van de stapel mov cx, ; parameters uit de stapel lezen (aantal getallen) mov di, ; adres van variabele Y1 mov si, ; adres van variabele X1 M1: mov al, +1 ; laad het eerste nummer in ASCII-formaat shl ax, 1; verschuiven met 4 cijfers naar rechts shl ax, 1 shl ax ,1 shl ax, 1 of al, ;herstel het nummer dat je hebt onthouden mov , al ; schrijf het nummer in BCD-formaat inc si; ga naar een ander nummer inc si inc di; wijzig het BCD-adres - nummers dec cx; verminder het aantal cijfers jnz M1; als ze nog niet op zijn, ga dan naar M1 pop BP ret 6 abc endp; Hoofdprogramma Start: mov AX, Data mov DS, AX mov ES, AX mov Ax, Stack mov SS, AX mov SP, offset StkTop ; laad de parameters op de stapel volgens de taakvoorwaarden mov ax, offset x1; laad het adres van de eerste array push ax mov ax, offset Y1; laad het adres van het resultaat push ax mov ax, 3; aantal nummers druk op bel abc; subroutine oproep mov ax, offset x2; laad het adres van de tweede array push ax mov ax, offset Y2; laad het resultaatadres push ax mov ax, 4; aantal nummers druk op bel abc; het aanroepen van de subroutinecode eindigt einde start

Dit artikel is vooral bedoeld voor complete beginners. Als u goed thuis bent in getalsystemen, kunt u aan het einde van het artikel alleen aandacht besteden aan de syntaxiskenmerken van de FASM-assembler.

In feite werkt de processor alleen met binaire getallen bestaande uit enen en nullen :) Alle gegevens en opdrachten van elk programma worden opgeslagen en verwerkt in de vorm van binaire getallen. De binaire notatie van getallen is echter te omslachtig en onhandig voor mensen, dus assembleertaalprogramma's gebruiken ook andere getalsystemen: decimaal, hexadecimaal en octaal.

Een beetje theorie

Laten we eerst eens kijken wat het verschil is tussen nummersystemen. Elk decimaal getal kan als volgt worden weergegeven:

123 10 = 1 10 2 + 2 10 1 + 3 10 0

Het onderstaande subscript geeft aan dat het een decimaal getal is. Het cijfer van elk cijfer wordt vermenigvuldigd met 10 tot een macht gelijk aan het cijfernummer, geteld vanaf nul van rechts naar links. Meer in het algemeen:

abc R= een R 2 + geb R 1 + c R 0 ,

waarbij a, b en c enkele getallen zijn, en r de basis van het getalsysteem is. Voor decimaal systeem R= 10, voor binair - R= 2, voor ternair R= 3, enz. Bijvoorbeeld hetzelfde nummer in andere systemen:

443 5 = 4 5 2 + 4 5 1 + 3 5 0 = 4 25 + 4 5 + 3 1 = 123 10 (quinair systeem)

173 8 = 1 8 2 + 7 8 1 + 3 8 0 = 1 64 + 7 8 + 3 1 = 123 10 (octaalsysteem)

1111011 2 = 1,2 6 + 1,2 5 + 1,2 4 + 1,2 3 + 0,2 2 + 1,2 1 + 1,2 0 = 1,64 + 1,32 + 1,16 + 1 8 + 0 4 + 1 2 + 1 1 = 123 10 (binair)

Hexadecimaal systeem

In het hexadecimale systeem worden de letters A = 10, B = 11, C = 12, D = 13, E = 14, F = 15 gebruikt om getallen groter dan 9 aan te duiden. Bijvoorbeeld:

C7 16 = 12 16 1 + 7 16 0 = 12 16 + 7 1 = 199 10

Het gemak van het hexadecimale systeem is dat het heel gemakkelijk is om binaire getallen erin om te zetten (en ook in de tegenovergestelde richting). Vier cijfers van een binair getal (tetrad) worden weergegeven door één hexadecimaal cijfer. Om te vertalen, verdeelt u het getal eenvoudigweg in groepen van 4 bits en vervangt u elke tetrad door het overeenkomstige hexadecimale cijfer.

Binair
viertal
Hexadecimaal
nummer
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F

Om één byte te schrijven zijn slechts 2 hexadecimale cijfers nodig:

0101 1011 2 = 5B 16

0110 0000 2 = 60 16

1111 1111 2 = FF 16

Octaal systeem

Octaal is ook handig voor het weergeven van binaire getallen, hoewel het veel minder vaak wordt gebruikt dan hexadecimaal. Om snel te vertalen, moet je het binaire getal in groepen van 3 cijfers verdelen (drietallen of drieklanken).

Binair
triade
Octaal
nummer
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7

Bijvoorbeeld: 001 110 101 2 = 165 8

FASM assembler-syntaxis

Standaard wordt het getal in het programma door de assembler als decimaal gezien. Om een ​​binair getal aan te duiden, moet je een symbool aan het einde ervan toevoegen 'B'. Een octaal getal wordt op dezelfde manier aangegeven met het symbool 'O'. Om een ​​hexadecimaal getal te schrijven ondersteunt FASM 3 notatievormen:

  • symbolen worden vóór het nummer geschreven '0x'(zoals in C/C++);
  • vóór het getal wordt een symbool geschreven ’$’ (zoals in Pascal);
  • na het nummer wordt een symbool geschreven 'H'. Als een hexadecimaal getal met een letter begint, moet u aan het begin een nul toevoegen (anders is het niet duidelijk of het een getal of een labelnaam is).

Deze syntaxis wordt zowel in gegevensdeclaraties als in opdrachten gebruikt. Hier zijn voorbeelden van het schrijven van getallen in alle vier de systemen:

beweeg bijl, 537 ;Decimaal systeem movbl, 11010001b ;Binair systeem mov ch, 57o ;Octaal systeem mov dl, $ C2;\ mov si, 0x013A; \mov ah, 18u ; / Hexadecimaal systeem mov al , 0FFh ;/ mov al , FFh ;Fout!

mov ax,537 ;Decimaal systeem mov bl,11010001b ;Binair systeem mov ch,57o ;Octaal systeem mov dl,$C2 ;\ mov si,0x013A ; \mov ah,18h; / Hexadecimaal systeem mov al,0FFh ;/ mov al,FFh ;Fout!