När skapades assembler- och maskinspråk? Assembly programmeringsspråk Assembly språk för olika processorer.


Programmeringsspråk

Assembler är ett programmeringsspråk på låg nivå som är ett läsbart format för att skriva maskininstruktioner.

Instruktioner för sammansättningsspråk överensstämmer en-till-en med processorinstruktioner och representerar i själva verket en bekväm symbolisk notation (mnemonisk kod) av kommandon och deras argument. Dessutom tillhandahåller assemblerspråk grundläggande mjukvaruabstraktioner: länkar samman delar av programmet och data genom etiketter med symboliska namn och direktiv.

Assembler-direktiv tillåter dig att inkludera datablock (beskrivna explicit eller lästa från en fil) i programmet; upprepa ett visst fragment ett visst antal gånger; kompilera ett fragment villkorligt; ställ in exekveringsadressen för fragmentet, ändra värdena för etiketterna under kompileringsprocessen; använda makron med parametrar osv.

Varje processormodell har i princip sin egen uppsättning instruktioner och motsvarande assemblerspråk (eller dialekt).

Fördelar och nackdelar

  • minsta mängd redundant kod (med färre instruktioner och minnesåtkomster). Som ett resultat - högre hastighet och mindre programstorlek
  • stora mängder kod, ett stort antal ytterligare små uppgifter
  • dålig läsbarhet för koden, svårigheter att underhålla (felsökning, lägga till funktioner)
  • svårigheten att implementera programmeringsparadigm och andra något komplexa konventioner, svårigheten med gemensam utveckling
  • färre tillgängliga bibliotek, deras låga kompatibilitet
  • direkt tillgång till hårdvara: I/O-portar, specialregister för processorn
  • förmågan att skriva självmodifierande kod (dvs metaprogrammering och utan behov av en mjukvarutolk)
  • maximal "passform" för den önskade plattformen (användning av specialinstruktioner, tekniska funktioner för "hårdvara")
  • intolerans mot andra plattformar (förutom binärkompatibla).

Syntax

Det finns ingen allmänt accepterad standard för syntaxen för assemblerspråk. Det finns dock de facto-standarder - de traditionella tillvägagångssätt som de flesta assemblerspråkutvecklare tar. De viktigaste sådana standarderna är Intel-syntax och AT&T-syntax.

Det allmänna formatet för skrivinstruktioner är detsamma för båda standarderna:

`[etikett:] opcode [operander] [; kommentar]`

Op-koden är direkt minnet för instruktionen till processorn. Prefix (upprepningar, ändra typ av adressering, etc.) kan läggas till den. Operanderna kan vara konstanter, registernamn, adresser i RAM, etc. Skillnaderna mellan Intel och AT&T-standarder hänför sig främst till uppräkningsordningen för operander och deras syntax för olika adresseringsmetoder.

Mnemonics som används är vanligtvis desamma för alla processorer med samma arkitektur eller familj av arkitekturer (bland de allmänt kända är mnemonics från Motorola, ARM, x86-processorer och kontroller). De beskrivs i processorspecifikationen.

Till exempel ärvde Zilog Z80-processorn Intel i8080-instruktionsuppsättningen, utökade den och ändrade mnemonics (och registerbeteckningar) på sitt eget sätt. Till exempel ändrade jag Intels mov till ld. Motorola Fireball-processorerna ärvde Z80-instruktionsuppsättningen och skar ner den något. Samtidigt har Motorola officiellt återvänt till Intel mnemonics. och för närvarande arbetar hälften av Fireball-montörerna med Intel-mnemonics och hälften med Zilog-mnemonics.

direktiv

Förutom instruktioner kan ett program innehålla direktiv: kommandon som inte direkt översätts till maskininstruktioner, utan styr kompilatorns funktion. Deras uppsättning och syntax varierar avsevärt och beror inte på hårdvaruplattformen, utan på kompilatorn som används (som ger upphov till dialekter av språk inom samma familj av arkitekturer). Som en uppsättning direktiv kan man peka ut:

  • datadefinition (konstanter och variabler)
  • hantera organisationen av programmet i minnet och parametrarna för utdatafilen
  • ställa in kompileringsläget
  • alla typer av abstraktioner (dvs element av högnivåspråk) - från design av procedurer och funktioner (för att förenkla implementeringen av det procedurmässiga programmeringsparadigmet) till villkorliga konstruktioner och loopar (för det strukturerade programmeringsparadigmet)
  • makron

Ursprung och kritik av termen "sammansättningsspråk"

Denna typ av språk fick sitt namn från namnet på översättaren (kompilatorn) från dessa språk - assembler (engelsk assembler). Namnet på den senare beror på det faktum att det på de första datorerna inte fanns några språk på högre nivå, och det enda alternativet till att skapa program med hjälp av assembler var programmering direkt i koder.

Monteringsspråk på ryska kallas ofta "assembler" (och något relaterat till det - "assembler"), vilket, enligt den engelska översättningen av ordet, är fel, men passar in i det ryska språkets regler. Men själva assemblern (programmet) kallas också helt enkelt "assembler" och inte "assembler-språkkompilator" etc.

Användningen av termen "sammansättningsspråk" kan också leda till missuppfattningen att det finns ett enda lågnivåspråk, eller åtminstone en standard för sådana språk. När man namnger språket som ett specifikt program är skrivet på, är det lämpligt att specificera för vilken arkitektur det är avsett och på vilken dialekt av språket det är skrivet.

Syntaxelement:

Exempel:

Hej världen !:

Exempel för versioner Intel x86 (IA32)

mov axe, cs mov ds, axe mov ah, 9 mov dx, offset Hello int 21h xor axe, axe int 21h Hej: db "Hello World!", 13, 10, "$"

Hej världen !:

Exempel för versioner Amiga

flytta. l #DOS flytta. l 4.w, a6 jsr - $ 0198 (a6); OldOpenLibrary flyttar. l d0, a6 beq. s. Ut rör sig. l #HelloWorld, d1 A) moveq # 13, d2 jsr - $ 03AE (a6); WriteChars B) jsr - $ 03B4; PutStr flytta. l a6, a1 flytta. l 4.w, a6 jsr - $ 019E (a6); Stäng bibliotek. Ut rts DOS dc. b "dos.library", 0 HelloWorld dc. b "Hej världen!" , $ A, 0

Hej världen !:

Exempel för versioner AtariST

flytta. l #helloworld, - (A7) flytta # 9, - (A7) trap # 1 addq. l # 6, A7 drag # 0, - (A7) trap # 1 helloworld: dc. b "Hello World!", $ 0d, $ 0a, 0

Hej världen !:

Exempel för versioner Intel x86 (IA32)

NASM Linux, använder Intel-syntax. Sammanställning och länkning:

  • nasm –f elf –o hello.o hello.asm
  • ld -o hej hej.o

SEKTION. data msg db "Hej världen!", 0xa len equ $ - msg SECTION. text global _start _start:; Programingångspunkt mov eax, 4; "skriv" systemanrop mov ebx, 1 mov ecx, msg; Pekare till data mov edx, len; Datamängd int 0x80; Kärnanrop mov eax, 1; "_exit" systemanrop mov ebx, 0; Returnera 0 (allt är bra) int 0x80; Kärnanrop

Hej världen !:

Exempel för versioner PDP-8

/ - kommentarer.

/ Hello World i assembler för DEC PDP - 8 * 200 hej, cla cll tls / tls sätter utskriftsflaggan. tad charac / skapa indexregister dca ir1 / för att få tad m6-tecken / ställ in räknare för dca-antal / mata in tecken. nästa, tad i ir1 / få karaktär. jms typ / dess typ. ärz räkna / göra något annat? jmp nästa / nej, infoga ett annat tecken hlt typ, 0 / subrutin typ tsf jmp. - 1 tls cla jmp i typ charac,. / används som startvärde för ir1. 310 / H 305 / E 314 / L 314 / L 317 / O 254 /, 240/327 / B 317 / O 322 / R 314 / L 304 / D 241 /! m6, - 15 antal, 0 ir1 = 10 $

Hej världen !:

Exempel för versioner PDP-11

Programmet är skrivet i MACRO-11 macro assembler För att kompilera och köra detta program i RT-11 OS, använd kommandot:

MAKRO HEJ

FEL UPPTÄCKT: 0

LÄNK HEJ - Länk. SPRING HEJ - Spring

TITEL HEJ VÄRLDEN; Namn . MCALL. TTYOUT,. AVSLUTA HEJ :: MOV #MSG, R1; Startadress för rad 1 $: MOVB (R1) +, R0; Vi får nästa karaktär BEQ DONE; Om noll, lämna slingan. TTYOUT; Annars skriver vi ut symbolen BR 1 $; Slingupprepning KLAR:. AVSLUTA MSG:. ASCIZ / Hej världen! /; Strängen Hej världen! ... SLUT HEJ; Slut på HELLO-programmet

Hej världen !:

Exempel för versioner System / 360, System / 370

IBM System / 360/370/390 Basic Assembler Language.

// EXEC MONTERING STARTA MAIN BALR 2, 0 ANVÄNDA *, 2 ÖPPNA SKRIV UT MVC BUF, HW PUT SKRIV UT STÄNG SKRIV UT EOJ HW DC CL132 "HELLO WORLD" BUF DS CL132 SKRIV UT DTFPR IOAREA1 = BUF, DEVADICE, * B2SYSLVADDR = 32SYV = 3203, KONTROLL = JA, PRINTOV = JA END MAIN / * // EXEC LNKEDT // EXEC / * / &

Hej världen !:

Exempel för versioner Apple II

* HEJ VÄRLDEN FÖR 6502 APPLE] [* ******************************** STROUT EQU $ DB3A LDY #> HEJ LDA #< HELLO JMP STROUT HELLO ASC "HELLO WORLD !", 00

Hej världen !:

Exempel för versioner PDP-10

CHTTYO - Alla I/O görs med I/O-kanaler. Det är bäst att skapa symboliska namn för kanalerna du använder och starta dem med CH. Definiera dessa namn med MIDAS-operatorn ==.

CALL är en symbolisk notation för att anropa ett systemanrop. Dess format är .CALL.

OPEN öppnar en I/O-kanal för användning. Kräver två parametrar - kanalnummer och enhetsnamn i SIXBIT.

LOSE% LSFIL är ett systemanrop som skriver ut ett I/O-felmeddelande om det händer.

IOT är ett systemanrop som faktiskt handlar om I/O. Som en parameter måste du ange kanalen och adressen som innehåller teckenkoden för utmatning. Till exempel, "H representerar H.

TITEL PRINTHELLO A = 1 CHTTYO == 1; Kanal för utgång. START:; Öppna en TTY-kanal. ... RING [SETZ? SIXBIT / ÖPPEN / [. UAO, CHTTYO]? [SIXBIT / TTY /] ((SETZ))]. FÖRLORA % LSFIL. IOT CHTTYO, ["H]; Skriv ut HELLO WORLD tecken för tecken.. IOT CHTTYO, [" E]. IOT CHTTYO, ["L]. IOT CHTTYO, [" L]. IOT CHTTYO, ["O]. IOT CHTTYO, [^ M]; Nyradstecken. IOT CHTTYO, [" W]. IOT CHTTYO, ["O]. IOT CHTTYO, [" R]. IOT CHTTYO, ["L]. IOT CHTTYO, [" D]. VÄRDE; Program, sluta :) SLUT START

Fibonacci-nummer:

Exempel för versioner MIPS32

Emulator MARS. MARS-konsolutgång:

Fibonacci-numren är: 1 1 2 3 5 8 13 21 34 55 89 144 - programmet har körts klart -

Programmet matar ut 15 Fibonacci-nummer. Antalet nummer kan ändras i avsnittet .data.

Datautrymme: .asciiz "" head: .asciiz "Fibonacci-talen är: \ n" fib: .word 0: 15 storlek: .word 15 .text main: la $ t0, fib la $ t5, storlek lw $ t5, 0 ($ t5) li $ t2, 1 add.d $ f0, $ f2, $ f4 sw $ t2, 0 ($ t0) sw $ t2, 4 ($ t0) addi $ t1, $ t5, - 2 loop: lw $ t3, 0 ($ t0) lw $ t4, 4 ($ t0) add $ t2, $ t3, $ t4 sw $ t2, 8 ($ t0) addi $ t0, $ t0, 4 addi $ t1, $ t1, - 1 bgtz $ t1, loop la $ a0, fib move $ a1, $ t5 jal print li $ v0, 10 syscall print: add $ t0, $ noll, $ a0 add $ t1, $ noll, $ a1 la $ a0, head li $ v0, 4 syscall out: lw $ a0, 0 ($ t0) li $ v0, 1 syscall la $ a0, space li $ v0, 4 syscall addi li $ v0, 1 la $ a0, ($ t2) syscall la $ a0, string1 li $ v0, 4 syscall mult $ t1, $ t2 mflo $ t1 li $ v0, 1 la $ a0, ($ t1) syscall la $ a0, string2 li $ v0, 4 syscall addiu $ t2, $ t2, 1 beq $ t2, 16, endloop j loop endloop: li $ v0, 10 syscall



Assembler (asm, assembler); från engelska assemble - assemble, assemble) - ett programmeringsspråk på låg nivå, ett hjälpprogram som en del av ett operativsystem för att automatiskt översätta källprogrammet som ska köras på en dator till ett maskinspråk; typ av översättare. Assembler-koncept återspeglar arkitekturen hos en elektronisk dator. Assembler är en symbolisk notation av maskinspråk, vars användning gör det lättare att skriva maskinprogram. Olika assemblerspråk kan utvecklas för samma dator. Till skillnad från högnivåspråk, där problemen med att implementera algoritmer är dolda för utvecklarna, är assemblerspråk nära relaterat till datorns instruktionsuppsättning. Samlaren ger tillgång till register, specificerar adresseringsmetoder och beskriver operationer i termer av processorinstruktioner. Den kan innehålla medel på högre nivå: inbyggda och definierade makron som motsvarar flera maskininstruktioner, automatiskt kommandoval beroende på typer av operander, sätt att beskriva datastrukturer.

Assembly språkfunktioner

Assembler kallas också en kompilator från assemblerspråk till maskinspråksinstruktioner. Ett annat namn för en sådan kompilator är mnemonisk kod. Den är utformad för att presenteras i en bekväm (mnemonisk) form av maskinkoder med instruktioner, säkerställer en effektiv användning av systemresurser (processor, minne, kringutrustning). Mnemocode används på platser där prestanda krävs, begränsat av storleken på RAM. Assembler kallas också ibland instruktionsuppsättningen för den centrala processorn.

Det finns en assembler för varje processorarkitektur och för varje operativsystem. Cross-assemblers gör det möjligt, på maskiner med en arkitektur, att sätta ihop program för en annan arkitektur eller för ett annat operativsystem. Samlaren ger tillgång till register, specificerar adresseringsmetoder och beskriver operationer i termer av processorinstruktioner. Samlaren kan innehålla verktyg på hög nivå: inbyggda och definierade makron som motsvarar flera maskininstruktioner, automatiskt kommandoval beroende på typer av operander, sätt att beskriva datastrukturer.

Instruktioner för monteringsspråk motsvarar processorinstruktioner och är skrivna i symbolisk form för instruktioner och argument. Monteringsspråket ger möjlighet att länka delar av programmet och data genom etiketter, utförda under montering (för varje etikett beräknas en adress, varefter varje förekomst av etiketten ersätts med denna adress). Eftersom skiljer sig åt har varje processor sin egen uppsättning assemblyspråkinstruktioner och sina egna assemblykompilatorer.

Vanligtvis skrivs program eller avsnitt av kod i assemblerspråk i de fall utvecklaren behöver optimera prestanda (när man skapar drivrutiner), storleken på koden. De flesta kompilatorer låter dig kombinera kod skriven på olika programmeringsspråk i ett program. Detta gör att du kan skriva komplexa program med ett högnivåspråk, utan att förlora prestanda i tidskritiska uppgifter, genom att använda delar skrivna i assemblerspråk för dem. Kombination uppnås genom att infoga fragment på assemblerspråk i programtexten (genom särskilda språkdirektiv) eller genom att skriva procedurer på assemblerspråk. Denna metod används för enkla datatransformationer, men den är inte tillämplig i fullfjädrad assemblykod med data och subrutiner med många in- och utgångar som inte stöds av högnivåspråk.

I detta fall används modulär kompilering, när varje programfil kompileras till en objektmodul, som sedan länkas (länks) till det färdiga programmet. Objektfiler är block med maskinkod och data, med odefinierade adresser till referenser till data och procedurer i andra objektmoduler, samt en lista över deras procedurer och data. Länkaren samlar in koden och data för varje objektmodul i ett program, beräknar och fyller i korsreferensadresserna mellan modulerna. I processen att länka länkas programmet till statiska och dynamiska bibliotek (som är arkiv av objektfiler) Med modulär kompilering kan varje objektmodul i programmet skrivas i sitt eget programmeringsspråk och kompileras av sin egen kompilator (assembler) ).

1. När och av vem uppfanns räkne- och perforeringsmaskinerna? Vilka uppgifter löstes på dem?

2. Vad är ett elektromekaniskt relä? När skapades relädatorer? Hur snabbt hade de?
3. Var och när byggdes den första datorn? Vad hette det?
4. Vilken roll spelar John von Neumann i skapandet av datorer?
5. Vem var designern av de första inhemska datorerna?
6. På vilket grundelement skapades maskinerna från den första generationen? Vilka var deras huvudsakliga egenskaper?
7. På vilket grundelement skapades andra generationens maskiner? Vilka är deras fördelar jämfört med den första generationens datorer?
8. Vad är en integrerad krets? När skapades de första datorerna baserade på integrerade kretsar? Vad hette de?
9. Vilka nya områden för datortillämpningar har uppstått i och med tillkomsten av tredje generationens maskiner?
10. Vad är en mikroprocessor? När och var skapades den första mikroprocessorn?
11. Vad är en mikrodator och en persondator?
12. Vilka typer av datorer är vanligast i världen?
13. Vad är en superdator?
14. Vad är kluster PC-system?
15. Vad är speciellt med femte generationens datorer?

Namnge den första datorenheten. Abak Calculator Adding machine Russian abacus Vilken idé lade han fram i mitten

1800-talets engelske matematiker Charles Babbage?

Idén att skapa en mjukvarustyrd räknemaskin med en aritmetisk enhet, en kontrollenhet och en inmatnings- och utskriftsenhet

Tanken på att skapa en mobiltelefon

Tanken på att skapa datorstyrda robotar

Vilket år och var skapades den första datorn baserad på vakuumrör?

1945, USA

1944, England

1946, Frankrike

På vilken grund skapades tredje generationens datorer?

Integrerade kretsar

halvledare

elektroniska rör

mycket storskaliga integrerade kretsar

Vad hette den första persondatorn?

Namnge datorns centralenhet.

CPU

Systemenhet

Strömförsörjning

Moderkort

Processorn bearbetar den information som presenteras:

Decimalnotation

På engelska

På ryska

Maskinspråk (binärt)

För att ange numerisk information och textinformation, använd

Tangentbord

Skannern används för att...

För inmatning av bilder och textdokument i en dator

För att rita på den med en speciell penna

Flytta markören på skärmen

Få holografiska bilder

10. Vilken typ av skrivare är lämplig för utskrift av finansiella dokument?

Matrix skrivare

Jet skrivare

Laserskrivare

Vilken typ av skrivare rekommenderas att använda för att skriva ut abstracts?

Matrix skrivare

Jet skrivare

Laserskrivare

Vilken typ av skrivare är lämplig för att skriva ut foton?

Matrix skrivare

Jet skrivare

Laserskrivare

Om datorns sanitära och hygieniska krav inte följs kan en skadlig effekt på människors hälsa vara ...

Katodstrålerörsmonitor

LCD-skärm

Plasmapaneler

När du stänger av din dator raderas all information från ...

Random access minne

Hårddisk

Laserskiva

I vilken datorenhet lagras information?

Externt minne;

CPU;

De optiska banorna är tunnare och placerade tätare på ...

Digital videoskiva (DVD)

CD-ROM (CD-ROM)

Inmatningsenheter inkluderar...

Utdataenheter inkluderar...

Tangentbord, mus, joystick, ljuspenna, skanner, digitalkamera, mikrofon

Högtalare, monitor, skrivare, hörlur

Hårddisk, processor, minnesmoduler, moderkort, diskett

Programmet heter...

Ett datorprogram kan styra driften av en dator om den finns ...

I RAM

På diskett

På hårddisk

På CD

Data är...

En sekvens av kommandon som en dator utför under databehandling

Information presenterad i digital form och bearbetad på dator

Data som har ett namn och som lagras i ett icke-flyktigt minne

Filen är...

Text utskriven på en dator

Information presenterad i digital form och bearbetad på dator

Ett program eller data som har ett namn och som lagras i ett icke-flyktigt minne

När du formaterar en diskett snabbt ...

Diskkatalogen rensas upp

All data raderas

Diskdefragmentering pågår

Kontrollera skivans yta

När du formaterar en diskett helt ...

all data raderas

full diskkontroll utförs

diskkatalogen rensas upp

disken blir system

I ett hierarkiskt filsystem på flera nivåer ...

Filer lagras i ett undermappssystem

Filer lagras i ett system som är en linjär sekvens

Historien om utvecklingen av datorteknik:

1. Namnge den första datorenheten.
1) Kulram
2) Miniräknare
3) Tilläggsmaskin
4) Rysk kulram

2. Vilken idé lades fram i mitten av 1800-talet av den engelske matematikern Charles Babbage?
1) Idén att skapa en mjukvarustyrd räknemaskin med en aritmetisk enhet, en kontrollenhet och en inmatnings- och utskriftsenhet
2) Tanken på att skapa en mobiltelefon
3) Idén om att skapa datorstyrda robotar
3. Namnge den första datorprogrammeraren.
1) Ada Lovelace
2) Sergey Lebedev
3) Bill Gates
4) Sophia Kovalevskaya

4. Vilket år och var skapades den första datorn baserad på vakuumrör?
1) 1945, USA
2) 1950, Sovjetunionen
3) 1944, England
4) 1946, Frankrike

5. På vilken grund skapades den tredje generationens datorer?
1) Integrerade kretsar
2) halvledare
3) vakuumrör
4) mycket storskaliga integrerade kretsar

6. Vad hette den första persondatorn?
1) Apple II
2) IBM PC
3) Dell
4) Corvette
Datorenhet ........................ 15
1. Namnge datorns centralenhet.
1) Processor
2) Systemenhet
3) Strömförsörjning
4) Moderkort
2. Hur registreras och överförs fysisk information i en dator?
1) i siffror;
2) använda program;
3) presenteras i form av elektriska signaler.

3. Processorn bearbetar informationen som presenteras:
1) I decimalnotation
2) På engelska
3) På ryska
4) På maskinspråk (i binärt)
4. För att ange numerisk information och textinformation, använd
1) Tangentbord
2) Mus
3) Styrboll
4) Handtag
5. Den viktigaste egenskapen hos koordinatinmatningsenheter är upplösningen, som vanligtvis är 500 dpi (dot per inch - dots per inch (1 tum = 2,54 cm)), vilket betyder ...
1) När du flyttar musen en tum flyttar muspekaren 500 punkter
2) När du flyttar musen 500 punkter, flyttas muspekaren en tum
6. Skannern används för att ...
1) För att mata in bilder och textdokument i en dator
2) För att rita på den med en speciell penna
3) Flytta markören på skärmen
4) Skaffa holografiska bilder
Utmatningsenheter för information ................... 21
1. Vilken typ av skrivare är lämplig för utskrift av finansiella dokument?
1) Matrisskrivare
2) Bläckstråleskrivare
3) Laserskrivare
2. Vilken typ av skrivare är tillrådligt att använda för att skriva ut abstracts?
1) Matrisskrivare
2) Bläckstråleskrivare
3) Laserskrivare

1. Vilken typ av skrivare är lämplig för att skriva ut foton?
1) Matrisskrivare
2) Bläckstråleskrivare
3) Laserskrivare
2. Om datorns sanitära och hygieniska krav inte följs kan en skadlig effekt på människors hälsa vara ...
1) Monitor på ett katod-strålerör
2) LCD-skärm
4) Plasmapaneler
3. En enhet som tillhandahåller inspelnings- och läsinformation kallas ...
1) Diskenhet eller lagring

4. När du stänger av din dator raderas all information från ...
4) RAM
5) Hårddisk
6) Laserskiva
7) Disketter
13. I vilken datorenhet lagras information?
1) Externt minne;
2) övervaka;
3) processor;
2. Optiska banor är tunnare och placerade tätare på ...
1) Digital videoskiva (DVD)
2) CD-skiva
3) Diskett
3. På vilken skiva informationen lagras på koncentriska spår, på vilka magnetiserade och icke-magnetiserade områden alternerar
1) På en diskett
2) På CD
3) På DVD

4. Inmatningsenheter inkluderar ...

1) Hårddisk, processor, minnesmoduler, moderkort, diskett
5. Utdataenheterna inkluderar ...
1) Tangentbord, mus, joystick, ljuspenna, skanner, digitalkamera, mikrofon
2) Högtalare, bildskärm, skrivare, hörlurar
3) Hårddisk, processor, minnesmoduler, moderkort, diskett
6. Programmet heter ...

7. Ett datorprogram kan styra driften av en dator om den finns ...
1) I RAM
2) På diskett
3) På hårddisken
4) På CD
8. Data är...
1) En sekvens av kommandon som en dator utför under databehandling
2) Information presenterad i digital form och bearbetad på dator
3) Data som har ett namn och som lagras i ett icke-flyktigt minne
9. En fil är ...
1) Text utskriven på en dator
2) Information presenterad i digital form och bearbetad på dator
3) Ett program eller data som har ett namn och som lagras i ett icke-flyktigt minne

10. När du snabbt formaterar en diskett ...
1) Diskkatalogen rensas
2) All data raderas
3) Diskdefragmentering utförs
4) En kontroll genomförs enl

Assemblerare

AssemblerareÄr ett programmeringsspråk på låg nivå. Språket har fått sitt namn från ordet assembler - assembler. Det uppstod redan på 50-talet. som en symbolisk analog till maskinspråk.
Assembler-instruktioner överensstämmer en-till-en med processorinstruktioner och representerar i själva verket en bekväm symbolisk form för att skriva kommandon och argument. Assemblern tillhandahåller också länkning av programdelar och data genom etiketter, utförda under montering (för varje etikett beräknas en adress, varefter varje förekomst av etiketten ersätts med denna adress).
Eftersom instruktionsuppsättningarna för mikroprocessorer skiljer sig, har varje processor sin egen uppsättning instruktioner på assemblerspråk.
Med hjälp av assembler kan du skriva program som är omöjliga, eller mycket svåra att skriva på andra programmeringsspråk. Till exempel: nyckelgeneratorer (keygen), systemmonitorer, hårdvarudrivrutiner eller till och med operativsystem.
Språk på hög nivå ("C", "Pascal", "Delphi", etc.) ger inte tillförlitlig kontroll över dataströmmar, minnesadresser eller processorregister, och de har alla utvecklats för en viss typ av operativsystem, medan assembler kan bli samma assembler, men arbetar på en plattform okänd för vetenskapen, och gör program för samma plattform.
Assembler-program är, till skillnad från program skrivna på högnivåspråk, tio gånger mindre och fungerar tio gånger snabbare. Ett exempel är operativsystemet MenuetOS, som är skrivet i Flat Assembler och får plats på en diskett (1,44 MB), och uppsättningen innehåller applikationsprogram som: en assemblerkodredigerare med bakgrundsbelysning, arbete med filsystemet, 3d-skärmsläckare, ett antal spel, bildvisare, Flat Assembler-kompilator, terminal, CD-spelare och mycket mer. Fördelen är att den kan laddas ner snabbt från Internet (även med låg anslutningshastighet).
För tillfället utvecklar de flesta mjukvaruspecialister på högnivåspråk som Pascal eller C, som är lättare att skriva program, men den mest kraftfulla och effektiva programvaran skrivs helt eller delvis på assemblerspråk.

Litteratur
1. Peter Abel - Montör. Språk och programmering för IBM PC - M., 1999.

Assemblerare

Assemblerare(från engelska assembler - assembler) - en kompilator av källkoden för ett program skrivet på assemblerspråk till ett program på ett maskinspråk.
Liksom språket i sig är assemblers vanligtvis specifika för en viss arkitektur, operativsystem och variant av språkets syntax. Samtidigt finns det multiplattforms- eller helt universella (mer exakt begränsad-universella, eftersom det är omöjligt att skriva hårdvaruoberoende program på ett lågnivåspråk) assemblers som kan arbeta på olika plattformar och operativsystem. Bland de senare kan man också urskilja en grupp korsmontörer som kan sätta ihop maskinkod och exekverbara moduler (filer) för andra arkitekturer och operativsystem.
Montering är kanske inte det första och inte det sista steget på vägen mot att erhålla en körbar programmodul. Så många kompilatorer från högnivåprogrammeringsspråk producerar resultatet i form av ett assemblerprogram, som vidarebearbetas av assemblern. Resultatet av montering kanske inte är en körbar fil, utan en objektmodul som innehåller olika block av maskinkod och programdata, från vilken (eller från flera objektmoduler) en körbar fil senare kan erhållas med hjälp av länken.
Särskilda minnesceller placerade direkt i processorn. Att arbeta med register är mycket snabbare än att arbeta med minnesceller, därför används register aktivt både i assemblerspråksprogram och av språkkompilatorer på hög nivå.
Namnen på registren kommer från deras syfte:

EAX / AX / AH / AL (ackumulatorregister) - ackumulator;
EBX / BX / BH / BL (basregister) - basregister;
ECX / CX / CH / CL (räknarregister) - räknare;
EDX / DX / DH / DL (dataregister) - dataregister;
ESI / SI (källindexregister) - källindex;
EDI / DI (destination index register) - mottagare (mottagare) index;
ESP / SP (stackpekarregister) - stackpekarregister;
EBP / BP (baspekareregister) - register för stapelramens baspekare.

Strängbearbetningskommandon
För att arbeta med strängar, eller strängar av tecken eller siffror (dvs helt enkelt, med arrayer av godtyckliga data), tillhandahåller MP ett antal specialkommandon:
movs - överföra en sträng;
cmps - jämförelse av två linjer;
hav - sök i en sträng efter ett givet element;
lods - laddar ackumulatorn (AL- eller AX-register) från en sträng;
stos - skriva ett strängelement från ackumulatorn (registrerar AX eller AL).

Värdighet

· Assembly-språk låter dig skriva den snabbaste och mest kompakta koden som är möjlig för en given processor.
· Arbetshastighet - genom att optimera beräkningsalgoritmen och / eller mer rationell åtkomst till RAM (till exempel om all initial data lagras i processorregister kan onödiga anrop till OP uteslutas), omfördelning av data, tabell beräkning av funktioner;
· Mängden kod (inklusive genom effektiv användning av mellanresultat). Att minska mängden kod kommer också ofta att påskynda programexekveringen.
· Säkerställa maximal användning av de specifika funktionerna hos en viss plattform, vilket också gör att du kan skapa mer effektiva program, inklusive mindre resurskrävande.
· Vid programmering i assemblerspråk är direkt åtkomst till hårdvaran möjlig, och i synnerhet till I/O-portar, processorregister etc. I många operativsystem är direktåtkomst från applikationsprogram för att skriva till periferiutrustningsregister blockerad för systemtillförlitlighet och undantag "fryser".
· Assembly-språk används ofta för att skapa hårdvarudrivrutiner och operativsystemets kärna, när det är viktigt att tillfälligt koordinera driften av kringutrustning med den centrala processorn.
· Assembly språk används för att skapa BIOS "firmware".
· Assembly-språk används ofta för att skapa maskinberoende kompilatorrutiner och språktolkar på hög nivå, och implementera plattformskompatibilitet.
· Med hjälp av ett demonteringsprogram kan du förstå algoritmerna för programmet som studeras i avsaknad av en lista på ett språk på hög nivå, studera endast maskinkoder, men i komplexa icke-triviala program är detta mycket, mycket tid förbrukande.

nackdelar
· På grund av assemblerspråkets maskinorientering ("låg" nivå) är det svårare för en person att läsa och förstå ett program i det i jämförelse med högnivåprogrammeringsspråk; programmet består av för "små" element - maskininstruktioner, följaktligen blir programmering och felsökning mer komplicerad, arbetsintensiteten och sannolikheten för att införa fel ökar.
· Avancerade programmeringskunskaper krävs för att producera kvalitetskod: kod skriven av en genomsnittlig programmerare i assemblerspråk är vanligtvis inte bättre eller sämre än kod som genereras av en optimerande kompilator för jämförbara program skrivna på ett högnivåspråk.
· Ett program på ett högnivåspråk kan kompileras om med automatisk optimering för särdragen hos en ny målplattform, medan ett program i assemblerspråk på en ny plattform kan förlora sin hastighetsfördel utan att manuellt skriva om koden.
· Vanligtvis färre bibliotek tillgängliga jämfört med moderna industriella programmeringsspråk.
· Det finns ingen portabilitet av program till datorer med en annan arkitektur och instruktionsuppsättning.

Kompatibilitet
Ett program designat för en typ av assembler kan inte kompileras i en annan utan radikal omarbetning eller automatisk konvertering! Men även bland assemblerare av "sin" typ finns det förvirring, inkonsekvens och många skillnader: i nyckelord, i listning av designregler, i medföljande bibliotek och header-filer, etc. assemblern som den är avsedd för. Annars gör dig redo för omarbetning (det vill säga för adoption). Skillnader dyker ofta upp på de mest oväntade ställena. Vissa montörer förstår att "mov eax, x" är detsamma som "mov eax, [x]", vissa gör det inte. De snubblar och ger ett fel. Men fortfarande ingenting! Det är mycket värre när översättaren tyst tolkar denna konstruktion som "mov eax, offset x", vilket inte alls är samma sak! Så du måste vara väldigt, väldigt försiktig när du porterar ett program.

Operativsystemkompatibilitet. MS-DOS-baserade program är inte bara inte transporterbara, utan även icke-portabla. De kännetecknas av direkt interaktion med hårdvara, tillgänglig i NT endast från kärnnivån, för att inte tala om det faktum att 16-bitars kod anropas från 32-bitars applikationer endast via DPMI, och även då inte utan tweaks.

Innan man översätter ett assemblerprogram är det alltså nödvändigt att identifiera vilken översättare och vilket operativsystem det är avsett för! Med assemblerfragmenten ryckta från det "inhemska" sammanhanget är situationen ännu värre. Anta att en artikel beskriver en intressant anti-felsökningsteknik och tillhandahåller monteringskod, men inte säger hur man bäddar in den i ditt program. En bekant situation, eller hur? Direktsändning är omöjlig – översättaren svär vilt, men säger ingenting.

Montering av programmet

Den förberedda texten är källdata för specialprogram som kallas assemblers. Sammanställarnas uppgift är att konvertera programtext till binära instruktioner som kan exekveras av en mikroprocessor. Om syntaxfel hittas genereras ingen resultatkod. Processen att skapa en körbar fil sker i två steg:

Asm -> .obj -> .exe / .dll / .com

I det första steget (.asm -> .obj) erhålls mellanliggande objektkodfiler med tillägget .obj från assemblerfilen genom kompilering (ytterligare inc-filer kan användas i detta fall). .obj-filen innehåller optimerad maskinkod så länge som inga syntax- eller semantiska fel påträffas. Om fel hittas i källfilen med assemblerspråksprogrammet får programmeraren en lista över upptäckta fel, där felen indikeras med radnumret där de hittades. Programmeraren går igenom redigerings- och kompileringsstegen tills alla fel i källfilen har tagits bort. I detta skede är det redan möjligt att få ett färdigt program, men oftast saknar det några komponenter. Om kompilatorn av någon anledning (sökvägen till en sådan fil är felaktigt stavad eller filen saknas) inte kan hitta inc-filen, utfärdas en varning och obj-filen kommer inte att tas emot.

Montering sker som regel i två steg. Vid det första passet översätts mnemoniska kommandon, decimaltal och symboler till motsvarande maskinkoder, det beräknas hur mycket utrymme som upptas av vilket kommando, de upptäckta namnen som angetts av användaren (konstanter, etiketter, variabler), deras typ och numeriska värden skrivs in i tabellen. Samma tabell registrerar adresserna från vilka procedurerna börjar, adresserna till etiketterna, adresserna till början/slutet av segment, etc., under det andra passet ersätts adresserna till början av procedurerna, namnen på etiketterna ersätts med adresser.

Som ett resultat av montering erhålls en så kallad "objektfil". Som en valfri funktion kan assemblern skapa en programlistningsfil.

För att få objektkodfiler måste du vanligtvis köra lämpligt assemblerprogram (Microsofts ML.EXE och Borlands TASM.EXE), och ange namnet på filen med programtexten på kommandoraden.

Denna form av åkallan är det minimum som krävs. Förutom namnet på textfilen måste monteringsalternativ anges. Mer detaljerad information om alternativen för monteringsprogrammet finns i dokumentationen för dessa program.

Programlayout

Nästa steg (.obj -> .exe / .dll / .com) kallas länkning eller länkning och används för att ersätta de symboliska namn som används av programmeraren med riktiga adresser.

Jämför det hexadecimala innehållet i OBJ och EXE-filen du har. EXE-filen innehåller samma bytesekvens som OBJ-filen. Men förutom det finns det också: namnet på den sammansatta filen, versionen av assemblern, segmentets "riktiga namn" och så vidare.

Detta är "service"-information avsedd för de fall då du vill samla in din körbara fil från flera. Vid utveckling av stora applikationer består källkoden som regel av flera moduler (filer med källkoder), eftersom det är obekvämt att lagra alla texter i en fil - det är svårt att navigera i dem.

Varje modul kompileras separat till en separat objektkodfil. Var och en av dessa filer har sin egen kod / data / stacksegment, som sedan måste kombineras till en helhet. Och vi behöver bara få en körbar fil - med ett enda segment av kod / data / stack. Det är precis vad LINK gör: den kompletterar definitionen av adresslänkar och kombinerar vid behov flera programmoduler till en. Och det här med oss ​​är genomförbart.

Till våra moduler behöver vi dessutom lägga till maskinkod för subrutiner som implementerar olika standardfunktioner (till exempel beräkning av de matematiska funktionerna SIN eller LN). Sådana funktioner finns i bibliotek (filer med standardtillägget .LIB), som antingen levereras med kompilatorn eller skapas oberoende. Därför inkluderar förberedelseprocessen nödvändigtvis ett länkningssteg, när alla okända adresser för delade variabler eller funktioner bestäms när de monteras separat.

Processen att kombinera objektmoduler till en fil utförs av ett speciellt länk- eller samlarprogram (LINK.EXE från Microsoft och TLINK.EXE från Borland), som länkar objektmoduler och maskinkod för standardfunktioner, hittar dem i bibliotek och genererar en fungerande applikation - körbar kod för en specifik plattform.

En körbar kod är ett komplett program med tillägget COM, DLL eller EXE som kan köras på en dator med det operativsystem som programmet skapades för. Namnet på den körbara filen kommer att vara namnet på den första .OBJ-filen. För att länka måste du skriva på kommandoraden:

länk prog1.obj prog2.obj eller tlink prog1.obj prog2.obj

Innehållet i objektfilen analyseras av länken. Det avgör om programmet har externa länkar, det vill säga om programmet innehåller instruktioner för proceduranrop som finns i ett av länkbiblioteken. Länkaren hittar dessa referenser i objektfilen, kopierar de nödvändiga procedurerna från biblioteken, kombinerar dem med objektfilen och skapar en körbar fil. Som ett alternativ kan länken skapa en korsreferensfil som innehåller konturerna av den resulterande körbara filen.

Använda källor
1.https: //ru.wikipedia.org/
2.http: //natalia.appmat.ru/
3.http://www.codenet.ru/
4.http://wasm.ru/
5. Norton P., Souhe D. Assembly language för IBM PC. M .: Dator, 1992.







2021 gtavrl.ru.