微機原理第五章_第1頁
微機原理第五章_第2頁
微機原理第五章_第3頁
微機原理第五章_第4頁
微機原理第五章_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

微機原理第五章1第一頁,共十七頁,編輯于2023年,星期二過程名常用作CALL調(diào)用指令的操作數(shù),

子程的最后安排RET返回指令,使執(zhí)行完子程后能返回調(diào)用處。過程有兩種類型:NEAR和FAR

無類型項時,默認(rèn)為NEAR類型。當(dāng)過程與調(diào)用指令不在同一段時,應(yīng)將過程定義為FAR類型。過程類型決定子程中RET的返回類型2第二頁,共十七頁,編輯于2023年,星期二例1displayPROC

、、、、C3H

、、

RET;NEAR屬性的過程對應(yīng)段內(nèi)返回

displayENDP例2displayPROCFAR

、、、、CBH

、、

RET;FAR屬性的過程對應(yīng)段間返回

displayENDP3第三頁,共十七頁,編輯于2023年,星期二

匯編語言程序舉例三4第四頁,共十七頁,編輯于2023年,星期二;利用匯編語言程序結(jié)構(gòu)例二(子程結(jié)構(gòu));用二進(jìn)制顯示中斷向量表中數(shù)據(jù)D0H的個數(shù)keyEQU0D0H;用符號表示常量(關(guān)鍵字)codeSEGMENT;代碼段開始

ASSUMECS:codebegin:MOVAX,0000HMOVDS,AXMOVSI,0000HMOVCX,0400HMOVBX,0MOVAL,keynext:CMP[SI],ALJNZpointINCBXpoint:INCSILOOPnextCALLdisplay;調(diào)用顯示子程

MOVAH,4CH;返回DOS

INT21H;用二進(jìn)制顯示BX內(nèi)容子程displayPROC

MOVCX,16rotate:ROLBX,1MOVDL,BLANDDL,01HADDDL,30HMOVAH,2HINT21HLOOProtateRET;子程返回displayENDP

codeENDS;代碼段結(jié)束

ENDbegin;指示程序結(jié)束和

;程序入口5第五頁,共十七頁,編輯于2023年,星期二七、等值定義偽操作

格式

符號名EQU需等值的表達(dá)式作用是用符號名等值指定的表達(dá)式其中:

表達(dá)式可以是任何有效的操作數(shù)匯編時用語句中的表達(dá)式代替程序中符號所在的地方。應(yīng)用:1.定義符號常量,方便修改程序。2.某表達(dá)式多次出現(xiàn)時,用等值偽操作可以方便編程。6第六頁,共十七頁,編輯于2023年,星期二;利用匯編語言程序結(jié)構(gòu)例二(子程結(jié)構(gòu));用二進(jìn)制顯示中斷向量表中數(shù)據(jù)D0H的個數(shù)keyEQU0D0H

;用符號表示常量(關(guān)鍵字)codeSEGMENT;代碼段開始

ASSUMECS:codebegin:MOVAX,0000HMOVDS,AXMOVSI,0000HMOVCX,0400HMOVBX,0

MOVAL,key

next:CMP[SI],ALJNZpointINCBXpoint:INCSILOOPnextCALLdisplay;調(diào)用顯示子程

MOVAH,4CH;返回DOS

INT21H;用二進(jìn)制顯示BX內(nèi)容子程displayPROC

MOVCX,16rotate:ROLBX,1MOVDL,BLANDDL,01HADDDL,30HMOVAH,2HINT21HLOOProtateRET;子程返回displayENDP

codeENDS;代碼段結(jié)束

ENDbegin;指示程序結(jié)束和

;程序入口7第七頁,共十七頁,編輯于2023年,星期二實現(xiàn)用二進(jìn)制顯示中斷向量表中數(shù)據(jù)

D0H的個數(shù)。分析:中斷向量表指內(nèi)存0:0~0:3FFH

大小400H(即1K)字節(jié)空間;

查找關(guān)鍵字D0H;將關(guān)鍵字的個數(shù),存放在BX中,

采用二進(jìn)制顯示BX內(nèi)容,16個字符;

采用子程調(diào)用結(jié)構(gòu)。8第八頁,共十七頁,編輯于2023年,星期二主程序流程圖子程序流程圖9第九頁,共十七頁,編輯于2023年,星期二;利用匯編語言程序結(jié)構(gòu)例二(子程結(jié)構(gòu));用二進(jìn)制顯示中斷向量表中數(shù)據(jù)D0H的個數(shù)keyEQUD0H;用符號表示常量(關(guān)鍵字)codeSEGMENT;代碼段開始

ASSUMECS:codebegin:MOVAX,0000HMOVDS,AXMOVSI,0000HMOVCX,0400HMOVBX,0MOVAL,key

next:CMP[SI],ALJNZpointINCBXpoint:INCSILOOPnextCALLdisplay;調(diào)用顯示子程

MOVAH,4CH;返回DOSINT21H;用二進(jìn)制顯示BX內(nèi)容子程displayPROC

MOVCX,16rotate:ROLBX,1MOVDL,BLANDDL,01HADDDL,30HMOVAH,2HINT21HLOOProtateRET;子程返回displayENDP

codeENDS;代碼段結(jié)束

ENDbegin;指示程序結(jié)束和

;程序入口10第十頁,共十七頁,編輯于2023年,星期二;利用匯編語言程序結(jié)構(gòu)例二(子程結(jié)構(gòu));用二進(jìn)制顯示中斷向量表中數(shù)據(jù)D0H的個數(shù)keyEQU0D0H;用符號表示常量(關(guān)鍵字)codeSEGMENT;代碼段開始

ASSUMECS:codebegin:MOVAX,0000HMOVDS,AXMOVSI,0000HMOVCX,0400HMOVBX,0MOVAL,key

next:CMP[SI],ALJNZpointINCBXpoint:INCSILOOPnextCALLdisplay;調(diào)用顯示子程

MOVAH,4CH;返回DOSINT21H;用二進(jìn)制顯示BX內(nèi)容子程displayPROC

MOVCX,16rotate:ROLBX,1MOVDL,BLANDDL,01HADDDL,30HMOVAH,2HINT21HLOOProtateRET;子程返回displayENDP

codeENDS;代碼段結(jié)束

ENDbegin;指示程序結(jié)束和

;程序入口思考:如何用SCANSB改寫此程序?11第十一頁,共十七頁,編輯于2023年,星期二例:用CMP指令在中斷向量表中查找從鍵盤輸入的字符,并將其個數(shù)用二進(jìn)制形式顯示出來。(scanskey.asm)codeSEGMENT;代碼段開始

ASSUMECS:codebegin:MOVAX,0000H;設(shè)置查找首地址

MOVDS,AXMOVSI,0000HMOVCX,0400H;設(shè)置查找長度

MOVBX,0;計算值初值

MOVAH,01H;從鍵盤輸入

INT21H;輸入關(guān)鍵字在AL中next:CMP[SI],ALJNZpointINCBXpoint:INCSI

CALLdisplay;調(diào)用顯示子程

MOVAH,4CH

;調(diào)用4CH功能

INT21H

;返回DOS;用二進(jìn)制顯示BX內(nèi)容子程

displayPROC

MOVCX,16;顯示位數(shù)

rotate:ROLBX,1MOVDL,BLANDDL,01HADDDL,30H

MOVAH,2HINT21H

LOOProtate

RET;子程返回

displayENDP

codeENDS;代碼段結(jié)束

ENDbegin12第十二頁,共十七頁,編輯于2023年,星期二例:用LODSB

在中斷向量表中查找從鍵盤輸入的字符,并將其個數(shù)用二進(jìn)制形式顯示出來。(scanskey.asm)codeSEGMENT;代碼段開始

ASSUMECS:codebegin:MOVAX,0000H;設(shè)置查找首地址

MOVDS,AXMOVSI,0000HMOVCX,0400H;設(shè)置查找長度

MOVBX,0;計算值初值

MOVAH,01H;從鍵盤輸入

INT21H;輸入關(guān)鍵字

MOVDL,AL;保存在DL中next:LODSB;從串取

CMPAL,DL;與關(guān)鍵字比較

JNZpointINCBX;計算值加1point:LOOPnext;查找結(jié)束?

CALLdisplay;調(diào)用顯示子程

MOVAH,4CH;調(diào)用4CH功能

INT21H;返回DOS;用二進(jìn)制顯示BX內(nèi)容子程

displayPROCMOVCX,16;顯示位數(shù)

rotate:ROLBX,1MOVDL,BLANDDL,01HADDDL,30HMOVAH,2HINT21HLOOProtateRET;子程返回

displayENDPcodeENDS;代碼段結(jié)束

ENDbegin用LODSB改寫程序13第十三頁,共十七頁,編輯于2023年,星期二八、數(shù)值回送操作符:TYPE,LENGTH,SIEE,OFFSET,SEG5種。把一些特征或存貯器地址的一部分作為數(shù)值回送。

·TYPE格式:TYPEvariable變量 或label標(biāo)號 回送該變量的以字節(jié)數(shù)表示的類型 (DB為1,DW為2,DD為4,DQ為8,DT為10)

回送標(biāo)號類型數(shù)值(NEAR為-1,F(xiàn)AR為-2)例: ARRAYDW1,2,3ADDSI,TYPEARRAY匯編程序其形式:ADDSI,214第十四頁,共十七頁,編輯于2023年,星期二·LENGTH格式:LENGTH

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論