PC Assembly Language.pdf
(
773 KB
)
Pobierz
PC Assembly Language
PCAssemblyLanguage
PaulA.Carter
July23,2006
Copyright
c
2001,2002,2003,2004byPaulCarter
Thismaybereproducedanddistributedinitsentirety(includingthisau-
thorship,copyrightandpermissionnotice),providedthatnochargeismade
forthedocumentitself,withouttheauthor’sconsent.Thisincludes“fair
use”excerptslikereviewsandadvertising,andderivativeworksliketrans-
lations.
Notethatthisrestrictionisnotintendedtoprohibitchargingfortheservice
ofprintingorcopyingthedocument.
Instructorsareencouragedtousethisdocumentasaclassresource;however,
theauthorwouldappreciatebeingnotifiedinthiscase.
Contents
Preface v
1Introduction 1
1.1NumberSystems......................... 1
1.1.1Decimal.......................... 1
1.1.2Binary........................... 1
1.1.3Hexadecimal ....................... 3
1.2ComputerOrganization..................... 4
1.2.1Memory.......................... 4
1.2.2TheCPU......................... 5
1.2.3The80x86familyofCPUs................ 6
1.2.4808616-bitRegisters................... 7
1.2.58038632-bitregisters .................. 8
1.2.6RealMode........................ 8
1.2.716-bitProtectedMode ................. 9
1.2.832-bitProtectedMode..................10
1.2.9Interrupts.........................10
1.3AssemblyLanguage.......................11
1.3.1Machinelanguage....................11
1.3.2Assemblylanguage....................11
1.3.3Instructionoperands...................12
1.3.4Basicinstructions ....................12
1.3.5Directives.........................13
1.3.6InputandOutput....................16
1.3.7Debugging.........................16
1.4CreatingaProgram.......................18
1.4.1Firstprogram.......................18
1.4.2Compilerdependencies..................22
1.4.3Assemblingthecode...................22
1.4.4CompilingtheCcode..................23
1.4.5Linkingtheobjectfiles .................23
1.4.6Understandinganassemblylistingfile.........23
i
ii CONTENTS
1.5SkeletonFile...........................25
2BasicAssemblyLanguage 27
2.1WorkingwithIntegers......................27
2.1.1Integerrepresentation..................27
2.1.2Signextension......................30
2.1.3Two’scomplementarithmetic .............33
2.1.4Exampleprogram....................35
2.1.5Extendedprecisionarithmetic .............36
2.2ControlStructures........................37
2.2.1Comparisons.......................37
2.2.2Branchinstructions ...................38
2.2.3Theloopinstructions ..................41
2.3TranslatingStandardControlStructures............42
2.3.1Ifstatements.......................42
2.3.2Whileloops .......................43
2.3.3Dowhileloops......................43
2.4Example:FindingPrimeNumbers...............43
3BitOperations 47
3.1ShiftOperations.........................47
3.1.1Logicalshifts.......................47
3.1.2Useofshifts........................48
3.1.3Arithmeticshifts.....................48
3.1.4Rotateshifts.......................49
3.1.5Simpleapplication....................49
3.2BooleanBitwiseOperations...................50
3.2.1TheANDoperation...................50
3.2.2TheORoperation....................50
3.2.3TheXORoperation...................51
3.2.4TheNOToperation...................51
3.2.5The
TEST
instruction...................51
3.2.6Usesofbitoperations..................52
3.3AvoidingConditionalBranches.................53
3.4ManipulatingbitsinC......................56
3.4.1ThebitwiseoperatorsofC...............56
3.4.2UsingbitwiseoperatorsinC..............56
3.5BigandLittleEndianRepresentations.............57
3.5.1WhentoCareAboutLittleandBigEndian......59
3.6CountingBits...........................60
3.6.1Methodone........................60
3.6.2Methodtwo........................61
3.6.3Methodthree.......................62
CONTENTS iii
4Subprograms 65
4.1IndirectAddressing........................65
4.2SimpleSubprogramExample..................66
4.3TheStack.............................68
4.4TheCALLandRETInstructions................69
4.5CallingConventions.......................70
4.5.1Passingparametersonthestack............70
4.5.2Localvariablesonthestack...............75
4.6Multi-ModulePrograms.....................77
4.7InterfacingAssemblywithC...................80
4.7.1Savingregisters......................81
4.7.2Labelsoffunctions....................82
4.7.3Passingparameters....................82
4.7.4Calculatingaddressesoflocalvariables.........82
4.7.5Returningvalues.....................83
4.7.6Othercallingconventions................83
4.7.7Examples.........................85
4.7.8CallingCfunctionsfromassembly...........88
4.8ReentrantandRecursiveSubprograms.............89
4.8.1Recursivesubprograms..................89
4.8.2ReviewofCvariablestoragetypes...........91
5Arrays 95
5.1Introduction............................95
5.1.1Definingarrays......................95
5.1.2Accessingelementsofarrays ..............96
5.1.3Moreadvancedindirectaddressing...........98
5.1.4Example..........................99
5.1.5MultidimensionalArrays.................103
5.2Array/StringInstructions....................106
5.2.1Readingandwritingmemory..............106
5.2.2The
REP
instructionprefix................108
5.2.3Comparisonstringinstructions.............109
5.2.4The
REPx
instructionprefixes..............109
5.2.5Example..........................111
6FloatingPoint 117
6.1FloatingPointRepresentation..................117
6.1.1Non-integralbinarynumbers..............117
6.1.2IEEEfloatingpointrepresentation...........119
6.2FloatingPointArithmetic....................122
6.2.1Addition..........................122
6.2.2Subtraction........................123
Plik z chomika:
Deadm4n
Inne pliki z tego folderu:
The 80x86 IBM PC and Compatible Computers.pdf
(43972 KB)
Write Great Code - Volume I - Understanding the Machine.chm
(8442 KB)
The Assembly Programming Master Book.chm
(10479 KB)
The Art of Assembly Language.pdf
(4398 KB)
Intel Code Table.pdf
(93 KB)
Inne foldery tego chomika:
2_Data Structure and Algorithms
3_Computer Architecture
4_Software Engineering
5_Operating Systems
Zgłoś jeśli
naruszono regulamin