Programmers ManualFASM 169.docx
- 文档编号:22787766
- 上传时间:2023-04-27
- 格式:DOCX
- 页数:104
- 大小:79.46KB
Programmers ManualFASM 169.docx
《Programmers ManualFASM 169.docx》由会员分享,可在线阅读,更多相关《Programmers ManualFASM 169.docx(104页珍藏版)》请在冰豆网上搜索。
ProgrammersManualFASM169
flatassembler1.69
Programmer'sManual
TableofContents
Chapter1-Introduction
1.1Compileroverview
1.1.1Systemrequirements
1.1.2Executingcompilerfromcommandline
1.1.3Compilermessages
1.1.4Outputformats
1.2Assemblysyntax
1.2.1Instructionsyntax
1.2.2Datadefinitions
1.2.3Constantsandlabels
1.2.4Numericalexpressions
1.2.5Jumpsandcalls
1.2.6Sizesettings
Chapter2-InstructionSet
2.1Thex86architectureinstructions
2.1.1Datamovementinstructions
2.1.2Typeconversioninstructions
2.1.3Binaryarithmeticinstructions
2.1.4Decimalarithmeticinstructions
2.1.5Logicalinstructions
2.1.6Controltransferinstructions
2.1.7I/Oinstructions
2.1.8Stringsoperations
2.1.9Flagcontrolinstructions
2.1.10Conditionaloperations
2.1.11Miscellaneousinstructions
2.1.12Systeminstructions
2.1.13FPUinstructions
2.1.14MMXinstructions
2.1.15SSEinstructions
2.1.16SSE2instructions
2.1.17SSE3instructions
2.1.18AMD3DNow!
instructions
2.1.19Thex86-64longmodeinstructions
2.1.20SSE4instructions
2.1.21AVXinstructions
2.1.22Otherextensionsofinstructionset
2.2Controldirectives
2.2.1Numericalconstants
2.2.2Conditionalassembly
2.2.3Repeatingblocksofinstructions
2.2.4Addressingspaces
2.2.5Otherdirectives
2.2.6Multiplepasses
2.3Preprocessordirectives
2.3.1Includingsourcefiles
2.3.2Symbolicconstants
2.3.3Macroinstructions
2.3.4Structures
2.3.5Repeatingmacroinstructions
2.3.6Conditionalpreprocessing
2.3.7Orderofprocessing
2.4Formatterdirectives
2.4.1MZexecutable
2.4.2PortableExecutable
2.4.3CommonObjectFileFormat
2.4.4ExecutableandLinkableFormat
Chapter1
Introduction
Thischaptercontainsallthemostimportantinformationyouneedtobeginusingtheflatassembler.Ifyouareexperiencedassemblylanguageprogrammer,youshouldreadatleastthischapterbeforeusingthiscompiler.
1.1Compileroverview
Flatassemblerisafastassemblylanguagecompilerforthex86architectureprocessors,whichdoesmultiplepassestooptimizethesizeofgeneratedmachinecode.Itisself-compilableandversionsfordifferentoperatingsystemsareprovided.Alltheversionsaredesignedtobeusedfromthesystemcommandlineandtheyshouldnotdifferinbehavior.
1.1.1Systemrequirements
Allversionsrequirethex86architecture32-bitprocessor(atleast80386),althoughtheycanproduceprogramsforthex86architecture16-bitprocessors,too.DOSversionrequiresanOScompatiblewithMSDOS2.0andeithertruerealmodeenvironmentorDPMI.WindowsversionrequiresaWin32consolecompatiblewith3.1version.
1.1.2Executingcompilerfromcommandline
Toexecuteflatassemblerfromthecommandlineyouneedtoprovidetwoparameters-firstshouldbenameofsourcefile,secondshouldbenameofdestinationfile.Ifnosecondparameterisgiven,thenameforoutputfilewillbeguessedautomatically.Afterdisplayingshortinformationabouttheprogramnameandversion,compilerwillreadthedatafromsourcefileandcompileit.Whenthecompilationissuccessful,compilerwillwritethegeneratedcodetothedestinationfileanddisplaythesummaryofcompilationprocess;otherwiseitwilldisplaytheinformationabouterrorthatoccurred.
Inthecommandlineyoucanalsoinclude-moptionfollowedbyanumber,whichspecifieshowmanykilobytesofmemoryflatassemblershouldmaximallyuse.IncaseofDOSversionthisoptionslimitsonlytheusageofextendedmemory.The-poptionfollowedbyanumbercanbeusedtospecifythelimitfornumberofpassestheassemblerperforms.Ifcodecannotbegeneratedwithinspecifiedamountofpasses,theassemblywillbeterminatedwithanerrormessage.Themaximumvalueofthissettingis65536,whilethedefaultlimit,usedwhennosuchoptionisincludedincommandline,is100.
Thesourcefileshouldbeatextfile,andcanbecreatedinanytexteditor.LinebreaksareacceptedinbothDOSandUnixstandards,tabulatorsaretreatedasspaces.
Therearenocommandlineoptionsthatwouldaffecttheoutputofcompiler,flatassemblerrequiresonlythesourcecodetoincludetheinformationitreallyneeds.Forexample,tospecifyoutputformatyouspecifyitbyusingtheformatdirectiveatthebeginningofsource.
1.1.3Compilermessages
Asitisstatedabove,afterthesuccessfulcompilation,thecompilerdisplaysthecompilationsummary.Itincludestheinformationofhowmanypasseswasdone,howmuchtimeittook,andhowmanybyteswerewrittenintothedestinationfile.Thefollowingisanexampleofthecompilationsummary:
flatassemblerversion1.69(16384kilobytesmemory)
38passes,5.3seconds,77824bytes.
Incaseoferrorduringthecompilationprocess,theprogramwilldisplayanerrormessage.Forexample,whencompilercan'tfindtheinputfile,itwilldisplaythefollowingmessage:
flatassemblerversion1.69(16384kilobytesmemory)
error:
sourcefilenotfound.
Iftheerrorisconnectedwithaspecificpartofsourcecode,thesourcelinethatcausedtheerrorwillbealsodisplayed.Alsoplacementofthislineinthesourceisgiventohelpyoufindingthiserror,forexample:
flatassemblerversion1.69(16384kilobytesmemory)
example.asm[3]:
mobax,1
error:
illegalinstruction.
Itmeansthatinthethirdlineoftheexample.asmfilecompilerhasencounteredanunrecognizedinstruction.Whenthelinethatcausederrorcontainsamacroinstruction,alsothelineinmacroinstructiondefinitionthatgeneratedtheerroneousinstructionisdisplayed:
flatassemblerversion1.69(16384kilobytesmemory)
example.asm[6]:
stoschar7
example.asm[3]stoschar[1]:
mobal,char
error:
illegalinstruction.
Itmeansthatthemacroinstructioninthesixthlineoftheexample.asmfilegeneratedanunrecognizedinstructionwiththefirstlineofitsdefinition.
1.1.4Outputformats
Bydefault,whenthereisnoformatdirectiveinsourcefile,flatassemblersimplyputsgeneratedinstructioncodesintooutput,creatingthiswayflatbinaryfile.Bydefaultitgenerates16-bitcode,butyoucanalwaysturnitintothe16-bitor32-bitmodebyusinguse16oruse32directive.Someoftheoutputformatsswitchinto32-bitmode,whenselected-moreinformationaboutformatswhichyoucanchoosecanbefoundin2.4.
Alloutputcodeisalwaysintheorderinwhichitwasenteredintothesourcefile.
1.2Assemblysyntax
Theinformationprovidedbelowisintendedmainlyfortheassemblerprogrammersthathavebeenusingsomeotherassemblycompilersbefore.Ifyouarebeginner,youshouldlookfortheassemblyprogrammingtutorials.
FlatassemblerbydefaultusestheIntelsyntaxfortheassemblyinstructions,althoughyoucancustomizeitusingthepreprocessorcapabilities(macroinstructionsandsymbolicconstants).Italsohasitsownsetofthedirectives-theinstructionsforcompiler.
Allsymbolsdefinedinsidethesourcesarecase-sensitive.
1.2.1Instructionsyntax
Instructionsinassemblylanguageareseparatedbylinebreaks,andoneinstructionisexpectedtofilltheonelineoftext.Ifalinecontainsasemicolon,exceptforthesemicolonsinsidethequotedstrings,therestofthislineisthecommentandcompilerignoresit.Ifalineendswith\character(eventuallythesemicolonandcommentmayfollowit),thenextlineisattachedatthispoint.
Eachlineinsourceisthesequenceofitems,whichmaybeoneofthethreetypes.Onetypearethesymbolcharacters,whicharethespecialcharactersthatareindividualitemsevenwhenarenotspacedfromtheotherones.Anyofthe+-/*=<>()[]{}:
|&~#`isthesymbolcharacter.Thesequenceofothercharacters,separatedfromotheritemswitheitherblankspacesorsymbolcharacters,isasymbol.Ifthefirstcharacterofsymboliseitherasingleordoublequote,itintegratesanysequenceofcharactersfollowingit,eventhespecialones,intoaquotedstring,whichshouldendwiththesamecharacter,withwhichitbegan(thesingleordoublequote)-howeveriftherearetwosuchcharactersinarow(withoutanyothercharacterbetweenthem),theyareintegratedintoquotedstringasjustoneofthemandthequotedstringcontinuesthen.Thesymbolsotherthansymbolcharactersandquotedstringscanbeusedasnames,soarealsocalledthenamesymbols.
Everyinstructionconsistsofthemnemonicandthevariousnumberofoperands,separatedwithcommas.Theoperandcanberegister,immediatevalueoradataaddressedinmemory,itcanalsobeprecededbysizeoperatortodefineoroverrideitssize(table1.1).Namesofavailableregistersyoucanfindintable1.2,theirsizescannotbeoverridden.Immediatevaluecanbespecifiedbyanynumericalexpression.
Whenoperandisadatainmemory,theaddressofthatdata(alsoanynumericalexpression,butitmaycontainregisters)shouldbeenclosedinsquarebracketsorprecededbyptroperator.Forexampleinstructionmoveax,3willputtheimmediatevalue3intotheEAXregister,instructionmoveax,[7]willputthe32-bitvaluefromtheaddress7intoEAXandtheinstructionmovbyte[7],3willputtheimmediatevalue3intothebyteataddress7,itcanalsobewrittenasmovbyteptr7,3.Tospecifywhichsegmentregistershouldbeusedforaddressing,segmentregisternamefollowedbyacolonshouldbeputjustbeforetheaddressvalue(insidethesquarebracketsoraftertheptroperator).
Table1.1Sizeoperators
Operator
Bits
Bytes
byte
8
1
word
16
2
dword
32
4
fword
48
6
pword
48
6
qword
64
8
tbyte
80
10
tword
80
10
dqword
128
16
xword
128
16
qqword
256
32
yword
256
32
Table1.2Registers
Type
Bits
General
8
al
cl
dl
bl
ah
ch
d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Programmers ManualFASM 169