微機(jī)原理與接口技術(shù)第七章_第1頁(yè)
微機(jī)原理與接口技術(shù)第七章_第2頁(yè)
微機(jī)原理與接口技術(shù)第七章_第3頁(yè)
微機(jī)原理與接口技術(shù)第七章_第4頁(yè)
微機(jī)原理與接口技術(shù)第七章_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

微機(jī)原理與接口技術(shù)第七章1第一頁(yè),共三十三頁(yè),編輯于2023年,星期二上機(jī)環(huán)境硬件系統(tǒng)軟件

應(yīng)用軟件

操作系統(tǒng):DOS系統(tǒng)編輯器:EDIT.exe編程序:MASM.exe連接程序:LINK.exe調(diào)試程序:DEBUG.exe用戶開(kāi)發(fā)的程序:ABC.exe等CPU、存儲(chǔ)器(ROM、RAM)、I/O接口、輸入、輸出設(shè)備2第二頁(yè),共三十三頁(yè),編輯于2023年,星期二

匯編語(yǔ)言上機(jī)過(guò)程D:>EDITABC.asmD:>MASMABC;有語(yǔ)法錯(cuò),回EDIT下改該程序D:>LINKABC;有錯(cuò),回在EDIT下改程序D:>ABC運(yùn)行結(jié)果錯(cuò),回EDIT下改程序或在DEBUG下調(diào)試,找原因。D:>DEBUGABC.exe3第三頁(yè),共三十三頁(yè),編輯于2023年,星期二編輯源程序EDITABC.ASM匯編源程序MASMABC.ASM形成目標(biāo)程序ABC.OBJ連接目標(biāo)程序LINKABC.OBJ形成可執(zhí)行程序ABC.EXE運(yùn)行程序用DEBUG調(diào)試4第四頁(yè),共三十三頁(yè),編輯于2023年,星期二§7.2偽指令(指示性語(yǔ)句)

偽指令是匯編語(yǔ)言程序中的指示性語(yǔ)句,它體現(xiàn)程序員的匯編意圖,其作用是在源程序匯編時(shí)指導(dǎo)匯編程序匯編而不會(huì)產(chǎn)生目標(biāo)代碼和占用內(nèi)存。偽指令的具體功能是向匯編程序提供下列信息:如何分段、段的定義和說(shuō)明,段間關(guān)系,模塊的定義和說(shuō)明以及模塊間的關(guān)系,數(shù)據(jù)的定義,開(kāi)始匯編和結(jié)束匯編等。

5第五頁(yè),共三十三頁(yè),編輯于2023年,星期二指示性語(yǔ)句與指令性語(yǔ)句:指令性語(yǔ)句是用指令系統(tǒng)中的指令構(gòu)成的語(yǔ)句。例MOVAX,BX指示性語(yǔ)句是指示匯編程序進(jìn)行匯編的操作。例MOVAX,4+8中的+

codeSEGMENT中的SEGMENTMOVBX,OFFSETstring中的OFFSET6第六頁(yè),共三十三頁(yè),編輯于2023年,星期二指示性語(yǔ)句與指令性語(yǔ)句區(qū)別一個(gè)程序經(jīng)匯編,連接和裝入內(nèi)存后,在執(zhí)行程序之前:

◢指示性語(yǔ)句的功能已經(jīng)完成,故又稱偽指令。

◢而指令性語(yǔ)句的功能尚未完成,需控制CPU去執(zhí)行,才能完成。7第七頁(yè),共三十三頁(yè),編輯于2023年,星期二一、符號(hào)定義偽指令

1、等值語(yǔ)句:

格式

符號(hào)名EQU表達(dá)式作用是用符號(hào)名等值指定的表達(dá)式其中表達(dá)式可以是任何有效的操作數(shù)匯編時(shí)用語(yǔ)句中的表達(dá)式代替程序中符號(hào)所在的地方。應(yīng)用:1.定義符號(hào)常量,方便修改程序。2.某表達(dá)式多次出現(xiàn)時(shí),用等值偽指令可以方便編程。8第八頁(yè),共三十三頁(yè),編輯于2023年,星期二例如:EMPEQU8COUNTEQUEMP+6

2、等號(hào)語(yǔ)句:格式

符號(hào)名=表達(dá)式作用是用符號(hào)名等值指定的表達(dá)式,用“=”定義的符號(hào)名可重新定義。例如:NMU=6NMU=NMU+69第九頁(yè),共三十三頁(yè),編輯于2023年,星期二二、數(shù)據(jù)定義偽指令格式

變量名助記符操作數(shù)[,操作數(shù),...]

用來(lái)定義程序中所用的內(nèi)存操作數(shù)。其中變量名指示內(nèi)存操作數(shù)的地址(符號(hào)地址)助記符指示內(nèi)存操作數(shù)的類型(字節(jié)、字、雙字等)操作數(shù)指示內(nèi)存操作數(shù)的內(nèi)容。

常用的類型助記符有:DB指示其后的操作數(shù)為字節(jié)類型DW指示其后的操作數(shù)為字類型DD指示其后的操作數(shù)為雙字類型DQ指示其后的操作數(shù)為八字節(jié)類型DT指示其后的操作數(shù)為十字節(jié)類型10第十頁(yè),共三十三頁(yè),編輯于2023年,星期二例:DATA-BYTEDB10,4,10HDATA-WORDDW100,100H,—5HDATA-DWDD6+20,0FFFDH數(shù)據(jù)定義偽指令中的表達(dá)式也可以是字符串如: MESS DB ‘ABCD’

數(shù)據(jù)定義偽指令的表達(dá)式中會(huì)出現(xiàn)“?”數(shù)據(jù)項(xiàng),ABCDB ?,?,DEFDW ?,50,?這時(shí)匯編程序會(huì)對(duì)“?”數(shù)據(jù)項(xiàng)保留相應(yīng)的存儲(chǔ)空間,而不存入數(shù)據(jù)。11第十一頁(yè),共三十三頁(yè),編輯于2023年,星期二0AH04H10HDATA-BYTE64H00HDATA-WORD00H01HFBHFFH1AH00H00H00HDATA-DW100100H-52612第十二頁(yè),共三十三頁(yè),編輯于2023年,星期二MESS41H42H43H44HABCDEF32H注意:3個(gè)及其以上的字符,只能用DB定義可用DUP復(fù)制操作符定義相同的操作數(shù),其格式為

重復(fù)次數(shù)DUP(操作數(shù))

例EEDB3DUP(4)等價(jià)于EEDB4,4,413第十三頁(yè),共三十三頁(yè),編輯于2023年,星期二可用DUP復(fù)制操作符定義相同的操作數(shù),其格式為

重復(fù)次數(shù)DUP(操作數(shù))

例EEDB3DUP(4)等價(jià)于EEDB4,4,4例:EDDB10DUP(?)相當(dāng)于定義10個(gè)空單元。14第十四頁(yè),共三十三頁(yè),編輯于2023年,星期二三、段定義偽操作

格式

段名SEGMENT[定位類型][組合類型][類別]、、、、、、段名ENDS段定義由偽操作SEGMENT開(kāi)始、ENDS結(jié)束。其中:SEGMENT和ENDS必須成對(duì)出現(xiàn),且語(yǔ)句前必須有段名,段名必須相同。SEGMENT和ENDS語(yǔ)句之間可以有指令和其他偽操作,表示存放在該段內(nèi)存的變量、指令或其他偽操作對(duì)該段內(nèi)存的處理程序中可以定義多個(gè)段。程序經(jīng)匯編、連接及裝入內(nèi)存后,段名為一具體的段值。15第十五頁(yè),共三十三頁(yè),編輯于2023年,星期二AASEGMENT;數(shù)據(jù)段1

str1DB'Hello!’AAENDSBBSEGMENT;數(shù)據(jù)段2

str2DB6dup(?)BBENDSCCSEGMENT;代碼段

ASSUMECS:CCASSUMEDS:AA,ES:BB

start:CLDMOVAX,AA

MOVDS,AXLEASI,str1數(shù)據(jù)傳送源程序:MOVAX,BB

MOVES,AXLEADI,str2MOVCX,6REPMOVSBMOVAH,4CHINT21HCCENDSENDstart16第十六頁(yè),共三十三頁(yè),編輯于2023年,星期二定位類型、組合類型和類別說(shuō)明段的屬性,它們用方括號(hào)括起來(lái)表示可以缺省。若不缺省,各項(xiàng)排序不能錯(cuò),項(xiàng)與項(xiàng)要用空格分開(kāi)。

定位類型有四種:PAGE(頁(yè))型要求該段物理地址低8位全為0PARA(節(jié))型要求該段物理地址低4位全為0WORD型要求該段物理地址碼為偶數(shù)(最低位為0)BYTE型該段的物理地址可為任意值。組合類型說(shuō)明本段與其它段的關(guān)系?!悇e’它可以是任何合法的名稱。17第十七頁(yè),共三十三頁(yè),編輯于2023年,星期二四、段寄存器說(shuō)明ASSUME偽指令

格式

ASSUME段寄存器:段名[,段寄存器:段名,…]

其中段寄存器為CS、DS、ES、SS中的一個(gè)

段名為用偽操作SEGMENT定義過(guò)的段名例

ASSUMECS:CC,DS:AAASSUME偽操作的作用指示匯編程序指令中用到的標(biāo)號(hào)、過(guò)程及變量所在的段。其中對(duì)標(biāo)號(hào)、過(guò)程必須用CS段寄存器指示

對(duì)變量可用CS、DS、ES、SS段寄存器指示18第十八頁(yè),共三十三頁(yè),編輯于2023年,星期二

若未用ASSUME語(yǔ)句指示指令中用到的標(biāo)號(hào)、過(guò)程和變量所在的段,匯編程序?qū)⒔o出錯(cuò)誤信息。ASSUME語(yǔ)句只起指示作用,并無(wú)實(shí)際的操作。在程序中引用定義的變量做內(nèi)存操作數(shù)時(shí),需按尋址方式用傳送指令(如MOV)給相應(yīng)的段寄存器賦值。19第十九頁(yè),共三十三頁(yè),編輯于2023年,星期二例用程序?qū)崿F(xiàn)1234H+5678HdataSEGMENTvalueDW1234H,5678HresultDW?

dataENDS

codeSEGMENTASSUMECS:code,DS:datastart:MOVAX,data;給DS賦值MOVDS,AXMOVAX,value;取數(shù)ADDAX,value+2;兩數(shù)相加MOVresult,AX;保存結(jié)果MOVAH,4CH;返回DOSINT21H

codeENDSENDstart12H34H78H56Hvalueresult20第二十頁(yè),共三十三頁(yè),編輯于2023年,星期二五、過(guò)程定義偽操作

格式

過(guò)程名PROC類型、、、過(guò)程名ENDP過(guò)程定義由偽操作PROC開(kāi)始、ENDP結(jié)束。其中:PROC和ENDP必須成對(duì)出現(xiàn),且語(yǔ)句前必須有過(guò)程名,過(guò)程名必須相同。PROC和ENDP語(yǔ)句之間為子程的指令序列。程序中可以定義多個(gè)過(guò)程。程序經(jīng)匯編、連接及裝入內(nèi)存后,過(guò)程名為一具體的內(nèi)存地址,指示子程入口。21第二十一頁(yè),共三十三頁(yè),編輯于2023年,星期二過(guò)程名常用作CALL調(diào)用指令的操作數(shù),子程的最后安排RET返回指令,使執(zhí)行完子程后能返回調(diào)用處。過(guò)程有兩種類型:NEAR和FAR

無(wú)類型項(xiàng)時(shí),默認(rèn)為NEAR類型。當(dāng)過(guò)程與調(diào)用指令不在同一段時(shí),應(yīng)將過(guò)程定義為FAR類型。過(guò)程類型決定子程中RET的返回類型22第二十二頁(yè),共三十三頁(yè),編輯于2023年,星期二例1displayPROC、、、、、、RET;NEAR屬性的過(guò)程對(duì)應(yīng)段內(nèi)返回displayENDP例2displayPROCFAR、、、、、、RET;FAR屬性的過(guò)程對(duì)應(yīng)段間返回displayENDP23第二十三頁(yè),共三十三頁(yè),編輯于2023年,星期二六、模塊定義和程序結(jié)束偽操作1.NAME和TITLE偽操作

格式

NAME

模塊名

格式

TITLE

模塊名在源程序開(kāi)始可用NAME或TITLE為模塊命名,模塊名的作用是指示給連接程序進(jìn)行連接用。源程序中可無(wú)模塊定義,此時(shí)源文件名作為模塊名。24第二十四頁(yè),共三十三頁(yè),編輯于2023年,星期二END偽操作格式

END啟動(dòng)地址作用是指示源程序到此結(jié)束。匯編程序?qū)ND之后的語(yǔ)句不進(jìn)行處理。程序中所有有效語(yǔ)句應(yīng)放在END語(yǔ)句之前。源程序中必須有END結(jié)束語(yǔ)句。匯編程序?qū)o(wú)END語(yǔ)句的源程序不進(jìn)行處理,只給出無(wú)END語(yǔ)句錯(cuò)誤信息。25第二十五頁(yè),共三十三頁(yè),編輯于2023年,星期二七、數(shù)值回送操作符:(自學(xué))課前5分鐘TYPE,LENGTH,SIEE,OFFSET,SEG5種。把一些特征或存貯器地址的一部分作為數(shù)值回送?!YPE格式:TYPEvariable變量則回送該變量的以字節(jié)數(shù)表示的類型(DB為1,DW為2,DD為4,DQ為8,DT為10)或label標(biāo)號(hào)回送標(biāo)號(hào)類型數(shù)值(NEAR為-1,F(xiàn)AR為-2)例:ARRAYDW1,2,3ADDSI,TYPEARRAY匯編程序其形式:ADDSI,226第二十六頁(yè),共三十三頁(yè),編輯于2023年,星期二·LENGTH格式:LENGTHvariable對(duì)于變量中使用DUP匯編回送分配給變量單元數(shù),其他情況回送1。例:FESSDW100DUP(0) 對(duì)于MOVCX,LENGTHFEES 匯編程序?qū)⑵湫问剑篗OVCX,100 其他情況27第二十七頁(yè),共三十三頁(yè),編輯于2023年,星期二例:ARRAYDW1,2,3 對(duì)于指令MOVCX,LENGTHARRAY 匯編程序?qū)⑹蛊湫问綖椋篗OVCX,1例:TABLEDB‘ABCD’ 對(duì)于指令MOVCX,LENGTHTABLE匯編程序使其形式為:MOVCX,128第二十八頁(yè),共三十三頁(yè),編輯于2023年,星期二·SIEE格式:SIEEvariable 回送分配給該變量

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論