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 條評論) |