




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《微機(jī)原理及應(yīng)用》主講教師
陳
瑋廣東工業(yè)大學(xué)2第4章匯編語言及匯編程序設(shè)計(jì)2023/9/19自動(dòng)化學(xué)院自動(dòng)控制系陳瑋第四章匯編語言及匯編程序設(shè)計(jì)一、概述
二、偽指令三、表達(dá)式及運(yùn)算符四、宏指令五、匯編語言程序的上機(jī)過程六、匯編程序的設(shè)計(jì)過程七、匯編程序基本設(shè)計(jì)方法八、系統(tǒng)功能調(diào)用例題
作業(yè)廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋一、概述匯編語言是一種面向CPU指令系統(tǒng)的程序設(shè)計(jì)語言。指令格式:1、標(biāo)號(hào)是指該指令的符號(hào)地址,以冒號(hào)結(jié)束;2、用助記符表示操作碼,是指令名稱的代表符號(hào),是語句中的關(guān)鍵字,不可缺?。?第4章匯編語言及匯編程序設(shè)計(jì)2023/9/19廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋一、概述(續(xù)上頁)3、用符號(hào)代表操作數(shù)或操作數(shù)地址。操作數(shù)是本指令執(zhí)行需要的數(shù)據(jù)。有些指令不需要指明操作數(shù),可以默認(rèn);有些指令需要兩個(gè)操作數(shù);還有些操作數(shù)可以用表達(dá)式。4、注釋項(xiàng)是可選項(xiàng),用分號(hào)開始。4第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋一、概述(續(xù)上頁)用匯編語言編寫的程序稱為源程序,常用的匯編程序有ASM-86和宏匯編MASM-86。匯編語言源程序的組成部分:①可以使用CPU指令系統(tǒng)所提供的指令(硬指令);②可以使用各種符合匯編語法的表達(dá)式,運(yùn)算符以及自行定義生成滿足需要的目標(biāo)代碼的指令。5第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋1、標(biāo)號(hào)8086/8088匯編語言中使用的標(biāo)號(hào)必須遵循下列規(guī)則:(1)大小寫字母;
(2)數(shù)字0~9;(3)某些特殊字符(@,_,?)(4)第一個(gè)字符不能是數(shù)字,“?”不能單獨(dú)作為標(biāo)號(hào)。
(5)標(biāo)號(hào)的有效長(zhǎng)度是31;有效標(biāo)號(hào):START
MY_PROGRAM無效標(biāo)號(hào):MAIN%
1BETA6第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋二、偽指令偽指令是告訴匯編程序生成目標(biāo)代碼的指令語句。1、符號(hào)定義偽指令2、內(nèi)存數(shù)據(jù)定義偽指令3、段定義偽指令4、段寄存器說明偽指令5、定位偽指令6、子程序偽指令7、模塊定義偽指令8、外部符號(hào)定義偽指令9、記錄偽指令10、結(jié)構(gòu)偽指令11、塊注釋偽指令7第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋1、符號(hào)定義偽指令EQU偽指令等號(hào)(賦值)偽指令
(3)解除符號(hào)定義偽指令8第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋(1)EQU偽指令偽指令格式:<符號(hào)名>EQU<表達(dá)式>指令功能:
給符號(hào)名賦值。符號(hào)名可以由程序員取定,表達(dá)式應(yīng)該是可以計(jì)算得出一個(gè)具體值。例:PORT
EQU
88HDATA
EQU
PORT+2;定義符號(hào)PORT代表88H;定義符號(hào)DATA代表;PORT+2注意:①用EQU定義的符號(hào),不能重新再定義,除非用PURGE偽指令解除;②如果在表達(dá)式中用了其他符號(hào),必須事先定義。9第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋(2)等號(hào)(賦值)偽指令偽指令格式:<符號(hào)名>=<表達(dá)式>指令功能:
與EQU類似,唯一的區(qū)別是“=”可以隨時(shí)對(duì)符號(hào)名賦新值,
而不必使用PURGE偽指令。例:PORT=88H
;定義符號(hào)PORT代表88HDATA=PORT+2
;定義符號(hào)DATA代表PORT+210第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋(3)解除符號(hào)定義偽指令偽指令格式:PURGE
符號(hào)1,
符號(hào)2,…指令功能:
撤消用EQU賦值的符號(hào)名,
以便于賦予新值。例:PURGE
PORT,
DATA;撤消用EQU對(duì)PORT、;DATA的賦值11第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋2、內(nèi)存數(shù)據(jù)定義偽指令①格式: [變量]命令參數(shù)1,參數(shù)2,…功能:
數(shù)據(jù)定義語句用來分配存儲(chǔ)單元。數(shù)據(jù)定義語句的命令有:DBDWDDDQDT定義字節(jié)數(shù)據(jù)定義字?jǐn)?shù)據(jù)
定義雙字?jǐn)?shù)據(jù)定義8字節(jié)數(shù)據(jù)定義10字節(jié)數(shù)據(jù)12第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋2、內(nèi)存數(shù)據(jù)定義偽指令②復(fù)制操作符格式:<復(fù)制次數(shù)>DUP
數(shù)據(jù)1,數(shù)據(jù)2,…功能:匯編程序把所定義的數(shù)據(jù)按先后次序連續(xù)分配存儲(chǔ)空間,所起的名稱只代表第一個(gè)單元的字符。例題13第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋2、內(nèi)存數(shù)據(jù)定義偽指令例:…VAR1
DB
32H,‘ABC’VAR2 DW
1234H,40H,‘AB’DD
12345678HDB
?,11000011BARRY1
DB
2
DUP(0,1)ARRY2 DW
2DUP(?,1)…14第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)15第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12自動(dòng)化學(xué)院自動(dòng)控制系陳瑋3、段定義偽指令格式:〈段名〉SEGMENT[定位方式][連接方式][‘類別名’]。。?!炊蚊礒NDS功能:用來定義一個(gè)段,起始段名必須與結(jié)束段名相同。各段的屬性意義:(1)定位方式(定位類型):起始地址的邊界方式,有4種:PAGE:段起始地址低8位是0,256整除,按頁邊界定位。PARA:段起始地址低4位是0,16整除,按段邊界定位,默認(rèn)方式。WORD:段起始地址最低位是0,2整除,按字邊界定位。BYTE:段起始地址可以是任意值,沒有限制。(2)連接方式(組合方式):以何種方式與其他段連接,有6種:NONE:本段與其他段沒有關(guān)系,有獨(dú)立的段地址,隱含連接方式。PUBLIC:本段與其他同名同類別段連接起來,形成一個(gè)物理段。它們具有相同的段起始地址,但偏移地址不同,連接次序由連接命令指定。廣東工業(yè)大學(xué)16第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12自動(dòng)化學(xué)院自動(dòng)控制系陳瑋3、段定義偽指令例:下列不同方式下連接后數(shù)據(jù)在內(nèi)存的分布情況相同:DATA1
SEGMENT
PUBLICX DB
10HDATA1
ENDSDATA1
SEGMENT
PUBLICY
DW
2020HDATA1
ENDSDATA1
SEGMENTX
DB
10HY
DW
2020HDATA1
ENDS廣東工業(yè)大學(xué)17第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12自動(dòng)化學(xué)院自動(dòng)控制系陳瑋3、段定義偽指令STACK:本段是堆棧段,連接方式同PUBLIC,至少有一個(gè)堆棧段。COMMON:本段與其他同名同類別的段共用一個(gè)物理段,程序運(yùn)行時(shí)這 些段產(chǎn)生覆蓋。
5)MEMORY:本段定位在其他段之后,即高地址。如果多個(gè)這種段,則第一個(gè)作為MEMORY段,其他作為COMMON段。6)AT〈表達(dá)式〉:段地址為表達(dá)式所計(jì)算出來的16位數(shù),不能用于代碼段。(3)類別名類別名為自定義符,用單引號(hào),同類別段按先后次序連接起來。廣東工業(yè)大學(xué)18第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12自動(dòng)化學(xué)院自動(dòng)控制系陳瑋4、段寄存器說明偽指令格式:ASSUME
段寄存器:段名1[,段寄存器:段名2,。。。]功能:在匯編時(shí),各個(gè)段寄存器所對(duì)應(yīng)的邏輯段基址,除CS外,所有段寄存器實(shí)際值還必須用傳送指令在執(zhí)行程序時(shí)賦值。典型匯編源程序格式:例:NAME
SAMPLEDATA
SEGMENTX
DB
10HY
DW
2020H。。。DATAENDS
STACK
SEGMENTDW
128DUT(?)STACK
ENDSCODE
SEGMENTASSUME
CS:CODE,DS:DATA
:STACKSTART:MOV
AX,DATAMOV
DS,AXMOV
AX,STACKMOV
SS,AX。。。。
CODE
EDNSEND
START廣東工業(yè)大學(xué)19第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12自動(dòng)化學(xué)院自動(dòng)控制系陳瑋5、定位偽指令起址定位偽指令
格式:ORG
〈表達(dá)式〉功能:程序或數(shù)據(jù)從表達(dá)式指定的偏移地址開始存放。偶地址定位偽指令格式:EVEN功能:程序或數(shù)據(jù)從偶地址開始存放。DB
‘A’DATA
ENDS例:DATA
SEGMENTZX
DB
10HEVENY
DW
0200HORG
06H廣東工業(yè)大學(xué)20第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12自動(dòng)化學(xué)院自動(dòng)控制系陳瑋6、子程序定義偽指令格式:〈子程序名〉PROC
[NEAR/FAR]。。。〈子程序名〉ENDPNEAR為段內(nèi)調(diào)用,主程序和子程序在同一段內(nèi),只須保存偏移地址,默認(rèn)方式。FAR為段間調(diào)用,主程序和子程序不在同一段內(nèi),保存偏移地址和段地址。廣東工業(yè)大學(xué)21第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12自動(dòng)化學(xué)院自動(dòng)控制系陳瑋7、模塊定義偽指令模塊開始偽指令格式:NAME
模塊名功能:放在源程序開始,用來定義本程序模塊的名字。模塊名為自定義符模塊結(jié)束偽指令格式:END
(起始標(biāo)號(hào)/過程名)廣東工業(yè)大學(xué)22第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12自動(dòng)化學(xué)院自動(dòng)控制系陳瑋8、外部符號(hào)定義偽指令外部標(biāo)號(hào):模塊化程序,個(gè)模塊間常有關(guān)聯(lián),需相互訪問。當(dāng)某模塊訪問
另一模塊中定義的符號(hào)時(shí),必須對(duì)這些符號(hào)進(jìn)行說明。這些符號(hào)包括變量、符號(hào)、常量、標(biāo)號(hào)和子程序名,成為外部標(biāo)號(hào)。公用符號(hào)偽指令格式:PUBLIC
〈符號(hào)名1〉[,符號(hào)名2,。。。]功能:可以被其他模塊引用引用符號(hào)偽指令格式:EXTRN〈符號(hào)名1:類型〉[,符號(hào)名2:類型,。。。]功能:當(dāng)需要引用其他模塊的符號(hào)時(shí),需用EXTRN偽指令說明。類型包括:BYTE、WORD、DWORD、NEAR、FAR和ABS,需與愿模塊中的定義一致。廣東工業(yè)大學(xué)23第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12自動(dòng)化學(xué)院自動(dòng)控制系陳瑋9、記錄偽指令記錄定義偽指令格式:記錄名RECORE〈字段名1:寬度〉[,字段名2:寬度,。。。]例:PRODUCT
RECORD
SN:4,WORK:1,VR:2記錄內(nèi)存分配偽指令格式:[變量名]記錄名〈字段值表〉記錄操作符1)WIDTH格式:WIDTH
記錄名(或字段名)功能:用于求出記錄或字段的寬度。例:MOV
AX,WIDTH
PRODUCT2)MASK格式:MASK
記錄字段名功能:給出一個(gè)對(duì)應(yīng)于記錄長(zhǎng)度的8位或16位二進(jìn)制數(shù),該數(shù)中,指定字段名所在的位為1,其余位為0。廣東工業(yè)大學(xué)24第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12自動(dòng)化學(xué)院自動(dòng)控制系陳瑋9、記錄偽指令3)記錄字段名記錄字段名作為指令的一個(gè)操作數(shù)單獨(dú)出現(xiàn)時(shí),表示該字段最低位在記錄中的位置,例如:MOV
AH,SN廣東工業(yè)大學(xué)25第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12自動(dòng)化學(xué)院自動(dòng)控制系陳瑋10、結(jié)構(gòu)偽指令結(jié)構(gòu)定義格式:結(jié)構(gòu)名
STRUC〈數(shù)據(jù)定義〉。。。結(jié)構(gòu)名ENDS結(jié)構(gòu)分配偽指令結(jié)構(gòu)名〈字段值表〉格式:[變量名](3)結(jié)構(gòu)引用在程序中引用結(jié)構(gòu)變量的某字段,可以采用兩種形式:格式:結(jié)構(gòu)變量名,字段名格式:[地址寄存器],字段名廣東工業(yè)大學(xué)26第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12自動(dòng)化學(xué)院自動(dòng)控制系陳瑋10、塊注釋偽指令格式:COMMENT
定界符 注釋 定界符例:COMMENT
/注釋。。。。。。/廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋三、表達(dá)式及運(yùn)算符在匯編語言中,指令的操作數(shù)除了可以是常數(shù)、寄存器、變量和標(biāo)號(hào)外,還可以是表達(dá)式。表達(dá)式是由常數(shù)、寄存器、變量、標(biāo)號(hào)和專用運(yùn)算符組合而成。在程序匯編時(shí),匯編程序自動(dòng)把這些表達(dá)式計(jì)算出來,形成具體的指令操作數(shù)。1、常數(shù)、變量和標(biāo)號(hào)2、表達(dá)式及運(yùn)算符返回27第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋1、常數(shù)、變量和標(biāo)號(hào)常數(shù)包括數(shù)值型常數(shù)和字符型常數(shù)。如:12H,1234H,’AB’變量變量代表存放在存儲(chǔ)單元中的數(shù)據(jù)。定義后的變量有三個(gè)屬性:段屬性表示變量所在的邏輯段;偏移量屬性表示變量所在邏輯段中的偏移地址;
(3)類型屬性表示變量占用的存儲(chǔ)單元數(shù),DB、DW、DD、DQ、DT。28第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋1、常數(shù)、變量和標(biāo)號(hào)標(biāo)號(hào)是指令目標(biāo)代碼的符號(hào)地址。在轉(zhuǎn)移指令中常用標(biāo)號(hào)代替具體轉(zhuǎn)移地址,標(biāo)號(hào)的使用使編寫匯編語言程序時(shí),不必考慮程序匯編、連接后系統(tǒng)分配給指令代碼的實(shí)際地址。標(biāo)號(hào)同樣有三個(gè)屬性:段屬性表示指令代碼所在的邏輯段;偏移量屬性表示指令代碼所在的邏輯段中的偏移地址;距離屬性表示標(biāo)號(hào)可作段內(nèi)轉(zhuǎn)移或段間轉(zhuǎn)移(NEAR、FAR)。29第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋2、表達(dá)式及運(yùn)算符表達(dá)式由操作數(shù)和運(yùn)算符組成。其中,操作數(shù)可以是常數(shù)、變量、寄存器和標(biāo)號(hào)。運(yùn)算符包括算術(shù)運(yùn)算符、邏輯運(yùn)算符、關(guān)系運(yùn)算符、分析運(yùn)算符和屬性運(yùn)算符五類運(yùn)算。注意:運(yùn)算符的先后次序。30第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋五、匯編語言程序的上機(jī)過程建立匯編語言的環(huán)境,典型的匯編語言開發(fā)環(huán)境都包含4種工具:1、編輯程序2、匯編程序3、連接程序4、匯編程序的上機(jī)過程31第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋1、編輯程序編輯程序是用來輸入?yún)R編語言源程序的工具,包括EDIT.EXE,EDLIN.EXE等;匯編語言是以文本格式保存的;匯編程序的源程序必須以ASM作為擴(kuò)展名;輸入和編輯源程序時(shí)必須遵循匯編語言的語法規(guī)定。匯編程序的基本結(jié)構(gòu)
例題實(shí)際操作:編輯源程序
TEST11.ASM32第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋匯編程序的基本結(jié)構(gòu)DATAA……DATAASTACKA……SEGMENT;數(shù)據(jù)段內(nèi)定義各類程序執(zhí)行需要的相關(guān)的數(shù)據(jù)ENDSSEGMENT;根據(jù)具體程序的需要,定義堆棧段供程序執(zhí)行過程;中保持臨時(shí)數(shù)據(jù)ENDSSTACKACODEASEGMENTASSUME
CS:CODEA,DS:DATAA,SS:STACKASTART:
MOVAX,DATAAMOV
DS,AX……
;完成具體操作的指令序列CODEA
ENDSEND
START33第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋實(shí)際操作(實(shí)現(xiàn)X+Y→Z,源程序文件名:TEST11.ASM)DATA1
SEGMENT;數(shù)據(jù)段XYZDB
05HDB
04HDB
?DATA1CODE1ENDSSEGMENT
;代碼段ASSUME
CS:CODE,DS:DATASTART:MOV
AX,DATAMOV
DS,AX;數(shù)據(jù)段基址→AX;
AX→DS;內(nèi)存單元X的數(shù)據(jù)→AL;內(nèi)存單元Y的數(shù)據(jù)+AL→AL,即X+Y→AL;AL→內(nèi)存單元Z,即求和結(jié)果送回ZMOV
AL,XADD
AL,YMOV Z,
ALMOVINTAH,4CH;送功能號(hào)21H
;系統(tǒng)功能調(diào)用,返回操作系統(tǒng)CODE1
ENDSEND
START34第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋2、匯編程序匯編程序用來把源程序翻譯成機(jī)器碼,包括ASM.EXE,MASM.EXE;匯編程序翻譯源程序,產(chǎn)生一個(gè)目標(biāo)代碼文件,與源程序文件名相同,擴(kuò)展名為OBJ。實(shí)際操作:產(chǎn)生目標(biāo)文件TEST11.OBJ35第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋3、連接程序通過匯編產(chǎn)生的是OBJ文件是二進(jìn)制目標(biāo)文件,但用的是浮動(dòng)地址,不能直接運(yùn)行,必須用連接程序LINK.EXE連接和定位。實(shí)際操作:產(chǎn)生可執(zhí)行文件TEST11.EXE36第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋4、匯編程序的上機(jī)過程實(shí)際操作演示37第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋;數(shù)據(jù)段開始;定義一個(gè)數(shù)據(jù)串,數(shù)據(jù)串規(guī)定以$結(jié)尾,為了顯示’5+4=’data1
segmentx
db
05hy
db
04hz
db
?buff
db
‘5+4=
$‘data1
endscode1segmentassume
cs:code1,ds:data1start:movax,data1mov
ds,axmoval,x
addal,y
movz,
allea
dx,
buffmov
ah,
09hint
21hmov
dl,zadddl,30hmovah,02hint
21Hmovah,4chint
21h;代碼段開始;段寄存器說明偽指令;將數(shù)據(jù)段基址→ax;ax→ds;內(nèi)存數(shù)據(jù)x→al;內(nèi)存數(shù)據(jù)Y+al→al,即X+Y
→al;al→Z,即X+Y
→Z;裝載
buff的有效地址;送功能號(hào);系統(tǒng)功能調(diào)用,顯示屏顯示字符串’5+4=’;將z送dl;將z的值轉(zhuǎn)換成對(duì)應(yīng)的ASCII碼值;送功能號(hào);系統(tǒng)功能調(diào)用,將x+y的和z以單字符形式在顯示屏上顯示出來;送功能號(hào);系統(tǒng)功能調(diào)用,返回DOS狀態(tài)code1
endsend
start返回38第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋六、匯編程序的設(shè)計(jì)過程1、分析問題確定算法2、繪制程序流程圖(做作業(yè)一定要求)3、編寫代碼39第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋七、匯編程序基本設(shè)計(jì)方法1、簡(jiǎn)單程序
作業(yè)2、分支程序3、循環(huán)程序4、子程序40第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋1、簡(jiǎn)單程序簡(jiǎn)單程序是指順序結(jié)構(gòu)程序,在程序中不包含任何轉(zhuǎn)移類指令。執(zhí)行時(shí)按指令的先后次序從第一條開始逐條執(zhí)行,直至程序結(jié)束。例題41第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋例題1、有X,Y兩個(gè)16位數(shù)3456H和0ABCDH,求兩數(shù)之和,并將結(jié)果送到Z單元。解:
①編寫流程圖42第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋例題 程序清單DATA
SEGMENTDW
3456HDW
0ABCDHDW
0DATA
ENDS
;設(shè)置數(shù)據(jù)段,取名DATACODE
SEGMENTASSUME
DS
:DATA,CS:CODESTART
:MOV
AX,DATAMOV
DS,AXLEA
SI,XLEA
DI,
YMOV
AX,[SI]ADD
AX,[DI]MOV
Z,
AXMOV
AH,
4CH;取數(shù)碼段DATA段址至AX;段地址送DS;將X的有效地址送S1;將Y的有效地址送D1;將X的值送AX;AX+Y的值送回AX;將AX的值送到存儲(chǔ)單元Z;設(shè)置功能號(hào);系統(tǒng)功能調(diào)用,返回DOSINT
21HCODEENDSEND
START43第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)44第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12自動(dòng)化學(xué)院自動(dòng)控制系陳瑋作業(yè)P.1202、3、5、7、12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋2、分支程序分支程序就是利用轉(zhuǎn)移指令,控制計(jì)算機(jī)執(zhí)行某段程序或不執(zhí)行某段程序。兩路分支多路分支例題45第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋例題1、內(nèi)存中有一個(gè)8位帶符號(hào)數(shù),求其絕對(duì)
值,并將結(jié)果放回原處。答:編寫流程圖程序清單46第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋例題 程序清單DATA2
SEGMENTM
DB
05H;第二個(gè)程序換成-5,即0fbhDATA2CODE2ENDSSEGMENTASSUMECS:CODE2,DS:DATA2START:DONE:;送段地址至DS;取M的指針;取帶符號(hào)數(shù);判斷符號(hào)位;SF=0,轉(zhuǎn)移到DONE;SF=1,AL<0,AL求補(bǔ);絕對(duì)值送回原內(nèi)存單元;系統(tǒng)功能調(diào)用,顯示該數(shù)值CODE2MOV
AX,DATA2MOV
DS,AXLEA
SI,MMOV
AL,[SI]AND
AL,ALJNSDONENEG
ALMOV
[SI],ALMOV
DL,
[SI]ADD
DL,
30HMOV
AH,
02HINT
21HMOV
AH,4CHINT
21HENDSEND
START47第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋例題2、編寫程序?qū)崿F(xiàn)函數(shù)。1 (當(dāng)X>0)Y=
0 (當(dāng)X=0)9 (當(dāng)X<0)解:編寫程序清單程序清單48第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋例題 程序清單_數(shù)據(jù)段;另外兩組分別是7FH,00HDATAXYDATAXY
SEGMENTX
DB
8FHY
DB
?ENDS49第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋例題
程序清單_代碼段CODE
SEGMENTASSUME
CS:CODE,DS:DATAXYSTART:
MOV
AX,DATAXY;送段地址;取X的指針;將X的值送AL;自身與,取符號(hào)標(biāo)志位;SF=0,轉(zhuǎn)移到OTHER;SF=1,則X<0;ZF=0轉(zhuǎn)移到PLUS;ZF=1,則X=0;SF=0,ZF=0,則X>0;系統(tǒng)功能調(diào)用,顯示Y的值MOV
DS,AXLEA
SI,
XMOV
AL,[SI]AND
AL,
ALJNSOTHERMOV
Y,
09HJMP
DONEOTHER:
JNZ
PLUSMOV
Y,00HJMP
DONEPLUS:
MOV
Y,01HDONE:
MOV
DL,
YADD
DL,
30HMOV
AH,
02HINT
21HMOV
AH,4CHINT
21HCODE2
ENDSEND
START50第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋3、循環(huán)程序循環(huán)程序就是控制計(jì)算機(jī)反
復(fù)執(zhí)行一段指令序列的程序結(jié)構(gòu)。例題零次循環(huán)結(jié)構(gòu)非零次循環(huán)結(jié)構(gòu)51第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋1、統(tǒng)計(jì)字節(jié)數(shù)據(jù)Z的1的個(gè)數(shù),將結(jié)果放在RESULT內(nèi)。例題解:編寫流程圖程序清單52第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋例題 程序清單——數(shù)據(jù)段DATAXY
SEGMENTX
DB
0FFH
;第二個(gè)程序換成-5,即0fbhRESULT DB
?DATAXY
ENDS53第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋例題 程序清單—代碼段CODE
SEGMENTASSUME
CS:CODE,DS:DATAXYSTART: MOV
AX,DATAXYSUM:;送段地址至DS;累加器BL清0;循環(huán)次數(shù)送CX;取X的指針;取X送AL;邏輯右移1位;CF=0,轉(zhuǎn)移到NONE;CF=1,BL+1→BLNONE:MOV
DS,AXXOR
BL,BLMOV
CX,08HLEA
SI,XMOV
AL,[SI]SHR
AL,1JNCNONEINC
BLLOOP
SUMMOV
RESULT,BL;統(tǒng)計(jì)值送RESULT內(nèi)存單元
MOV
DL,RESULTADD
DL,
30HMOV
AH,
02H;系統(tǒng)功能調(diào)用,顯示該統(tǒng)計(jì)數(shù)值CODEINT
21HMOV
AH,4CHINT
21HENDSEND
START54第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋4、子程序一個(gè)程序中,當(dāng)在不同的地方需要多次使用某段程序時(shí),我們常將這段程序單獨(dú)編寫成一個(gè)程序段,稱為子程序/過程。子程序的定義格式子程序的調(diào)用編寫子程序的注意事項(xiàng)55第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋(1)子程序的定義格式格式:子程序名
PROC…RET子程序名ENDP56第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋(2)子程序的調(diào)用格式:CALL
子程序名57第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋(3)編寫子程序的注意事項(xiàng)1、現(xiàn)場(chǎng)保護(hù):保護(hù)調(diào)用子程序的現(xiàn)場(chǎng),即保護(hù)子程序中會(huì)用到的寄存器,將這些寄存器入棧;2、功能子程序:子程序要完成的功能;3、恢復(fù)現(xiàn)場(chǎng):為了使計(jì)算機(jī)返回到主程序調(diào)用時(shí)的狀態(tài),將入棧的數(shù)據(jù)出棧。注意順序!例題:子程序的基本框架58第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋子程序的基本框架設(shè)某一子程序中要用到寄存器BX,CX,SI,DI則:ABC:;子程序的功能程序PUSH
BXPRSH
CXPUSH
SIPUSH
DI……POP
DIPOP
SIPOP
CXPOP
BXRET59第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋例題1編寫統(tǒng)計(jì)X數(shù)據(jù)中的“1”的個(gè)數(shù)子程序,并編寫主程序調(diào)用。子程序如下:ABC:
PUSH
BXPUSH
CX;累加器BL清0;循環(huán)次數(shù)送CX;邏輯右移1位;CF=0,轉(zhuǎn)移到NONE;CF=1,BL+1→BL;AL里保存的是“1”的統(tǒng)計(jì)個(gè)數(shù)XOR
BL,BLMOV
CX,08HSUM:SHR
AL,1JNCNONEINC
BLNONE:
LOOP
SUMMOV
AL,
BLPOP
CXPOP
BXRET60第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋例題1
主程序_數(shù)據(jù)段_堆棧段DATAXY
SEGMENTX
DB
0FFHSX
DB
?DATAXY
ENDS;-STACK
SEGMENTDW
100DUP(?)STACK
ENDS61第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋例題1
主程序_代碼段CODE1
SEGMENTASSUME
CS:CODE1,
DS:DATAXY,SS:STACKSTART:;系統(tǒng)功能調(diào)用,顯示該統(tǒng)計(jì)數(shù)值MOV
AX,
DATAMOV
DS,
AXLEA
BX,
XMOV
AL,[BX]CALL
ABCMOV
[BX+1],
ALMOV
DL,
SXADD
DL,
30HMOV
AH,
02HINT
21HMOV
AH,4CHINT
21H;
子程序插入此處CODE1
ENDSEND
START62第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋例題2、將一字節(jié)無符號(hào)二進(jìn)制數(shù)轉(zhuǎn)換為兩位十進(jìn)制數(shù)的ASCII碼值,并存放在其后的兩個(gè)字節(jié)。(顯示程序用子程序編寫)。解:編寫流程圖:63第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋程序——數(shù)據(jù)段data1
segment;可任取<100的無符號(hào)字節(jié)數(shù)據(jù)x
db
2ahy
db
?z
db
?buff db'2ah=$'data1
ends64第4章匯編語言及匯編程序設(shè)計(jì)2023/11/12廣東工業(yè)大學(xué)自動(dòng)化學(xué)院自動(dòng)控制系陳瑋代碼段:code1segmentassume
cs:code1,ds:data1start:
movax,data1movds,axmov
al,xcbwmovbl,0ahdiv
blmovy,almovz,ahleadx,buffmovah,09hint
21h
mov
al,y;下接右上;上接左下call
dispmov
al,zcall
dispjm
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GO語言并發(fā)編程優(yōu)化-全面剖析
- 食品配送快件的安全操作流程
- 品牌視覺識(shí)別系統(tǒng)的文化內(nèi)涵研究-全面剖析
- 建筑市場(chǎng)趨勢(shì)分析-全面剖析
- 音樂教學(xué)與心理健康促進(jìn)計(jì)劃
- 農(nóng)機(jī)綠色環(huán)保技術(shù)-全面剖析
- 放射狀角膜切開術(shù)并發(fā)癥的病理生理機(jī)制研究-全面剖析
- 靜脈留置針插入后的護(hù)理流程
- 冷凍食品出口貿(mào)易模式創(chuàng)新-全面剖析
- 一年級(jí)語文教學(xué)互動(dòng)提升計(jì)劃
- 幼兒園小班科學(xué)小蝌蚪找媽媽課件
- 公園保潔服務(wù)投標(biāo)方案
- 隨州市公共租賃住房租賃資格申請(qǐng)表
- 10J113-1內(nèi)隔墻-輕質(zhì)條板(一)
- 蘇科版八年級(jí)數(shù)學(xué)上冊(cè)講練專題訓(xùn)練勾股定理30道經(jīng)典壓軸題型(原卷版+解析)
- 2024年廣東省初中學(xué)業(yè)水平考試中考英語試卷(真題+答案解析)
- 小學(xué)數(shù)學(xué)人教版五年級(jí)下冊(cè) 3長(zhǎng)方體和正方體應(yīng)用題20道
- DZ/T 0462.3-2023 礦產(chǎn)資源“三率”指標(biāo)要求 第3部分:鐵、錳、鉻、釩、鈦(正式版)
- 2024年昆明巫家壩建設(shè)發(fā)展有限責(zé)任公司招聘筆試沖刺題(帶答案解析)
- 2024年洛陽職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫帶答案
- 上海市崇明縣鄉(xiāng)鎮(zhèn)地圖矢量可編輯課件行政區(qū)劃邊界高清(上海市)
評(píng)論
0/150
提交評(píng)論