• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

             首頁 > 試題

            匯編語言程序設計2

            更新時間:2025-12-22 16:49:26 閱讀: 評論:0

            2024年2月9日發(作者:翻譯u)

            目 錄

            系統認識 ............................................................................................................ 1

            實驗一 數碼轉換編程及程序調試 ................................................................... 5

            實驗二 運算類編程實驗 ................................................................................. 11

            實驗三 分支程序、循環程序設計實驗 .......................................................... 16

            實驗四 子程序設計實驗 ................................................................................. 22

            實驗五 顯示程序實驗 ................................................................................... 26

            實驗六 串行通訊應用實驗 .............................................................................. 27

            附錄 WMD86 聯機軟件使用說明................................................................... 40

            《匯編語言程序設計》

            系統認識

            一、實驗目的

            掌握TD-PITE微機原理與接口技術教學實驗系統的操作,熟悉Wmd86聯機集成開發調試軟件的操作環境。

            二、實驗設備

            PC微機一臺,TD-PITE實驗裝置一套。

            三、實驗內容

            編寫實驗程序,將00H~0FH共16個數寫入內存3000H開始的連續16個存儲單元中。

            四、實驗步驟

            1. 運行Wmd86軟件,進入Wmd86集成開發環境。

            2. 根據程序設計使用語言的不同,通過在“設置”下拉列表來選擇需要使用的語言,如圖1所示。語言選擇后,下次再啟動軟件,語言環境保持這次的修改不變。在這里,我們選擇匯編語言。

            圖1

            3. 語言選擇后,點擊新建或按Ctrl+N組合鍵來新建一個文檔,如圖2所示。默認文件名為Wmd861。

            圖2

            4. 編寫實驗程序,如圖3所示,并保存,此時系統會提示輸入新的文件名,輸完后點擊保存。

            - 1 --

            《匯編語言程序設計》

            圖3

            程序:

            SSTACK SEGMENT STACK ;定義堆棧段

            DW 32 DUP(?)

            SSTACK ENDS

            CODE SEGMENT

            ASSUME CS:CODE, SS:SSTACK

            START: PUSH DS

            XOR AX, AX

            MOV DS, AX

            MOV SI, 3000H ;建立數據起始地址

            MOV CX, 16 ;循環次數

            AA1: MOV [SI], AL

            INC SI ;地址自加1

            INC AL ;數據自加1

            LOOP AA1

            AA2: JMP AA2

            CODE ENDS

            END START

            5. 點擊,編譯文件,若程序編譯無誤,則輸出如圖4所示的輸出信息,然后再點擊行鏈接,鏈接無誤輸出如圖5所示的輸出信息。

            進圖4

            - 2 --

            《匯編語言程序設計》

            圖5

            6. 連接PC與實驗系統的通訊電纜,打開實驗系統電源。

            7. 編譯、鏈接都正確并且上下位機通訊成功后,就可以下載程序,聯機調試了。可以通過端口列表中的“端口測試”來檢查通訊是否正常。點擊 下載程序。 為編譯、鏈接、下載組合按鈕,通過該按鈕可以將編譯、鏈接、下載一次完成。下載成功后,在輸出區的結果窗中會顯示“加載成功!”,表示程序已正確下載。起始運行語句下會有一條綠色的背景。如圖6所示。

            圖6

            8. 將輸出區切換到調試窗口,使用D0000:3000命令查看內存3000H起始地址的數據,如圖7所示。存儲器在初始狀態時,默認數據為CC。

            圖7

            9. 點擊按鈕運行程序,然后再點擊來停止程序運行,接下來觀察程序運行結果,仍使用命令D0000:3000來觀察數據變化。如圖8所示。

            - 3 --

            《匯編語言程序設計》

            圖8

            10. 也可以通過在語句AA2: JMP AA2處設置斷點,斷點顯示如圖9所示,然后運行程序,當遇到斷點時程序會停下來,然后觀察數據。可以使用E0000:3000來改變該地址單元的數據,如圖10所示,輸入11后,按“空格”鍵,可以接著輸入第二個數,如22,結束輸入按“回車”鍵。

            圖9

            圖10

            操作練習:

            編寫程序,將內存3500H單元開始的8個數據復制到3600H單元開始的數據區中。通過調試驗證程序功能,使用E命令修改3500H單元開始的數據,運行程序后使用D命令查看3600H單元開始的數據。

            - 4 --

            《匯編語言程序設計》

            實驗一 數碼轉換編程及程序調試

            一、實驗目的

            掌握不同進制數及編碼相互轉換的程序設計方法,加深對數碼轉換的理解。

            熟悉程序調試的方法。

            二、實驗設備

            Pc微機一臺,TD-PITE實驗裝置一套。

            三、實驗內容及步驟

            計算機輸入設備輸入的信息一般是由ASSII碼或BCD碼表示的數據或字符,CPU一般均用二進制數進行計算或其它信息處理,處理結果的輸出又必須依照外設的要求變為ASCII碼、BCD碼或七段顯示碼等。因此,在應用軟件中,各類數制的轉換是必不可少的。

            計算機與外設間的數制轉換關系如圖所示2-1所示,數制對應關系如表2-1所示。

            ASCII碼

            ASCII碼

            CRT顯示

            鍵盤

            ASCII碼

            ASCII碼

            光電機

            打印機

            BCD碼

            BCD碼

            撥碼開關

            多段顯示

            二進制

            二進制

            數據開關

            位顯示

            圖2-1 數制轉換關系

            表1 數制對應關系表

            十六進制BCD碼 二進制機器ASCII碼 七段碼

            數 碼

            0 0000 0000 30H 40H 3FH

            1 0001 0001 31H 79H 06H

            2 0010 0010 32H 24H 5BH

            3 0011 0011 33H 30H 4FH

            4 0100 0100 34H 19H 66H

            5 0101 0101 35H 12H 6DH

            6 0110 0110 36H 02H 7DH

            7 0111 0111 37H 78H 07H

            8 1000 1000 38H 00H 7FH

            9 1001 1001 39H 18H 67H

            A 1010 41H 08H 77H

            B 1010 42H 03H 7CH

            C 1011 43H 46H 39H

            D 1100 44H 21H 5EH

            E 1110 45H 06H 79H

            F 1111 46H 0EH 71H

            1. 將ASCII碼表示的十進制數轉換為二進制數

            十進制表示為:

            - 5 --

            《匯編語言程序設計》

            Di代表十進制數0,1,2,…,9;

            上式轉換為:

            由此可歸納十進制數轉換為二進制數的方法:從十進制數的最高位Dn開始作乘10加次位的操作,依次類推,則可求出二進制數的結果。

            參考流程:

            實驗程序:

            PUBLIC SADD

            SSTACK SEGMENT STACK

            DW 64 DUP(?)

            SSTACK ENDS

            DATA SEGMENT

            SADD DB 30H,30H,32H,35H,36H

            DATA ENDS

            CODE SEGMENT

            ASSUME CS:CODE, DS:DATA

            START: MOV AX, DATA

            MOV DS, AX

            MOV AX, OFFSET SADD

            MOV SI, AX

            MOV BX, 000AH

            MOV CX, 0004H

            MOV AH, 00H

            ;十進制數:00256

            - 6 --

            《匯編語言程序設計》

            A1:

            A2:

            CODE

            MOV AL, [SI]

            SUB AL, 30H

            IMUL BX

            MOV DX, [SI+01]

            AND DX, 00FFH

            ADC AX, DX

            SUB AL, 30H

            INC SI

            LOOP A1

            JMP A2

            ENDS

            END START

            實驗步驟:

            (1)繪制程序流程圖,編寫實驗程序,經編譯、鏈接無誤后裝入系統;

            (2)待轉換數據存放于數據段,根據自己要求輸入,默認為30H,30H,32H,35H,36H;

            (3)運行程序,然后停止程序;

            (4)查看AX寄存器,即為轉換結果,應為:0100 ;

            (5)反復試幾組數據,驗證程序的正確性。

            2. 將十進制數的ASCII碼轉換為BCD碼

            從鍵盤輸入五位十進制數的ASCII碼,存放于3500H起始的內存單元中,將其轉換為BCD碼后,再按位分別存入350AH起始的內存單元內。若輸入的不是十進制的ASCII碼,則對應存放結果的單元內容為“FF”。由表1可知,一字節ASCII碼取其低四位即變為BCD碼。

            實驗程序:

            SSTACK SEGMENT STACK

            DW 64 DUP(?)

            SSTACK ENDS

            CODE SEGMENT

            ASSUME CS:CODE

            START: MOV CX, 0005H ;轉換位數

            MOV DI, 3500H ;ASCII碼首地址

            A1: MOV BL, 0FFH ;將錯誤標志存入BL

            MOV AL, [DI]

            CMP AL, 3AH

            JNB A2 ;不低于3AH則轉A2

            SUB AL, 30H

            JB A2 ;低于30H則轉A2

            MOV BL, AL

            A2: MOV AL, BL ;結果或錯誤標志送入AL

            MOV [DI+0AH],AL ;結果存入目標地址

            INC DI

            LOOP A1

            A3: JMP A3

            CODE ENDS

            END START

            - 7 --

            《匯編語言程序設計》

            實驗步驟:

            (1)自己繪制程序流程圖,然后編寫程序,編譯、鏈接無誤后裝入系統;

            (2)在3500H~3504H單元中存放五位十進制數的ASCII碼,即:鍵入E3500后,輸入31,32,33,34,35;

            (3)運行程序,然后停止程序運行;

            (4)鍵入D350A,顯示運行結果,應為:

            0000:350A 01 02 03 04 05 CC …

            (5)反復測試幾組數據,驗證程序功能。

            3. 將十六位二進制數轉換為ASCII碼表示的十進制數

            十六位二進制數的值域為0~65535,最大可轉換為五位十進制數。

            五位十進制數可表示為:

            Di:表示十進制數0~9

            將十六位二進制數轉換為五位ASCII碼表示的十進制數,就是求D1~D4,并將它們轉換為ASCII碼。自行繪制程序流程圖,編寫程序可參考例程。例程中源數存放于3500H、3501H中,轉換結果存放于3510H~3514H單元中。

            實驗程序:

            SSTACK SEGMENT STACK

            DW 64 DUP(?)

            SSTACK ENDS

            CODE SEGMENT

            ASSUME CS:CODE

            START: MOV SI,3500H ;源數據地址

            MOV DX,[SI]

            MOV SI,3515H ;目標數據地址

            A1: DEC SI

            MOV AX,DX

            MOV DX,0000H

            MOV CX,000AH ;除數10

            DIV CX ;得商送AX, 得余數送DX

            XCHG AX,DX

            ADD AL,30H ;得Di得ASCII碼

            MOV [SI],AL ;存入目標地址

            CMP DX,0000H

            JNE A1 ;判斷轉換結束否,未結束則轉A1

            A2: CMP SI,3510H ;與目標地址得首地址比較

            JZ A3 ;等于首地址則轉A3,否則將剩余地址

            DEC SI ;中填30H

            MOV AL,30H

            MOV [SI],AL

            JMP A2

            A3: JMP A3

            CODE ENDS

            END START

            - 8 --

            《匯編語言程序設計》

            實驗步驟

            (1)編寫程序,經編譯、鏈接無誤后,裝入系統;

            (2)在3500H、3501H中存入0C 00;

            (3)運行程序,然后停止運行;

            (4)檢查運行結果,鍵入D3510,結果應為:30 30 30 31 32;

            (5)可反復測試幾組數據,驗證程序的正確性。

            4. 十六進制數轉換為ASCII碼

            由表1中十六進制數與ASCII碼的對應關系可知:將十六進制數0H~09H加上30H后得到相應的ASCII碼,AH~FH加上37H可得到相應的ASCII碼。將四位十六進制數存放于起始地址為3500H的內存單元中,把它們轉換為ASCII碼后存入起始地址為350AH的內存單元中。自行繪制流程圖。

            實驗程序

            SSTACK SEGMENT STACK

            DW 64 DUP(?)

            SSTACK ENDS

            CODE SEGMENT

            ASSUME CS:CODE

            START: MOV CX,0004H

            MOV DI,3500H ;十六進制數源地址

            MOV DX,[DI]

            A1: MOV AX,DX

            AND AX,000FH ;取低4位

            CMP AL,0AH

            JB A2 ;小于0AH則轉A2

            ADD AL,07H ;在A~FH之間,需多加上7H

            A2: ADD AL,30H ;轉換為相應ASCII碼

            MOV [DI+0DH],AL ;結果存入目標地址

            DEC DI

            PUSH CX

            MOV CL,04H

            SHR DX,CL ;將十六進制數右移4位

            POP CX

            LOOP A1

            A3: JMP A3

            CODE ENDS

            END START

            實驗步驟

            (1)編寫程序,經編譯、鏈接無誤后裝入系統;

            (2)在3500H、3501H中存入四位十六進制數203B,即鍵入E3500,然后輸入3B 20;

            (3)先運行程序,然后再停止運行;

            (4)鍵入D350A,顯示結果為:0000:350A 32 30 33 42 CC …;

            (5)反復輸入幾組數據,驗證程序功能。

            5. BCD碼轉換為二進制數

            - 9 --

            《匯編語言程序設計》

            將四個二位十進制數的BCD碼存放于3500H起始的內存單元中,將轉換的二進制數存入3510H起始的內存單元中,自行繪制流程圖并編寫程序。

            SSTACK SEGMENT STACK

            DW 64 DUP(?)

            SSTACK ENDS

            CODE SEGMENT

            ASSUME CS:CODE

            START: XOR AX, AX

            MOV CX, 0004H

            MOV SI, 3500H

            MOV DI, 3510H

            A1: MOV AL, [SI]

            ADD AL, AL

            MOV BL, AL

            ADD AL, AL

            ADD AL, AL

            ADD AL, BL

            INC SI

            ADD AL, [SI]

            MOV [DI], AL

            INC SI

            INC DI

            LOOP A1

            A2: JMP A2

            CODE ENDS

            END START

            實驗步驟

            (1)編寫程序,經編譯、鏈接無誤后裝入系統;

            (2)將四個二位十進制數的BCD碼存入3500H~3507H中,即:先鍵入E3500,然后輸入01 02 03 04 05 06 07 08;

            (3)先運行程序,然后停止運行;

            (4)鍵入D3510顯示轉換結果,應為:0C 22 38 4E;

            (5)反復輸入幾組數據,驗證程序功能。

            - 10 --

            《匯編語言程序設計》

            實驗二 運算類編程實驗

            一、實驗目的

            掌握使用運算類指令編程及調試方法。

            掌握運算類指令對各狀態標志位的影響及其測試方法。

            學習使用軟件監視變量的方法。

            二、實驗設備

            Pc微機一臺,TD-PITE實驗裝置一套。

            三、實驗內容及步驟

            80X86指令系統提供了實現加、減、乘、除運算的基本指令,可對表1所示的數據類型進行算術運算。

            表1 數據類型算術運算表

            1. 二進制雙精度加法運算

            計算X+Y=Z,將結果Z存入某存儲單元。

            本實驗是雙精度(2個16位,即32位)加法運算,編程時可利用累加器AX,先求低16位的和,并將運算結果存入低地址存儲單元,然后求高16位的和,將結果存入高地址存儲單元中。由于低16運算后可能向高位產生進位,因此高16位運算時使用ADC指令,這樣在低16位相加運算有進位時,高位相加會加上CF中的1。

            實驗程序

            SSTACK SEGMENT STACK

            DW 64 DUP(?)

            SSTACK ENDS

            PUBLIC XH, XL, YH, YL

            PUBLIC ZH, ZL

            DATA SEGMENT

            XL DW ? ;X低位

            XH DW ? ;X高位

            YL DW ? ;Y低位

            YH DW ? ;Y高位

            ZL DW ? ;Z低位

            ZH DW ? ;Z高位

            DATA ENDS

            CODE SEGMENT

            ASSUME CS:CODE, DS:DATA

            START: MOV AX, DATA

            MOV DS, AX

            MOV AX, XL

            ADD AX, YL ;X低位加Y低位

            - 11 --

            《匯編語言程序設計》

            CODE

            MOV ZL, AX

            MOV AX, XH

            ADC AX, YH

            MOV ZH, AX

            JMP START

            ENDS

            END START

            ;低位和存到Z的低位

            ;高位帶進位加

            ;存高位結果

            實驗步驟

            (1)編寫程序,經編譯、鏈接無誤后裝入系統;

            (2)程序裝載完成后,點擊?變量區?標簽將觀察窗切換到變量監視窗口;

            (3)點擊,將變量XH,XL,YH,YL,ZH,ZL添加到變量監視窗中,然后修改XH,XL,YH,YL的值,如圖1所示,修改XH為0015,XL為65A0,YH為0021,YL為B79E;

            圖2-1

            (4)在JMP START語句行設置斷點,然后運行程序;

            (5)當程序遇到斷點后停止運行,查看變量監視窗口,計算結果ZH為0037,ZL為1D3E;

            (6)修改XH,XL,YH和YL的值,再次運行程序,觀察實驗結果,反復測試幾組數據,驗證程序的功能。

            2. 十進制的BCD碼減法運算

            計算X-Y=Z,其中X、Y、Z為BCD碼。

            實驗程序

            SSTACK SEGMENT STACK

            DW 64 DUP(?)

            SSTACK ENDS

            PUBLIC X, Y, Z

            DATA SEGMENT

            X DW ?

            Y DW ?

            Z DW ?

            DATA ENDS

            CODE SEGMENT

            - 12 --

            《匯編語言程序設計》

            ASSUME CS:CODE, DS:DATA

            START: MOV AX, DATA

            MOV DS, AX

            MOV AH, 00H

            SAHF

            MOV CX, 0002H

            MOV SI, OFFSET X

            MOV DI, OFFSET Z

            A1: MOV AL, [SI]

            SBB AL, [SI+02H]

            DAS

            PUSHF

            AND AL, 0FH

            POPF

            MOV [DI], AL

            INC DI

            INC SI

            LOOP A1

            JMP START

            CODE ENDS

            END START

            實驗步驟

            (1)輸入程序,編譯、鏈接無誤后裝入系統;

            (2)點擊將變量X,Y,Z添加到變量監視窗中,并為X,Y賦值,假定存入40與12的BCD碼,即X為0400,Y為0102;

            (3)在JMP START語句行設置斷點,然后運行程序;

            (4)程序遇到斷點后停止運行,觀察變量監視窗,Z應為0208;

            (5)重新修改X與Y的值,運行程序,觀察結果,反復測試幾次,驗證程序正確性。

            3. 乘法運算

            實現十進制數的乘法運算,被乘數與乘數均以BCD碼的形式存放在內存中,乘數為1位,被乘數為5位,結果為6位。

            實驗程序

            SSTACK SEGMENT STACK

            DW 64 DUP(?)

            SSTACK ENDS

            DATA SEGMENT

            DATA1 DB 5 DUP(?) ;被乘數

            DATA2 DB ? ;乘數

            RESULT DB 6 DUP(?) ;計算結果

            DATA ENDS

            CODE SEGMENT

            ASSUME CS:CODE,DS:DATA

            START: MOV AX,DATA

            - 13 --

            《匯編語言程序設計》

            MOV DS,AX

            CALL INIT ;初始化目標地址單元為0

            MOV SI,OFFSET DATA2

            MOV BL,[SI]

            AND BL,0FH ;得到乘數

            CMP BL,09H

            JNC ERROR

            MOV SI,OFFSET DATA1

            MOV DI,OFFSET RESULT

            MOV CX,0005H

            A1: MOV AL,[SI+04H]

            AND AL,0FH

            CMP AL,09H

            JNC ERROR

            DEC SI

            MUL BL

            AAM ;乘法調整指令

            ADD AL,[DI+05H]

            AAA

            MOV [DI+05H],AL

            DEC DI

            MOV [DI+05H],AH

            LOOP A1

            A2: JMP A2

            INIT: MOV SI,OFFSET RESULT

            MOV CX,0003H

            MOV AX,0000H

            A3: MOV [SI],AX

            INC SI

            INC SI

            LOOP A3

            RET

            ERROR: MOV SI,OFFSET RESULT ;若輸入數據不符合要求

            MOV CX,0003H ;則RESULT所指向內存單

            MOV AX,0EEEEH ;元全部寫入E

            A4: MOV [SI],AX

            INC SI

            INC SI

            LOOP A4

            JMP A2

            CODE ENDS

            END START

            實驗步驟

            (1)編寫程序,編譯、鏈接無誤后裝入系統;

            (2)查看寄存器窗口獲得CS的值,使用U命令可得到數據段段地址DS,然后通過E命令為被乘數及乘數賦值,如被乘數:01 02 03 04 05,乘數:01,方法同實驗內容1;

            (3)運行程序,然后再停止運行;

            (4)通過D命令查看計算結果,應為:00 01 02 03 04 05;當在為被乘數和乘數賦值時,如果一個數的低4位大于9,則查看計算結果將全部顯示為E;

            - 14 --

            《匯編語言程序設計》

            (5)反復測試幾組數據,驗證程序的正確性。

            - 15 --

            《匯編語言程序設計》

            實驗三 分支程序、循環程序設計實驗

            一、實驗目的

            1.掌握分支程序的結構。

            2.掌握分支程序的設計、調試方法。

            3.加深對循環結構的理解。

            4.掌握循環結構程序設計的方法以及調試方法。

            二、實驗設備

            PC機一臺,TD-PITE實驗裝置一套。

            三、實驗內容:

            設計一數據塊間的搬移程序。設計思想:程序要求把內存中一數據區(稱為源數據塊)傳送到另一存儲區(稱為目的數據塊)。源數據塊和目的數據塊在存儲中可能有三種情況,如圖1所示。

            圖3-1 源數據塊與目的數據塊在存儲中的位置情況

            對于兩個數據塊分離的情況,如圖3-1(a),數據的傳送從數據塊的首地址開始,或從數據塊的末地址開始均可。但是對于有重疊的情況,則要加以分析,否則重疊部分會因“搬移”而遭到破壞,可有如下結論:

            當源數據塊首地址<目的塊首地址時,從數據塊末地址開始傳送數據,如圖3-1(b)所示。

            當源數據塊首地址>目的塊首地址時,從數據塊首地址開始傳送數據,如圖3-1(c)所示。

            參考流程:如圖3-2所示。

            - 16 --

            《匯編語言程序設計》

            圖3-2 程序流程圖

            實驗程序

            SSTACK SEGMENT STACK

            DW 64 DUP(?)

            SSTACK ENDS

            CODE SEGMENT

            ASSUME CS:CODE

            START: MOV CX, 0010H

            MOV SI, 3100H

            MOV DI, 3200H

            CMP SI, DI

            JA A2

            ADD SI, CX

            ADD DI, CX

            DEC SI

            DEC DI

            A1: MOV AL, [SI]

            MOV [DI], AL

            DEC SI

            DEC DI

            - 17 --

            《匯編語言程序設計》

            A2:

            A3:

            CODE

            DEC CX

            JNE A1

            JMP A3

            MOV AL, [SI]

            MOV [DI], AL

            INC SI

            INC DI

            DEC CX

            JNE A2

            JMP A3

            ENDS

            END START

            實驗步驟

            1. 按流程圖編寫實驗程序,經編譯、鏈接無誤后裝入系統;

            2. 用E命令在以SI為起始地址的單元中填入16個數;

            3. 運行程序,然后再停止運行;

            4. 通過D命令查看DI為起始地址的單元中的數據是否與SI單元中數據相同;

            5. 通過改變SI、DI的值,觀察在三種不同的數據塊情況下程序的運行情況,并驗證程序的功能。

            2. 計算S=1+2×3+3×4+4×5+…+N(N+1),直到N(N+1)項大于200為止。

            編寫實驗程序,計算上式的結果,參考流程圖如圖3-3所示。

            圖3-3 程序流程圖

            實驗程序

            SSTACK SEGMENT STACK

            DW 64 DUP(?)

            - 18 --

            《匯編語言程序設計》

            SSTACK ENDS

            CODE SEGMENT

            ASSUME CS:CODE

            START: MOV DX,0001H

            MOV BL,02H

            A1: MOV AL,BL

            INC BL

            MUL BL

            ADD DX,AX

            CMP AX,00C8H

            JNA A1

            A2: JMP A2

            CODE ENDS

            END START

            ;結果存于DX中

            ;判斷N(N+1)與200的大小

            實驗步驟

            (1)編寫實驗程序,編譯、鏈接無誤后裝入系統;

            (2)運行程序,然后再停止程序運行;

            (3)運算結果存儲在寄存器DX中,查看結果是否正確;

            (4)可以改變N(N+1)的條件來驗證程序功能是否正確,但要注意,結果若大于FFFFH將產生數據溢出。

            2. 求某數據區內負數的個數

            設數據區的第一單元存放區內單元數據的個數,從第二單元開始存放數據,在區內最后一個單元存放結果。為統計數據區內負數的個數,需要逐個判斷區內的每一個數據,然后將所有數據中凡是符號位為1的數據的個數累加起來,即得到區內所包含負數的個數。

            實驗程序流程圖如圖3-4所示。

            - 19 --

            《匯編語言程序設計》

            實驗程序

            SSTACK SEGMENT STACK

            DW 64 DUP(?)

            SSTACK ENDS

            CODE SEGMENT

            ASSUME CS:CODE

            START: MOV DI, 3000H

            MOV CL, [DI]

            XOR CH, CH

            MOV BL, CH

            INC DI

            A1: MOV AL, [DI]

            TEST AL, 80H

            JE A2

            INC BL

            A2: INC DI

            LOOP A1

            MOV [DI], BL

            A3: JMP A3

            圖3-4 程序流程圖

            ;數據區首地址

            ;取數據個數

            ;指向第一個數據

            ;檢查數據首位是否為1 TEST AL,00H;

            ;負數個數加1 JB A2 JE A3 JA A4

            ;保存結果

            - 20 --

            《匯編語言程序設計》

            CODE

            ENDS

            END START

            實驗步驟

            (1)按實驗流程編寫實驗程序;

            (2)編譯、鏈接無誤后裝入系統;

            (3)鍵入E3000,輸入數據如下:

            3000=06 (數據個數)

            3001=12

            3002=88

            3003=82

            3004=90

            3005=22

            3006=33

            (4)先運行程序,然后停止程序運行;

            (5)查看3007內存單元或寄存器BL中的內容,結果應為03;

            (6)可以進行反復測試來驗證程序的正確性。

            - 21 --

            《匯編語言程序設計》

            實驗四 子程序設計實驗

            一、實驗目的

            1.學習子程序的定義和調試方法。

            2.掌握子程序、子程序的嵌套、遞歸子程序的結構;

            3.掌握子程序的程序設計及調試方法。

            二、實驗設備

            PC 機一臺,TD-PITE 實驗裝置一套。

            三、實驗內容及步驟

            1.求無符號字節序列中的最大值和最小值

            設有一字節序列,其存儲首地址為3000H,字節數為08H。利用子程序的方法編程求出該序列中的最大值和最小值。程序流程圖如圖4-1所示。

            圖4-1 程序流程圖

            實驗程序

            SSTACK SEGMENT STACK

            DW 64 DUP(?)

            SSTACK ENDS

            CODE SEGMENT

            - 22 --

            《匯編語言程序設計》

            START:

            ASSUME CS:CODE

            MOV AX, 0000H

            MOV DS, AX

            MOV SI, 3000H

            MOV CX, 0008H

            CALL MYSUB1

            INT 20H

            MYSUB1 PROC

            JCXZ A4

            PUSH SI

            PUSH CX

            PUSH DX

            MOV DH, [SI]

            MOV DL, DH

            CLD

            A1: LODSB

            CMP AL, DH

            JBE A2

            MOV DH, AL

            JMP A3

            A2: CMP AL, DL

            JAE A3

            MOV DL, AL

            A3: LOOP A1

            MOV AX,DX

            POP DX

            POP CX

            POP SI

            A4: RET

            MYSUB1 ENDP

            CODE ENDS

            END START

            ; 數據區首址

            ; 調用子程序

            實驗步驟:

            (1)根據程序流程圖編寫實驗程序;

            (2)經編譯、鏈接無誤后裝入系統;

            (3)鍵入E3000命令,輸入8個字節的數據,如:D9 07 8B C5 EB 04 9D F9;

            (4)運行實驗程序;

            (5)點擊停止按鈕,停止程序運行,觀察寄存器窗口中AX的值,AX應為F9 04,其中AH中為最大值,AL中為最小值;

            (6)反復測試幾組數據,檢驗程序的正確性。

            程序說明:該程序使用BH和BL暫存現行的最大值和最小值,開始時初始化成首字節的內容,然后進入循環操作,從字節序列中逐個取出一個字節的內容與BH和BL相比較,若取出的字節內容比BH的內容大或比BL的內容小,則修改之。當循環操作結束時,將BH送AH,將BL送AL,作為返回值,同時恢復BX原先的內容。

            2. 求N!

            利用子程序的嵌套和子程序的遞歸調用,實現N!的運算。根據階乘運算法則,可以得:

            - 23 --

            《匯編語言程序設計》

            N!=N(N-1)!=N(N-1)(N-2)!=……

            0!=1

            由此可知,欲求N的階乘,可以用一遞歸子程序來實現,每次遞歸調用時應將調用參數減1,即求(N-1)的階乘,并且當調用參數為0時應停止遞歸調用,且有0!=1,最后將每次調用的參數相乘得到最后結果。因每次遞歸調用時參數都送入堆棧,當N為0而程序開始返回時,應按嵌套的方式逐層取出相應的調用參數。

            定義兩個變量N及RESULT,RESULT中存放N!的計算結果,N在00H~08H之間取值。

            實驗程序

            SSTACK SEGMENT STACK

            DW 64 DUP(?)

            SSTACK ENDS

            PUBLIC N, RESULT ;設置全局變量

            DATA SEGMENT

            N DB ? ;N的范圍在1~8之間

            RESULT DW ? ;N!的結果存于該變量中

            DATA ENDS

            CODE SEGMENT

            ASSUME CS:CODE, DS:DATA

            START: MOV AX, DATA

            MOV DS, AX

            MOV AX, OFFSET RESULT

            PUSH AX

            MOV AX,N

            MOV DI, 0000H

            CALL MYSUB2

            INT 20H ;在此處設置斷點,觀察變量

            MYSUB2 : PROC

            PUSH BP

            MOV BP,SP

            PUSH BX

            PUSH AX

            MOV BX,[BP+DI+06H]

            MOV AX,[BP+DI+04H]

            CMP AX,0000H

            JZ A1

            PUSH BX

            DEC AX

            PUSH AX

            CALL branch ;遞歸調用

            MOV BX,[BP+DI+06H]

            MOV AX,[BX]

            PUSH BX

            MOV BX,[BP+DI+04H]

            MUL BX

            POP BX

            JMP A2

            - 24 --

            《匯編語言程序設計》

            A1:

            A2:

            CODE

            MOV AX, 0001H

            MOV RESULT, AX

            POP AX

            POP BX

            POP BP

            RET 0004H

            ENDS

            END START

            實驗步驟

            (1)依據設計思想繪制程序流程圖,編寫實驗程序;

            (2)經編譯、鏈接無誤后裝入系統;

            (3)將變量N及RESULT加入變量監視窗口,并修改N值,N在00~08H之間取值;

            (4)在JMP START語句行設置斷點,然后運行程序;

            (5)當程序遇到斷點后停止運行,此時觀察變量窗口中RESULT的值是否正確,驗證程序的正確性;

            (6)改變變量N的值,然后再次運行程序,當程序停止在斷點行后觀察實驗結果。

            表4-2 階乘表

            - 25 --

            《匯編語言程序設計》

            實驗五 顯示程序實驗

            一、實驗目的

            1.了解INT 10H各功能模塊的作用及用法;

            2.掌握字符方式下PC機顯示器顯示控制。

            二、實驗設備

            PC機一臺,TD-PITE實驗裝置一套.

            三、實驗內容:

            編寫實驗程序,在顯示器上的輸出窗口顯示A~Z共26個大寫英文字母。

            顯示I/O功能調用使用說明如下:

            INT 10使用說明

            入口:AH=00H,AL=01H

            功能:清屏

            入口:AH=01H,AL=數據

            功能:寫AL中的數據到顯示屏上

            入口:AH=06H,DS:BX=字串首地址,且字符串尾用00H填充

            功能:顯示一字串,直到遇到00H為止

            實驗程序

            SSTACK SEGMENT STACK

            DW 64 DUP(?)

            SSTACK ENDS

            CODE SEGMENT

            ASSUME CS:CODE

            START: MOV CX,001AH

            MOV BL,41H

            MOV AH,01H

            A1: MOV AL,BL

            INT 10H

            INC BL

            PUSH CX

            MOV CX,0FFFFH

            A2: LOOP A2

            POP CX

            DEC CX

            JNZ A1

            A3: JMP A3

            CODE ENDS

            END START

            ;功能調用

            實驗步驟:

            1. 編寫實驗程序,經編譯、鏈接無誤后裝入系統;

            2. 運行實驗程序,觀察實驗結果;

            3. 修改實驗程序,在顯示器上顯示?GOOD AFTERNOON?,要求使用AH=06功能(顯示一字符串功能塊)完成。

            - 26 --

            《匯編語言程序設計》

            實驗六 串行通訊應用實驗

            一、實驗目的

            1. 掌握 8251 的工作方式及應用;

            2. 了解有關串口通訊的知識。

            二、實驗設備

            PC 機兩臺,TD-PITE 實驗裝置兩套。

            三、實驗內容

            1. 自收自發實驗,將 3000H 起始的 10 個單元中的初始數據發送到串口,然后自接收并保

            存到 4000H 起始的內存單元中。

            2. 雙機通訊實驗,本實驗需要兩臺實驗裝置,其中一臺作為接收機,一臺作為發送機,發

            送機將 3000H~3009H 內存單元中共 10 個數發送到接收機,接收機將接收到的數據直接在屏幕

            上輸出顯示。

            四、實驗原理

            1.8251的基本性能

            8251是可編程的串行通信接口,可以管理信號變化范圍很大的串行數據通信。有下列基本性能:

            (1)通過編程,可以工作在同步方式,也可以工作在異步方式;

            (2)同步方式下,波特率為0~64K,異步方式下,波特率為0~19.2K;

            (3)在同步方式時,可以用5~8位來代表字符,內部或外部同步,可自動插入同步字符;

            (4)在異步方式時,也使用5~8位來代表字符,自動為每個數據增加1個啟動位,并能夠根據編程為每個數據增加1個、1.5個或2個停止位;

            (5)具有奇偶、溢出和幀錯誤檢測能力;

            (6)全雙工,雙緩沖器發送和接收器。

            注意:8251盡管通過了RS-232規定的基本控制信號,但并沒有提供規定的全部信號。

            2.8251的內部結構及外部引腳

            8251的內部結構圖如圖1所示,可以看出,8251有7個主要部分,即數據總線緩沖器、讀/寫控制邏輯電路、調制/解調控制電路、發送緩沖器、發送控制電路、接收緩沖器和接收控制電路,圖中還標識出了每個部分對外的引腳。

            - 27 --

            圖6-1 8251內部結構圖

            8251的外部引腳如圖2所示,共28個引腳,每個引腳信號的輸入輸出方式如圖中的箭頭方向所示。

            圖6-2 8251外部引腳圖

            3. 8251在異步方式下的TXD信號上的數據傳輸格式

            圖3示意了8251工作在異步方式下的TXD信號上的數據傳輸格式。數據位與停止位的位數可以由編程指定。

            圖3 8251工作在異地方式下TXD信號的數據傳輸格式

            4. 8251的編程

            對8251的編程就是對8251的寄存器的操作,下面分別給出8251的幾個寄存器的格式。

            (1)方式控制字

            方式控制字用來指定通信方式及其方式下的數據格式,具體各位的定義如圖4所示。

            《匯編語言程序設計》

            圖4 8251方式控制字

            (2)命令控制字

            命令控制字用于指定8251進行某種操作(如發送、接收、內部復位和檢測同步字符等)或處于某種工作狀態,以便接收或發送數據。圖5所示的是8251命令控制字各位的定義。

            圖5 8251命令控制字格式

            (3)狀態字

            CPU通過狀態字來了解8251當前的工作狀態,以決定下一步的操作,8251的狀態字如圖6所示。

            圖6 8251狀態字格式

            (4)系統初始化

            - 29 -

            《匯編語言程序設計》

            8251的初始化和操作流程如圖7所示。

            圖7 8251初始化流程圖

            1. 數據信號的串行傳輸

            該實驗循環向串口發送一個數,使用示波器測量TXD引腳上的波形,以了解串行傳輸的數據格式。

            實驗程序

            M8251_DATA EQU 0600H

            M8251_CON EQU 0602H

            M8254_2 EQU 06C4H

            M8254_CON EQU 06C6H

            SSTACK SEGMENT STACK

            - 30 -

            《匯編語言程序設計》

            DW 64 DUP(?)

            SSTACK ENDS

            CODE SEGMENT

            ASSUME CS:CODE

            START: CALL INIT

            A1: CALL SEND

            MOV CX, 0001H

            A2: MOV AX, 0F00H

            A3: DEC AX

            JNZ A3

            LOOP A2

            JMP A1

            INIT: MOV AL, 0B6H ; 8254, 設置通訊時鐘

            MOV DX, M8254_CON

            OUT DX, AL

            MOV AL, 0CH

            MOV DX, M8254_2

            OUT DX, AL

            MOV AL, 00H

            OUT DX, AL

            CALL RESET ; 對8251進行初始化

            CALL DALLY

            MOV AL, 7EH

            MOV DX, M8251_CON ; 寫8251方式字

            OUT DX, AL

            CALL DALLY

            MOV AL, 34H

            OUT DX, AL ; 寫8251控制字

            CALL DALLY

            RET

            RESET: MOV AL, 00H ; 初始化8251子程序

            MOV DX, M8251_CON ; 控制寄存器

            OUT DX, AL

            CALL DALLY

            OUT DX, AL

            CALL DALLY

            OUT DX, AL

            CALL DALLY

            MOV AL, 40H

            OUT DX, AL

            RET

            DALLY: PUSH CX

            MOV CX, 5000H

            A4: PUSH AX

            POP AX

            LOOP A4

            - 31 -

            《匯編語言程序設計》

            SEND:

            CODE

            POP CX

            RET

            PUSH AX

            PUSH DX

            MOV AL, 31H

            MOV DX, M8251_CON

            OUT DX, AL

            MOV AL, 55H

            MOV DX, M8251_DATA

            OUT DX, AL

            POP DX

            POP AX

            RET

            ENDS

            END START

            ; 發送數據55H

            實驗步驟:

            (1)按圖8連接實驗接線;

            圖8 8251實驗單元電路圖

            (2)編寫實驗程序,經編譯、鏈接無誤后裝入系統;

            (3)運行程序,使用示波器觀察TXD引腳上的波形。

            2. 自收自發實驗

            - 32 -

            《匯編語言程序設計》

            將3000H起始的10個單元中的初始數據發送到串口,然后自接收并保存到4000H起始的內存單元中。通過自收自發實驗,可以驗證硬件及軟機設計,常用于自測試。

            實驗程序

            M8251_DATA EQU 0600H

            M8251_CON EQU 0602H

            M8254_2 EQU 06C4H

            M8254_CON EQU 06C6H

            SSTACK SEGMENT STACK

            DW 64 DUP(?)

            SSTACK ENDS

            CODE SEGMENT

            ASSUME CS:CODE

            START: MOV AX, 0000H

            MOV DS, AX

            MOV AL, 0B6H

            MOV DX, M8254_CON

            OUT DX, AL

            MOV AL, 0CH

            MOV DX, M8254_2

            OUT DX, AL

            MOV AL, 00H

            OUT DX, AL

            CALL INIT

            CALL DALLY

            MOV AL,7EH

            MOV DX, M8251_CON

            OUT DX, AL

            CALL DALLY

            MOV AL, 34H

            OUT DX, AL

            CALL DALLY

            MOV DI, 3000H

            MOV SI, 4000H

            MOV CX, 000AH

            A1: MOV AL, [SI]

            PUSH AX

            MOV AL, 37H

            MOV DX, M8251_CON

            OUT DX, AL

            POP AX

            MOV DX, M8251_DATA

            OUT DX, AL

            MOV DX, M8251_CON

            A2: IN AL, DX

            AND AL, 01H

            JZ A2

            ;初始化8254,得到收發時鐘

            ;復位8251

            ;8251方式字

            ;8251控制字

            ;10個數

            ;發送數據

            ;判斷發送緩沖是否為空

            - 33 -

            《匯編語言程序設計》

            CALL DALLY

            A3: IN AL, DX

            AND AL, 02H

            JZ A3

            MOV DX, M8251_DATA

            IN AL, DX

            MOV [DI], AL

            INC DI

            INC SI

            LOOP A1

            A4: JMP A4

            INIT: MOV AL, 00H

            MOV DX, M8251_CON

            OUT DX, AL

            CALL DALLY

            OUT DX, AL

            CALL DALLY

            OUT DX, AL

            CALL DALLY

            ;OUT 81H,AL

            ;CALL DALLY

            ;OUT 80H,AL

            ;CALL DALLY

            MOV AL, 40H

            OUT DX, AL

            RET

            DALLY: PUSH CX

            MOV CX,3000H

            A5: PUSH AX

            POP AX

            LOOP A5

            POP CX

            RET

            CODE ENDS

            END START

            ;判斷是否接收到數據

            ;讀取接收到的數據

            ;復位8251子程序

            實驗步驟:

            (1)參考實驗接線圖如圖9所示,按圖連接實驗線路;

            - 34 -

            《匯編語言程序設計》

            圖9 8251數據串行傳輸實驗線路圖

            (2)編寫實驗程序,編譯、鏈接無誤后裝入系統;

            (3)使用E命令更改4000H起始的10個單元中的數據;

            (4)運行實驗程序,然后停止程序的運行;

            (5)查看3000H起始的10個單元中的數據,與初始化的數據進行比較,驗證程序功能。

            3. 雙機通訊實驗

            本實驗需要兩臺實驗裝置,其中一臺作為接收機,一臺作為發送機,發送機將3000H~3009H內存單元中共10個數發送到接收機,接收機將接收到的數據直接在屏幕上輸出顯示。

            實驗程序

            接收機

            M8251_DATA EQU 0600H

            M8251_CON EQU 0602H

            M8254_2 EQU 06C4H

            M8254_CON EQU 06C6H

            SSTACK SEGMENT STACK

            DW 64 DUP(?)

            SSTACK ENDS

            CODE SEGMENT

            ASSUME CS:CODE

            - 35 -

            《匯編語言程序設計》

            START:

            A1:

            A2:

            INIT:

            MOV AL, 0B6H ;初始化8254

            MOV DX, M8254_CON

            OUT DX, AL

            MOV AL, 0CH

            MOV DX, M8254_2

            OUT DX, AL

            MOV AL, 00H

            OUT DX, AL

            ;CLI

            CALL INIT ;復位8251

            CALL DALLY

            MOV AL, 7EH

            MOV DX, M8251_CON

            OUT DX, AL

            CALL DALLY

            MOV AL, 34H

            OUT DX, AL

            CALL DALLY

            MOV AX, 0152H ;輸出顯示字符 'R'

            INT 10H

            MOV DI, 3000H

            MOV CX, 000AH

            MOV DX, M8251_CON

            IN AL, DX

            AND AL, 02H

            JZ A1

            MOV DX, M8251_DATA

            IN AL, DX

            AND AL, 7FH

            MOV [DI],AL

            INC DI

            LOOP A1

            MOV AL, 00H

            MOV SI, 300AH

            MOV [SI], AL

            MOV AH, 06H

            MOV BX, 3000H

            INT 10H ;輸出顯示接收到的數據

            ;STI

            JMP A2

            MOV AL, 00H ;復位8251子程序

            MOV DX, M8251_CON

            OUT DX, AL

            CALL DALLY

            OUT DX, AL

            CALL DALLY

            OUT DX, AL

            CALL DALLY

            MOV AL, 40H

            OUT DX, AL

            - 36 -

            《匯編語言程序設計》

            RET

            DALLY: PUSH CX

            MOV CX, 3000H

            A3: PUSH AX

            POP AX

            LOOP A3

            POP CX

            RET

            CODE ENDS

            END START

            發送機

            M8251_DATA EQU 0600H

            M8251_CON EQU 0602H

            M8254_2 EQU 06C4H

            M8254_CON EQU 06C6H

            SSTACK SEGMENT STACK

            DW 64 DUP(?)

            SSTACK ENDS

            CODE SEGMENT

            ASSUME CS:CODE

            START: MOV AL, 0B6H

            MOV DX, M8254_CON

            OUT DX, AL

            MOV AL, 0CH

            MOV DX, M8254_2

            OUT DX, AL

            MOV AL, 00H

            OUT DX, AL

            CALL INIT

            CALL DALLY

            MOV AL, 7EH

            MOV DX, M8251_CON

            OUT DX, AL

            CALL DALLY

            MOV AL, 34H

            OUT DX, AL

            CALL DALLY

            MOV DI, 3000H

            MOV CX, 000AH

            A1: MOV AL, [DI]

            CALL SEND

            CALL DALLY

            CALL DALLY

            INC DI

            LOOP A1

            A2: JMP A2

            ;初始化8254, 得到收發時鐘;復位8251

            ;8251方式字

            ;8251控制字

            - 37 -

            《匯編語言程序設計》

            INIT: MOV AL, 00H

            MOV DX, M8251_CON

            OUT DX, AL

            CALL DALLY

            OUT DX, AL

            CALL DALLY

            OUT DX, AL

            CALL DALLY

            MOV AL, 40H

            OUT DX, AL

            RET

            DALLY: PUSH CX

            MOV CX, 3000H

            A4: PUSH AX

            POP AX

            LOOP A4

            POP CX

            RET

            SEND: PUSH DX

            PUSH AX

            MOV AL, 31H

            MOV DX, M8251_CON

            OUT DX, AL

            POP AX

            MOV DX, M8251_DATA

            OUT DX, AL

            MOV DX, M8251_CON

            A3: IN AL, DX

            AND AL, 01H

            JZ A3

            POP DX

            RET

            CODE ENDS

            END START

            實驗步驟:

            (1)按圖10連接實驗線路;

            ;復位8251子程序

            ;數據發送子程序

            - 38 -

            《匯編語言程序設計》

            圖10 自首自發實驗接線圖

            (2)為兩臺機器分別編寫實驗程序,編譯、鏈接后裝入系統;

            (3)為發送機初始化發送數據;

            (4)首先運行接收機上的程序,等待接收數據,然后運行發送機上的程序,將數據發送到串口。

            (5)觀察接收機端屏幕上的顯示是否與發送機端初始的數據相同,驗證程序功能。

            - 39 -

            《匯編語言程序設計》

            附錄 Wmd86 聯機軟件使用說明

            界 面 窗 口 介 紹

            主界面窗口如下,主要分為三部分:程序編輯區、變量區和輸出區,下面分別加以介紹。

            程序編輯區:

            位于界面右上部,用戶可在程序編輯區用“新建”命令打開一個新文檔或用“打開”命令打開一個已存在的文檔,在文檔中用戶可編輯程序。用戶可在程序編輯區打開多個文檔,點擊文檔標簽可激活任一文檔。編譯、鏈接、加載以及調試命令只針對當前活動文檔。用戶調試程序時,調試界面亦在文檔中顯示。

            變量區:

            位于界面左上部,包括三個部分:寄存器區、變量區和堆棧區。寄存器區和變量區用于實時監視寄存器和變量,也能夠修改寄存器和變量的值,堆棧區主要用于實時監視堆棧寄存器。點擊寄存器區標簽可觀察和修改寄存器,點擊變量區標簽可觀察和修改變量,點擊堆棧區標簽可觀察堆棧寄存器。執行相關操作后寄存器、變量和堆棧寄存器的值自動刷新,如果寄存器區刷新后的值和刷新前的值相同,則顯示為藍色,如果不同,則顯示為紅色。變量區和堆棧區刷新前和刷新后都為藍色。想修改寄存器或變量,用鼠標左鍵單擊某寄存器或變量,當寄存器或變量值的區域變為藍色后輸入修改后的值,然后回車。如果修改的是寄存器,輸入的值的長度與寄存器的長度相同,回車后修改正確,如果輸入的值的長度和寄存器的長度 - 40 -

            《匯編語言程序設計》

            不相同,寄存器的值沒有被修改,保持原來的值且可以繼續修改該寄存器的值。如果修改的是變量,輸入的值的長度與變量的長度相同,回車后修改正確,如果輸入的值的長度小于變量的長度,回車后輸入值的前面自動添零,如果輸入值的長度大于變量的長度,回車后輸入值的后面的多余部分自動刪除。堆棧區只用于監視,不能夠被修改。

            輸出區:

            位于界面下部,輸出區包含三個部分:編譯區、調試區和結果區。編譯區顯示編譯和鏈接的結果,如果編譯時有錯誤或警告,雙擊錯誤或警告信息,錯誤標識符會指示到相應的有錯誤或警告的行。調試區主要用于DEBUG調試。結果區主要用于顯示程序加載結果、程序運行輸出結果和復位結果。結果區中有“加載中,請稍候....”的字樣表示聯機軟件正在把可執行文件加載到下位機中,用戶此時應等待直到加載完成,“加載成功”表示加載完成且成功,“加載失敗”表示加載完成且失敗,此時應重新加載。程序中用“INT 10H”輸出的結果亦顯示在此區。軟復位或硬件復位成功后,結果區顯示“復位成功!”。如果復位不成功則不顯示此句。

            按 鈕 功 能 介 紹

            標準工具欄:

            標準工具欄共有十二個按鈕,其圖如下:

            新建按鈕

            用此按鈕在Wmd86中建立一個新文檔。

            您可用打開命令打開一個現存文檔。

            打開按鈕

            用此命令在一個新的窗口中打開一個現存的文檔。您可同時打開多個文檔,點擊某文檔的標簽可激活此文檔。您可用窗口菜單在多個打開的文檔中切換。見窗口1,2,...命令。

            您可用新建命令建立新文檔。

            保存按鈕

            - 41 -

            《匯編語言程序設計》

            用此命令來關閉當前活動文檔。Wmd86會建議您在關閉文檔之前保存對您的文檔所做的改動。如果您沒有保存而關閉了一個文檔,您將會失去自從您最后一次保存以來所做的所有改動。在關閉一無標題的文檔之前,Wmd86會顯示另存為對話框,建議您命名和保存文檔。

            剪切按鈕

            用此命令將當前被選取的數據從文檔中刪除并放置于剪貼板上。如當前沒有數據被選取時,此命令則不可用。

            把數據剪切到剪貼板上將取代原先存放在那里的內容。

            復制按鈕

            用此命令將被選取的數據復制到剪切板上。如當前無數據被選取時,此命令則不可用。

            把數據復制到剪貼板上將取代以前存在那里的內容。

            粘貼按鈕

            用此命令將剪貼板上內容的一個副本插入到插入點處。如剪貼板是空的,此命令則不可用。

            打印按鈕

            用此命令來打印一個文檔。在此命令提供的打印對話框中,您可以指明要打印的頁數范圍、副本數、目標打印機,以及其它打印機設置選項。

            撤消按鈕

            如果可能的話,可用此命令來撤消上一步編輯操作。如果無法撤消上一步操作,菜單上的撤消命令會變灰。

            重復按鈕

            如果可能的話,可用此命令來恢復撤消的編輯操作。如果無法恢復編輯操作,菜單上的重復命令會變灰。

            顯隱變量區按鈕

            用此按鈕可顯示和隱藏變量和寄存器區。

            顯隱輸出區按鈕

            用此按鈕可顯示和隱藏輸出區。

            變量監控按鈕

            加載成功后才可用此按鈕。點擊此按鈕,出現如下對話框:

            - 42 -

            《匯編語言程序設計》

            左邊的列表框為程序中的全局變量,系統只能監視全局變量,右邊的列表框為系統正在監視的全局變量。如果想監視左邊列表框的某一變量A,用鼠標左鍵單擊變量A,使之成為選擇項,如上圖所示,此時點擊“加入監視”按鈕,右邊的列表框出現變量A,點擊“結束”按鈕后變量A會出現在變量區。如果想從變量區去掉某一正在監視的變量B,點擊“變量監控”按鈕,出現如上圖所示對話框,在右邊的列表框中用鼠標左鍵單擊變量B,使之成為選擇項,如上圖所示,此時點擊“停止監視”按鈕,此變量從右邊的列表框消失,點擊“結束”按鈕后,變量B從變量區消失。

            在匯編語言源文件中,數據段定義的變量并不是全局變量,因此數據段定義的變量并不出現在上圖所示的對話框的左邊列表,要想監視這些變量,必須使它們成為全局變量,使一個變量成為全局變量的方法是用關鍵字PUBLIC在源程序的最前面聲明之,格式是:PUBLIC

            symbol[,...],范例如下:

            數據段DATA1中的數據 mus_time,mus_freq 經過PUBLIC聲明后成為全局變量,編譯、鏈接、加載完成后,點擊“變量監控”按鈕,此時對話框左邊的列表框出現 mus_time和mus_freq 變量,可對這兩個變量進行監控。

            - 43 -

            《匯編語言程序設計》

            在C語言源文件中,函數內部定義的變量不是全局變量,函數外面定義的變量才是全局變量,因此系統只能監視函數外面定義的變量。要想監視某一變量,應該把他定義在函數的外面。

            堆棧監控

            點擊此按鈕,出現如下對話框:

            選擇“不監控堆棧”單選按鈕,確定后不監視堆棧寄存器,選擇“監控堆棧”單選按鈕,確定后監視堆棧寄存器。默認選項為“不監控堆棧”。

            自 定 義 功 能

            自定義功能之命令屬性頁:

            該屬性頁主要三項:類別、命令、說明。

            類別:列出了應用程序所有的菜單。

            命令:列出了選中的菜單中所對應的菜單命令。如上圖中選中的是"文件"菜單,則在"命令"欄中 - 44 -

            《匯編語言程序設計》

            列出了"文件"所對應的菜單命令。

            說明:如果選中了一個菜單命令,則在說明欄中注明該菜單命令的作用。

            右 鍵 菜 單

            右鍵菜單之工具欄菜單:

            工具欄菜單提供了以下命令:

            標準工具欄 顯示或隱藏標準工具欄

            變量區 顯示或隱藏變量區

            輸出區 顯示或隱藏輸出區

            編譯工具欄 顯示或隱藏編譯工具欄

            調試工具欄 顯示或隱藏調試工具欄

            自定義

            標準工具欄(T):

            用此命令可顯示和隱藏標準工具欄。標準工具欄包括了Wmd86中一些最普通命令的按鈕,如文件打開。在工具欄被顯示時,一個打勾記號出現在該菜單項目的旁邊。

            參見工具欄以得到對使用工具欄的幫助。

            變量區(W):

            用此命令可顯示和隱藏變量區。

            輸出區(O):

            用此命令可顯示和隱藏輸出區

            編譯工具欄(T):

            用此命令可顯示和隱藏編譯工具欄。編譯工具欄包括了Wmd86中全部編譯命令的按鈕,如編譯、鏈接。在工具欄被顯示時,一個打勾記號出現在該菜單項目的旁邊。

            參見工具欄以得到對使用工具欄的幫助。

            調試工具欄(T):

            - 45 -

            《匯編語言程序設計》

            用此命令可顯示和隱藏調試工具欄。調試工具欄包括了Wmd86中全部調試命令的按鈕,如單步、跳過。在工具欄被顯示時,一個打勾記號出現在該菜單項目的旁邊。

            參見工具欄以得到對使用工具欄的幫助。

            右 鍵 菜 單

            右鍵菜單之編輯菜單:

            編輯菜單提供了以下命令:

            剪切 從文檔中刪除數據并將其移到剪貼板上。

            復制 從文檔中將數據復制到剪貼板上。

            粘貼 從剪貼板上將數據粘貼到文檔中。

            剪切(T):

            用此命令將當前被選取的數據從文檔中刪除并放置于剪貼板上。如當前沒有數據被選取時,此命令則不可用。

            把數據剪切到剪貼板上將取代原先存放在那里的內容。

            復制(C):

            用此命令將被選取的數據復制到剪切板上。如當前無數據被選取時,此命令則不可用。

            把數據復制到剪貼板上將取代以前存在那里的內容。

            粘貼(P):

            用此命令將剪貼板上內容的一個副本插入到插入點處。如剪貼板是空的,此命令則不可用。

            文 件 菜 單 項

            文件菜單項:

            - 46 -

            《匯編語言程序設計》

            文件菜單提供了以下命令:

            新建 建立一個新文檔

            打開 打開一個現存文檔

            關閉 關閉一個打開的文檔

            保存 用同樣的文件名保存一個打開的文檔

            另存為 用指定的文件名保存一個打開的文檔

            打印 打印一個文檔

            打印預覽 在屏幕上按被打印出的格式顯示文檔

            打印設置 選擇一個打印機以及打印機連接

            退出 退出Wmd86

            新建(N):

            用此命令在Wmd86中建立一個新文檔。

            您可用打開命令打開一個現存文檔。

            打開(O):

            用此命令在窗口中打開一個現存的文檔。您可同時打開多個文檔,點擊某文檔的標簽可激活此文檔。您可用窗口菜單在多個打開的文檔中切換。見窗口1,2,...命令。

            您可用新建命令建立新文檔。

            關閉(C):

            - 47 -

            《匯編語言程序設計》

            用此命令來關閉當前活動文檔。Wmd86會建議您在關閉文檔之前保存對您的文檔所做的改動。如果您沒有保存而關閉了一個文檔,您將會失去自從您最后一次保存以來所做的所有改動。在關閉一無標題的文檔之前,Wmd86會顯示另存為對話框,建議您命名和保存文檔。

            保存(S):

            用此命令將當前活動文檔保存到它的當前的文件名和目錄下。當您第一次保存文檔時,Wmd86顯示另存為對話框以便您命名您的文檔。如果在保存之前,您想改變當前文檔的文件名和目錄,您可選用另存為命令。

            另存為(A)?:

            用此命令來保存并命名活動文檔。Wmd86會顯示另存為對話框以便您命名您的文檔。

            如要用當前文件名和目錄保存文檔,您可用保存命令。

            打印(P)?:

            用此命令來打印一個文檔。在此命令提供的打印對話框中,您可以指明要打印的頁數范圍、副本數、目標打印機,以及其它打印機設置選項。

            打印預覽(V):

            用此命令按要打印的格式顯示活動文檔。當您選擇此命令時,主窗口就會被一個打印預覽窗口所取代。這個窗口可以按它們被打印時的格式顯示一頁或兩頁。打印預覽工具欄提供選項使您可選擇一次查看一頁或兩頁,在文檔中前后移動,放大和縮小頁面,以及開始一個打印作業。

            打印設置(R)?:

            用此命令來選擇一臺打印機和一個打印機連接。在此命令提供的打印設置對話框中,您可以指定打印機及其連接。

            最近使用文件:

            您可以通過此列表,直接打開最近打開過的文件,共四個。

            退出(X):

            用此命令來結束您Wmd86的運行階段。您也可使用在應用程序控制菜單上的關閉命令。

            Wmd86會提示您保存尚未保存的改動。

            編 輯 菜 單 項

            編輯菜單項:

            - 48 -

            本文發布于:2024-02-09 15:51:25,感謝您對本站的認可!

            本文鏈接:http://m.newhan.cn/zhishi/a/88/48345.html

            版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。

            本文word下載地址:匯編語言程序設計2.doc

            本文 PDF 下載地址:匯編語言程序設計2.pdf

            標簽:程序   數據   實驗   命令   變量   文檔
            留言與評論(共有 0 條評論)
               
            驗證碼:
            推薦文章
            排行榜
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網旗下知識大全大全欄目是一個全百科類寶庫! 優秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 亚洲一区国色天香| 在线观看美女网站大全免费| 在线看无码的免费网站| 狠狠色婷婷久久综合频道日韩 | 久久久久久久极品内射| 国色天香成人一区二区| jlzzjlzz全部女高潮| 亚洲最大的成人网站| 五月婷婷开心中文字幕| 尹人香蕉久久99天天拍欧美p7| 久久亚洲精品11p| 国产 | 久你欧洲野花视频欧洲1| 亚洲国产综合一区二区精品 | 国产精品自在拍首页视频8| 亚洲大片免费| 国内极度色诱视频网站| 亚洲欧美国产另类首页| 国产黄色av一区二区三区| 这里只有精品在线播放| 中文字幕va一区二区三区| 91国在线啪精品一区| 国产jizzjizz视频| 芳草地社区在线视频| 伦伦影院精品一区| 亚洲国产精品人人做人人爱| 久久99精品久久久久久9| 国产成人综合色就色综合 | mm1313亚洲国产精品| 少妇久久久被弄到高潮| 色狠狠色婷婷丁香五月| 中文字幕一区二区三区久久蜜桃| 久9视频这里只有精品| 日本xxxb孕交| 怡红院一区二区三区在线| 国产一区二区精品尤物| 中文字幕制服国产精品| 10000拍拍拍18勿入免费看| 日本高清久久一区二区三区| 亚洲色大成网站www永久男同| 成人自拍短视频午夜福利| 中文日产幕无线码一区中文|