Gå til innhold

Assembly: Assembly opgave for de interesserte


Gjest Slettet+9871234

Anbefalte innlegg

Gjest Slettet+9871234

Jeg ser at det er en del her som vil lære seg assembly. Mens jeg repeterer de tre bøkene:

 

Michael Abrash (1990) Zen of Assembly Language: Volum I Knowledge (Scott, Foresman IBM computer books)

 

Jeff Duntemann (1990) Assembly Language from Square One: For the PC at and Compatibles (Scott, Foresman IBM computer books)

 

William H. Murray and Chris H. Papas (1990) Assembly language magic : programming for the 8088-80386 (Scott, Foresman IBM computer books)

 

kom jeg på følgende oppgave: Denne http://www.subnetonline.com/pages/converters/hex-to-bin-to-dec.php kalkulatoren kan brukes som hjelpemiddel. Forutsetning 8088 chip. Vet ikke om resultatet er det samme på nyere chipper.

 

1. 01000000B = 40H og betyr "Add 1 to register AX".

2. Hva er henholdsvis hex og binærinstruksjonen for å laste 73H inn i register DH?

3. Hva er Hex koden for binærkoden 11110011B 10100100B og hva er instruksjonen til CPU'en?

3. Test følgende program i et skript som for eksemple Simula, PHP, Python eller Lua, C++, C samt ASM hvor man bare opererer på CPU'ens registre (registeradressering). Skriv ut medgått tid og sammenlign effektivitet.

 

 

Faktoriser et partall feks. 512 til kvotienten = 1.

 

Gjenta samme operasjon 1 milliard ganger.

 

Hint for å starte med assembler koden er å skrive ut assembler koden til skrittvis mer omfattende C versjoner av programmet.

 

4. Kommenter optimaliteten av de ulike kodene.

5. Hva legger du i uttrykket? Om du kan, hold deg unna minnet.

6. Dette PDF dokument: [oopschool.com/books/CPB2010.pdf] har en del assembler stoff og hvordan beregning av Fibonacci tallene fyller opp maskinens stakk ved rekursjon. Er de mulig å unngå dette ved å opererere på CPU'ens registre?

 

P.S. De som bruker PC har et nyttig verktøy, DEBUG installert. Gå til DOS klartekst og skriv inn teksten nedenfor (hvor copy con står for copy console, dvs. skjermen. Det er den raskeste måten å lage en enkel ASCII text fil på). Avslutt etter mann. med enter og deretter CTRL + Z + enter. Gikk alt riktig, har du nå en rent tekst fil, sam.txt.

 

copy con sam.txt

Sam

var

en

mann.

 

Ute i Dos prompt skriver du nå:

 

debug sam.txt

 

Dermed er du inne i debug hvor prompten er -.

 

Aktuelle kommandoer:

d (Minnedump - kan også ha parameter med startadresse. Eks d 0100)

r (Viser innholdet i prosessorens registre)

a (assemble)

g (Go - se advarsel nedenfor)

t (Trace - se advarsel nedenfor)

u (unassemble)

e (for å endre innhold etc)

w (skrive endret innhold til disk. Vær varsom!!!)

q (avslutter debug).

 

Dette var en meget rask innføring i debug. Søk på nettet om du ønsker mer informasjon som denne raske innføringen:

 

http://www.codeproject.com/KB/miscctrl/Debug.aspx

 

eller denne

 

http://www.mirror.href.com/thestarman/asm/debug/debug.htm]

 

mer fullstendige dokumentasjonen.

 

Vær oppmerksom på at debug ikke har noe sikkerhetsnett, så du kan ødelegge en hel programfil med noen får kommandoer. Ta derfor backup av eventuelle kritiske filer du jobber med i debug. Du kan skrive et program direkte inn i minnet ved bruk av Debug ved hjelp av a (Assembly) kommandoen. Der er to tilhørende kommandoer g (Go) og t (Trace) hvor g utfører alle kommandoene ved instruksjonspekern (CS:IP) mens t utfører en og en kommando. Når du går inn i Debug, innholder det tilfeldige instruksjoner fra andre programmer. Du må ikke eksperimentere med t og g på disse kommandonen. I verste fall kan du du slette sektorer på harddisken din eller endog ødelegge DOS, noe som først viser seg senere. M.a.o Debug har ikke noe sikkerhetsnett, så utfør ikke noen kommandoer du ikke har kontroll på.

 

Et sted å begynne (Mange snutter der):

 

[kjellbleivik.com/Books/AssemblyDisassembly/AssemblyDisassembly.zip]

 

Vcommunication lagde tidligere en kommenterende disassembler og en bios preprosessor. Dette firmaet finnes ikke lenger, men Clive Turvey som lagde de siste versjonene av programmet tilbyr en del programmer som kan lastes ned gratis. Her er Sorucers / Windows source hjemmesiden. Bla nedovewr så finner du en del zip filer som kan være av interesse.

 

[www.tbcnet.com/~clive/vcomwinp.html]

 

Her

 

[www.woodmann.com/crackz/Tools.htm]

 

kan du også laste ned en rekke assemblere / disassemblere / debuggere etc. For eksempel V Communication's Sourcer 7 og 8 (Siste versjon).

 

Du finner mye mer informasjon under overskriftene:

 

"High performance, distributed and parallel computing"

 

og

 

"Assembly"

 

på lenken nederst til høyre i min signatur. Der finner du også en del ASM kildetekst.

 

Kapittel 8 i denne boken

 

[drdobbs.com/high-performance-computing/184404919]

 

"Speeding Up C with Assembly Language" som kan lastes ned som PDF dokument burde være av interesse for dem som vil øke hastigheten til C / C++ programmer med inline assembler kode. Men behersker du Debug, er det utrolig hva du kan finne ut om programmer som lastes inn, om minne og registre, disassemblering og assemblering. Du kan selvasgt bruke Debug til å lage små assembler programmer direkte og lagre dem på fil (w).

Endret av Slettet+9871234
Lenke til kommentar
  • 2 år senere...
Videoannonse
Annonse

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...