第4章匯編語言及其程序設(shè)計_第1頁
第4章匯編語言及其程序設(shè)計_第2頁
第4章匯編語言及其程序設(shè)計_第3頁
第4章匯編語言及其程序設(shè)計_第4頁
第4章匯編語言及其程序設(shè)計_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第4章匯編語言及其程序設(shè)計4.1匯編語言4.2順序結(jié)構(gòu)程序4.3分支程序設(shè)計4.4循環(huán)程序設(shè)計4.5子程序設(shè)計4.1匯編語言4.1.1匯編語言及語句格式

匯編

匯編語言源程序目標(biāo)程序1、指令語句

[標(biāo)號:]助記符操作數(shù);注釋2、偽指令語句

[名字]定義符參數(shù);注釋4.1.2數(shù)據(jù)定義偽指令格式

DBDW變量DD表達式1,表達式2,……DQDT

此偽指令把存儲單元中的數(shù)與一個變量聯(lián)系起來。其中:DB------字節(jié)類型

DW------字類型

DD------雙字類型

DQ------四字類型

DT------五字類型

格式中表達式可以是:1、一個或多個常數(shù)/數(shù)值表達式

例如2、不帶引號的?或帶引號的字符串

例如3、重復(fù)方式DUP

格式:變量定義符表達式1DUP(表達式2)其中,表達式1為重復(fù)次數(shù)表達試2為重復(fù)內(nèi)容

例如4、定義過的變量/標(biāo)號如DATA11DWDATA1DATA12DDDATA2GO

DATA1DB30HDATA2DW0240H,3500HDATA1DATA3DB(-1*3),(16/4)DATA2DATA4DD34567H

DATA3

DATA4

返回30H40H02H00H35HFDH04H67H45H03H00HDATA5DB?DATA6DW?DATA5DATA7DB‘ABCD’

DATA6DATA8DW‘AB’,’CD’

DATA7

DATA8

返回------41H42H43H44H42H41H44H43HDATA9DW2DUP(?)DATA10DB2DUP(5,2DUP(0))

DATA9

DATA10

返回--------05H00H00H05H00H00H變量和標(biāo)號的屬性

變量定義數(shù)據(jù)的邏輯地址,其屬性有段屬性、偏移地址屬性、類型屬性。其類型屬性如下:BYTE-----字節(jié)

WORD-----字

DWORD----雙字

PWORD----三字

QWORD----四字

TWORD----五字標(biāo)號定義指令的邏輯地址,其屬性有段屬性、偏移地址屬性、距離屬性。其距離屬性如下:NEAR----近程(默認(rèn))

FAR-----遠(yuǎn)程4.1.3段定義偽指令格式1、簡化的段定義偽指令.MODEL----內(nèi)存模式說明(TINY、SMALL、MEDIUM、COMPACT、LARGE).X86------選擇80X86指令系統(tǒng).X86P-----選擇80X86保護模式指令系統(tǒng).DATA-----定義數(shù)據(jù)段.STARTUP—指示程序開始,初始化DS,SS.CODE-----定義代碼段.STACK----定義堆棧段.EXIT-----返回操作系統(tǒng)

4.2順序結(jié)構(gòu)程序例1將一個2位數(shù)壓縮的BCD碼轉(zhuǎn)換成二進制數(shù).

.MODELSMALLMULBH.DATAADDAL,BLBCDDB01011001BMOVBIN,ALBINDB?.EXIT.CODEEND.STARTUPMOVAL,BCDMOVBL,ALANDBL,0FHANDAL,0F0HMOVCL,4RORAL,CLMOVBH,0AH4.3分支程序設(shè)計例1①用比較指令

CMPDEST,SRCJEEQUL……EQUL:②用測試指令

TESTDEST,SRCJNZNEXT……NEXT:③用邏輯指令

SHRDEST,CLJCNEXT……NEXT:例2編程實現(xiàn)將鍵盤輸入的小寫字母轉(zhuǎn)換成大寫后輸出。

.MODELSMALLMOVDL,AL.DATAMOVAH,02HBLOCKDB‘ERROR!’,0DH,0AH,’$’INT21H.CODEJMPDONE.STARTUPNEXT:LEADX,BLOCKMOVAH,1MOVAH,9INT21HINT21HCMPAL,‘a(chǎn)’DONE:.EXITJBNEXTENDCMPAL,‘z’JANEXT

ANDAL,11011111B4.4循環(huán)程序設(shè)計例1

MOVCX,COUNTAGAIN:……LOOPAGAIN②

MOVCL,COUNTAGAIN:……DECCLJNZAGAIN③MOVCX,COUNTAGAIN:JCXZNEXT……JMPAGAINNEXT:例2在內(nèi)存BLOCK開始處存放了10個無符號字節(jié)數(shù),從中找出最大值送入MAX單元中。.MODELSMALL.DATABLOCKDB100,60,20,……MAXDB?

.CODE.STARTUPMOVCX,9MOVAL,BLOCKLEABX,BLOCKAGAIN:INCBXCMPAL,[BX]JAENEXTXCHGAL,[BX]NEXT:LOOPAGAINMOVMAX,AL.EXITEND例3在首地址BLOCK處存放了10個字?jǐn)?shù)據(jù)(無符號數(shù)),編程求其和,存入SUM單元。.MODELSMALL.DATABLOCKDW1020H,3040H,…SUMDD?

.CODE.STARTUPMOVCX,10LEASI,BLOCKMOVAX,0MOVDX,0AGAIN:ADDAX,[SI]ADCDX,0INCSIINCSILOOPAGAINMOVSUM,AXMOVSUM+2,DX.EXITEND

例4方法二

.MODELSMALLMOVZXEBX,DX.DATAADDEAX,EBXBLOCKDW1020H,3040H,…INCSISUMDD?INCSI.CODELOOPAGAIN.STARTUPMOVSUM,EAXMOVCX,10.EXITLEASI,BLOCKENDMOVEAX,0

AGAIN:MOVDX,[SI]例4將內(nèi)存首地址為BLOCK開始的10個帶符號字節(jié)數(shù),將其按由大到小的次序排列。

.MODELSMALL.DATABLOCKDB66H,88H,10H,….CODE.STARTUPMOVDI,9LOOP1:MOVCX,DIMOVBX,0LOOP2:MOVAL,BLOCK[BX]CMPAL,BLOCK[BX+1]JGENEXTXCHGAL,BLOCK[BX+1]MOVBLOCK[BX],ALNEXT:INCBXLOOPLOOP2DECDIJNZLOOP1.EXITEND4.5子程序設(shè)計4.5.1過程定義過程名PROC[TYPE][USESREG]……RET(或RETn)過程名ENDP其中,TYPE包括:NEARFARUSESREG:要保護的通用寄存器如SUB1PROCUSESAX,BX,CX……RET等效于

SUB1ENDPSUB1PROCPUSHAXPUSHBXPUSHCX……POPCXPOPBXPOPAXRETSUB1ENDP4.5.2調(diào)用與返回指令1、調(diào)用指令

CALL過程名

CALLFARPTR過程名CALL過程名為段內(nèi)調(diào)用,系統(tǒng)將:

EIP(IP)堆棧

溫馨提示

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

評論

0/150

提交評論