




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第四章匯編語言程序格式匯編語言
匯編程序功能偽操作
匯編語言程序格式匯編語言程序的上機過程主要內(nèi)容:匯編語言匯編程序編輯程序連接程序
program.asm
program.objprogram.exe1.匯編程序功能匯編程序的主要功能:檢查源程序,給出出錯信息產(chǎn)生目標文件(.obj)和列表文件(.lst)
展開宏指令匯編語言2.偽操作(偽指令)是匯編程序?qū)υ闯绦蜻M行匯編時處理的操作,完成處理器選擇、存儲模式定義、數(shù)據(jù)定義、存儲器分配、指示程序開始結(jié)束等功能。處理器選擇偽操作段定義偽操作程序開始和結(jié)束偽操作數(shù)據(jù)定義及存儲器分配偽操作表達式賦值偽操作地址計數(shù)器與對準偽操作基數(shù)控制偽操作匯編語言.8086選擇8086指令系統(tǒng)默認.286選擇80286指令系統(tǒng).286P選擇保護模式下的80286指令系統(tǒng).386選擇80386指令系統(tǒng).386P選擇保護模式下的80386指令系統(tǒng).486選擇80486指令系統(tǒng).486P選擇保護模式下的80486指令系統(tǒng).586選擇Pentium指令系統(tǒng).586P選擇保護模式下的Pentium指令系統(tǒng)處理器選擇偽操作:匯編語言段定義偽操作:完整的段定義偽操作datasegment
;定義數(shù)據(jù)段
…dataendsextrasegment
;定義附加段
…extraendscodesegment
;定義代碼段
assume
cs:code,ds:data,es:extrastart:
movax,data
mov
ds,ax;段地址段寄存器
…codeends
endstartPSPDSESSSCSEXE程序的內(nèi)存映象圖裝入模塊文件頭匯編語言……codesegmentmainprocfarassume……start:
pushds
movax,0pushax……retmainendpcodeendsendstart……codesegmentmainprocfarassume……start:…………
movax,4c00h
int21hmainendpcodeendsendstart匯編源程序的其它形式:匯編語言datasegment……dataendsstacksegment
dw100dup(?)
toslabelwordstackendscodesegmentmainprocfarassumecs:code,ds:data,ss:stackstart:
movax,stack
mov
ss,ax
movsp,offsettospushdssubax,axpushax
movax,data
mov
ds,ax……retmainendpcodeendsendstartPSPDSESSSCS帶堆棧段的匯編源程序:匯編語言
tos
100字00C8Hsp……stacksegment
dw100dup(?)
toslabelwordstackends……
movax,stack
mov
ss,ax
movsp,offsettospushdssubax,axpushax……堆棧段的情況:匯編語言PSPDSESSSCSdatasegment……dataendsstacksegmentstack
dw100dup(?)
toslabelwordstackendscodesegment……start:pushdssubax,axpushax
movax,data
mov
ds,ax……
ret……codeendsendstart匯編語言0012FF74
00012FF78
10012FF7C
2ar00012FF68
10012FF6C
20012FF70
3ar10012FF5C
20012FF60
30012FF64
4ar20012FF50
0012FF740012FF54
0012FF680012FF58
0012FF5Cpintmain(){intar0[]={0,1,2};intar1[]={1,2,3};intar2[]={2,3,4};
int*p[]={ar0,ar1,ar2};……}匯編語言段名SEGMENT
[定位類型][組合類型][使用類型][‘類別’]
…………;語句序列段名ENDS定位類型align_type
PARABYTEWORDDWORDPAGE組合類型combine_type
PRIVATEPUBLICCOMMONSTACKATexp使用類型use_type
USE16USE32(4)類別‘class’完整段定義的格式:匯編語言例:;proadd1.asmextrn
proadd:fardatasegmentcommon
ary
dw1,2,3,4,5,6,7,8,9,10countdw10sumdw?dataendscode1segmentmainprocfarassumecs:code1,ds:datastart:pushdssubax,axpushax
movax,data
mov
ds,ax
callfarptr
proadd
retmainendpcode1endsendstart匯編語言;proadd2.asmpublicproadddatasegmentcommon
ary
dw1,2,3,4,5,6,7,8,9,10countdw10sumdw?dataends
code2segmentproaddprocfarassumecs:code2,ds:data
movax,data
mov
ds,ax
……proadd
endpcode2endsend匯編語言存儲模式與簡化段定義偽操作.modelsmall.stack100H.data…….code.startup…….exit
0end(1)MODEL偽操作
.MODEL存儲模式
[,語言類型][,操作系統(tǒng)類型][,堆棧選項]
存儲模式:tinysmallmediumcompactlargehugeflat簡化的段定義偽操作.code[name].data.data?.fardata[name].fardata?[name].const.stack[size]匯編語言.modelsmall.data…….code.startup…….exit0end
.modelsmall.data…….codestart:
movax,@data
mov
ds,ax……
movax,4c00h
int21hend
start
.modelsmall.const…….data…….codestart:
movax,DGROUP
mov
ds,ax……
movax,4c00h
int21hend
start匯編語言.modelsmall.data…….code.startup…….exit0end匯編語言段組定義偽操作dseg1segmentwordpublic‘data’……dseg1endsdseg2segmentwordpublic‘data’……dseg2ends
datagroup
groupdseg1,dseg2csegsegmentparapublic‘code’
assumecs:cseg,ds:datagroupstart:
movax,datagroup
mov
ds,ax……
movax,4c00h
int21hcsegendsendstart匯編語言data1segmentword
const1dw100data1ends
data2segmentword
var1dw?data2endsdatagroupgroupdata1,data2codesegmentassumecs:code,ds:datagroupstart:
movax,datagroup
mov
ds,ax
movax,const1
movvar1,ax
mov
bx,offsetvar1
mov
bx,offsetdata1
mov
bx,offsetdata2
assumeds:data2
movax,data2
mov
ds,ax
movax,var1
mov
bx,offsetvar1
movax,4c00h
int21hcodeendsendstart;(bx)=2;(bx)=2;(bx)=4;(bx)=2匯編語言data1segmentconst1dw100data1ends
data2segmentvar1dw?data2endsdatagroupgroupdata1,data2codesegmentassumecs:code,ds:datagroupstart:
movax,datagroup
mov
ds,ax
movax,const1
movvar1,ax
mov
bx,offsetvar1
mov
bx,offsetdata1
mov
bx,offsetdata2
assumeds:data2
movax,data2
mov
ds,ax
movax,var1
mov
bx,offsetvar1
movax,4c00h
int21hcodeendsendstart;(bx)=0;(bx)=2;(bx)=2;(bx)=0匯編語言TITLEtextNAMEmodule_nameEND[label].STARTUP.EXIT[return_value]程序開始和結(jié)束偽操作:匯編語言數(shù)據(jù)定義及存儲器分配偽操作:[變量]助記符操作數(shù)[,操作數(shù),…][;注釋]
助記符:DBDWDDDFDQDTDATA_BYTEDB10,4,10H,?DATA_WORDDW100,100H,-5,?
-0AH04H10H-
64H
00H
00H
01H
FBH
FFH
-DATA_BYTEDATA_WORD匯編語言ARRAYDB‘HELLO’
DB‘AB’
DW‘AB’48H45H4CH4CH4FH
41H
42H
42H
41H
ARRAY
PAR1DW100,200
PAR2DW300,400ADDR_TABLEDWPAR1,PAR2VARDB100DUP(?)DB2DUP
(0,2DUP(1,2),3)匯編語言O(shè)PER1DB?,?OPER2DW?,?……MOVOPER1,0;字節(jié)指令
MOVOPER2,0;字指令OPER1DB1,2OPER2DW1234H,5678H……MOVAX,OPER1+1×MOVAL,OPER2×類型不匹配
MOVAX,WORDPTROPER1+1MOVAL,BYTEPTROPER2(AX)=3402H(AL)=34H01H02H34H12H78H
56H
OPER1
OPER2
匯編語言BYTE_ARRAYLABELBYTEWORD_ARRAYDW50DUP(?)
tosLABELWORDLABEL偽操作:nameLABELtype
BYTE_ARRAYWORD_ARRAYtos
50字0064H匯編語言表達式賦值偽操作:表達式名EQU
表達式BEQU[BP+8]ALPHAEQU9BETAEQUALPHA+18“=”偽操作(允許重復(fù)定義)……EMP=7……EMP=EMP+1……匯編語言地址計數(shù)器與對準偽操作:地址計數(shù)器$
:保存當前正在匯編的指令的地址ORG$+8;跳過8個字節(jié)的存儲區(qū)JNE$+6;轉(zhuǎn)向地址是JNE的首址+6$
用在偽操作的參數(shù)字段:表示地址計數(shù)器的當前值
ARRAYDW1,2,$+4,3,4,$+4
00H01H00H02H00H
7CH
00H03H00H04H00H
82HARRAY007E00780074匯編語言O(shè)RG偽操作:SEG1SEGMENT
ORG10VAR1DW1234H
ORG20VAR2DW5678H
ORG$+8
VAR3DW1357HSEG1ENDSORG100HSTART:……BUFFERLABELBYTEORG$+8BUFFERDB8DUP(?)匯編語言EVEN;使下一地址從偶地址開始ADB‘morning’
EVENBDW2DUP(?)
ALIGNboundaryALIGN4ALIGN2;EVEN匯編語言基數(shù)控制偽操作:.RADIX表達式
;規(guī)定無標記數(shù)的基數(shù)MOVBX,0FFHMOVBX,178.RADIX16MOVBX,0FFMOVBX,178D匯編語言3.匯編語言程序格式標號
指令寄存器說明程序或語句的功能變量偽指令標號宏指令變量常數(shù)
表達式源程序的每條語句可表示為:
[名字]操作操作數(shù)[;注釋]標號/變量:段值、偏移量、類型三種屬性
表達式:數(shù)字表達式地址表達式匯編語言表達式操作符:(1)算術(shù)操作符:
、、、、modMOVDX,BLOCK+(6-1)*2ARRAYDW1,2,3,4,5,6,7ARYENDDW?MOVCX,(ARYEND-ARRAY)/2ADDAX,BLOCK+2;符號地址常數(shù)
有意義
;
時意義不明確MOVAX,BX+1;
匯編語言O(shè)PR1EQU25OPR2EQU7
ANDAX,OPR1ANDOPR2(2)邏輯和移位操作符:
AND、OR、XOR、NOT、SHL、SHR;ANDAX,1INAL,PORT_VALOUTPORT_VALAND0FEH,ALMOVAX,0FFFFHSHL2;MOVAX,0FFFCH匯編語言(3)關(guān)系操作符:
EQ、NE、LT、LE、GT、GE計算結(jié)果為邏輯值:真
0FFFFH
假
0000HX:…………Y:……若128(真)匯編結(jié)果:MOVFID,-1若128(假)匯編結(jié)果:MOVFID,0MOVFID,
(OFFSETY-OFFSETX)
LE
128匯編語言(4)數(shù)值回送操作符:
OFFSET、SEG、TYPE、LENGTH、SIZESIZE
變量功能:LENGTH*TYPEOFFSET/SEG
變量/標號功能:回送變量或標號的偏址/段址TYPE
變量
/標號
/常數(shù)
DBDWDDDFDQDTNEARFAR常數(shù)
1246810-1-20LENGTH
變量功能:回送由DUP定義的變量的單元數(shù),其它情況回送1匯編語言ARRAYDW100DUP(?)TABLEDB‘ABCD’
ADDSI,TYPEARRAY
;ADDSI,2ADDSI,TYPETABLE
;ADDSI,1MOVCX,LENGTHARRAY
;MOVCX,100MOVCX,LENGTHTABLE
;MOVCX,1MOVCX,SIZEARRAY
;MOVCX,200MOVCX,SIZETABLE
;MOVCX,1匯編語言(5)屬性操作符:
PTR、段操作符、SHORT、THIS、HIGH、LOW、
HIGHWORD、LOWWORDCONSEQU1234HMOVAH,HIGHCONSMOVAL,LOWCONS類型PTR表達式MOVWORDPTR[BX],5段操作符MOVES:[BX],ALSHORT標號
JMPSHORTNEXTTHIS類型
TAEQUTHISBYTENEXTEQUTHISFAR匯編語言用MASM6.11和CodeView匯編和調(diào)試匯編語言程序
在MASM6.11中,Microsoft公司提供了程序員工作平臺PWB(programmer’sworkbench),這是一個集成化開發(fā)環(huán)境,程序員可以方便地完成匯編語言源程序的編輯、匯編、連接調(diào)試和執(zhí)行等工作。
MASM6提供的調(diào)試工具是CodeView,CodeView是一個源碼級調(diào)試工具,能支持16位和32位指令的調(diào)試。其用戶界面是多窗口全屏幕的,用戶可方便地使用菜單和鼠標來調(diào)試程序。4.匯編語言程序的上機過程匯編語言上機步驟:1設(shè)置環(huán)境變量
在MASM611\BINR的目錄下,執(zhí)行new-vars.bat即可建立環(huán)境參數(shù)和搜索路徑,然后執(zhí)行pwb.exe
即可進入PWB的主窗口。用其文件File菜單中的Exit命令可退出PWB。匯編語言2用File菜單下的有關(guān)命令建立asm
文件3用Project和Options菜單下的某些命令建立匯編語言程序運行環(huán)境
建立工程文件,設(shè)置所建立的可執(zhí)行文件類型的BuildOptions,設(shè)置編譯器選項的LanguageOptions,設(shè)置連接器選項的LinkOptions,設(shè)置調(diào)試器選項的CodeViewOptions等。由于用戶使用時大部分選項都可采用PWB提供的默認值,因而不必作任何修改。但對于匯編語言程序,還有必要對MASM
的選項作出某些選擇。4用Project菜單下的有關(guān)命令對源文件進行匯編和連接
CompileFile編譯(匯編)當前的源文件,生成目標文件
Build連接目標文件,生成可執(zhí)行文件
BuildAll匯編當前源文件,連接工程中的所有目標文件,生成可執(zhí)行文件5用Run菜單下的有關(guān)命令執(zhí)行程序6用CodeView調(diào)試程序匯編語言匯編語言datasegmentstring1db'thamksyou'string2db'thanksyou'mass1db'match.',13,10,'$'mass2db'nomatch!',13,10,'$'dataendscodesegmentmainprocfarassumecs:code,ds:data,es:datastart:pushdssubax,axpushax
movax,data
mov
ds,ax
mov
es,axleasi,string1leadi,string2
cld
mov
cx,10
repz
cmpsb
jzmatchleadx,mass2
jmpshortdispmatch:leadx,mass1disp:movah,09
int21hretmainendpcodeendsendstartmatch.asm匯編語言匯編語言匯編語言匯編語言match.lst
(1)匯編語言match.lst
(2)匯編語言match.lst
(3)匯編語言datasegmentstring1db'thamksyou'mass1db'match.',13,10,'$'mass2db'nomatch!',13,10,'$'dataendsextrasegmentstring2db'thanksyou'extraendscodesegmentmainprocfarassumecs:code,ds:data,es:extrastart:……
movax,data
mov
ds,ax
movax,extra
mov
es,ax……codeendsendstartmatch1.asm匯編語言匯編語言.modelsmall.datastring1db'thamksyou‘
string2db'thanksyou'mass1db'match.',13,10,'$'mass2db'nomatch!',13,10,'$'
.codemainprocfarstart:
movax,@data
mov
ds,ax
mov
es,ax……mainendpendstartmatch2.asm匯編語言匯編語言
.modeltiny.code
org100hbegin:jmp
main;************************num1dw1199Hnum2dw1166Hsumdw?;************************mainprocnear
movax,num1addax,num2
movsum,ax
movax,4c00h
int21hmainendpendbegin例:匯編語言codesegment'code'
assumecs:code
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨境物流與電商平臺協(xié)同發(fā)展研究
- 車輛保險索賠流程及注意事項
- 安徽2025年01月安徽省宣城市宣州區(qū)敬亭山街道公開招考選拔1名村級后備干部筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 跨國公司財務(wù)報告的國際標準與制作
- 建筑法規(guī)89課件
- 跨界合作藝術(shù)系學(xué)生自我品牌的拓展之路
- 膝痹病的護理
- 歸檔組卷填寫案卷文件圖紙折疊方法裝訂單元建筑工程資料管理的基本知識建筑
- 租賃田合同范本
- 黑龍江交通職業(yè)技術(shù)學(xué)院《數(shù)字化人力資源管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川省既有居住小區(qū)改造技術(shù)標準
- 慢性血栓栓塞性肺動脈高壓診斷與治療指南(2024版)解讀
- 2024年南京科技職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫完整
- 小學(xué)生國家文化安全教育
- 2024年常州工業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案解析
- AQ-T 3002-2021阻隔防爆橇裝式加油(氣)裝置技術(shù)要求
- 綠植租擺投標方案
- 新聞編輯學(xué)PDF蔡雯第四版
- 行政處罰自由裁量權(quán)課件
- Unit-3-Reading-and-thinking課文詳解課件-高中英語人教版必修第二冊
- 肝病科進修總結(jié)匯報
評論
0/150
提交評論