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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第4章8086匯編語言程序設計本章主要內容匯編語言基礎知識1匯編語言的偽指令2系統(tǒng)功能調用34.1匯編語言基礎知識4.1.1概述4.1.2匯編源程序的結構4.1.3匯編語言的語句4.1.4匯編語言的數據4.1.5匯編語言的操作符與表達式

4.1.1概述匯編語言(AssemblyLanguage)是介于機器語言和高級語言之間的計算機語言,是一種用符號表示的面向機器的程序設計語言。它比機器語言易于閱讀、編寫和修改,又比高級語言運行速度快,能充分利用計算機的硬件資源,占用內存空間少。匯編語言常用于計算機控制系統(tǒng)的開發(fā)和高級語言編譯程序的編制等應用場合。采用不同CPU的計算機有不同的匯編語言。用匯編語言編寫的程序稱為匯編語言程序或源程序(SourceProgram)。匯編語言源程序不能直接在計算機上運行,需要將它翻譯成機器語言程序(也稱目標代碼程序,ObjectProgram)。這個翻譯過程為匯編。完成匯編任務的程序(軟件)稱為匯編程序。匯編程序完成以下幾個任務:將匯編語言源程序翻譯成目標代碼程序;按指令要求自動分配存儲區(qū)(包括程序區(qū)、數據區(qū)等);自動把源程序中以各種進制表示的數據都轉換成二進制形式的數據;計算表達式的值;對匯編語言源程序進行語法檢查,并給出語法出錯的提示信息。4.1.2匯編源程序的結構匯編語言程序由若干個段組成。按照各段功能的不同,分別有代碼段、數據段、堆棧段和附加段。其中代碼段是必須要定義的。【例4-1】

編寫匯編程序,計算2010H+2011H,并把和存入RESULT單元。DATASEGMENT ;定義數據段XDW2010H ;定義被加數YDW2011H ;定義加數RESULTDW? ;分配和數存放單元DATAENDS ;數據段定義結束CODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATASTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVAX,XADDAX,YMOVRESULT,AXRETMAINENDPCODEENDSENDSTART匯編語言源程序的特點采用段式結構匯編源程序通常包含若干個段,上例的程序有數據段和代碼段這兩個段,DATA、CODE分別為兩個段的名字。每一段有明顯的起始語句SEGMENT與結束語句ENDS,這些語句稱為“段定義”語句。每一段由若干匯編語句構成匯編源程序每一段包含若干匯編語句。匯編語句的主體是匯編指令。一條語句寫一行,為了清晰,書寫語句時,注意語句的各部分要盡量對齊。匯編語言源程序的特點(續(xù))每個匯編源程序需要一個啟動標號匯編語言源程序需要一個啟動標號作為程序開始執(zhí)行時目標代碼的入口地址。啟動標號可以按照匯編語言的標號命名規(guī)則由程序員自己定義。常用的啟動標號有START、BEGIN等。加入適當注釋,可以提高程序的可讀性為了提高程序的可讀性,可以在匯編語句后以分號“;”為起始標志,加入注釋。匯編語言和操作系統(tǒng)(DOS)的接口計算機一旦啟動成功,由DOS掌握CPU的控制權。應用程序只是作為DOS的子程序,應用程序執(zhí)行完,必須返回DOS。上述程序的第7行、第9行~第11行、第17行和第18行就是為了完成此功能而設計的。(1)返回DOS的標準方法例4-1采用了此方法。具體程序設計方法如下:①將應用程序的主程序定義成一個FAR過程(見上述程序的第7行和第18行),該過程的最后一條指令為RET(見上述程序的第17行);②在代碼段的主程序的開始部分用3條指令,把INT20H指令的段地址(CS=DS=ES)及偏移地址(0)壓入堆棧(見上述程序的第9行~第11行)。這樣,程序執(zhí)行到主程序的最后一條指令RET時,由于過程具有FAR屬性,故堆棧內的兩個字分別彈出到IP及CS,便執(zhí)行INT20H指令,返回到DOS。(2)用DOS功能調用4CH返回在用戶程序中不定義過程段,刪除上述程序的第7行、第9行~第11行和第18行指令,把原第17行的RET指令換成下面兩條指令:MOVAH,4CHINT21HINT21H指令是DOS向用戶提供服務程序的窗口。4.1.3匯編語言的語句匯編語言的語句可以分為:指令語句偽指令語句宏指令語句1.指令語句指令語句是可執(zhí)行語句,匯編后將產生目標代碼,CPU根據這些目標代碼執(zhí)行并完成特定操作。每一條指令語句表達了計算機具有的一個基本能力,這種能力在目標程序執(zhí)行時反映出來。指令語句的格式為:[標號:]指令助記符[操作數][;注釋]2.偽指令語句偽指令語句,也稱指示性語句,是不可執(zhí)行語句,匯編后不產生目標代碼,它僅僅在匯編過程中告訴匯編程序如何匯編源程序。偽指令語句可以告訴匯編程序哪些語句是屬于一個段、是什么類型的段、各段存入內存應如何組裝、給變量分配多少存儲單元、給數字或表達式命名等。偽指令語句的功能是由匯編程序匯編源程序時完成的,不是由CPU執(zhí)行目標代碼時實現的。偽指令語句的格式為:[符號名]偽指令助記符[操作數][;注釋]3.宏指令語句宏是一個以宏名定義的指令序列。一旦把某程序段定義成宏,則可以用宏名代替那段程序。在匯編時,要對宏進行宏展開,即把以宏名表示的地方替換為該宏對應的指令序列的目標代碼。宏指令可以看成指令語句的擴展,相當于多條指令語句的集合。宏指令格式為:[宏名]宏指令助記符[操作數][;注釋]4.匯編語句格式說明(1)關于格式的幾個組成部分匯編語句的格式中帶中括號的部分是可選項。各部分之間必須用空格(SPACE)或水平制表符(TAB)隔開。操作數項由一個或多個表達式組成,它為執(zhí)行語句所要求的操作提供需要的信息。4.匯編語句格式說明(續(xù))注釋項用來說明程序或語句的功能,注釋項在匯編時不會產生目標代碼。注釋項可以跟在語句的后面。分號“;”是注釋項的開始。當分號“;”作為一行的第一個字符時,表示注釋占據一整行,常用來說明下面一段程序的功能。4.匯編語句格式說明(續(xù))(2)關于標號與符號名標號與符號名都稱為名字。標號是可選項,一般設置在程序的入口處或程序跳轉點處,表示一條指令的符號地址,在代碼段中定義,后面必須跟上冒號“:”。符號名也是一個可選項,可以是常量、變量、段名、過程名、宏名,后面不能跟冒號。4.匯編語句格式說明(續(xù))(3)名字的命名規(guī)則①合法符號:字母(不分大小寫)、數字及特殊符號(“?”,“@”,“_”,“$”,“?

”)。②名字可以用除數字外所有的合法符號開頭。但如果是用到符號“·

”,那么這個符號必須是第一個字符。③名字的有效長度不超過31個英文字符。④不能把保留字(如CPU的寄存器名、指令助記符等)用作名字。4.匯編語句格式說明(續(xù))(4)注釋項注釋項用來說明一段程序、一條或幾條指令的功能,此項是可有可無的。但是,對于匯編語言源程序來說,注釋項可以使程序易于被讀懂;而對編寫程序的人來講,注釋項可以是一種“備忘錄”。注釋編寫舉例例如,一般在循環(huán)程序的開始都有初始化程序,置有關工作單元的初值:MOVCX,100 ;將100送入CXMOVSI,0100H ;將0100H送入SIMOVDI,0200H ;將0200H送入DIMOVCX,100 ;循環(huán)計數器CX置初值MOVSI,0100H ;源數據區(qū)指針SI置初值MOVDI,0200H ;目標數據區(qū)指針DI置初值4.1.4匯編語言的數據數據是匯編語言語句的重要組成部分。匯編語言能識別的數據有:常量變量標號1.常量常量是沒有任何屬性的純數值數據,它的值在匯編期間和程序運行過程中不能改變。匯編語言程序中的常量有:數值常量字符常量符號常量(1)數值常量在匯編程序中,數值常量可以用不同進制形式表示。二進制常量表示為以字母B(或b)結尾的由數字0和1組成的序列,例如,01100101B。八進制常量表示為以字母Q(或q)或O(或o)結尾的由數字0~7組成的序列,例如,145Q。(1)數值常量(續(xù))十六進制常量表示為以字母H(或h)結尾的由數字0~9、字母A~F(或a~f)組成的序列,例如,653AH。十進制常量表示為以字母D(或d)結尾的由數字0~9組成的序列。匯編語句中的數據默認采用十進制表示形式,所以,采用十進制數時,也可省略結尾的字母。例如,101D或100。1.常量(續(xù))(2)字符常量字符常量是用單引號括起來的單個字符,如'a'、'1'等。字符常量在操作中體現出的值是其ASCII碼值。1.常量(續(xù))(3)符號常量符號常量是用名字來標識的常量。以符號常量代替常量,可以增加程序的可讀性及通用性。2.變量變量是存儲單元的符號地址,這類存儲單元的內容可以在程序運行期間被修改。變量以變量名的形式出現在程序中。同一個匯編程序中,變量只能定義一次。變量具有以下3種屬性。段屬性:變量所在段的段地址。偏移屬性:變量所在段的段內偏移地址。類型屬性:變量占用存儲單元的字節(jié)數,如表5-1所示。3.標號標號是指令的符號地址,可用作控制轉移指令的操作數。標號具有以下3種屬性。段屬性:標號所在段的段地址。偏移屬性:標號所在段的段內偏移地址。類型屬性:也叫距離屬性,表示標號可作為段內或段間的轉移特性變量的類型值變量類型類型值占用存儲單元的字節(jié)數說明BYTE11字節(jié)型WORD22字型DWORD44雙字型QWORD88四字型TBYTE1010五字型標號NEAR-1近標號(段內調用)FAR-2遠標號(段間調用)4.1.5匯編語言的操作符與表達式操作項是匯編語句中的一個重要組成部分,它可以由常量(常數)、寄存器、標號、變量或表達式組成。表達式是常量、寄存器、標號、變量與一些操作符相組合的序列,分為數值表達式和地址表達式兩種。匯編程序在匯編時按照一定的規(guī)則對表達式進行計算后可以得到一個數值或地址值。1.算術操作符算術操作符有:加(+)、減(-)、乘(*)、除(/)和取余(MOD)。參加運算的數和運算的結果都是整數。除法運算的結果是商的整數部分。取余操作的結果是兩個整數相除后得到的余數。算術操作符可以用于數值表達式或地址表達式。當它用于地址表達式時,僅當其結果有明確的物理意義時,才是有效的結果。例如,將兩個地址相乘或相除都是沒有意義的。加、減操作可以用于地址表達式,但也要注意其物理意義。例如,將兩個地址相加或相減也是沒有意義的。有意義的用法是地址值與一個偏移量相加或相減,可以得到一個新的地址值。例如:MOVAX,2+3*5 ;匯編后,表達式2+3*5被數值17代替MOVBL,NUM+1;表達式NUM+1是匯編時由匯編程序計算的,不是由CPU在執(zhí)行該指令時才計算的。匯編后得到的目標程序中,表達式被它的值代替。2.邏輯操作符邏輯操作符有:與(AND)、或(OR)、非(NOT)和異或(XOR)。邏輯操作按位進行,只適用于數值表達式。邏輯操作符指定匯編程序對操作符前后的兩個數值或數值表達式進行指定的邏輯操作。要注意區(qū)分邏輯操作符與邏輯指令。例如:

ANDDX,PORTAND0FH3.移位操作符移位操作符有兩個:SHL和SHR,按位操作,只適用于數值表達式。移位操作符的用法如下:數值表達式SHL移動位數n數值表達式SHR移動位數n匯編程序將把數字表達式的值左移(SHL)或右移(SHR)n位。當n>15時,結果為0。4.關系操作符關系操作符用于數的比較,有相等(EQ)、不相等(NE)、小于(LT)、大于(GT)、小于等于(LE)和大于等于(GE)6種。關系操作符兩邊的操作數必須是兩個數值或同一段中兩個存儲單元地址。關系操作的運算結果是邏輯值,當結果為真時,表示為0FFFFH;當結果為假時,則表示為0。例如:MOVAX,4EQ3該指令匯編后的結果為:MOVAX,05.數值回送操作符數值回送操作符的運算對象必須是存儲器操作數,即變量或標號。操作符加在運算對象的前面,返回一個數值。操作符功能用法SEG返回變量或標號的段地址SEG變量或標號OFFSET返回變量或標號的偏移地址OFFSET變量或標號TYPE返回變量的或標號的類型值(見表5-1)TYPE變量或標號LENGTH返回變量所定義的元素的個數LENGTH變量或標號SIZE返回變量所占的字節(jié)數SIZE變量或標號6.屬性操作符屬性操作符用來建立或改變已定義變量、內存操作數或標號的類型屬性。屬性操作符有:PTR段操作符THISSHORTHIGHLOW等。(1)PTR格式:類型PTR變量/標號返回值:具有規(guī)定類型屬性的變量或標號。典型應用:①重新指定變量類型例如,有如下數據定義:

BUFWDW1234H,5678H則下列指令合法:MOVAX,BUFWMOVAL,BYTEPTRBUFW;臨時改變BUFW的字屬性為字節(jié)屬性PTR典型應用(續(xù))②指定內存操作數的類型在寄存器間接尋址、寄存器相對尋址、基址變址尋址或相對基址變址尋址等內存尋址方式中,往往很難判斷出操作數的類型屬性,例如:INC[BX]。此時,匯編將指示出錯,為了避免出錯,應對操作數類型加以說明,如下所示:INCBYTEPTR[BX] ;字節(jié)屬性INCWORDPTR[BX][SI] ;字屬性PTR典型應用(續(xù))③與EQU一起定義一個新的變量格式:變量或標號EQU類型PTR說明:新變量或新標號的段屬性、偏移屬性與前一個已定義的變量或標號段屬性、偏移屬性相同。例如:BUFWDW1234H,5678H BUFBEQUBYTEPTRBUFW ;BUFB的類型屬性為字節(jié) ;其他屬性與BUFW一樣進行字存取時,可用變量BUFW,如:MOVAX,BUFW進行字節(jié)存取時,可用變量BUFB,如:MOVAL,BUFB(2)段操作符用來指定一個標號、變量或地址表達式的段屬性。例如:MOVAX,ES:[BX] ;指定數據在ES段(3)THIS格式:THIS類型可以像PTR一樣建立一個指定類型的地址操作數,該操作數的段地址和偏移地址與下一個存儲單元地址相同。例如:BUFBEQUTHISBYTEBUFWDW1234H,5678H此時BUFB的偏移地址和BUFW完全相同,但它是字節(jié)類型的;而BUFW則是字類型的。(4)SHORT格式:SHORT標號返回值:偏移量在-128~+127范圍內的標號。用于JMP指令。即:JMPSHORT標號,指明是短轉移。(5)字節(jié)分離操作符HIGH、LOW格式:HIGH表達式LOW表達式返回值:表達式值的高字節(jié)或低字節(jié)。例如:CONSTEQU0ABCDHMOVAH,HIGHCONST ;AH=0ABHMOVCL,LOWCONST ;CL=0CDH優(yōu)先級操作符高低(),[]LENGTH,SIZE,WIDTH,MASKSEG、OFFSET、TYPE、PTR、THIS、段操作符LOW、HIGH*、/、MOD、SHR、SHL+、-EQ、NE、LT、GT、LT、LE、GENOTANDOR、XORSHORT4.2匯編語言的偽指令偽指令從表示形式及其在語句中所處的位置,與CPU指令相似,但二者有著重要的區(qū)別。首先,偽指令不像機器指令那樣是在程序運行期間由CPU來執(zhí)行的,它是在匯編程序對源程序匯編期間由匯編程序處理的操作;其次,匯編以后,每條CPU指令產生一一對應的目標代碼,而偽指令則不產生與之相應的目標代碼。4.2.1變量定義偽指令變量定義偽指令用來為數據分配存儲單元,建立變量與存儲單元之間的聯(lián)系。語句格式為:[變量名]數據定義偽指令操作數1[,操作數2…]變量定義偽指令有:DB、DW、DD、DQ、DT,分別用來定義類型屬性為字節(jié)(DB)、字(DW)、雙字(DD)、4字(DQ)、5字(DT)的變量。變量定義偽指令的操作數可以是:數字常量,允許以十進制、八進制、十六進制、二進制等形式表示,默認形式是十進制;字符常量,用單引號括起來,被存儲的是該字符的ASCII碼;符號常量,必須是預先已定義的符號;符號“?”,表示預留空間,內容不定。DUP,表示內容重復的數據。DUP用法的具體形式為:次數DUP(被重復內容)例如,數據定義如下,DATA_BDB10,'A'DATA_WDW1234HDATA_SDB'1234',2DUP(1,2DUP(0))數據定義存儲區(qū)示意DB定義的數據,每個數據元素占據1個存儲單元;DW定義的數據,每個數據元素占據2個存儲單元;字數據存儲時,低字節(jié)存儲在低地址單元中,高字節(jié)存儲在高地址單元中;字符在內存中存放的是它的ASCII碼,“A”的ASCII碼為41H;DUP可以嵌套使用。符號地址具有以下關系:DATA_W=DATA_B+2DATA_S=DATA_W+2=DATA_B+4

4.2.2符號定義偽指令符號包括匯編語言的變量名、標號名、過程名、寄存器名及指令助記符等。常用符號定義偽指令有:EQU“=”LABEL1.EQU偽指令格式:名字EQU表達式表達式可以是一個常數、已定義的符號、數值表達式或地址表達式。功能:給表達式賦予一個名字。定義后,可用名字代替表達式。在同一源程序中,一個名字只能用EQU定義一次。例如:PIXEQU64*1024;名字PIX代表數值表達式的值AEQU7BEQUA-22.等號(=)偽指令格式:名字=表達式功能:與EQU基本相同,區(qū)別是它可以對同一個名字重新定義。例如:COUNT=10MOVAL,COUNT…COUNT=5…3.LABEL偽指令格式:變量/標號LABEL類型變量的類型有:BYTE、WORD、DWORD、DQ、DT標號的類型有:NEAR、FAR。功能:定義變量或標號的類型,而變量或標號的段屬性和偏移屬性由該語句所處的位置確定。LABEL使用舉例例如,利用LABEL使同一個數據區(qū)有一個以上的類型及相關屬性。AREAWLABELWORD ;AREAW與AREAB指向相同的數據區(qū),;AREAW類型為字,AREAB類型為字節(jié)AREABDB100DUP(?)

MOVAX,2011HMOVAREAW,AX ;(AREAW)=2011H

…MOVBL,AREAB ;BL=11H4.2.3段定義偽指令匯編源程序由段組成,每段大小不超過64KB,不同的段存放不同類型的數據。段定義偽指令用于匯編源程序中段的定義。相關指令有:SEGMENT、ENDS、ASSUME。1.段定義偽指令SEGMENT、ENDS格式:段名SEGMENT[定位類型][組合類型][類別名]

段名ENDS功能:定義一個邏輯段。SEGMENT和ENDS必須成對使用,它們前面的段名必須是相同的。SEGMENT后面中括號中的內容為可選項,告訴匯編程序和連接程序如何確定段的邊界、如何連接幾個程序模塊。(1)定位類型定位類型說明段的起始地址應有怎樣的邊界值,有以下4種。①BYTE:表示本段可以從任何地址開始,這種類型段間不留空隙,存儲器利用率高。②WORD:表示本段的起始地址必須為偶地址。③PARA:表示本段從節(jié)邊界開始。8086規(guī)定每16字節(jié)為1小節(jié)。所以,定位類型為PARA的段,其起始地址必為16的倍數。這種類型簡單,但是段間往往有空隙。定位類型的默認值為PARA。④PAGE:表示本段從頁邊界開始。8086規(guī)定每256字節(jié)為1頁,所以,定位類型為PAGE的段,其起始地址必為256的倍數。(2)組合類型組合類型說明鏈接不同模塊中的同名段時采用的方式,有以下6種。①PUBLIC:本段與其他模塊中說明為PUBLIC的同名同類別的段鏈接起來,公用一個段地址,形成一個新的邏輯段,所以偏移量調整為相對于新邏輯段起始地址的值。②STACK:本段與其他模塊中說明為STACK的同名的堆棧段鏈接起來,公用一個段地址,形成一個新的邏輯段。同時,系統(tǒng)自動初始化SS及SP。(2)組合類型(續(xù))③COMMON:同名段從同一個內存地址開始裝入。所以,各個邏輯段將發(fā)生覆蓋。連接以后,該段長度取決于同名段中最長的那個,而內容有效的是最后裝入的那個。④MEMORY:與PUBLIC同義,只不過MEMORY定義的段裝在所有同名段的最后。若連接時出現多個MEMORY,則最先遇到的段按組合類型MEMORY處理,其他段組合類型按PUBLIC處理。(2)組合類型(續(xù))⑤PRIVATE:不組合,該段與其他段邏輯上不發(fā)生關系,即使同名,各段擁有各自的段基值。組合類型的默認值為PRIVATE。⑥ATexp:段地址為表達式exp的值(長度為16位)。此項不能用于代碼段。例如:AT0530H,表示本段從物理地址0530H開始。(3)類別名類別名必須用單引號括起來。類別的作用是在連接時決定各邏輯段的裝入順序。當幾個程序模塊進行連接時,其中具有相同類別名的段,按出現的先后順序被裝入連續(xù)的內存區(qū)。沒有類別名的段,與其他無類別名的段一起連續(xù)裝入內存。典型的類型名有:“STACK”,“CODE”,“DATA”。2.ASSUME格式:ASSUME段寄存器名:段名[,段寄存器名:段名…]段寄存器可以是:CS、DS、ES、SS。段名為已定義的段。凡是程序中使用的段,都應說明它與段寄存器之間的對應關系。功能:用于明確段與段寄存器的關系。ASSUME使用說明ASSUME偽指令只是指示各邏輯段使用段寄存器的情況,并沒有對段寄存器的內容進行賦值。DS、ES的值必須在程序段中用指令語句進行賦值,而CS、SS由系統(tǒng)負責設置,程序中也可對SS進行賦值,但不允許對CS賦值。4.2.4過程定義偽指令過程定義偽指令用于定義過程。指令格式如下:過程名 PROC[類型]

…RET過程名 ENDP過程名按匯編語言命名規(guī)則設定,匯編及鏈接后,該名稱表示過程程序的入口地址,供調用使用。過程定義偽指令使用說明PROC與ENDP必須成對出現,PROC開始一個過程,ENDP結束一個過程。成對的PROC與ENDP的前面必須有相同的過程名。類型取值為:NEAR(為默認值)或FAR,表示該過程是段內調用或段間調用。一個過程中,至少有一條過程返回指令RET,一般放在ENDP之前。4.2.5模塊定義和結束偽指令TITLE格式:TITLE標題功能:TITLE偽指令可指定每一頁上打印的標題。標題最多可用60個字符。4.2.5模塊定義和結束偽指令(續(xù))2.NAME格式:NAME模塊名功能:為源程序的目標程序指定一個模塊名。如果程序中沒有NAME偽指令,則匯編程序將TITLE偽指令定義的標題名前6個字符作為模塊名;如果程序中既沒有NAME,又沒有TITLE,則匯編程序將源程序的文件名作為目標程序的模塊名。4.2.5模塊定義和結束偽指令(續(xù))3.END格式:END[標號]功能:表示源程序的結束。標號指示程序開始執(zhí)行的起始地址。如果多個程序模塊相連接,則只有主程序要使用標號,其他子模塊則只用END而不必指定標號。4.2.6其他偽指令1.對準偽指令EVEN格式:EVEN功能:使下一個分配地址為偶地址。在8086中,一個字的地址最好為偶地址。因為8086CPU存取一個字,如果地址是偶地址,需要1個讀或寫周期;如果是奇地址,則需要2個讀或寫周期。所以,該偽指令常用于字定義語句之前。EVEN指令使用說明DSEGSEGMENT

…EVENARR_WDW100DUP(?)

…DSEGENDS4.2.6其他偽指令(續(xù))2.定位偽指令ORG格式:ORG表達式表達式取值范圍為:0~65535內的無符號數。功能:指定其后的程序段或數據塊所存放的起始地址的偏移量。ORG偽指令使用說明例如:MY_DATASEGMENTORG100HMYDATDW1,2,$+4MY_DATAENDS4.2.6其他偽指令(續(xù))3.基數控制偽指令RADIX格式:RADIX表達式表達式取值為2~16內的任何整數。功能:指定匯編程序使用的默認數制。默認時,使用十進制。RADIX使用舉例MOVBX,0FFH;十六進制數要加后綴MOVBX,150;十進制數不要加后綴RADIX16;設置十六進制為默認數制MOVAX,0FF;十六進制數不要加后綴MOVBX,150D;十進制數要加后綴4.3DOS功能調用MS-DOS叫磁盤操作系統(tǒng)。它不僅提供了許多命令,還給用戶提供了80多個常用子程序。DOS功能調用就是對這些子程序的調用,也叫系統(tǒng)功能調用。子程序的順序編號稱為功能調用號。DOS功能調用的過程是:根據需要的功能調用設置入口參數,把功能調用號送AH寄存器,執(zhí)行軟中斷指令INT21H后,可以根據有關功能調用的說明取得出口參數。4.3DOS功能調用(續(xù))1.單個字符輸入功能調用號AH=01H。功能:接收從鍵盤輸入的一個字符并在屏幕回顯。輸入字符的ASCII碼存入AL寄存器。若按下組合鍵Ctrl+Break或Ctrl+C,則程序返回DOS。例如:MOVAH,01HINT21H4.3DOS功能調用(續(xù))2.字符串輸入功能調用號AH=0AH。功能:接收從鍵盤輸入的一個字符串。入口參數:存放字符串的接收緩沖區(qū)首地址和最大字符個數。寄存器DS和DX存放接收緩沖區(qū)首地址,分別存放其段地址和偏移地址;緩沖區(qū)第一字節(jié)存放接收字符串的最大字符個數。出口參數:輸入的字符串及實際輸入的字符個數。緩沖區(qū)第二字節(jié)存放實際輸入的字符個數(不包括回車符);第三字

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論