第4章 匯編語(yǔ)言程序設(shè)計(jì)_第1頁(yè)
第4章 匯編語(yǔ)言程序設(shè)計(jì)_第2頁(yè)
第4章 匯編語(yǔ)言程序設(shè)計(jì)_第3頁(yè)
第4章 匯編語(yǔ)言程序設(shè)計(jì)_第4頁(yè)
第4章 匯編語(yǔ)言程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩72頁(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)介

第4章

匯編語(yǔ)言程序設(shè)計(jì)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院概要4.1匯編語(yǔ)言的格式4.2語(yǔ)句行的構(gòu)成4.3指示性語(yǔ)句4.4指令語(yǔ)句4.5匯編語(yǔ)言程序設(shè)計(jì)及舉例微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院概要匯編語(yǔ)言源程序(1)機(jī)器語(yǔ)言——二進(jìn)制數(shù)形式的指令和數(shù)據(jù)。

B064是什么意思?這就是機(jī)器語(yǔ)言。既不直觀,又不易理解和記憶.

MOVAL,64H;很容易記憶理解,這就是助記符。

(2)助記符——用便于記憶的英語(yǔ)單詞表示的指令操作碼。它反映了指令的功能和主要特征,便于人們理解和記憶。微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院匯編語(yǔ)言——指令助記符,符號(hào)地址,標(biāo)號(hào),偽指令等語(yǔ)言元素的集合以及這些元素使用的規(guī)則。用匯編語(yǔ)言編寫(xiě)的程序叫匯編語(yǔ)言源程序。概要微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院匯編程序源程序的編譯程序匯編程序匯編語(yǔ)言源程序機(jī)器語(yǔ)言目標(biāo)程序匯編源程序需翻譯成機(jī)器語(yǔ)言,變成可執(zhí)行文件,機(jī)器才能執(zhí)行,這個(gè)翻譯過(guò)程叫匯編?!呒?jí)語(yǔ)言中稱該過(guò)程為“解釋”或“編譯”。執(zhí)行翻譯的程序稱為“匯編程序”。微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院匯編語(yǔ)言程序設(shè)計(jì)與執(zhí)行過(guò)程輸入?yún)R編語(yǔ)言源程序源文件.ASM匯編(編譯)目標(biāo)文件.OBJ鏈接可執(zhí)行文件.EXE調(diào)試最終程序微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.1匯編語(yǔ)言的格式段的開(kāi)始段的結(jié)束寄存器與段的關(guān)聯(lián)程序結(jié)束標(biāo)記微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.1匯編語(yǔ)言的格式S_NAME1SEGMENT

語(yǔ)句

語(yǔ)句S_NAME1ENDSS_NAME2SEGMENT

語(yǔ)句

語(yǔ)句S_NAME2ENDSS_NAME3SEGMENT

語(yǔ)句

語(yǔ)句S_NAME3ENDSEND(1)每個(gè)段有1個(gè)名字,以符號(hào)SEGMENT作為段的開(kāi)始,以語(yǔ)句ENDS作為段的結(jié)束;(2)段的開(kāi)始與結(jié)束都必須有名字,而且名字必須相同;(3)1個(gè)源程序由若干個(gè)段組成,整個(gè)源程序以END作為結(jié)束。微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.1匯編語(yǔ)言的格式1、定義一個(gè)段(1)一個(gè)匯編程序是由多個(gè)段組成的,這些段被用來(lái)存放代碼、數(shù)據(jù)或當(dāng)作??臻g來(lái)使用。(2)一個(gè)有意義的匯編程序中至少要有一個(gè)段,這個(gè)段用來(lái)存放代碼。微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.1匯編語(yǔ)言的格式2、程序結(jié)束標(biāo)記(1)End是一個(gè)匯編程序的結(jié)束標(biāo)記,編譯器在編譯匯編程序的過(guò)程中,如果碰到了偽指令end,就結(jié)束對(duì)源程序的編譯。(2)如果程序?qū)懲炅?,要在結(jié)尾處加上偽指令end。否則,編譯器在編譯程序時(shí),無(wú)法知道程序在何處結(jié)束。(3)注意:不要搞混了end和ends。微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.1匯編語(yǔ)言的格式3、寄存器與段的關(guān)聯(lián)假設(shè)(1)assume:含義為“假設(shè)”。(2)它假設(shè)某一段寄存器和程序中的某一個(gè)用segment…ends定義的段相關(guān)聯(lián)。(3)通過(guò)assume說(shuō)明這種關(guān)聯(lián),在需要的情況下,編譯程序可以將段寄存器和某一個(gè)具體的段相聯(lián)系。微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.2語(yǔ)句行的構(gòu)成;(AX)=123H;(BX)=456H;(AX)=(AX)+(BX);(AX)=(AX)+(AX)語(yǔ)句行微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.2語(yǔ)句行的構(gòu)成匯編語(yǔ)言的語(yǔ)句有兩種:指令性語(yǔ)句——由8086指令助記符構(gòu)成的語(yǔ)句指示性語(yǔ)句——由偽指令構(gòu)成的語(yǔ)句指令性語(yǔ)句的格式為:

標(biāo)號(hào):

指令助記符

目的操作數(shù),源操作數(shù)

;注釋指示性語(yǔ)句的格式為:

名字

偽指令

操作數(shù)1,操作數(shù)2,…,操作數(shù)n

;注釋注:各部分之間至少要用一個(gè)空格作為分隔符。微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.2語(yǔ)句行的構(gòu)成指令性語(yǔ)句由CPU執(zhí)行,每一條指令性語(yǔ)句都有一條機(jī)器碼指令與其對(duì)應(yīng);

指示性語(yǔ)句由匯編程序執(zhí)行。它指出匯編程序應(yīng)如何對(duì)源程序進(jìn)行匯編,如何定義變量、分配存儲(chǔ)單元以及指示程序開(kāi)始和結(jié)束等。指示性語(yǔ)句無(wú)機(jī)器碼指令與其相對(duì)應(yīng)。

指令性語(yǔ)句匯編時(shí)生成機(jī)器碼;

指示性語(yǔ)句匯編時(shí)不生成機(jī)器碼。微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院標(biāo)號(hào)——指令的符號(hào)地址,用來(lái)代表指令在存儲(chǔ)器中的地址。只能出現(xiàn)在指令性語(yǔ)句中,標(biāo)號(hào)后應(yīng)加上冒號(hào)。名字——段、過(guò)程、變量的名字,用來(lái)代表它們?cè)诖鎯?chǔ)器中的地址。只能出現(xiàn)在指示性語(yǔ)句中,名字后不加冒號(hào)。指令助記符——8086助記符、偽指令操作數(shù)——即指令的操作對(duì)象對(duì)指令性語(yǔ)句——0,1,2個(gè)對(duì)指示性語(yǔ)句——根據(jù)需要而定操作數(shù)之間以逗號(hào)分隔操作數(shù)可以是:寄存器、存儲(chǔ)單元、常數(shù)或表達(dá)式例如:AX,[DI+BX+10],200,16*8+TABLE,等等4.2語(yǔ)句行的構(gòu)成微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院注釋——以分號(hào)開(kāi)頭,可放在指令后,也可單獨(dú)一行。注意注釋的寫(xiě)法。要寫(xiě)指令(段)在程序中的作用,而不要寫(xiě)指令的操作。例如:以下為同一條指令寫(xiě)的注釋1)MOVCX,100;傳送100到CX2)MOVCX,100;循環(huán)計(jì)數(shù)器置初值顯然,第二種寫(xiě)法要比第一種寫(xiě)法要好。4.2語(yǔ)句行的構(gòu)成微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.2語(yǔ)句行的構(gòu)成數(shù)據(jù)項(xiàng)與表達(dá)式1.常量二進(jìn)制數(shù),以B結(jié)尾。如01001101B。十進(jìn)制數(shù),如85。十六進(jìn)制數(shù),以H結(jié)尾。第1個(gè)數(shù)字為A-F時(shí),前面應(yīng)加0,如0F160H。字符串:用引號(hào)括起來(lái)的1個(gè)或多個(gè)字符。如‘ERROR!’,’a’,匯編時(shí)被翻譯成對(duì)應(yīng)的ASCII碼45H,52H,52H,4FH,52H,21H和61H。微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院有三個(gè)屬性:段地址:即標(biāo)號(hào)所在段的段地址;偏移量:標(biāo)號(hào)所代表存儲(chǔ)單元的段內(nèi)偏移地址;類型:NEAR或FAR:

NEAR—表示標(biāo)號(hào)所在語(yǔ)句與轉(zhuǎn)移指令/調(diào)用指令在同一碼段內(nèi),跳轉(zhuǎn)時(shí)只需改變IP即可。

FAR—標(biāo)號(hào)所在語(yǔ)句與轉(zhuǎn)移指令/調(diào)用指令不在同一代碼段內(nèi)。

若沒(méi)有對(duì)類型進(jìn)行說(shuō)明,默認(rèn)為NEAR。標(biāo)號(hào)通常作為轉(zhuǎn)移指令或CALL指令的轉(zhuǎn)移地址。2.標(biāo)號(hào)——指令所在內(nèi)存單元的符號(hào)地址4.2語(yǔ)句行的構(gòu)成微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.2語(yǔ)句行的構(gòu)成標(biāo)號(hào)和變量名的使用規(guī)則組成:A-Z(不分大小寫(xiě)),0-9,?@._$不能以數(shù)字開(kāi)頭,句號(hào)(.)只能作為首字符長(zhǎng)度小于31個(gè)字符不能與保留字(指令助記符、偽指令、預(yù)定義符號(hào)等)重名不能重復(fù)定義例如:正確的:LP1,AGAIN,NEXT,_GO,OK_1

錯(cuò)誤的:4M,LOOP,AAA,#HELP,+ONE微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.表達(dá)式表達(dá)式是常數(shù)、寄存器、標(biāo)號(hào)、變量與運(yùn)算符的組合。有數(shù)字表達(dá)式和地址表達(dá)式兩種。匯編時(shí)按優(yōu)先規(guī)則對(duì)表達(dá)式進(jìn)行計(jì)算,計(jì)算出具體的數(shù)值或地址。運(yùn)行時(shí)不能改變。表達(dá)式中的運(yùn)算符有5類:算術(shù)、邏輯、關(guān)系、分析、合成4.2語(yǔ)句行的構(gòu)成微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院用于數(shù)字表達(dá)式,例:

MOVAX,4*1024匯編后的形式為:

MOVAX,4096用于地址表達(dá)式,例:

LEASI,TAB+3若TAB的偏移地址為1000H,則匯編后的形式為:

LEASI,[1003H]1)算術(shù)運(yùn)算符——+、-、*、/,MOD4.2語(yǔ)句行的構(gòu)成微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院邏輯運(yùn)算符只能用于數(shù)字表達(dá)式中。例:MOV CL,36HAND0FH

經(jīng)匯編后:MOVCL,06H注意,不要把邏輯運(yùn)算符與邏輯運(yùn)算指令混淆:例:ANDAX,3FC0HAND0FF00H匯編后源操作數(shù)被翻譯為:3F00H,所以上述指令與ANDAX,3F00H等價(jià)。2)邏輯運(yùn)算符——AND、OR、XOR、NOT4.2語(yǔ)句行的構(gòu)成微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院關(guān)系運(yùn)算的結(jié)果是一個(gè)邏輯值:真或假關(guān)系為真,結(jié)果為全1

關(guān)系為假,結(jié)果為全0例:MOVBX,PORTGT300H若PORT的值大于300H,則匯編后為:

MOVBX,0FFFFH否則匯編后為:

MOVBX,03)關(guān)系運(yùn)算符——EQ、NE、LT、GT、LE、GE4.2語(yǔ)句行的構(gòu)成微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3指示性語(yǔ)句(偽指令)符號(hào)定義語(yǔ)句數(shù)據(jù)定義語(yǔ)句段定義語(yǔ)句過(guò)程定義語(yǔ)句宏定義語(yǔ)句結(jié)束語(yǔ)句由匯編程序執(zhí)行的指令,它本身不被匯編成機(jī)器指令。常用的指示性語(yǔ)句有:微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3指示性語(yǔ)句(偽指令)1、符號(hào)定義偽指令把一個(gè)表達(dá)式用一個(gè)符號(hào)表示,以后凡出現(xiàn)該表達(dá)式的地方都可用這個(gè)符號(hào)表示。類似于C語(yǔ)言中的#define。符號(hào)定義偽指令有兩種:EQU,=用EQU定義的符號(hào)未清除前,不能重新定義。清除EQU定義可用PURGE偽指令。用”=”定義的符號(hào)可在任何時(shí)候進(jìn)行重定義。二者均不占用存儲(chǔ)空間,僅是給符號(hào)賦值微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3指示性語(yǔ)句(偽指令)例:FIVEEQU5COUNTEQUCXTENEQU10DIST=BYTEPTR[SI+BP]GOTO=JMP…MOVAX,TENMOVCX,COUNTADDDIST,FIVEDIST=WORDPTR[SI+BP+1]ADDDIST,AXGOTOLABEL定義引用微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3指示性語(yǔ)句(偽指令)2、數(shù)據(jù)定義偽指令用于定義變量,即內(nèi)存單元或數(shù)據(jù)區(qū)。數(shù)據(jù)定義偽指令的格式為:變量名數(shù)據(jù)定義偽指令操作數(shù),操作數(shù),…常用的數(shù)據(jù)定義偽指令有如下幾種:DB定義字節(jié)DW定義字DD定義雙字操作數(shù)可以是常數(shù)、變量或表達(dá)式微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3指示性語(yǔ)句(偽指令)例:DATA_BDB10,5,10HDATA_WDW100H,-4DATA_DDD0FFFBH匯編后的內(nèi)存分配情況如右圖所示。05H10H00H01HFCHFFHFBHFFH00H00H0AHDATA_BDATA_WDATA_D10510H100H-40FFFBH微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3指示性語(yǔ)句(偽指令)例:操作數(shù)可以是字符串,例如

STRDB ‘HELLO’匯編后的情況如圖:STR‘H’‘E’‘L’‘L’‘O’48H45H4CH4CH4FH微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3指示性語(yǔ)句(偽指令)操作數(shù)?用來(lái)保留存儲(chǔ)空間,但不存入數(shù)據(jù).例:ABCDB0,1,2,3,4,’OK’,’$’RSVDW?,?,?,?,?,?,?,?復(fù)制操作符DUP:重復(fù)的數(shù)據(jù)可以使用復(fù)制操作符DUP,如上面RSV亦可寫(xiě)成:

RSVDW8DUP(?)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3指示性語(yǔ)句(偽指令)3、段定義偽指令匯編語(yǔ)言程序是按段來(lái)組織程序和數(shù)據(jù)的。和存儲(chǔ)器的物理段相對(duì)應(yīng),匯編語(yǔ)言程序中的段稱為邏輯段。匯編連接后被映射到物理段中。三類段:代碼(程序)、數(shù)據(jù)、堆棧段定義偽指令:SEGMENT、ENDS、ASSUME、ORG定義一個(gè)段的基本格式:段名SEGMENT[定位類型][組合方式][類別]

<匯編語(yǔ)言語(yǔ)句>段名

ENDS微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3指示性語(yǔ)句(偽指令)這兩個(gè)偽指令總是成對(duì)出現(xiàn),二者前面的段名應(yīng)一致。SEGMENT說(shuō)明了一個(gè)段的開(kāi)始,ENDS說(shuō)明了一個(gè)段的結(jié)束。對(duì)數(shù)據(jù)段和堆棧段,段中的語(yǔ)句一般是變量定義。對(duì)代碼段則是指令語(yǔ)句。如:dataSEGMENT<指令語(yǔ)句>

dataENDS

SEGMENT和ENDS偽指令微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3指示性語(yǔ)句(偽指令)ASSUME偽指令在代碼段中,還必須明確段和段寄存器的關(guān)系,這由ASSUME語(yǔ)句來(lái)指定。如

ASSUMECS:code,DS:data,ES:data

語(yǔ)句中的code和data為段名。

這個(gè)語(yǔ)句說(shuō)明:

1.CS將指向名字為code的代碼段

2.DS和ES將指向名字為data的數(shù)據(jù)段微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院但要注意,ASSUME偽指令只是告知匯編程序有關(guān)段寄存器與段的關(guān)系,并沒(méi)有給段寄存器賦予實(shí)際的初值。故下面的語(yǔ)句

MOV AX,DATAMOV DS,AXMOV ES,AX將段基址裝入段寄存器。如果程序中用到堆棧段,則SS也需裝入實(shí)際的初值。代碼段基地址不需要程序員裝入CS寄存器,而由OS負(fù)責(zé)裝入。4.3指示性語(yǔ)句(偽指令)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3指示性語(yǔ)句(偽指令)SEGMENT語(yǔ)句后可以帶有可選參數(shù),用以規(guī)定邏輯段的其他一些屬性。1)定位類型說(shuō)明如何確定邏輯段的邊界。有四種:PARA(Paragraph):

邏輯段從一個(gè)節(jié)(16個(gè)字節(jié))的邊界開(kāi)始。即段的起始地址應(yīng)能被16整除,或者說(shuō)段起始物理地址應(yīng)為××××0H。——默認(rèn)類型BYTE:

邏輯段從字節(jié)邊界開(kāi)始,即段可以從任何地址開(kāi)始。WORD:

邏輯段從字邊界開(kāi)始。即段的起始地址必須是偶數(shù)。PAGE:

邏輯段從頁(yè)邊界開(kāi)始。256字節(jié)稱為一頁(yè),故段的起始物理地址應(yīng)為×××00H。微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院

2)組合類型說(shuō)明不同模塊中同名段的組合方式。PUBLIC :

所有此類型的同名段組合成一個(gè)邏輯段,公用一個(gè)段地址,運(yùn)行時(shí)裝入同一個(gè)物理段中。COMMON:

所有此類型的同名段具有相同的起始地址(覆蓋),共享相同的存儲(chǔ)區(qū)域。AT<數(shù)值表達(dá)式>:

按絕對(duì)地址定位,段地址就是表達(dá)式的值。STACK:

專用于說(shuō)明堆棧段,組合方式同PUBLIC4.3指示性語(yǔ)句(偽指令)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院3)類別用單引號(hào)括起來(lái)的字符串。所有同類別的段被安排在連續(xù)的存儲(chǔ)區(qū)域中。如:在模塊1中有段定義:

seg1SEGMENTPARASTACK‘stack’

…seg1ENDS在模塊2中有段定義:

seg2SEGMENTPARASTACK‘stack’

…seg2ENDS則連接時(shí)這兩個(gè)段被安排在一起。4.3指示性語(yǔ)句(偽指令)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院ORG規(guī)定了段內(nèi)的指令或數(shù)據(jù)存放的開(kāi)始地址(偏移地址的初值),其格式為:

ORG<表達(dá)式>表達(dá)式的值即為開(kāi)始地址,從此地址起連續(xù)存放程序或數(shù)據(jù)。例:ABCSEGMENTORG100Hbegin:……

ABCENDS

ORG偽指令指令從100H開(kāi)始存放4.3指示性語(yǔ)句(偽指令)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4、過(guò)程定義偽指令PROC、ENDP過(guò)程就是子程序。一個(gè)過(guò)程可以被其它程序所調(diào)用(用CALL指令),過(guò)程的最后一條指令一般是返回指令(RET)。過(guò)程定義偽指令的格式為

<過(guò)程名>

PROC[類型]

RET

<過(guò)程名>

ENDP注意:PROC和ENDP必須成對(duì)出現(xiàn)。4.3指示性語(yǔ)句(偽指令)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院過(guò)程的類型有兩種:

NEAR——(默認(rèn)類型)表示段內(nèi)調(diào)用

FAR——表示段間調(diào)用調(diào)用一個(gè)過(guò)程的格式為:

CALL<過(guò)程名>4.3指示性語(yǔ)句(偽指令)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院5、匯編結(jié)束偽指令END匯編語(yǔ)言源程序的最后,要加匯編結(jié)束偽指令END,以使匯編程序結(jié)束匯編。格式:END[表達(dá)式]END后跟的表達(dá)式通常就是程序第一條指令的標(biāo)號(hào),指示程序的啟動(dòng)地址(要執(zhí)行的第一條指令的地址)。4.3指示性語(yǔ)句(偽指令)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5匯編語(yǔ)言程序設(shè)計(jì)及舉例4.5.1算術(shù)運(yùn)算程序設(shè)計(jì)4.5.2分支程序設(shè)計(jì)4.5.3循環(huán)程序設(shè)計(jì)4.5.4字符串處理程序設(shè)計(jì)4.5.5碼轉(zhuǎn)換程序設(shè)計(jì)4.5.6有關(guān)I/O的DOS功能調(diào)用4.5.7宏匯編與條件匯編微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院1、顯示字符源程序50行語(yǔ)句微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5匯編語(yǔ)言程序設(shè)計(jì)及舉例①根據(jù)實(shí)際問(wèn)題抽象出數(shù)學(xué)模型,確定算法②畫(huà)出程序框圖(流程圖)③分配內(nèi)存工作單元和寄存器④根據(jù)框圖編寫(xiě)源程序,存成.ASM文件⑤對(duì)源程序匯編,生成.OBJ目標(biāo)文件⑥把.OBJ文件連接成.EXE執(zhí)行文件⑦運(yùn)行、調(diào)試匯編語(yǔ)言程序設(shè)計(jì)的步驟:微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5匯編語(yǔ)言程序設(shè)計(jì)及舉例源程序從寫(xiě)出到執(zhí)行的過(guò)程:…Movax,0123hMovbx,0456hAddax,bx…源程序文件…B82301BB560401DB…可執(zhí)行文件1、編寫(xiě)匯編程序2、對(duì)源程序進(jìn)行編譯連接3、執(zhí)行可執(zhí)行文件中的程序微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5匯編語(yǔ)言程序設(shè)計(jì)及舉例(1)用方框表示工作框,框中用簡(jiǎn)明語(yǔ)言標(biāo)明要完成的功能(2)用菱形框表示判斷框

框中標(biāo)明比較、判斷和條件如何繪制程序框圖(流程圖)?YN?微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5匯編語(yǔ)言程序設(shè)計(jì)及舉例(4)各框之間用直線連起來(lái)表示程序走向??蛑袠?biāo)明子程序名字(入口參數(shù)等)(3)用 框表示調(diào)用子程序或過(guò)程。

微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5匯編語(yǔ)言程序設(shè)計(jì)及舉例源程序的基本結(jié)構(gòu):順序分支循環(huán)處理P1條件滿足?處理P2標(biāo)號(hào)1:標(biāo)號(hào)2:條件1條件2初始化循環(huán)體循環(huán)控制繼續(xù)循環(huán)?YN初始化處理1處理2微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.1算術(shù)運(yùn)算程序算術(shù)運(yùn)算程序設(shè)計(jì)是程序設(shè)計(jì)中最簡(jiǎn)單的設(shè)計(jì)方法,它是將確定好的算法或邏輯關(guān)系以正確的語(yǔ)句和正確的邏輯關(guān)系有序地編寫(xiě)出來(lái),形成程序。微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.1直線運(yùn)行程序例:求兩32位無(wú)符號(hào)數(shù)的乘積。A×BDCLBDHBDLADHADLBCHBCLACHACR1C0、1C2R2R3R4C1C3微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.1直線運(yùn)行程序內(nèi)存定義:DWBADCR1R2R3R4[BX+00][BX+02][BX+04][BX+06][BX+08][BX+0A][BX+0C][BX+0E]被乘數(shù)乘數(shù)積微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.1直線運(yùn)行程序微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.1直線運(yùn)行程序微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.2分支程序設(shè)計(jì)標(biāo)號(hào):條件滿足?處理NYIF…THEN結(jié)構(gòu)程序結(jié)構(gòu):

測(cè)試/比較指令(TEST/CMP)條件轉(zhuǎn)移指令(Jx標(biāo)號(hào))

處理體

標(biāo)號(hào):其他指令

微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院程序結(jié)構(gòu):TEST/CMP指令Jx標(biāo)號(hào)1處理體P1JMP標(biāo)號(hào)2標(biāo)號(hào)1:處理體P2標(biāo)號(hào)2:其他指令

條件滿足?處理P1處理P2標(biāo)號(hào)1:標(biāo)號(hào)2:條件1條件2IF…THEN…ELSE結(jié)構(gòu)4.5.2分支程序設(shè)計(jì)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院標(biāo)號(hào)1:條件1成立?P1NYCASE結(jié)構(gòu)程序結(jié)構(gòu):…TEST/CMP指令(測(cè)試條件1)

Jx標(biāo)號(hào)1;不滿足轉(zhuǎn)標(biāo)號(hào)1處理體P1…JMP標(biāo)號(hào)n+1標(biāo)號(hào)1:TEST/CMP指令(測(cè)試條件2)

Jx標(biāo)號(hào)2;不滿足轉(zhuǎn)標(biāo)號(hào)2處理體P2…JMP標(biāo)號(hào)n+1標(biāo)號(hào)2:TEST/CMP指令(測(cè)試條件3)Jx標(biāo)號(hào)3;不滿足轉(zhuǎn)標(biāo)號(hào)3處理體P3…JMP標(biāo)號(hào)n+1標(biāo)號(hào)3:TEST/CMP指令(測(cè)試條件4)……標(biāo)號(hào)n+1:(公共出口)條件2成立?條件n成立?…Pn+1標(biāo)號(hào)2:標(biāo)號(hào)n:標(biāo)號(hào)n+1:P2PnNNYY4.5.2分支程序設(shè)計(jì)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院對(duì)于程序中多次、有規(guī)律執(zhí)行的部分,我們通常使用循環(huán)結(jié)構(gòu)重復(fù)運(yùn)行這些部分,使程序有較高的運(yùn)行效率和可讀性。循環(huán)結(jié)構(gòu)主要由三部分組成,它們是:1.循環(huán)體:重復(fù)運(yùn)行的部分,其中還包含了工作部分和循環(huán)控制部分。工作部分進(jìn)行相應(yīng)的操作,而循環(huán)控制部分則保證在不滿足循環(huán)條件時(shí),跳出循環(huán)。2.循環(huán)結(jié)束條件:在循環(huán)體中包括了循環(huán)結(jié)束條件運(yùn)算部分。每循環(huán)一次除了工作部分進(jìn)行相應(yīng)的操作外,循環(huán)條件部分還要通過(guò)運(yùn)算,得出當(dāng)前循環(huán)的狀態(tài),以便在適當(dāng)?shù)臈l件下結(jié)束循環(huán)。3.循環(huán)初值:用于設(shè)置開(kāi)始循環(huán)時(shí),循環(huán)體所處的初始狀態(tài),如循環(huán)變量初值,循環(huán)體中用到的數(shù)據(jù)和地址指針等。4.5.3循環(huán)程序設(shè)計(jì)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.3循環(huán)程序設(shè)計(jì)1.DO…UNTIL<條件>結(jié)構(gòu)先執(zhí)行,再判斷條件。工作部分至少執(zhí)行一次。初始化循環(huán)體循環(huán)控制繼續(xù)循環(huán)?YN微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院2.DOWHILE<條件>結(jié)構(gòu)先判斷條件,再執(zhí)行。工作部分有可能一次都不執(zhí)行。初始化循環(huán)體循環(huán)控制繼續(xù)循環(huán)?YN4.5.3循環(huán)程序設(shè)計(jì)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.3循環(huán)程序設(shè)計(jì)例:在一串給定個(gè)數(shù)的數(shù)中尋找最大值,放至指定的存儲(chǔ)單元。(每個(gè)數(shù)用16位表示)初始化NN取待比較數(shù)比較大?。恐么髷?shù)取下一個(gè)數(shù)CX=0?Y返回微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.4字符串處理程序設(shè)計(jì)1、確定字符串的長(zhǎng)度2、加偶校驗(yàn)到ASCII字符微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.5碼轉(zhuǎn)換程序設(shè)計(jì)1、十六進(jìn)制到ASCII的轉(zhuǎn)換2、從二進(jìn)制到ASCII串的轉(zhuǎn)換微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.6有關(guān)I/O的DOS功能調(diào)用系統(tǒng)功能調(diào)用——由OS提供的一組實(shí)現(xiàn)特殊功能的子程序供程序員在程序中調(diào)用,以減輕編程工作量。系統(tǒng)功能調(diào)用有兩種,一種稱為DOS功能調(diào)用,另一種稱為BIOS功能調(diào)用。用戶程序在調(diào)用這些系統(tǒng)服務(wù)程序時(shí),不是用CALL命令,而是采用軟中斷指令I(lǐng)NTn來(lái)實(shí)現(xiàn)。在DOS系統(tǒng)中,功能調(diào)用都是用軟中斷指令I(lǐng)NT21H來(lái)實(shí)現(xiàn)的。微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院INT2lH功能大致可以分為四個(gè)方面:設(shè)備管理、目錄管理、文件管理和其它。D0S系統(tǒng)功能調(diào)用的使用方法如下:① AH←功能號(hào);② 設(shè)置該功能所要求的其他入口參數(shù);③ 執(zhí)行INT21H指令;分析出口參數(shù)。以下介紹INT21H的幾個(gè)最常用的功能。4.5.6有關(guān)I/O的DOS功能調(diào)用微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院關(guān)于數(shù)據(jù)輸入和輸出我們這里只討論鍵盤(pán)輸入和顯示輸出,調(diào)用系統(tǒng)功能需要提供入口參數(shù)及所調(diào)用的功能號(hào),調(diào)用結(jié)束返回結(jié)果。1.DOS鍵盤(pán)功能調(diào)用(1)從鍵盤(pán)輸入一個(gè)字符(功能號(hào)=1)MOVAH,1INT21H<AL中有鍵入的字符>4.5.6有關(guān)I/O的DOS功能調(diào)用微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院例:程序中有時(shí)需要用戶對(duì)提示做出應(yīng)答。GET_KEY:MOVAH,1 ;等待鍵入字符

INT21H ;結(jié)果在AL中

CMPAL,’Y’;是’Y’?JZYES ;是,轉(zhuǎn)YESCMPAL,’N’ ;是’N’?JZNO ;是,轉(zhuǎn)NOJMPGET_KEY ;否則繼續(xù)等待輸入YES:…

NO: …4.5.6有關(guān)I/O的DOS功能調(diào)用微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院(2)輸入字符串(功能號(hào)=0AH)此功能調(diào)用從鍵盤(pán)輸入一串字符并把它存入用戶指定的緩沖區(qū)中。

MOVAH,0AHLEADX,<字符串緩沖區(qū)首地址>

INT21H(預(yù)留的N1個(gè)字節(jié)的存儲(chǔ)單元)0DHN2N1N1:緩沖區(qū)長(zhǎng)度(最大鍵入字符數(shù))N2:實(shí)際鍵入的字符數(shù)(不包括回車符)用戶定義的輸入字符串的緩沖區(qū)格式4.5.6有關(guān)I/O的DOS功能調(diào)用微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院若用戶鍵入的字符數(shù)(包括回車)≥定義的N1,本功能調(diào)用將不再接收新的鍵入,且光標(biāo)不再向右移動(dòng)。例:設(shè)在數(shù)據(jù)段定義鍵盤(pán)緩沖區(qū)如下:

STR1DB10DUP(?)調(diào)用DOS功能的0AH號(hào)功能的程序段為:

LEADX,STR1

溫馨提示

  • 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)論