![第4章 匯編語言程序設(shè)計(jì)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/4/9bf88fdd-2688-4e5d-a8d4-247f652b6a93/9bf88fdd-2688-4e5d-a8d4-247f652b6a931.gif)
![第4章 匯編語言程序設(shè)計(jì)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/4/9bf88fdd-2688-4e5d-a8d4-247f652b6a93/9bf88fdd-2688-4e5d-a8d4-247f652b6a932.gif)
![第4章 匯編語言程序設(shè)計(jì)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/4/9bf88fdd-2688-4e5d-a8d4-247f652b6a93/9bf88fdd-2688-4e5d-a8d4-247f652b6a933.gif)
![第4章 匯編語言程序設(shè)計(jì)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/4/9bf88fdd-2688-4e5d-a8d4-247f652b6a93/9bf88fdd-2688-4e5d-a8d4-247f652b6a934.gif)
![第4章 匯編語言程序設(shè)計(jì)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-7/4/9bf88fdd-2688-4e5d-a8d4-247f652b6a93/9bf88fdd-2688-4e5d-a8d4-247f652b6a935.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、物理與電子電氣工程學(xué)院物理與電子電氣工程學(xué)院第第4 4章章 匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院概概 要要 4.1 匯編語言的格式匯編語言的格式 4.2 語句行的構(gòu)成語句行的構(gòu)成 4.3 指示性語句指示性語句4.4 指令語句指令語句4.5 匯編語言程序設(shè)計(jì)及舉例匯編語言程序設(shè)計(jì)及舉例微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院概概 要要匯編語言源程序匯編語言源程序(1 1)機(jī)器語言)機(jī)器語言二進(jìn)制數(shù)形式的指令和數(shù)據(jù)。二進(jìn)制數(shù)形式的指令和數(shù)據(jù)。 B0 64 B0 64 是什么意思?這就是機(jī)器語言。既不直是什么意思?這就是機(jī)器語言
2、。既不直觀觀, ,又不易理解和記憶又不易理解和記憶. . MOV ALMOV AL,64H 64H ;很容易記憶理解,這就是助記很容易記憶理解,這就是助記符。符。 (2 2)助記符)助記符用便于記憶的英語單詞表示的指用便于記憶的英語單詞表示的指令操作碼。它反映了指令的功能和主要特征令操作碼。它反映了指令的功能和主要特征, ,便于便于人們理解和記憶。人們理解和記憶。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院 匯編語言匯編語言指令助記符指令助記符, ,符號地址,標(biāo)號符號地址,標(biāo)號,偽指令等語言元素的集合以及這些元素使用,偽指令等語言元素的集合以及這些元素使用的規(guī)則。的規(guī)則。 用匯編
3、語言編寫的程序叫匯編語言源程序。用匯編語言編寫的程序叫匯編語言源程序。概概 要要微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院匯編程序匯編程序源程序的編譯程序源程序的編譯程序匯編程序匯編程序匯編語言匯編語言源程序源程序機(jī)器語言機(jī)器語言目標(biāo)程序目標(biāo)程序 匯編源程序需翻譯成機(jī)器語言匯編源程序需翻譯成機(jī)器語言, ,變成可執(zhí)行文件變成可執(zhí)行文件, ,機(jī)器才能執(zhí)行機(jī)器才能執(zhí)行, ,這個(gè)翻譯過程叫匯編。這個(gè)翻譯過程叫匯編。高級語言高級語言中稱該過程為中稱該過程為“解釋解釋”或或“編譯編譯”。執(zhí)行翻譯的程。執(zhí)行翻譯的程序稱為序稱為“匯編程序匯編程序”。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電
4、子電氣工程學(xué)院匯編語言程序設(shè)計(jì)與執(zhí)行過程匯編語言程序設(shè)計(jì)與執(zhí)行過程u輸入?yún)R編語言源程序輸入?yún)R編語言源程序 源文件源文件 . .ASMASMu匯編(編譯)匯編(編譯) 目標(biāo)文件目標(biāo)文件 . .OBJOBJu鏈接鏈接 可執(zhí)行文件可執(zhí)行文件 . .EXEEXEu調(diào)試調(diào)試 最終程序最終程序微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.1 匯編語言的格式匯編語言的格式段的開始段的開始段的結(jié)束段的結(jié)束寄存器與寄存器與段的關(guān)聯(lián)段的關(guān)聯(lián)程序結(jié)束標(biāo)記程序結(jié)束標(biāo)記微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.1 匯編語言的格式匯編語言的格式S_NAME1 SEGMENT 語句語句
5、語句語句S_NAME1 ENDSS_NAME2 SEGMENT 語句語句 語句語句S_NAME2 ENDSS_NAME3 SEGMENT 語句語句 語句語句S_NAME3 ENDS END(1 1)每個(gè)段有)每個(gè)段有1 1個(gè)名字,以符個(gè)名字,以符號號SEGMENTSEGMENT作為段的開始,以作為段的開始,以語句語句ENDSENDS作為段的結(jié)束;作為段的結(jié)束;(2 2)段的開始與結(jié)束都必須)段的開始與結(jié)束都必須有名字,而且名字必須相同;有名字,而且名字必須相同;(3 3)1 1個(gè)源程序由若干個(gè)段組個(gè)源程序由若干個(gè)段組成,整個(gè)源程序以成,整個(gè)源程序以ENDEND作為結(jié)作為結(jié)束。束。微機(jī)原理與接口
6、技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.1 匯編語言的格式匯編語言的格式1、定義一個(gè)段、定義一個(gè)段(1)一個(gè)匯編程序是由多個(gè)段組成的,這些段)一個(gè)匯編程序是由多個(gè)段組成的,這些段被用來存放代碼、數(shù)據(jù)或當(dāng)作棧空間來使用。被用來存放代碼、數(shù)據(jù)或當(dāng)作??臻g來使用。(2)一個(gè)有意義的匯編程序中至少要有一個(gè)段)一個(gè)有意義的匯編程序中至少要有一個(gè)段,這個(gè)段用來存放代碼。,這個(gè)段用來存放代碼。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.1 匯編語言的格式匯編語言的格式2、程序結(jié)束標(biāo)記、程序結(jié)束標(biāo)記(1 1)End End 是一個(gè)匯編程序的結(jié)束標(biāo)記,編譯器是一個(gè)匯編程序的結(jié)束標(biāo)記,編
7、譯器在編譯匯編程序的過程中,如果碰到了偽指令在編譯匯編程序的過程中,如果碰到了偽指令 endend,就結(jié)束對源程序的編譯。,就結(jié)束對源程序的編譯。(2 2)如果程序?qū)懲炅?,要在結(jié)尾處加上偽指令)如果程序?qū)懲炅?,要在結(jié)尾處加上偽指令end end 。否則,編譯器在編譯程序時(shí),無法知道。否則,編譯器在編譯程序時(shí),無法知道程序在何處結(jié)束。程序在何處結(jié)束。(3 3)注意:不要搞混了)注意:不要搞混了endend和和endsends。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.1 匯編語言的格式匯編語言的格式3 3、寄存器與段的關(guān)聯(lián)假設(shè)、寄存器與段的關(guān)聯(lián)假設(shè)(1 1)assumeass
8、ume:含義為:含義為“假設(shè)假設(shè)”。(2 2)它假設(shè)某一段寄存器和程序中的某)它假設(shè)某一段寄存器和程序中的某一個(gè)用一個(gè)用 segment segment ends ends 定義的段相關(guān)定義的段相關(guān)聯(lián)。聯(lián)。(3 3)通過)通過assumeassume說明這種關(guān)聯(lián),在需要說明這種關(guān)聯(lián),在需要的情況下的情況下 ,編譯程序可以將段寄存器和,編譯程序可以將段寄存器和某一個(gè)具體的段相聯(lián)系。某一個(gè)具體的段相聯(lián)系。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.2 語句行的構(gòu)成語句行的構(gòu)成;(AX)=123H(AX)=123H;(BX)=456H(BX)=456H;(AX)=(AX)+(BX)
9、(AX)=(AX)+(BX);(AX)=(AX)+(AX)(AX)=(AX)+(AX)語句行語句行微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.2 語句行的構(gòu)成語句行的構(gòu)成u匯編語言的語句有兩種:匯編語言的語句有兩種:n指令性語句指令性語句由由80868086指令助記符構(gòu)成的語句指令助記符構(gòu)成的語句n指示性語句指示性語句由偽指令構(gòu)成的語句由偽指令構(gòu)成的語句u指令性語句的格式為:指令性語句的格式為:u 標(biāo)號標(biāo)號: : 指令助記符指令助記符 目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù) ; ;注釋注釋u 指示性語句的格式為:指示性語句的格式為:u 名字名字 偽指令偽指令 操作數(shù)操作數(shù)1
10、,1,操作數(shù)操作數(shù)2,2, ,操作數(shù)操作數(shù)n n ; ;注釋注釋u注:各部分之間至少要用一個(gè)空格作為分隔符。注:各部分之間至少要用一個(gè)空格作為分隔符。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.2 語句行的構(gòu)成語句行的構(gòu)成指令性語句指令性語句由由CPUCPU執(zhí)行,每一條指令性語句都有一執(zhí)行,每一條指令性語句都有一條機(jī)器碼指令與其對應(yīng);條機(jī)器碼指令與其對應(yīng);指示性語句指示性語句由匯編程序執(zhí)行。它指出匯編程序應(yīng)如由匯編程序執(zhí)行。它指出匯編程序應(yīng)如何對源程序進(jìn)行匯編,如何定義變量、分配存儲(chǔ)單何對源程序進(jìn)行匯編,如何定義變量、分配存儲(chǔ)單元以及指示程序開始和結(jié)束等。指示性語句無機(jī)器元以
11、及指示程序開始和結(jié)束等。指示性語句無機(jī)器碼指令與其相對應(yīng)。碼指令與其相對應(yīng)。 指令性語句匯編時(shí)生成機(jī)器碼;指令性語句匯編時(shí)生成機(jī)器碼; 指示性語句匯編時(shí)不生成機(jī)器碼。指示性語句匯編時(shí)不生成機(jī)器碼。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院u標(biāo)號標(biāo)號指令的符號地址,用來代表指令在存儲(chǔ)器中的地址。指令的符號地址,用來代表指令在存儲(chǔ)器中的地址。只能出現(xiàn)在指令性語句中,標(biāo)號后應(yīng)加上冒號。只能出現(xiàn)在指令性語句中,標(biāo)號后應(yīng)加上冒號。u名字名字段、過程、變量的名字,用來代表它們在存儲(chǔ)器中段、過程、變量的名字,用來代表它們在存儲(chǔ)器中的地址。的地址。只能出現(xiàn)在指示性語句中,名字后不加冒號。只能出
12、現(xiàn)在指示性語句中,名字后不加冒號。u指令助記符指令助記符80868086助記符、偽指令助記符、偽指令u操作數(shù)操作數(shù)即指令的操作對象即指令的操作對象n對指令性語句對指令性語句0 0,1 1,2 2個(gè)個(gè)n對指示性語句對指示性語句根據(jù)需要而定根據(jù)需要而定n操作數(shù)之間以逗號分隔操作數(shù)之間以逗號分隔n操作數(shù)可以是:寄存器、存儲(chǔ)單元、常數(shù)或表達(dá)式操作數(shù)可以是:寄存器、存儲(chǔ)單元、常數(shù)或表達(dá)式 例如:例如:AXAX,DI+BX+10DI+BX+10,200200,1616* *8+TABLE8+TABLE,等等,等等4.2 語句行的構(gòu)成語句行的構(gòu)成微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院u注
13、釋注釋以分號開頭,可放在指令后,也可單獨(dú)以分號開頭,可放在指令后,也可單獨(dú)一行。一行。u注意注釋的寫法。要寫指令(段)在程序中的作注意注釋的寫法。要寫指令(段)在程序中的作用,而不要寫指令的操作。用,而不要寫指令的操作。u 例如:以下為同一條指令寫的注釋例如:以下為同一條指令寫的注釋u 1 1)MOV CX,100 ;MOV CX,100 ;傳送傳送100100到到CXCXu 2 2)MOV CX,100 ;MOV CX,100 ;循環(huán)計(jì)數(shù)器置初值循環(huán)計(jì)數(shù)器置初值u 顯然,第二種寫法要比第一種寫法要好。顯然,第二種寫法要比第一種寫法要好。 4.2 語句行的構(gòu)成語句行的構(gòu)成微機(jī)原理與接口技術(shù)微機(jī)
14、原理與接口技術(shù)物理與電子電氣工程學(xué)院4.2 語句行的構(gòu)成語句行的構(gòu)成數(shù)據(jù)項(xiàng)與表達(dá)式數(shù)據(jù)項(xiàng)與表達(dá)式1.1.常量常量二進(jìn)制數(shù)二進(jìn)制數(shù), ,以以B B結(jié)尾。如結(jié)尾。如01001101B01001101B。十進(jìn)制數(shù)十進(jìn)制數(shù), ,如如8585。十六進(jìn)制數(shù)十六進(jìn)制數(shù), ,以以H H結(jié)尾。第結(jié)尾。第1 1個(gè)數(shù)字為個(gè)數(shù)字為A-FA-F時(shí),時(shí),前面應(yīng)加前面應(yīng)加0 0,如,如0 0F160HF160H。字符串:用引號括起來的字符串:用引號括起來的1 1個(gè)或多個(gè)字符。如個(gè)或多個(gè)字符。如ERROR!ERROR!, , a a, ,匯編時(shí)被翻譯成對應(yīng)的匯編時(shí)被翻譯成對應(yīng)的ASCIIASCII碼碼4 45H,52H,52
15、H,4FH,52H,21H5H,52H,52H,4FH,52H,21H和和61H61H。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院有三個(gè)屬性:有三個(gè)屬性: 段地址:即標(biāo)號所在段的段地址;段地址:即標(biāo)號所在段的段地址; 偏移量:標(biāo)號所代表存儲(chǔ)單元的段內(nèi)偏移地址;偏移量:標(biāo)號所代表存儲(chǔ)單元的段內(nèi)偏移地址; 類類 型:型:NEARNEAR或或FARFAR: NEARNEAR表示標(biāo)號所在語句與轉(zhuǎn)移指令表示標(biāo)號所在語句與轉(zhuǎn)移指令/ /調(diào)用指令調(diào)用指令 在同一碼段內(nèi)在同一碼段內(nèi), ,跳轉(zhuǎn)時(shí)只需改變跳轉(zhuǎn)時(shí)只需改變IPIP即可。即可。 FARFAR標(biāo)號所在語句與轉(zhuǎn)移指令標(biāo)號所在語句與轉(zhuǎn)移指令/
16、 /調(diào)用指令不在調(diào)用指令不在 同一代碼段內(nèi)。同一代碼段內(nèi)。 若沒有對類型進(jìn)行說明若沒有對類型進(jìn)行說明, ,默認(rèn)為默認(rèn)為NEARNEAR。標(biāo)號通常作為標(biāo)號通常作為轉(zhuǎn)移指令轉(zhuǎn)移指令或或CALLCALL指令指令的轉(zhuǎn)移地址。的轉(zhuǎn)移地址。2.2.標(biāo)號標(biāo)號指令所在內(nèi)存單元的符號地址指令所在內(nèi)存單元的符號地址4.2 語句行的構(gòu)成語句行的構(gòu)成微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.2 語句行的構(gòu)成語句行的構(gòu)成u標(biāo)號和變量名的使用規(guī)則標(biāo)號和變量名的使用規(guī)則n組成:組成:A-Z(A-Z(不分大小寫不分大小寫), 0-9, ), 0-9, ? . _ $ . _ $n不能以數(shù)字開頭,句號不能以
17、數(shù)字開頭,句號(.)(.)只能作為首字符只能作為首字符n長度小于長度小于3131個(gè)字符個(gè)字符n不能與保留字不能與保留字( (指令助記符、偽指令、預(yù)定義指令助記符、偽指令、預(yù)定義符號等符號等) )重名重名n不能重復(fù)定義不能重復(fù)定義u例如:例如:u 正確的:正確的:LP1, AGAIN, NEXT, _GO, OK_1LP1, AGAIN, NEXT, _GO, OK_1u 錯(cuò)誤的:錯(cuò)誤的:4M, LOOP, AAA, #HELP, +ONE4M, LOOP, AAA, #HELP, +ONE微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.4.表達(dá)式表達(dá)式u表達(dá)式是常數(shù)、寄存器、標(biāo)號
18、、變量與運(yùn)算符的表達(dá)式是常數(shù)、寄存器、標(biāo)號、變量與運(yùn)算符的組合。組合。u有數(shù)字表達(dá)式和地址表達(dá)式兩種。有數(shù)字表達(dá)式和地址表達(dá)式兩種。u匯編時(shí)按優(yōu)先規(guī)則對表達(dá)式進(jìn)行計(jì)算,計(jì)算出具匯編時(shí)按優(yōu)先規(guī)則對表達(dá)式進(jìn)行計(jì)算,計(jì)算出具體的數(shù)值或地址。運(yùn)行時(shí)不能改變。體的數(shù)值或地址。運(yùn)行時(shí)不能改變。u表達(dá)式中的運(yùn)算符有表達(dá)式中的運(yùn)算符有5 5類:算術(shù)、邏輯、關(guān)系、分類:算術(shù)、邏輯、關(guān)系、分析、合成析、合成4.2 語句行的構(gòu)成語句行的構(gòu)成微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院用于數(shù)字表達(dá)式用于數(shù)字表達(dá)式,例:例: MOV AX,4*1024匯編后的形式為匯編后的形式為: MOV AX,4096
19、 用于地址表達(dá)式用于地址表達(dá)式,例例: LEA SI,TAB+3若若TAB的偏移地址為的偏移地址為1000H,則匯編后的形式為:,則匯編后的形式為: LEA SI,1003H 1)算術(shù)運(yùn)算符算術(shù)運(yùn)算符 +、-、*、/,MOD4.2 語句行的構(gòu)成語句行的構(gòu)成微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院邏輯運(yùn)算符只能用于數(shù)字表達(dá)式中。邏輯運(yùn)算符只能用于數(shù)字表達(dá)式中。 例:例:MOVMOVCL,36H AND 0FHCL,36H AND 0FH 經(jīng)匯編后:經(jīng)匯編后:MOV CL,06HMOV CL,06H注意,不要把邏輯運(yùn)算符與邏輯運(yùn)算指令混淆:注意,不要把邏輯運(yùn)算符與邏輯運(yùn)算指令混淆
20、: 例:例:AND AX, AND AX, 3FC0H AND 0FF00H3FC0H AND 0FF00H 匯編后源操作數(shù)被翻譯為:匯編后源操作數(shù)被翻譯為:3F00H3F00H,所以上述指令與,所以上述指令與AND AND AX, 3F00HAX, 3F00H等價(jià)。等價(jià)。2)2)邏輯運(yùn)算符邏輯運(yùn)算符 AND AND、OROR、XORXOR、NOTNOT4.2 語句行的構(gòu)成語句行的構(gòu)成微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院關(guān)系運(yùn)算的結(jié)果是一個(gè)邏輯值:真或假關(guān)系運(yùn)算的結(jié)果是一個(gè)邏輯值:真或假 關(guān)系為真關(guān)系為真, ,結(jié)果為全結(jié)果為全1 1 關(guān)系為假關(guān)系為假, ,結(jié)果為全結(jié)果為全
21、0 0例:例:MOV BX,PORT GT 300HMOV BX,PORT GT 300H 若若PORTPORT的值大于的值大于300H,300H,則匯編后為:則匯編后為: MOV BX,0FFFFHMOV BX,0FFFFH 否則匯編后為:否則匯編后為: MOV BX,0MOV BX,03)3)關(guān)系運(yùn)算符關(guān)系運(yùn)算符EQEQ、NENE、LTLT、GTGT、LELE、GEGE4.2 語句行的構(gòu)成語句行的構(gòu)成微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3 指示性語句(偽指令)指示性語句(偽指令)u符號定義語句符號定義語句u數(shù)據(jù)定義語句數(shù)據(jù)定義語句u段定義語句段定義語句u過程定義語
22、句過程定義語句u宏定義語句宏定義語句u結(jié)束語句結(jié)束語句微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3 指示性語句(偽指令)指示性語句(偽指令)1 1、符號定義偽指令、符號定義偽指令u 把一個(gè)表達(dá)式用一個(gè)符號表示,以后凡出現(xiàn)該把一個(gè)表達(dá)式用一個(gè)符號表示,以后凡出現(xiàn)該表達(dá)式的地方都可用這個(gè)符號表示。類似于表達(dá)式的地方都可用這個(gè)符號表示。類似于C C語言語言中的中的#define#define。u符號定義偽指令有兩種:符號定義偽指令有兩種:EQUEQU,= = 用用EQUEQU定義的符號未清除前定義的符號未清除前, ,不能重新定義。清不能重新定義。清除除EQUEQU定義可用定義可用
23、PURGE偽指令。偽指令。 用用”= =”定義的符號可在任何時(shí)候進(jìn)行重定義。定義的符號可在任何時(shí)候進(jìn)行重定義。 二者均不占用存儲(chǔ)空間二者均不占用存儲(chǔ)空間, ,僅是給符號賦值僅是給符號賦值 微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3 指示性語句(偽指令)指示性語句(偽指令)u例:例:FIVE EQU 5u COUNT EQU CXu TEN EQU 10u DIST = BYTE PTRSI+BPu GOTO = JMP u u MOV AX, TENu MOV CX, COUNTu ADD DIST, FIVEu DIST = WORD PTRSI+BP+1u ADD D
24、IST, AXu GOTO LABEL 定義定義引用引用微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3 指示性語句(偽指令)指示性語句(偽指令)2 2、 數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令u 用于定義變量,即內(nèi)存單元或數(shù)據(jù)區(qū)。數(shù)據(jù)定用于定義變量,即內(nèi)存單元或數(shù)據(jù)區(qū)。數(shù)據(jù)定義偽指令的格式為:義偽指令的格式為:u變量名變量名 數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令 操作數(shù),操作數(shù),操作數(shù),操作數(shù),u常用的數(shù)據(jù)定義偽指令有如下幾種:常用的數(shù)據(jù)定義偽指令有如下幾種:u DB DB 定義字節(jié)定義字節(jié)u DW DW 定義字定義字u DD DD 定義雙字定義雙字u操作數(shù)可以是常數(shù)、變量或表達(dá)式操作數(shù)可以是
25、常數(shù)、變量或表達(dá)式微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3 指示性語句(偽指令)指示性語句(偽指令)例:例:DATA_B DB 10,5,10HDATA_W DW 100H,-4DATA_D DD 0FFFBH匯編后的內(nèi)存分配情況匯編后的內(nèi)存分配情況如右圖所示。如右圖所示。05H10H00H01HFCHFFHFBHFFH00H00H0AH微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3 指示性語句(偽指令)指示性語句(偽指令)u例:操作數(shù)可以是字符串,例如例:操作數(shù)可以是字符串,例如uSTR DBHELLOu匯編后的情況如圖:匯編后的情況如圖:STRHE
26、LLO48H45H4CH4CH4FH微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3 指示性語句(偽指令)指示性語句(偽指令)u操作數(shù)操作數(shù)? ?用來保留存儲(chǔ)空間用來保留存儲(chǔ)空間, ,但不存入數(shù)據(jù)但不存入數(shù)據(jù). .u例:例:ABC DB 0,1,2,3,4,OK,$u RSV DW ?,?,?,?,?,?,?,?u復(fù)制操作符復(fù)制操作符DUP:DUP:u重復(fù)的數(shù)據(jù)可以使用復(fù)制操作符重復(fù)的數(shù)據(jù)可以使用復(fù)制操作符DUPDUP, ,如上面如上面RSVRSV亦可寫亦可寫成成: :u RSV DW 8 DUP(?)微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3 指示性語句
27、(偽指令)指示性語句(偽指令)3 3、 段定義偽指令段定義偽指令u匯編語言程序是按段來組織程序和數(shù)據(jù)的。匯編語言程序是按段來組織程序和數(shù)據(jù)的。u 和存儲(chǔ)器的物理段相對應(yīng),匯編語言程序中的段和存儲(chǔ)器的物理段相對應(yīng),匯編語言程序中的段稱為邏輯段。匯編連接后被映射到物理段中。稱為邏輯段。匯編連接后被映射到物理段中。u三類段:代碼三類段:代碼( (程序程序) )、數(shù)據(jù)、堆棧、數(shù)據(jù)、堆棧u段定義偽指令:段定義偽指令:SEGMENTSEGMENT、ENDSENDS、ASSUMEASSUME、ORGORGu定義一個(gè)段的基本格式:定義一個(gè)段的基本格式:u 段名段名 SEGMENT SEGMENT 定位類型定位
28、類型組合方式組合方式類別類別 u u 段名段名 ENDSENDS微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3 指示性語句(偽指令)指示性語句(偽指令)u 這兩個(gè)偽指令總是成對出現(xiàn),二者前面的段名這兩個(gè)偽指令總是成對出現(xiàn),二者前面的段名應(yīng)一致。應(yīng)一致。SEGMENT說明了一個(gè)段的開始,說明了一個(gè)段的開始,ENDSENDS說明了一個(gè)段的結(jié)束。說明了一個(gè)段的結(jié)束。u 對數(shù)據(jù)段和堆棧段,段中的語句一般是變量定對數(shù)據(jù)段和堆棧段,段中的語句一般是變量定義。對代碼段則是指令語句。義。對代碼段則是指令語句。u 如:如: data SEGMENTu u data ENDS 和微機(jī)原理與接口技
29、術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3 指示性語句(偽指令)指示性語句(偽指令)ASSUME偽指令偽指令u在代碼段中,還必須明確段和段寄存器的關(guān)系,在代碼段中,還必須明確段和段寄存器的關(guān)系,這由這由ASSUME語句來指定。如語句來指定。如u ASSUME CS:code, DS:data, ES:datau 語句中的語句中的code和和data為段名。為段名。u 這個(gè)語句說明:這個(gè)語句說明:u 1. CS將指向名字為將指向名字為code的代碼段的代碼段u 2. DS和和ES將指向名字為將指向名字為data的數(shù)據(jù)段的數(shù)據(jù)段微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院u但要
30、注意但要注意, ,ASSUME偽指令只是告知匯編程序偽指令只是告知匯編程序有關(guān)段寄存器與段的關(guān)系有關(guān)段寄存器與段的關(guān)系, ,并沒有給段寄存器賦并沒有給段寄存器賦予實(shí)際的初值。故下面的語句予實(shí)際的初值。故下面的語句u MOV AX,DATAu MOV DS,AXu MOV ES,AXu將段基址裝入段寄存器將段基址裝入段寄存器。如果程序中用到堆棧。如果程序中用到堆棧段,則段,則SSSS也需裝入實(shí)際的初值。也需裝入實(shí)際的初值。u代碼段基地址不需要程序員裝入代碼段基地址不需要程序員裝入CS寄存器,寄存器,而由而由OS負(fù)責(zé)裝入。負(fù)責(zé)裝入。4.3 指示性語句(偽指令)指示性語句(偽指令)微機(jī)原理與接口技術(shù)
31、微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.3 指示性語句(偽指令)指示性語句(偽指令)邏輯段從一個(gè)節(jié)邏輯段從一個(gè)節(jié) ( (1616個(gè)字節(jié)個(gè)字節(jié)) ) 的邊界開始。的邊界開始。即即段的起始地址應(yīng)能被段的起始地址應(yīng)能被1616整除整除, , 或者說段或者說段起始物理地址應(yīng)為起始物理地址應(yīng)為0 0H H。默認(rèn)類型默認(rèn)類型邏輯段從字節(jié)邊界開始,即段可以從任何地址開始。邏輯段從字節(jié)邊界開始,即段可以從任何地址開始。邏輯段從字邊界開始。即段的起始地址必須是偶數(shù)。邏輯段從字邊界開始。即段的起始地址必須是偶數(shù)。邏輯段從頁邊界開始。邏輯段從頁邊界開始。256256字節(jié)稱為一頁,故段的起始字節(jié)稱為一頁,故段的起
32、始物理地址應(yīng)為物理地址應(yīng)為0000H H。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院 說明不同模塊中同名段的組合方式。說明不同模塊中同名段的組合方式。 PUBLIC : 所有此類型的同名段組合成一個(gè)邏輯所有此類型的同名段組合成一個(gè)邏輯段,公用一個(gè)段地址,運(yùn)行時(shí)裝入同一個(gè)物理段段,公用一個(gè)段地址,運(yùn)行時(shí)裝入同一個(gè)物理段中。中。 COMMON : 所有此類型的同名段具有相同的起所有此類型的同名段具有相同的起始地址始地址( (覆蓋覆蓋) ),共享相同的存儲(chǔ)區(qū)域。,共享相同的存儲(chǔ)區(qū)域。 AT : 按絕對地址定位,段地址就是按絕對地址定位,段地址就是表達(dá)式的值。表達(dá)式的值。 STACK
33、: 專用于說明堆棧段,組合方式同專用于說明堆棧段,組合方式同PUBLICPUBLIC4.3 指示性語句(偽指令)指示性語句(偽指令)微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院u用單引號括起來的字符串。所有同類別的段被安排在連用單引號括起來的字符串。所有同類別的段被安排在連續(xù)的存儲(chǔ)區(qū)域中。續(xù)的存儲(chǔ)區(qū)域中。u如:在模塊如:在模塊1 1中有段定義:中有段定義:u seg1 SEGMENT PARA STACK stacku u seg1 ENDSu 在模塊在模塊2 2中有段定義:中有段定義:u seg2 SEGMENT PARA STACK stacku u seg2 ENDSu則連
34、接時(shí)這兩個(gè)段被安排在一起。則連接時(shí)這兩個(gè)段被安排在一起。4.3 指示性語句(偽指令)指示性語句(偽指令)微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院uORG規(guī)定了段內(nèi)的指令或數(shù)據(jù)存放的開始地規(guī)定了段內(nèi)的指令或數(shù)據(jù)存放的開始地址址( (偏移地址的初值偏移地址的初值) ),其格式為:,其格式為:u ORG u表達(dá)式的值即為開始地址,從此地址起連續(xù)存表達(dá)式的值即為開始地址,從此地址起連續(xù)存放程序或數(shù)據(jù)。放程序或數(shù)據(jù)。u例:例: ABC SEGMENTu ORG 100Hu begin: u u ABC ENDS 指令從指令從100H100H開始存放開始存放4.3 指示性語句(偽指令)指
35、示性語句(偽指令)微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院 4 4、過程定義偽指令、過程定義偽指令PROCPROC、ENDPENDPu 過程就是子程序。一個(gè)過程可以被其它程序所調(diào)用過程就是子程序。一個(gè)過程可以被其它程序所調(diào)用( (用用CALLCALL指令指令) ),過程的最后一條指令一般是返回指令,過程的最后一條指令一般是返回指令(RET)(RET)。u 過程定義偽指令的格式為過程定義偽指令的格式為u PROC 類型類型 u u u RETu ENDPu 注意:注意:PROC和和ENDP必須成對出現(xiàn)。必須成對出現(xiàn)。4.3 指示性語句(偽指令)指示性語句(偽指令)微機(jī)原理與接口
36、技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院u 過程的類型有兩種:過程的類型有兩種:u NEARNEAR( (默認(rèn)類型默認(rèn)類型) )表示段內(nèi)調(diào)用表示段內(nèi)調(diào)用u FARFAR表示段間調(diào)用表示段間調(diào)用u調(diào)用一個(gè)過程的格式為:調(diào)用一個(gè)過程的格式為:uCALL CALL 4.3 指示性語句(偽指令)指示性語句(偽指令)微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院5 5、 匯編結(jié)束偽指令匯編結(jié)束偽指令ENDEND4.3 指示性語句(偽指令)指示性語句(偽指令)微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5 匯編語言程序設(shè)計(jì)及舉例匯編語言程序設(shè)計(jì)及舉例 4.5.1 算術(shù)運(yùn)算
37、程序設(shè)計(jì)算術(shù)運(yùn)算程序設(shè)計(jì)4.5.2 分支程序設(shè)計(jì)分支程序設(shè)計(jì) 4.5.3 循環(huán)程序設(shè)計(jì)循環(huán)程序設(shè)計(jì)4.5.4 字符串處理程序設(shè)計(jì)字符串處理程序設(shè)計(jì)4.5.5 碼轉(zhuǎn)換程序設(shè)計(jì)碼轉(zhuǎn)換程序設(shè)計(jì)4.5.6 有關(guān)有關(guān)I/O的的DOS功能調(diào)用功能調(diào)用4.5.7 宏匯編與條件匯編宏匯編與條件匯編微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院1、 顯示字符源程序顯示字符源程序5050行語句行語句微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5 匯編語言程序設(shè)計(jì)及舉例匯編語言程序設(shè)計(jì)及舉例根據(jù)實(shí)際問題抽象出數(shù)學(xué)模型根據(jù)實(shí)際問題抽象出數(shù)學(xué)模型, ,確定算法確定算法畫出程序框圖畫出程序框
38、圖( (流程圖流程圖) ) 分配內(nèi)存工作單元和寄存器分配內(nèi)存工作單元和寄存器根據(jù)框圖編寫源程序,存成根據(jù)框圖編寫源程序,存成.ASM.ASM文件文件對源程序匯編,生成對源程序匯編,生成.OBJ.OBJ目標(biāo)文件目標(biāo)文件把把.OBJ.OBJ文件連接成文件連接成.EXE.EXE執(zhí)行文件執(zhí)行文件運(yùn)行、調(diào)試運(yùn)行、調(diào)試 匯編語言程序設(shè)計(jì)的步驟:匯編語言程序設(shè)計(jì)的步驟:微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5 匯編語言程序設(shè)計(jì)及舉例匯編語言程序設(shè)計(jì)及舉例源程序從寫出到執(zhí)行的過程:源程序從寫出到執(zhí)行的過程:Mov ax,0123hMov bx,0456hAdd ax,bx源程序文件源程
39、序文件B82301BB560401DB可執(zhí)行文件可執(zhí)行文件1、編寫匯編、編寫匯編程序程序2、對源程序進(jìn)行、對源程序進(jìn)行編譯連接編譯連接3、執(zhí)行可執(zhí)行文、執(zhí)行可執(zhí)行文件中的程序件中的程序微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5 匯編語言程序設(shè)計(jì)及舉例匯編語言程序設(shè)計(jì)及舉例(1)(1)用方框表示工作框,框中用簡明語言標(biāo)明要完用方框表示工作框,框中用簡明語言標(biāo)明要完成的功能成的功能(2) (2) 用菱形框表示判斷框用菱形框表示判斷框 框中標(biāo)明比較、判斷和條件框中標(biāo)明比較、判斷和條件如何繪制程序框圖如何繪制程序框圖( (流程圖流程圖) )?YN?微機(jī)原理與接口技術(shù)微機(jī)原理與接口
40、技術(shù)物理與電子電氣工程學(xué)院4.5 匯編語言程序設(shè)計(jì)及舉例匯編語言程序設(shè)計(jì)及舉例(4)(4)各框之間用直線連起來表示程序走向。各框之間用直線連起來表示程序走向??蛑袠?biāo)明子程序名字框中標(biāo)明子程序名字( (入口參數(shù)等入口參數(shù)等) )(3)(3)用用 框表示調(diào)用子程序或過程??虮硎菊{(diào)用子程序或過程。 微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5 匯編語言程序設(shè)計(jì)及舉例匯編語言程序設(shè)計(jì)及舉例源程序的基本結(jié)構(gòu)源程序的基本結(jié)構(gòu):順序順序分支分支循環(huán)循環(huán)處理處理P1P1條件滿足條件滿足?處理處理P2P2標(biāo)號標(biāo)號1:1:標(biāo)號標(biāo)號2:2:條件條件1 1條件條件2 2初始化初始化循環(huán)體循環(huán)體循環(huán)
41、控制循環(huán)控制繼續(xù)循環(huán)?繼續(xù)循環(huán)?YN初始化初始化處理處理1處理處理2微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5 .1 算術(shù)運(yùn)算程序算術(shù)運(yùn)算程序 算術(shù)運(yùn)算程序設(shè)計(jì)是程序設(shè)計(jì)中算術(shù)運(yùn)算程序設(shè)計(jì)是程序設(shè)計(jì)中最簡單的設(shè)計(jì)方法,它是將確定好最簡單的設(shè)計(jì)方法,它是將確定好的算法或邏輯關(guān)系以正確的語句和的算法或邏輯關(guān)系以正確的語句和正確的邏輯關(guān)系有序地編寫出來,正確的邏輯關(guān)系有序地編寫出來,形成程序。形成程序。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5 .1 直線運(yùn)行程序直線運(yùn)行程序例:求兩例:求兩3232位無符號數(shù)的乘積。位無符號數(shù)的乘積。ABDCLBDHBDL
42、ADHADLBCHBCLACHACR1C0、1C2R2R3R4C1C3微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5 .1 直線運(yùn)行程序直線運(yùn)行程序內(nèi)存定義:內(nèi)存定義:DWDWBADCR1R2R3R4BX+00BX+02 BX+04 BX+06 BX+08 BX+0A BX+0CBX+0E被乘數(shù)被乘數(shù)乘數(shù)乘數(shù)積積微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.1 直線運(yùn)行程序直線運(yùn)行程序微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.1 直線運(yùn)行程序直線運(yùn)行程序微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.2 分支程序設(shè)
43、計(jì)分支程序設(shè)計(jì)標(biāo)號標(biāo)號: :條件滿足條件滿足?處理處理N NY YIFIFTHENTHEN結(jié)構(gòu)結(jié)構(gòu)程序結(jié)構(gòu):程序結(jié)構(gòu): 測試測試/ /比較指令比較指令 (TEST/CMP)(TEST/CMP) 條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令 (Jx (Jx 標(biāo)號標(biāo)號) ) 處理體處理體 標(biāo)號標(biāo)號: : 其他指令其他指令 微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院程序結(jié)構(gòu):程序結(jié)構(gòu): TEST/CMP TEST/CMP指令指令 Jx Jx 標(biāo)號標(biāo)號1 1 處理體處理體P1P1 JMP JMP 標(biāo)號標(biāo)號2 2標(biāo)號標(biāo)號1 1: 處理體處理體P2P2標(biāo)號標(biāo)號2 2:其他指令:其他指令 條件滿足條件滿足?處理
44、處理P1P1處理處理P2P2標(biāo)號標(biāo)號1:1:標(biāo)號標(biāo)號2:2:條件條件1 1條件條件2 2IFIFTHENTHENELSEELSE結(jié)構(gòu)結(jié)構(gòu)4.5.2 分支程序設(shè)計(jì)分支程序設(shè)計(jì)微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院標(biāo)號標(biāo)號1:條件條件1成立成立?P1NYCASE結(jié)構(gòu)結(jié)構(gòu)程序結(jié)構(gòu):程序結(jié)構(gòu): TEST/CMP指令(測試條件指令(測試條件1) Jx 標(biāo)號標(biāo)號1 ;不滿足轉(zhuǎn)標(biāo)號不滿足轉(zhuǎn)標(biāo)號1 處理體處理體P1 JMP 標(biāo)號標(biāo)號n+1標(biāo)號標(biāo)號1:TEST/CMP指令(測試條件指令(測試條件2) Jx 標(biāo)號標(biāo)號2 ;不滿足轉(zhuǎn)標(biāo)號不滿足轉(zhuǎn)標(biāo)號2 處理體處理體P2 JMP 標(biāo)號標(biāo)號n+1標(biāo)號
45、標(biāo)號2:TEST/CMP指令(測試條件指令(測試條件3) Jx 標(biāo)號標(biāo)號3 ;不滿足轉(zhuǎn)標(biāo)號不滿足轉(zhuǎn)標(biāo)號3 處理體處理體P3 JMP 標(biāo)號標(biāo)號n+1標(biāo)號標(biāo)號3:TEST/CMP指令(測試條件指令(測試條件4) 標(biāo)號標(biāo)號n+1:(公共出口):(公共出口)條件條件2成立成立?條件條件n成立成立?Pn+1標(biāo)號標(biāo)號2:標(biāo)號標(biāo)號n:標(biāo)號標(biāo)號n+1:P2PnNNYY4.5.2 分支程序設(shè)計(jì)分支程序設(shè)計(jì)微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院 對于程序中多次、有規(guī)律執(zhí)行的部分,我們通常使用循環(huán)對于程序中多次、有規(guī)律執(zhí)行的部分,我們通常使用循環(huán)結(jié)構(gòu)重復(fù)運(yùn)行這些部分,使程序有較高的運(yùn)行效率和可讀
46、性。結(jié)構(gòu)重復(fù)運(yùn)行這些部分,使程序有較高的運(yùn)行效率和可讀性。循環(huán)結(jié)構(gòu)主要由三部分組成,它們是:循環(huán)結(jié)構(gòu)主要由三部分組成,它們是:1. 1. :重復(fù)運(yùn)行的部分,其中還包含了工作部分和循環(huán)控重復(fù)運(yùn)行的部分,其中還包含了工作部分和循環(huán)控制部分。工作部分進(jìn)行相應(yīng)的操作,而循環(huán)控制部分則保證在制部分。工作部分進(jìn)行相應(yīng)的操作,而循環(huán)控制部分則保證在不滿足循環(huán)條件時(shí),跳出循環(huán)。不滿足循環(huán)條件時(shí),跳出循環(huán)。2. 2. :在循環(huán)體中包括了循環(huán)結(jié)束條件運(yùn)算部分。在循環(huán)體中包括了循環(huán)結(jié)束條件運(yùn)算部分。每循環(huán)一次除了工作部分進(jìn)行相應(yīng)的操作外,循環(huán)條件部分還每循環(huán)一次除了工作部分進(jìn)行相應(yīng)的操作外,循環(huán)條件部分還要通過運(yùn)算
47、,得出當(dāng)前循環(huán)的狀態(tài),以便在適當(dāng)?shù)臈l件下結(jié)束要通過運(yùn)算,得出當(dāng)前循環(huán)的狀態(tài),以便在適當(dāng)?shù)臈l件下結(jié)束循環(huán)。循環(huán)。3. 3. :用于設(shè)置開始循環(huán)時(shí),循環(huán)體所處的初始狀態(tài),用于設(shè)置開始循環(huán)時(shí),循環(huán)體所處的初始狀態(tài),如循環(huán)變量初值,循環(huán)體中用到的數(shù)據(jù)和地址指針等。如循環(huán)變量初值,循環(huán)體中用到的數(shù)據(jù)和地址指針等。4.5.3 循環(huán)程序設(shè)計(jì)循環(huán)程序設(shè)計(jì)微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.3 循環(huán)程序設(shè)計(jì)循環(huán)程序設(shè)計(jì) 1 1DODOUNTILUNTIL 結(jié)構(gòu)結(jié)構(gòu) 先執(zhí)行,再判斷條件。工作部分至少執(zhí)行先執(zhí)行,再判斷條件。工作部分至少執(zhí)行一次。一次。初始化初始化循環(huán)體循環(huán)體循環(huán)控制循
48、環(huán)控制繼續(xù)循環(huán)?繼續(xù)循環(huán)?YN微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院 2. DO WHILE 2. DO WHILE 結(jié)構(gòu)結(jié)構(gòu) 先判斷條件,再執(zhí)行。工作部分有可能一先判斷條件,再執(zhí)行。工作部分有可能一次都不執(zhí)行。次都不執(zhí)行。初始化初始化循環(huán)體循環(huán)體循環(huán)控制循環(huán)控制繼續(xù)循環(huán)繼續(xù)循環(huán)?Y YN N4.5.3 循環(huán)程序設(shè)計(jì)循環(huán)程序設(shè)計(jì)微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.3 循環(huán)程序設(shè)計(jì)循環(huán)程序設(shè)計(jì)例:在一串給定個(gè)數(shù)的數(shù)中尋找最大值,放至指定例:在一串給定個(gè)數(shù)的數(shù)中尋找最大值,放至指定的存儲(chǔ)單元。(每個(gè)數(shù)用的存儲(chǔ)單元。(每個(gè)數(shù)用1616位表示)位表示)
49、初始化初始化N NN N取待比較數(shù)取待比較數(shù)比較大小比較大?。恐么髷?shù)置大數(shù)取下一個(gè)數(shù)取下一個(gè)數(shù)CX=0CX=0?Y Y返回返回微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.4 字符串處理程序設(shè)計(jì)字符串處理程序設(shè)計(jì)1 1、確定字符串的長度、確定字符串的長度2 2、加偶校驗(yàn)到、加偶校驗(yàn)到ASCIIASCII字符字符微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.5 碼轉(zhuǎn)換程序設(shè)計(jì)碼轉(zhuǎn)換程序設(shè)計(jì)1 1、十六進(jìn)制到、十六進(jìn)制到ASCIIASCII的轉(zhuǎn)換的轉(zhuǎn)換2 2、從二進(jìn)制到、從二進(jìn)制到ASCIIASCII串的轉(zhuǎn)換串的轉(zhuǎn)換微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與
50、電子電氣工程學(xué)院4.5.6 有關(guān)有關(guān)I/O的的DOS功能調(diào)用功能調(diào)用u系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用由由OSOS提供的一組實(shí)現(xiàn)特殊功能提供的一組實(shí)現(xiàn)特殊功能的子程序供程序員在程序中調(diào)用,以減輕編程工的子程序供程序員在程序中調(diào)用,以減輕編程工作量。作量。u系統(tǒng)功能調(diào)用有兩種,一種稱為系統(tǒng)功能調(diào)用有兩種,一種稱為DOSDOS功能調(diào)用,功能調(diào)用,另一種稱為另一種稱為BIOSBIOS功能調(diào)用。功能調(diào)用。u用戶程序在調(diào)用這些系統(tǒng)服務(wù)程序時(shí),不是用用戶程序在調(diào)用這些系統(tǒng)服務(wù)程序時(shí),不是用CALLCALL命令,而是采用軟中斷指令命令,而是采用軟中斷指令I(lǐng)NT nINT n來實(shí)現(xiàn)。來實(shí)現(xiàn)。u在在DOSDOS系統(tǒng)系統(tǒng)
51、中,功能調(diào)用都是用軟中斷指令中,功能調(diào)用都是用軟中斷指令I(lǐng)NT INT 21H21H來實(shí)現(xiàn)的。來實(shí)現(xiàn)的。微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院4.5.6 有關(guān)有關(guān)I/O的的DOS功能調(diào)用功能調(diào)用微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院關(guān)于數(shù)據(jù)輸入和輸出我們這里只討論鍵盤輸關(guān)于數(shù)據(jù)輸入和輸出我們這里只討論鍵盤輸入和顯示輸出入和顯示輸出, ,調(diào)用系統(tǒng)功能需要提供入口參數(shù)調(diào)用系統(tǒng)功能需要提供入口參數(shù)及所調(diào)用的功能號及所調(diào)用的功能號, ,調(diào)用結(jié)束返回結(jié)果。調(diào)用結(jié)束返回結(jié)果。1. 1. DOSDOS鍵盤功能調(diào)用鍵盤功能調(diào)用(1) (1) 從鍵盤輸入一個(gè)字符從鍵盤輸入
52、一個(gè)字符( (功能號功能號=1)=1) MOV AH,1 MOV AH,1 INT 21H INT 21H AL 4.5.6 有關(guān)有關(guān)I/O的的DOS功能調(diào)用功能調(diào)用微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院u例例: :程序中有時(shí)需要用戶對提示做出應(yīng)答。程序中有時(shí)需要用戶對提示做出應(yīng)答。u GET_KEY: MOV AH,1 GET_KEY: MOV AH,1; ;等待鍵入字符等待鍵入字符u INT 21HINT 21H; ;結(jié)果在結(jié)果在ALAL中中u CMP AL,CMP AL,Y Y ; ;是是Y Y? ?u JZ YES JZ YES ; ;是是, ,轉(zhuǎn)轉(zhuǎn)YESYESu
53、CMP AL, CMP AL,N N ; ;是是N N? ?u JZ NO JZ NO ; ;是是, ,轉(zhuǎn)轉(zhuǎn)NONOu JMP GET_KEY JMP GET_KEY ; ;否則繼續(xù)等待輸入否則繼續(xù)等待輸入u YES: YES: u u NO: NO: 4.5.6 有關(guān)有關(guān)I/O的的DOS功能調(diào)用功能調(diào)用微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院u(2) (2) 輸入字符串輸入字符串( (功能號功能號=0AH)=0AH)u 此功能調(diào)用從鍵盤輸入一串字符并把它存入用此功能調(diào)用從鍵盤輸入一串字符并把它存入用戶指定的緩沖區(qū)中。戶指定的緩沖區(qū)中。u MOV AH, 0AHMOV AH,
54、 0AHu LEA DX, LEA DX, u INT 2INT 21 1H H (預(yù)留的預(yù)留的N1個(gè)字節(jié)的存儲(chǔ)單元個(gè)字節(jié)的存儲(chǔ)單元) 0DHN2N1 N1: N1: 緩沖區(qū)長度緩沖區(qū)長度( (最大鍵入字符數(shù)最大鍵入字符數(shù)) ) N2: N2: 實(shí)際鍵入的字符數(shù)實(shí)際鍵入的字符數(shù)( (不包括回車符不包括回車符) ) 用戶定義的輸入字符串的緩沖區(qū)格式用戶定義的輸入字符串的緩沖區(qū)格式 4.5.6 有關(guān)有關(guān)I/O的的DOS功能調(diào)用功能調(diào)用微機(jī)原理與接口技術(shù)微機(jī)原理與接口技術(shù)物理與電子電氣工程學(xué)院u 若用戶鍵入的字符數(shù)若用戶鍵入的字符數(shù)( (包括回車包括回車) )定義的定義的N1,N1,本功本功能調(diào)用將不再接收新的鍵入,且光標(biāo)不再向右移動(dòng)。能調(diào)用將不再
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園中班老師教學(xué)計(jì)劃范文
- 2025年度商業(yè)地產(chǎn)租賃產(chǎn)權(quán)買賣合同
- 競選學(xué)習(xí)部部長申請書
- 2025年02月甘肅敦煌市市直機(jī)關(guān)及黨群口事業(yè)單位選調(diào)工作人員21人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- odm委托加工合同范本
- 樂昌勞動(dòng)合同范本
- 公司注冊 資金合同范本
- 辦公綠化養(yǎng)護(hù)合同范本
- 代建學(xué)校合同范本
- 免息付款合同范例
- 2025年電力鐵塔市場分析現(xiàn)狀
- GB 12158-2024防止靜電事故通用要求
- 山東省濱州市2024-2025學(xué)年高二上學(xué)期期末地理試題( 含答案)
- 體育老師籃球說課
- 化學(xué)-江蘇省蘇州市2024-2025學(xué)年2025屆高三第一學(xué)期學(xué)業(yè)期末質(zhì)量陽光指標(biāo)調(diào)研卷試題和答案
- 蛋雞生產(chǎn)飼養(yǎng)養(yǎng)殖培訓(xùn)課件
- 運(yùn)用PDCA降低住院患者跌倒-墜床發(fā)生率
- 海底撈員工手冊
- 2024CSCO小細(xì)胞肺癌診療指南解讀
- 立春氣象與生活影響模板
- 中國服裝零售行業(yè)發(fā)展環(huán)境、市場運(yùn)行格局及前景研究報(bào)告-智研咨詢(2025版)
評論
0/150
提交評論