微機原理及接口技術-教學課件-胡-薔-第4章-匯編語言程序設計_第1頁
微機原理及接口技術-教學課件-胡-薔-第4章-匯編語言程序設計_第2頁
微機原理及接口技術-教學課件-胡-薔-第4章-匯編語言程序設計_第3頁
微機原理及接口技術-教學課件-胡-薔-第4章-匯編語言程序設計_第4頁
微機原理及接口技術-教學課件-胡-薔-第4章-匯編語言程序設計_第5頁
已閱讀5頁,還剩87頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

在線教務輔導網:教材其余課件及動畫素材請查閱在線教務輔導網QQ:349134187

或者直接輸入下面地址:1在線教務輔導網:http://www.shangfuwang第4章匯編語言程序設計內容提要:本章介紹了匯編語言基本語法,匯編語言程序的實現,匯編語言程序設計方法及應用,并通過程序設計舉例說明了順序結構程序設計;分支結構程序設計;循環結構程序設計;子程序設計以及宏的定義和調用。學習要求:熟練掌握8086/8088微處理器匯編語言程序設計的方法及應。機械工業出版社微機原理及接口技術2第4章匯編語言程序設計內容提要:本章介紹了匯編語言基本語法第4章匯編語言程序設計本章目錄

4.1匯編語言基礎

4.2匯編語言程序結構

4.3匯編語言程序設計

小結機械工業出版社微機原理及接口技術3第4章匯編語言程序設計本章目錄機械工業出版社微機原4.1匯編語言基礎

在計算機內部,控制計算機工作的指令都以二進制代碼形式出現,這樣的指令稱為機器指令,用機器指令編寫的程序稱為機器語言程序。可見,機器語言是二進制編碼表示的命令和數據的總稱,是面向機器的,能夠被計算機直接識別和執行。然而,二進制表述的機器語言既不直觀,又不便于記憶、閱讀和書寫,為了程序設計的方便,產生了匯編語言。匯編語言是一種符號語言,用與操作功能含義相應的縮寫英文字符組成的助記符號作為編程使用的語言,來表示二進制格式的指令代碼和變量地址。計算機在運行匯編語言程序之前要先將其轉換成機器代碼,才能由計算機識別執行,轉換的過程是由編譯程序來完成。4.1.1匯編語言概述機械工業出版社微機原理及接口技術44.1匯編語言基礎在計算機內部,控制計算機工4.1.2匯編語言語句格式同其它語言一樣,匯編語言的基本組成單位是語句,在匯編語言源程序中每個語句由四項組成,其格式如下:

[標號:]操作碼[操作數][;注釋]其中,操作項是必不可少的。1、標號字段標號是一個可選字段,由字母(A~Z、a~z)數字(0~9)及專用字符(?、.、@、-、$)組成的字符串,最長不超過31個字符,要求必須以字母開頭,用冒號與操作項分開。機械工業出版社微機原理及接口技術54.1.2匯編語言語句格式同其它語言一樣,匯2.操作碼字段操作碼是匯編語言程序中不可省略的部分,用指令助記符或定義符表示的機器指令操作碼,如:MOV、ADD等,它告訴CPU要完成何種操作(操作功能)。有的操作碼帶有前綴,指令系統中允許與指令助記符一起出現的前綴是前綴指令和段超越前綴。3.操作數字段操作數緊跟在操作碼之后,具體指明指令對哪些變量或常數進行操作(操作對象),它可以是兩個操作數、一個操作數或無操作數。如:MOV、ADD等指令要求兩個操作數,它們之間用逗號隔開;NEG、INC等指令只需要一個操作數;而CLC等指令不需要寫操作數,因為操作數已隱含在指令助記符中。操作數可以是數據,也可以是存放數據的地址,所以可以作為操作數的有:常量、變量、表達式、寄存器和標號。機械工業出版社微機原理及接口技術62.操作碼字段操作碼是匯編語言程序中不可省略的部分,用指注釋也是一個可選項,跟在匯編語句之后,以分號“;”開始,注釋內容并不出現在匯編后的機器代碼中,也不影響匯編程序的功能。一段完整的程序中,注釋是很重要的部分,它用于說明一條指令或一段程序的功能,闡述程序的思路,使程序容易閱讀,特別在模塊化程序設計中可通過注釋將各模塊的功能描述出來,大大加強了程序的可讀性。4、注釋機械工業出版社微機原理及接口技術7注釋也是一個可選項,跟在匯編語句之后,以分號“;”開始,匯編語言源程序采用分段式結構,一個匯編語言源程序由若干個邏輯段組成,每個邏輯段以SEGMENT語句開始,以ENDS語句結束,整個源程序以END語句結束。而邏輯段包括數據段、堆棧段、代碼段及附加段,要注意任何一個源程序至少必須有一個代碼段和一條作為源程序文件結束的偽指令END,END后面的標號START表示該程序執行時的啟動地址。4.2匯編語言程序結構4.2.1源程序機械工業出版社微機原理及接口技術8匯編語言源程序采用分段式結構,一個匯編語言源1.數據定義偽指令4.2.2偽指令偽指令又稱偽操作,匯編程序對源程序匯編時,偽指令本身不會產生可執行的機器指令代碼,它僅僅是告訴匯編程序有關源程序的某些信息,或者用來說明內存單元的用途,即偽指令在匯編過程中是由匯編程序執行的指令,它可以用來進行數據定義、符號定義、段定義、過程定義及程序命名及結束等主要操作。數據定義偽指令用于定義變量的類型、給存儲器賦初值或給變量分配存儲單元。常用的數據定義偽指令有DB、DW、DD等。一般格式為:

[標號]偽指令助記符數據表達式機械工業出版社微機原理及接口技術91.數據定義偽指令4.2.2偽指令偽指令又稱這里的符號是指變量名、標號名、過程名、指令助記符和寄存器名,符號定義偽指令用于給一個符號重新命名或定義新的類型屬性。(1)EQU偽指令EQU偽指令將表達式的值賦予一個名字,這是一個等值語句。定義以后可以用這個名字來代替對應的表達式。表達式可以是一個常數、符號、數值、表達式或地址表達式,EQU偽指令的格式如下:

名字EQU表達式2.符號定義偽指令機械工業出版社微機原理及接口技術10這里的符號是指變量名、標號名、過程名、指令助(2)等號(=)偽指令等號(=)偽指令的功能與EQU偽指令相仿,區別在于它可以對同一個名字重復定義。其偽指令格式如下:名字=表達式利用等號(=)偽指令可以使程序設計更加靈活。例如:

TABLE=1

MOVAX,TABLE

RRRR:ADDAX,1?

TABLE=TABLE+1

MOVAX,TABLE

CMPAX,100

JNERRRR?機械工業出版社微機原理及接口技術11(2)等號(=)偽指令等號(=)偽指令的功能與EQU偽指3.段定義偽指令段定義偽指令在匯編語言源程序中定義邏輯段,提供了構造程序的手段。常用的段定義偽指令有ASSUME、SEGMENT和ENDS等。(1)SEGMENT和ENDS

用SEGMENT和ENDS偽指令可以將程序分成多個段,用于定義一個邏輯段,給邏輯段賦予一個段名,并在后面的任選項中給出這個邏輯段的其他特性,如定義類型、組合類型和類別。其偽指令格式如下:段名SEGMENT[定位類型][組合類型][‘類別’]?(段定義體)段名ENDS(2)ASSUME

指示匯編程序指定段所使用的寄存器,即將段寄存器與某個邏輯段建立起對應關系,該偽指令不產生任何目標代碼。其格式如下:

ASSUNE段寄存器名:段名[,段寄存器名:段名]機械工業出版社微機原理及接口技術123.段定義偽指令段定義偽指令在匯編語言源程序中定義邏輯段過程又稱子程序,它是程序的一部分,可以被程序調用,當過程中的指令執行完后,返回程序調用點,調用過程的指令是CALL,從過程返回的指令為RET。程序設計中,我們常常把具有一定功能的程序段設計成一個子程序,匯編程序用“過程”來構造子程序。過程定義偽指令的格式如下:過程名PROC[NEAR/FAR];NEAR與FAR只選一個,或缺省?(過程體)過程名ENDP4.過程定義偽指令機械工業出版社微機原理及接口技術13過程又稱子程序,它是程序的一部分,可以被程序調用,當過程匯編程序內,為了指定下一個數據或指令在相應段中的偏移量,匯編程序使用了一個定位偽指令。其格式為:

ORG表達式它表示把表達式的值賦給當前位置計數器$。5.定位偽指令ORG和當前位置計數器$6.標題偽指令TITLE標題偽指令TITLE用于給程序設置一個標題,列表文件中每一頁的第一行都會顯示這個標題,它是用戶任意選定的字符串,但是字符的個數不能超過60,用END標識源程序模塊的結束,其后可跟程序啟動標號或過程名,用于指明程序的啟動地址,系統根據這個地址初始化CS。其格式為:

TITLE字符串

END[啟動標號]機械工業出版社微機原理及接口技術14匯編程序內,為了指定下一個數據或指令在相應段中的偏移量,7.源程序結束偽指令告訴匯編程序任務到此結束,其后可跟程序啟動標號或過程名,用于指明程序執行時第一條指令的地址。其格式為:

END表達式4.2.2偽指令匯編語言中,如果源程序中需要多次重復使用同一組指令,為了簡化匯編語言源程序的書寫,縮短主程序的長度,可以將這組指令定義為一個“宏指令”,以后需要時,可以按宏指令名來引用,這比子程序更靈活、更簡便。機械工業出版社微機原理及接口技術157.源程序結束偽指令告訴匯編程序任務到此結束,其后可跟程宏定義的一般格式為:宏指令名MACRO[形式參數1,形式參數2,…]?(宏定義體)

ENDM其中,宏定義符MACRO和宏結束符ENDM必須成對出現,其間的宏定義體就是用宏指令名來代替的指令組。形式參數用于向宏定義體傳送參數,在宏調用時代入實際參數,這使宏指令具有更強的通用性。宏調用格式為:宏指令名[實際參數1,實際參數2,…]1.宏定義與宏調用機械工業出版社微機原理及接口技術16宏定義的一般格式為:1.宏定義與宏調用機械工業出版社2.宏取消偽指令PURGE

PURGE的用途是取消已有的宏定義。匯編程序允許所定義的宏指令名與機器指令的助記符或偽指令的名字相同,匯編程序優先考慮宏指令的定義。也就是說,與宏指令同名的指令助記符或偽指令原來的含義失效。用偽指令PURGE取消宏指令定義后,可恢復這些機器指令或偽指令的原來含義。對一個宏指令重新定義時,也必須用偽指令PURGE取消原來的宏定義。其格式如下:PURGE宏指令名,宏指令名,…3.重復宏指令REPT重復宏體所包含的語句,重復次數由表達式的值決定。該語句與宏定義不同,宏定義可在程序不同地方多次引用,而重復宏指令只能在程序某個地方重復語句塊。其格式如下:

REPT表達式宏體

ENDM機械工業出版社微機原理及接口技術172.宏取消偽指令PURGEPURGE的用途是取消已有的宏4.3匯編語言程序設計4.3.1設計步驟程序設計是指為計算機編寫能夠接受并執行的,并具有實際意義的語句序列。匯編語言程序設計需要經過幾個階段,但問題的復雜程度不同編程者的經驗不同,使得程序設計的具體過程也會有所不同。一般來說,在實際的程序設計中常常要經過以下幾個階段:1、分析題目對給出的題目進行全面細致的了解和分析。了解程序應完成的任務、應用的場合、硬件環境、人機接口要求、輸入輸出信息等,這是編程的準備階段。2、建立數學模型在分析問題和明確要求的基礎上,建立數學模型。3、確定算法和處理方案數學模型建立后,要研究具體的算法,也就是適合于計算機使用的計算方法,并對算法進行優化。機械工業出版社微機原理及接口技術184.3匯編語言程序設計4.3.1設計步驟程序設計是4、畫出流程圖流程圖是對算法和整個程序結構的描述,它以圖形的方式把解決問題的先后次序形象地描述出來,也可以準確地描述各種程序結構之間的關系,這有利于程序的編寫和調試。對于復雜的程序,一定要先畫出流程圖,這樣才能從全局的角度來規劃程序結構。流程圖的基本元素如圖4-3所示。機械工業出版社微機原理及接口技術194、畫出流程圖流程圖是對算法和整個程序結構的描述,它以圖

5、編制程序編制程序時,應先分配好存儲空間及所使用的寄存器,根據流程圖及算法編寫程序。應注意的是,編寫程序要簡潔,注意提高程序的可讀性。

6、上機調試程序編寫完成之后,要進行上機調試。在調試過程中往往會碰到語法錯誤,連接錯誤等問題,這時需要及時修改源程序,再反復調試。對于復雜的程序一般分塊解決,也就是先對獨立的模塊進行單獨調試,最后將整個程序連接在一起調試。

7、試運行程序調試成功后,并不代表程序設計整個過程完成,試運行程序及分析程序各模塊運行結果是檢驗程序是否達到要求的最后環節。有時程序調試通過了,但在執行過程中,卻不能達到原設計要求,這時還要動態地分析程序,從分析問題開始,對源程序進行修改,再對程序進行調試,最終達到設計要求。機械工業出版社微機原理及接口技術205、編制程序編制程序時,應先分配好存儲空間及所使用的寄4.3.2順序結構順序結構是解決簡單問題的一種程序設計方法,它按指令存放的先后次序執行一系列操作。程序中沒有分支、不循環、不轉移,一直執行到最后一條指令,這種程序也稱為直線程序。順序結構程序在設計上比較簡單,實際應用中,完全由順序結構構成的程序很少,但它作為一個程序的局部卻廣泛存在于每個復雜程序中,它是設計復雜程序的基礎。例4-1求表達式Z=(10X+4Y)/2的值(X、Y為字節型變量,Z為字型變量)。解:本題為典型的順序結構。在數據段設定X、Y的數據是66H、35H,采用左移的方法完成10X、4Y,用右移的方法完成除2的計算。機械工業出版社微機原理及接口技術214.3.2順序結構順序結構是解決簡單問題的一程序如下:

DATASEGMENT;定義數據段

XDB66H

YDB35H;定義X、Y為字節變量

ZDW?;定義Z為字變量

DATAEND

CODESEGMENT;定義代碼段

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX;對DS賦值

MOVAL,X

SHLAX,1;AX=2X

MOVBX,AX

SHLBX,1;BX=4X

SHLBX,1;BX=8X

ADDBX,AX;BX=2X+8X

機械工業出版社微機原理及接口技術22程序如下:機械工業出版社微機原理及接口技術22

MOVAH,0

MOVAL,Y

SHLAX,1;AX=2Y

SHLAX,1;AX=4Y

ADDBX,AX;AX=10X+4Y

SHRBX,1;AX=(10X+4Y)/2

MOVZ,BX;將結果存入Z

MOVAH,4CH;結束進程,返回操作系統

INT21H

CODEENDS

ENDSTART注意:上例沒有使用堆棧段,所以程序中沒有給SS、SP賦值,若使用了堆棧段,必須給堆棧段賦值。該程序中沒有結果顯示的程序段,程序運行后屏幕上沒有輸出顯示,可以執行DEBUG程序觀察其運行結果。機械工業出版社微機原理及接口技術23MOVAH,0機械工業出版社微機原理4.3.3分支結構分支結構是對問題的處理方法有兩種以上不同選擇時,根據不同條件轉向不同程序段執行的程序設計方法。分支結構要求程序先進行不同條件的判斷,然后依據判斷結果用控制轉移指令,將程序的執行流程轉移到相應的分支上去,判斷一次只可能有一路分支被選擇。機械工業出版社微機原理及接口技術244.3.3分支結構分支結構是對問題的處理方法機械工業出版社微機原理及接口技術25機械工業出版社微機原理及接口技術254.3.4循環結構循環結構按給定的條件重復做一系列的操作,直到條件滿足為止。循環結構可以在解決復雜問題時,縮短程序代碼,提高編程效率。循環程序一般由循環初始狀態設置、循環體和循環控制三個部分。

循環初始狀態:是循環的準備部分,主要給地址指針寄存器設置初始值、設置循環計數器初值、給累加器、進位標志清零等。

循環體:包括循環的工作部分和修改部分,工作部分就是根據具體要求設計的程序段,修改部分是對各種計數器、累加器、進位標志的增量或減量修改,以配合工作部分的程序執行。

循環控制:是循環的核心部分,通過測試循環的條件,控制循環程序的運行和結束。循環控制部分分計數控制法和條件控制法兩種。機械工業出版社微機原理及接口技術264.3.4循環結構循環結構按給定的條件重復做機械工業出版社微機原理及接口技術27機械工業出版社微機原理及接口技術274.3.5子程序結構在一個程序設計中,常常會出現不同的地方需要多次使用相同的某段程序代碼的情況,如果在每個需要的地方都編寫這一段程序代碼,當程序裝入內存時會占用很多的存儲空間,造成不必要的資源開銷,另外重復編寫程序也增加了程序設計人員的工作量,并使程序復雜化,不便于閱讀和檢查。因此常將這一段公用的程序代碼單獨編制成一段程序代碼,作為一個獨立的程序模塊處理,使用時就轉移到這個公用程序段上,該程序段執行完畢后,又返回到原來的程序位置繼續運行。這個單獨編制的獨立公用程序段稱為子程序,也稱過程,轉移到子程序的過程稱為調用子程序。機械工業出版社微機原理及接口技術284.3.5子程序結構在一個程序設計中,常常會1.子程序的定義子程序由偽指令PR0C和ENDP定義。子程序和調用程序在同一代碼段時,子程序設置為NEAR屬性(或缺省);子程序和調用程序不在同一代碼段時,子程序設置為FAR屬性。子程序定義格式如下:子程序名PROC屬性(NEAR或FAR)子程序體子程序名ENDP機械工業出版社微機原理及接口技術291.子程序的定義子程序由偽指令PR0C和ENDP定義。子2.子程序的調用和返回子程序的調用和返回用指令CALL和RET實現。一般CALL指令在主程序中,它實質上是一條特殊的帶返回的無條件轉移指令,由于轉移后要返回,所以要進行斷點保護。而RET指令則在被調用子程序的末尾,在子程序執行完后返回到CALL指令的下一條指令繼續執行主程序,調用與返回指令的使用如圖4-12所示。當然,子程序還可以調用其他子程序或自身。機械工業出版社微機原理及接口技術302.子程序的調用和返回子程序的調用和返回用指令3.現場信息的保護和恢復由于子程序執行時可能要使用某些寄存器,而主程序在調用子程序的前后也可能正在使用這些寄存器,此時主程序和子程序使用的寄存器就可能發生沖突,所以必須考慮現場信息的保護和恢復。這個過程可以在主程序中完成。4.參數傳遞子程序的設計要求有一定通用性,調用子程序時,經常要求主程序將參數傳遞給子程序,從子程序返回時,子程序往往要將處理結果傳遞回主程序。這就是主程序和子程序之間參數的傳送問題,參數傳遞的主要方法有以下四種:利用存儲器傳遞參數利用寄存器傳遞參數利用堆棧傳遞參數利用公用數據區傳遞參數機械工業出版社微機原理及接口技術313.現場信息的保護和恢復由于子程序執行時可能要4.3.6系統功能調用

DOS系統設置了DOS和BIOS兩組中斷程序供調用,可以完成鍵盤輸入、信息顯示、存儲管理、文件操作等服務。BIOS為系統中的輸入輸出設備提供軟件接口,使用戶在不了解硬件特性的情況下,也能通過調用其程序使用這些設備,它們駐留在系統ROM內存區,入口安排在中斷向量表中,系統調用的中斷類型號為05~1FH(關于中斷的詳細內容在第8章介紹)。DOS提供了更容易使用和方便移植的中斷程序,一般都盡量使用DOS功能調用。機械工業出版社微機原理及接口技術324.3.6系統功能調用DOS系統設置了DOS

DOS系統為程序設計人員提供了許多功能調用,即功能子程序,供用戶調用。調用時使用中斷指令:

INTn

其中,n為中斷調用類型號,其范圍是10H~0FFH。INT指令的執行過程為:

(1)保護現場

SP←SP-2,SS:SP←FLAGSSP←SP-2,SS:SP←INTn下一條指令的CSSP←SP-2,SS:SP←INTn下一條指令的IPIP←[0000:n×4],CS←[0000:n×4+2]

(2)查中斷矢量表,獲得中斷程序的入口地址,并執行中斷服務程序中斷服務程序執行完后,用中斷返回指令IRET,恢復被中斷程序的斷點地址和CPU狀態,返回被中斷程序繼續執行。此時若有出口參數,應將其放在指定的寄存器或存儲單元中,讓用戶可以取出使用。機械工業出版社微機原理及接口技術33DOS系統為程序設計人員提供了許多功能調用,即

DOS系統功能調用通常是指對類型號是21H的軟中斷子功能的調用,INT21H中斷保護多個子程序,每個子程序對應一個功能號。下面對部分功能調用舉例說明。

1、帶顯示的鍵盤輸入

01號功能調用。該功能調用是掃描鍵盤,等待鍵盤輸入,若按下一個字符鍵,將字符的ASCII碼送入寄存器AL,并在屏幕上顯示該輸入字符。若按下CTRL+BREAK組合鍵,將中斷程序運行,返回DOS。此功能調用沒有入口參數,出口參數放在寄存器AL中,是輸入字符的ASCII碼。調用方式為:

MOVAH,01HINT21H機械工業出版社微機原理及接口技術34DOS系統功能調用通常是指對類型號是21H的軟

2、字符顯示

02號功能調用。該功能調用是在屏幕上顯示單個字符,先將要顯示的字符的ASCII碼存入DL中,調用時將DL寄存器中的字符送標準輸出設備(如顯示器)輸出。注意,若DL中的內容為CTRL+BREAK的ASCII碼時,退出功能調用。調用方式為:

MOVAH,02HINT21H

在屏幕上顯示字符‘Y’的使用示例如下:

MOVDL,‘Y’MOVAH,02HINT21H機械工業出版社微機原理及接口技術352、字符顯示02號功能調用。該功能調用是在

3、字符打印

05號功能調用。該功能調用是把DL寄存器的內容(ASCII碼)送到標準打印設備打印輸出。該功能調用與02號功能調用類似,也需要先將要打印的字符的ASCII碼送DL寄存器,但兩者的輸出設備不同。調用方式為

MOVAH,05HINT21H

例如要在打印機上打印字符‘A’時,可以如下調用:

MOVDL,‘A’MOVAH,05HINT21H機械工業出版社微機原理及接口技術363、字符打印05號功能調用。該功能調用是把

4、不帶顯示的鍵盤輸入

07號功能調用。該功能調用與01H號功能調用類似,也是從鍵盤輸入字符,將其ASCII碼送AL寄存器,差別是07H功能調用不在屏幕上顯示,也不響應CTRL+BREAK組合鍵。這一特點,可以禁止由CTRL+BREAK引起的程序中斷。調用方式為:

MOVAH,07HINT21H

5、不帶顯示的鍵盤輸入

08號功能調用。該功能調用與07H號功能基本相同,差別是會對CTRL+BREAK組合鍵響應。調用方式為:

MOVAH,08HINT21H機械工業出版社微機原理及接口技術374、不帶顯示的鍵盤輸入07號功能調用。該功

6、字符串顯示

09號功能調用。該功能調用是在顯示器上顯示以‘$’為結束標志的字符串。調用前先把要顯示的字符串存入緩沖區,注意在字符串的結尾存入‘$’結束標志,并將緩沖區的首地址送DX寄存器,段基地址送DS寄存器。調用方式為:

MOVAH,09HINT21H

例如,在屏幕上顯示‘ABCDEFG’時,可進行下調用:

DATASEGMENTSTRINGDB‘ABCDEFG’,‘$’?DATAENDS?MOVDS,SEGSTRINGMOVDX,OFFSETSTRINGMOVAH,09H機械工業出版社微機原理及接口技術386、字符串顯示09號功能調用。該功能調用7.字符串輸入10號功能調用該功能調用是將鍵盤上輸入一行字符寫入內存緩沖區中。

10號功能調用示例如下:

DATASEGMENT

BUFDB20;定義緩沖區的大小

DB?;預留,存放輸入字符個數

DB20DUP(?);存放輸入字符?

DATAENGS?

MOVDS,SEGBUF

MOVDX,OFFSETBUF

MOVAH,0AH

INT21H機械工業出版社微機原理及接口技術397.字符串輸入10號功能調用機械工業出版社微機原理8.返回操作系統4CH號功能調用該功能調用表示結束當前正在執行的程序,并將控制權返回到啟動該程序的上一級。一般用于返回DOS操作系統。調用方式為:

MOVAH,4CH

INT21H機械工業出版社微機原理及接口技術408.返回操作系統4CH號功能調用機械工業出版社微機4.3.7匯編語言程序設計舉例例4-12統計數據區DAT中0、正數、負數的個數,將結果分別存放在S0、S1、S2中。解:在數據段設置數據區DAT存放一組帶符號的數,定義S0、S1、S2單元存放統計結果;采用循環程序結構,逐個讀取DAT中的數據和0比較,根據比較結果修改臨時計數寄存器BL、BH、DH的數值,最后將計數寄存器中的數值存入S0、S1、S2中,程序框圖如圖4-15所示。程序設計如下:

DATASEGMENT

DATDB-9,0,9,3,-4,-5,4,7,0,-8

S0DB0

S1DB0

S2DB0

ASCIIDB30H,‘,’,30H,‘,’,30H,‘$’

DATAENDS機械工業出版社微機原理及接口技術414.3.7匯編語言程序設計舉例例4-12統計數據區DAT

STACKSEGMENT

DB20DUP(?)

STACKENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACK

START:MOVAX,DATA

MOVDS,AX

MOVBX,0

MOVDX,0;設置計數寄存器初始值為0

LEASI,DAT;取數據區DAT的首地址

MOVCX,D0-DAT;取數據區數據個數,作為循環次數

COMP:MOVAL,[SI];取數據

CMPAL,0;和0進行比較

JEZERO

JNSPLUS

INCDH;為負數,DH計數寄存器加1

JMPNEXT;轉移到NEXT,統計下一個數據機械工業出版社微機原理及接口技術42STACKSEGMENT機械工業出版社微機原理

ZERO:INCBH

JMPNEXT

PLUS:INCBL

JMPNEXT

NEXT:INCSI

LOOPCOMP

MOVS0,BH

MOVS1,BL

MOVS2,DH;計數寄存器數值送S0、S1、S2單元

ADDASCII,BH

ADDASCII+1,BL

ADDASCII+2,DH;數值轉換成ASCII碼

LEADX,ASCII

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART機械工業出版社微機原理及接口技術43ZERO:INCBH機械工業出版社微機原理及程序執行完成后,屏幕上顯示“2,4,4”,分別表示數據區DAT中0、正數、負數的個數。機械工業出版社微機原理及接口技術44程序執行完成后,屏幕上顯示“2,4,4”,分別表示數據區本章小結本章詳細介紹了匯編語言程序設計方法及應用。匯編語言的基本組成單位,每個語句由四項組成,格式:

[標號:]操作碼[操作數][;注釋]其中,操作碼必不可少。一個匯編語言源程序由若干個邏輯段組成。在匯編語言源程序中還有偽指令和宏指令。偽指令又稱偽操作,源程序匯編時,偽指令不產生可執行機器指令代碼,在匯編過程中是由匯編程序執行的指令,它可以用來進行數據定義、符號定義、段定義、過程定義及程序命名及結束等主要操作。為了簡化匯編語言源程序的書寫,縮短主程序的長度,可以將源程序中需要多次重復使用的同一組指令定義為一個“宏指令”,以后需要時,可以按宏指令名來引用,這比子程序更靈活、更簡便。機械工業出版社微機原理及接口技術45本章小結本章詳細介紹了匯編語言程序設計方法及應用。匯編語匯編語言程序設計的步驟:

1、分析題目;

2、建立數學模型

3、確定算法和處理方案;

4、畫出流程圖

5、編制程序;

6、上機調試

7、試運行匯編語言程序結構:順序結構程序設計;分支程序設計;循環程序設計;子程序設計;宏;系統功能調用容。機械工業出版社微機原理及接口技術46匯編語言程序設計的步驟:機械工業出版社微機原理及接口技在線教務輔導網:教材其余課件及動畫素材請查閱在線教務輔導網QQ:349134187

或者直接輸入下面地址:47在線教務輔導網:http://www.shangfuwang第4章匯編語言程序設計內容提要:本章介紹了匯編語言基本語法,匯編語言程序的實現,匯編語言程序設計方法及應用,并通過程序設計舉例說明了順序結構程序設計;分支結構程序設計;循環結構程序設計;子程序設計以及宏的定義和調用。學習要求:熟練掌握8086/8088微處理器匯編語言程序設計的方法及應。機械工業出版社微機原理及接口技術48第4章匯編語言程序設計內容提要:本章介紹了匯編語言基本語法第4章匯編語言程序設計本章目錄

4.1匯編語言基礎

4.2匯編語言程序結構

4.3匯編語言程序設計

小結機械工業出版社微機原理及接口技術49第4章匯編語言程序設計本章目錄機械工業出版社微機原4.1匯編語言基礎

在計算機內部,控制計算機工作的指令都以二進制代碼形式出現,這樣的指令稱為機器指令,用機器指令編寫的程序稱為機器語言程序。可見,機器語言是二進制編碼表示的命令和數據的總稱,是面向機器的,能夠被計算機直接識別和執行。然而,二進制表述的機器語言既不直觀,又不便于記憶、閱讀和書寫,為了程序設計的方便,產生了匯編語言。匯編語言是一種符號語言,用與操作功能含義相應的縮寫英文字符組成的助記符號作為編程使用的語言,來表示二進制格式的指令代碼和變量地址。計算機在運行匯編語言程序之前要先將其轉換成機器代碼,才能由計算機識別執行,轉換的過程是由編譯程序來完成。4.1.1匯編語言概述機械工業出版社微機原理及接口技術504.1匯編語言基礎在計算機內部,控制計算機工4.1.2匯編語言語句格式同其它語言一樣,匯編語言的基本組成單位是語句,在匯編語言源程序中每個語句由四項組成,其格式如下:

[標號:]操作碼[操作數][;注釋]其中,操作項是必不可少的。1、標號字段標號是一個可選字段,由字母(A~Z、a~z)數字(0~9)及專用字符(?、.、@、-、$)組成的字符串,最長不超過31個字符,要求必須以字母開頭,用冒號與操作項分開。機械工業出版社微機原理及接口技術514.1.2匯編語言語句格式同其它語言一樣,匯2.操作碼字段操作碼是匯編語言程序中不可省略的部分,用指令助記符或定義符表示的機器指令操作碼,如:MOV、ADD等,它告訴CPU要完成何種操作(操作功能)。有的操作碼帶有前綴,指令系統中允許與指令助記符一起出現的前綴是前綴指令和段超越前綴。3.操作數字段操作數緊跟在操作碼之后,具體指明指令對哪些變量或常數進行操作(操作對象),它可以是兩個操作數、一個操作數或無操作數。如:MOV、ADD等指令要求兩個操作數,它們之間用逗號隔開;NEG、INC等指令只需要一個操作數;而CLC等指令不需要寫操作數,因為操作數已隱含在指令助記符中。操作數可以是數據,也可以是存放數據的地址,所以可以作為操作數的有:常量、變量、表達式、寄存器和標號。機械工業出版社微機原理及接口技術522.操作碼字段操作碼是匯編語言程序中不可省略的部分,用指注釋也是一個可選項,跟在匯編語句之后,以分號“;”開始,注釋內容并不出現在匯編后的機器代碼中,也不影響匯編程序的功能。一段完整的程序中,注釋是很重要的部分,它用于說明一條指令或一段程序的功能,闡述程序的思路,使程序容易閱讀,特別在模塊化程序設計中可通過注釋將各模塊的功能描述出來,大大加強了程序的可讀性。4、注釋機械工業出版社微機原理及接口技術53注釋也是一個可選項,跟在匯編語句之后,以分號“;”開始,匯編語言源程序采用分段式結構,一個匯編語言源程序由若干個邏輯段組成,每個邏輯段以SEGMENT語句開始,以ENDS語句結束,整個源程序以END語句結束。而邏輯段包括數據段、堆棧段、代碼段及附加段,要注意任何一個源程序至少必須有一個代碼段和一條作為源程序文件結束的偽指令END,END后面的標號START表示該程序執行時的啟動地址。4.2匯編語言程序結構4.2.1源程序機械工業出版社微機原理及接口技術54匯編語言源程序采用分段式結構,一個匯編語言源1.數據定義偽指令4.2.2偽指令偽指令又稱偽操作,匯編程序對源程序匯編時,偽指令本身不會產生可執行的機器指令代碼,它僅僅是告訴匯編程序有關源程序的某些信息,或者用來說明內存單元的用途,即偽指令在匯編過程中是由匯編程序執行的指令,它可以用來進行數據定義、符號定義、段定義、過程定義及程序命名及結束等主要操作。數據定義偽指令用于定義變量的類型、給存儲器賦初值或給變量分配存儲單元。常用的數據定義偽指令有DB、DW、DD等。一般格式為:

[標號]偽指令助記符數據表達式機械工業出版社微機原理及接口技術551.數據定義偽指令4.2.2偽指令偽指令又稱這里的符號是指變量名、標號名、過程名、指令助記符和寄存器名,符號定義偽指令用于給一個符號重新命名或定義新的類型屬性。(1)EQU偽指令EQU偽指令將表達式的值賦予一個名字,這是一個等值語句。定義以后可以用這個名字來代替對應的表達式。表達式可以是一個常數、符號、數值、表達式或地址表達式,EQU偽指令的格式如下:

名字EQU表達式2.符號定義偽指令機械工業出版社微機原理及接口技術56這里的符號是指變量名、標號名、過程名、指令助(2)等號(=)偽指令等號(=)偽指令的功能與EQU偽指令相仿,區別在于它可以對同一個名字重復定義。其偽指令格式如下:名字=表達式利用等號(=)偽指令可以使程序設計更加靈活。例如:

TABLE=1

MOVAX,TABLE

RRRR:ADDAX,1?

TABLE=TABLE+1

MOVAX,TABLE

CMPAX,100

JNERRRR?機械工業出版社微機原理及接口技術57(2)等號(=)偽指令等號(=)偽指令的功能與EQU偽指3.段定義偽指令段定義偽指令在匯編語言源程序中定義邏輯段,提供了構造程序的手段。常用的段定義偽指令有ASSUME、SEGMENT和ENDS等。(1)SEGMENT和ENDS

用SEGMENT和ENDS偽指令可以將程序分成多個段,用于定義一個邏輯段,給邏輯段賦予一個段名,并在后面的任選項中給出這個邏輯段的其他特性,如定義類型、組合類型和類別。其偽指令格式如下:段名SEGMENT[定位類型][組合類型][‘類別’]?(段定義體)段名ENDS(2)ASSUME

指示匯編程序指定段所使用的寄存器,即將段寄存器與某個邏輯段建立起對應關系,該偽指令不產生任何目標代碼。其格式如下:

ASSUNE段寄存器名:段名[,段寄存器名:段名]機械工業出版社微機原理及接口技術583.段定義偽指令段定義偽指令在匯編語言源程序中定義邏輯段過程又稱子程序,它是程序的一部分,可以被程序調用,當過程中的指令執行完后,返回程序調用點,調用過程的指令是CALL,從過程返回的指令為RET。程序設計中,我們常常把具有一定功能的程序段設計成一個子程序,匯編程序用“過程”來構造子程序。過程定義偽指令的格式如下:過程名PROC[NEAR/FAR];NEAR與FAR只選一個,或缺省?(過程體)過程名ENDP4.過程定義偽指令機械工業出版社微機原理及接口技術59過程又稱子程序,它是程序的一部分,可以被程序調用,當過程匯編程序內,為了指定下一個數據或指令在相應段中的偏移量,匯編程序使用了一個定位偽指令。其格式為:

ORG表達式它表示把表達式的值賦給當前位置計數器$。5.定位偽指令ORG和當前位置計數器$6.標題偽指令TITLE標題偽指令TITLE用于給程序設置一個標題,列表文件中每一頁的第一行都會顯示這個標題,它是用戶任意選定的字符串,但是字符的個數不能超過60,用END標識源程序模塊的結束,其后可跟程序啟動標號或過程名,用于指明程序的啟動地址,系統根據這個地址初始化CS。其格式為:

TITLE字符串

END[啟動標號]機械工業出版社微機原理及接口技術60匯編程序內,為了指定下一個數據或指令在相應段中的偏移量,7.源程序結束偽指令告訴匯編程序任務到此結束,其后可跟程序啟動標號或過程名,用于指明程序執行時第一條指令的地址。其格式為:

END表達式4.2.2偽指令匯編語言中,如果源程序中需要多次重復使用同一組指令,為了簡化匯編語言源程序的書寫,縮短主程序的長度,可以將這組指令定義為一個“宏指令”,以后需要時,可以按宏指令名來引用,這比子程序更靈活、更簡便。機械工業出版社微機原理及接口技術617.源程序結束偽指令告訴匯編程序任務到此結束,其后可跟程宏定義的一般格式為:宏指令名MACRO[形式參數1,形式參數2,…]?(宏定義體)

ENDM其中,宏定義符MACRO和宏結束符ENDM必須成對出現,其間的宏定義體就是用宏指令名來代替的指令組。形式參數用于向宏定義體傳送參數,在宏調用時代入實際參數,這使宏指令具有更強的通用性。宏調用格式為:宏指令名[實際參數1,實際參數2,…]1.宏定義與宏調用機械工業出版社微機原理及接口技術62宏定義的一般格式為:1.宏定義與宏調用機械工業出版社2.宏取消偽指令PURGE

PURGE的用途是取消已有的宏定義。匯編程序允許所定義的宏指令名與機器指令的助記符或偽指令的名字相同,匯編程序優先考慮宏指令的定義。也就是說,與宏指令同名的指令助記符或偽指令原來的含義失效。用偽指令PURGE取消宏指令定義后,可恢復這些機器指令或偽指令的原來含義。對一個宏指令重新定義時,也必須用偽指令PURGE取消原來的宏定義。其格式如下:PURGE宏指令名,宏指令名,…3.重復宏指令REPT重復宏體所包含的語句,重復次數由表達式的值決定。該語句與宏定義不同,宏定義可在程序不同地方多次引用,而重復宏指令只能在程序某個地方重復語句塊。其格式如下:

REPT表達式宏體

ENDM機械工業出版社微機原理及接口技術632.宏取消偽指令PURGEPURGE的用途是取消已有的宏4.3匯編語言程序設計4.3.1設計步驟程序設計是指為計算機編寫能夠接受并執行的,并具有實際意義的語句序列。匯編語言程序設計需要經過幾個階段,但問題的復雜程度不同編程者的經驗不同,使得程序設計的具體過程也會有所不同。一般來說,在實際的程序設計中常常要經過以下幾個階段:1、分析題目對給出的題目進行全面細致的了解和分析。了解程序應完成的任務、應用的場合、硬件環境、人機接口要求、輸入輸出信息等,這是編程的準備階段。2、建立數學模型在分析問題和明確要求的基礎上,建立數學模型。3、確定算法和處理方案數學模型建立后,要研究具體的算法,也就是適合于計算機使用的計算方法,并對算法進行優化。機械工業出版社微機原理及接口技術644.3匯編語言程序設計4.3.1設計步驟程序設計是4、畫出流程圖流程圖是對算法和整個程序結構的描述,它以圖形的方式把解決問題的先后次序形象地描述出來,也可以準確地描述各種程序結構之間的關系,這有利于程序的編寫和調試。對于復雜的程序,一定要先畫出流程圖,這樣才能從全局的角度來規劃程序結構。流程圖的基本元素如圖4-3所示。機械工業出版社微機原理及接口技術654、畫出流程圖流程圖是對算法和整個程序結構的描述,它以圖

5、編制程序編制程序時,應先分配好存儲空間及所使用的寄存器,根據流程圖及算法編寫程序。應注意的是,編寫程序要簡潔,注意提高程序的可讀性。

6、上機調試程序編寫完成之后,要進行上機調試。在調試過程中往往會碰到語法錯誤,連接錯誤等問題,這時需要及時修改源程序,再反復調試。對于復雜的程序一般分塊解決,也就是先對獨立的模塊進行單獨調試,最后將整個程序連接在一起調試。

7、試運行程序調試成功后,并不代表程序設計整個過程完成,試運行程序及分析程序各模塊運行結果是檢驗程序是否達到要求的最后環節。有時程序調試通過了,但在執行過程中,卻不能達到原設計要求,這時還要動態地分析程序,從分析問題開始,對源程序進行修改,再對程序進行調試,最終達到設計要求。機械工業出版社微機原理及接口技術665、編制程序編制程序時,應先分配好存儲空間及所使用的寄4.3.2順序結構順序結構是解決簡單問題的一種程序設計方法,它按指令存放的先后次序執行一系列操作。程序中沒有分支、不循環、不轉移,一直執行到最后一條指令,這種程序也稱為直線程序。順序結構程序在設計上比較簡單,實際應用中,完全由順序結構構成的程序很少,但它作為一個程序的局部卻廣泛存在于每個復雜程序中,它是設計復雜程序的基礎。例4-1求表達式Z=(10X+4Y)/2的值(X、Y為字節型變量,Z為字型變量)。解:本題為典型的順序結構。在數據段設定X、Y的數據是66H、35H,采用左移的方法完成10X、4Y,用右移的方法完成除2的計算。機械工業出版社微機原理及接口技術674.3.2順序結構順序結構是解決簡單問題的一程序如下:

DATASEGMENT;定義數據段

XDB66H

YDB35H;定義X、Y為字節變量

ZDW?;定義Z為字變量

DATAEND

CODESEGMENT;定義代碼段

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX;對DS賦值

MOVAL,X

SHLAX,1;AX=2X

MOVBX,AX

SHLBX,1;BX=4X

SHLBX,1;BX=8X

ADDBX,AX;BX=2X+8X

機械工業出版社微機原理及接口技術68程序如下:機械工業出版社微機原理及接口技術22

MOVAH,0

MOVAL,Y

SHLAX,1;AX=2Y

SHLAX,1;AX=4Y

ADDBX,AX;AX=10X+4Y

SHRBX,1;AX=(10X+4Y)/2

MOVZ,BX;將結果存入Z

MOVAH,4CH;結束進程,返回操作系統

INT21H

CODEENDS

ENDSTART注意:上例沒有使用堆棧段,所以程序中沒有給SS、SP賦值,若使用了堆棧段,必須給堆棧段賦值。該程序中沒有結果顯示的程序段,程序運行后屏幕上沒有輸出顯示,可以執行DEBUG程序觀察其運行結果。機械工業出版社微機原理及接口技術69MOVAH,0機械工業出版社微機原理4.3.3分支結構分支結構是對問題的處理方法有兩種以上不同選擇時,根據不同條件轉向不同程序段執行的程序設計方法。分支結構要求程序先進行不同條件的判斷,然后依據判斷結果用控制轉移指令,將程序的執行流程轉移到相應的分支上去,判斷一次只可能有一路分支被選擇。機械工業出版社微機原理及接口技術704.3.3分支結構分支結構是對問題的處理方法機械工業出版社微機原理及接口技術71機械工業出版社微機原理及接口技術254.3.4循環結構循環結構按給定的條件重復做一系列的操作,直到條件滿足為止。循環結構可以在解決復雜問題時,縮短程序代碼,提高編程效率。循環程序一般由循環初始狀態設置、循環體和循環控制三個部分。

循環初始狀態:是循環的準備部分,主要給地址指針寄存器設置初始值、設置循環計數器初值、給累加器、進位標志清零等。

循環體:包括循環的工作部分和修改部分,工作部分就是根據具體要求設計的程序段,修改部分是對各種計數器、累加器、進位標志的增量或減量修改,以配合工作部分的程序執行。

循環控制:是循環的核心部分,通過測試循環的條件,控制循環程序的運行和結束。循環控制部分分計數控制法和條件控制法兩種。機械工業出版社微機原理及接口技術724.3.4循環結構循環結構按給定的條件重復做機械工業出版社微機原理及接口技術73機械工業出版社微機原理及接口技術274.3.5子程序結構在一個程序設計中,常常會出現不同的地方需要多次使用相同的某段程序代碼的情況,如果在每個需要的地方都編寫這一段程序代碼,當程序裝入內存時會占用很多的存儲空間,造成不必要的資源開銷,另外重復編寫程序也增加了程序設計人員的工作量,并使程序復雜化,不便于閱讀和檢查。因此常將這一段公用的程序代碼單獨編制成一段程序代碼,作為一個獨立的程序模塊處理,使用時就轉移到這個公用程序段上,該程序段執行完畢后,又返回到原來的程序位置繼續運行。這個單獨編制的獨立公用程序段稱為子程序,也稱過程,轉移到子程序的過程稱為調用子程序。機械工業出版社微機原理及接口技術744.3.5子程序結構在一個程序設計中,常常會1.子程序的定義子程序由偽指令PR0C和ENDP定義。子程序和調用程序在同一代碼段時,子程序設置為NEAR屬性(或缺省);子程序和調用程序不在同一代碼段時,子程序設置為FAR屬性。子程序定義格式如下:子程序名PROC屬性(NEAR或FAR)子程序體子程序名ENDP機械工業出版社微機原理及接口技術751.子程序的定義子程序由偽指令PR0C和ENDP定義。子2.子程序的調用和返回子程序的調用和返回用指令CALL和RET實現。一般CALL指令在主程序中,它實質上是一條特殊的帶返回的無條件轉移指令,由于轉移后要返回,所以要進行斷點保護。而RET指令則在被調用子程序的末尾,在子程序執行完后返回到CALL指令的下一條指令繼續執行主程序,調用與返回指令的使用如圖4-12所示。當然,子程序還可以調用其他子程序或自身。機械工業出版社微機原理及接口技術762.子程序的調用和返回子程序的調用和返回用指令3.現場信息的保護和恢復由于子程序執行時可能要使用某些寄存器,而主程序在調用子程序的前后也可能正在使用這些寄存器,此時主程序和子程序使用的寄存器就可能發生沖突,所以必須考慮現場信息的保護和恢復。這個過程可以在主程序中完成。4.參數傳遞子程序的設計要求有一定通用性,調用子程序時,經常要求主程序將參數傳遞給子程序,從子程序返回時,子程序往往要將處理結果傳遞回主程序。這就是主程序和子程序之間參數的傳送問題,參數傳遞的主要方法有以下四種:利用存儲器傳遞參數利用寄存器傳遞參數利用堆棧傳遞參數利用公用數據區傳遞參數機械工業出版社微機原理及接口技術773.現場信息的保護和恢復由于子程序執行時可能要4.3.6系統功能調用

DOS系統設置了DOS和BIOS兩組中斷程序供調用,可以完成鍵盤輸入、信息顯示、存儲管理、文件操作等服務。BIOS為系統中的輸入輸出設備提供軟件接口,使用戶在不了解硬件特性的情況下,也能通過調用其程序使用這些設備,它們駐留在系統ROM內存區,入口安排在中斷向量表中,系統調用的中斷類型號為05~1FH(關于中斷的詳細內容在第8章介紹)。DOS提供了更容易使用和方便移植的中斷程序,一般都盡量使用DOS功能調用。機械工業出版社微機原理及接口技術784.3.6系統功能調用DOS系統設置了DOS

DOS系統為程序設計人員提供了許多功能調用,即功能子程序,供用戶調用。調用時使用中斷指令:

INTn

其中,n為中斷調用類型號,其范圍是10H~0FFH。INT指令的執行過程為:

(1)保護現場

SP←SP-2,SS:SP←FLAGSSP←SP-2,SS:SP←INTn下一條指令的CSSP←SP-2,SS:SP←INTn下一條指令的IPIP←[0000:n×4],CS←[0000:n×4+2]

(2)查中斷矢量表,獲得中斷程序的入口地址,并執行中斷服務程序中斷服務程序執行完后,用中斷返回指令IRET,恢復被中斷程序的斷點地址和CPU狀態,返回被中斷程序繼續執行。此時若有出口參數,應將其放在指定的寄存器或存儲單元中,讓用戶可以取出使用。機械工業出版社微機原理及接口技術79DOS系統為程序設計人員提供了許多功能調用,即

DOS系統功能調用通常是指對類型號是21H的軟中斷子功能的調用,INT21H中斷保護多個子程序,每個子程序對應一個功能號。下面對部分功能調用舉例說明。

1、帶顯示的鍵盤輸入

01號功能調用。該功能調用是掃描鍵盤,等待鍵盤輸入,若按下一個字符鍵,將字符的ASCII碼送入寄存器AL,并在屏幕上顯示該輸入字符。若按下CTRL+BREAK組合鍵,將中斷程序運行,返回DOS。此功能調用沒有入口參數,出口參數放在寄存器AL中,是輸入字符的ASCII碼。調用方式為:

MOVAH,01HINT21H機械工業出版社微機原理及接口技術80DOS系統功能調用通常是指對類型號是21H的軟

2、字符顯示

02號功能調用。該功能調用是在屏幕上顯示單個字符,先將要顯示的字符的ASCII碼存入DL中,調用時將DL寄存器中的字符送標準輸出設備(如顯示器)輸出。注意,若DL中的內容為CTRL+BREAK的ASCII碼時,退出功能調用。調用方式為:

MOVAH,02HINT21H

在屏幕上顯示字符‘Y’的使用示例如下:

MOVDL,‘Y’MOVAH,02HINT21H機械工業出版社微機原理及接口技術812、字符顯示02號功能調用。該功能調用是在

3、字符打印

05號功能調用。該功能調用是把DL寄存器的內容(ASCII碼)送到標準打印設備打印輸出。該功能調用與02號功能調用類似,也需要先將要打印的字符的ASCII碼送DL寄存器,但兩者的輸出設備不同。調用方式為

MOVAH,05HINT21H

例如要在打印機上打印字符‘A’時,可以如下調用:

MOVDL,‘A’MOVAH,05HINT21H機械工業出版社微機原理及接口技術823、字符打印05號功能調用。該功能調用是把

4、不帶顯示的鍵盤輸入

07號功能調用。該功能調用與01H號功能調用類似,也是從鍵盤輸入字符,將其ASCII碼送AL寄存器,差別是07H功能調用不在屏幕上顯示,也不響應CTRL+BREAK組合鍵。這一特點,可以禁止由CTRL+BREAK引起的程序中斷。調用方式為:

MOVAH,07HINT21H

5、不帶顯示的鍵盤輸入

08號功能調用。該功能調用與07H號功能基本相同,差別是會對CTRL+BREAK組合鍵響應。調用方式為:

MOVAH,08HINT21H機械工業出版社微機原理及接口技術834、不帶顯示的鍵盤輸入07

溫馨提示

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

評論

0/150

提交評論