微機(jī)原理與接口技術(shù)實(shí)驗(yàn)教案_第1頁(yè)
微機(jī)原理與接口技術(shù)實(shí)驗(yàn)教案_第2頁(yè)
微機(jī)原理與接口技術(shù)實(shí)驗(yàn)教案_第3頁(yè)
微機(jī)原理與接口技術(shù)實(shí)驗(yàn)教案_第4頁(yè)
微機(jī)原理與接口技術(shù)實(shí)驗(yàn)教案_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、微機(jī)原理與接口技術(shù)實(shí)驗(yàn)講義物理與電子工程學(xué)院羅長(zhǎng)更顯示程序?qū)嶒?yàn)3數(shù)據(jù)傳送實(shí)驗(yàn)5運(yùn)算類程序?qū)嶒?yàn)6分支程序設(shè)計(jì)實(shí)驗(yàn)17循環(huán)程序設(shè)計(jì)實(shí)驗(yàn)20綜合程序設(shè)計(jì)實(shí)驗(yàn)22顯示程序?qū)嶒?yàn)實(shí)驗(yàn)?zāi)康?1) 掌握在PC機(jī)上以十六進(jìn)制形式顯示數(shù)據(jù)的方法。(2) 掌握部分DOS功能調(diào)用使用方法。(3) 熟悉Tdpit集成環(huán)境和調(diào)試器的使用。實(shí)驗(yàn)內(nèi)容及說(shuō)明     一般來(lái)說(shuō),有很多程序需要顯示輸出提示運(yùn)行的狀況和結(jié)果,有的還需要將數(shù)據(jù)區(qū)中的內(nèi)容顯示在屏幕上。本實(shí)驗(yàn)要求將指定數(shù)據(jù)區(qū)的數(shù)據(jù)以十六進(jìn)制數(shù)形式顯示在屏幕上,并通過(guò)DOS功能調(diào)用完成一些提示信息的顯示。實(shí)驗(yàn)中可使用DOS功能調(diào)用(INT 2

2、1H)。 (1) 顯示單個(gè)字符輸出 入口:AH=02H 調(diào)用參數(shù):DL=輸出字符 (2) 顯示字符串 入口:AH=09H 調(diào)用參數(shù):DS:DX=串地址,$為結(jié)束字符 (3) 鍵盤輸入并回顯 入口:AH=01H 返回參數(shù):AL=輸出字符 (4) 返回DOS系統(tǒng) 入口:AH=4CH 調(diào)用參數(shù):AL=返回碼 實(shí)驗(yàn)步驟 (1) 運(yùn)行Tdpit軟件,選擇文件菜單,點(diǎn)擊新建,進(jìn)入一個(gè)源文件編輯界面。根據(jù)實(shí)驗(yàn)內(nèi)容的描述編寫實(shí)驗(yàn)程序,本實(shí)驗(yàn)顯示部分參考實(shí)驗(yàn)流程如圖1所示。 (2) 使用編譯菜單中的編譯和鏈接對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接。 (3) 使用編譯菜單中的運(yùn)行,運(yùn)行程序,觀察運(yùn)行結(jié)果。 (4) 使用編譯菜單

3、中的調(diào)試,調(diào)試程序,觀察調(diào)試過(guò)程中,數(shù)據(jù)傳輸指令執(zhí)行后,各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。 (5) 更改數(shù)據(jù)區(qū)中的數(shù)據(jù),檢查程序的正確性。 參考程序清單 DATASEGMENT MESDB'Show a as hex:',0AH,0DH,'$' SDDB'a' DATAENDS CODESEGMENT ASSUMECS:CODE,DS:DATA START:MOV AX,DATA MOVDS,AX MOVDX,OFFSET MES;顯示提示信息 MOVAH,09HINT 21H  MOVDI,OFFSET SD MOVAL,DS:DI ANDAL

4、,0F0H;取高4位 SHRAL,4 圖1  CMPAL,0AH;是否是A以上的數(shù) JBC2ADDAL,07HC2:ADDAL,30HMOVDL,AL;顯示字符 MOVAH,02H INT21H MOVAL,DS:DI ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07H C3:ADDAL,30H MOVDL,AL;顯示字符 MOVAH,02H INT21H MOVAX,4C00H;返回DOS INT21H CODEENDS ENDSTART 數(shù)據(jù)傳送實(shí)驗(yàn)  實(shí)驗(yàn)?zāi)康?(1) 熟悉Tdpit集成環(huán)境和調(diào)試器的使用。 (2) 掌握與數(shù)據(jù)有關(guān)的不同尋

5、址方式。   實(shí)驗(yàn)內(nèi)容 本實(shí)驗(yàn)要求將數(shù)據(jù)段中的一個(gè)字符串傳送到附加段中,并輸出附加段中的目標(biāo)字符串到屏幕上。實(shí)驗(yàn)步驟 (1) 運(yùn)行Tdpit軟件,選擇文件菜單,點(diǎn)擊新建進(jìn)行實(shí)驗(yàn)程序的編寫。 (2) 使用編譯菜單中的編譯和連接對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接。 (3) 使用編譯菜單中的運(yùn)行,運(yùn)行程序,觀察運(yùn)行結(jié)果。 (4) 使用編譯菜單中的調(diào)試,調(diào)試程序,觀察調(diào)試過(guò)程中,數(shù)據(jù)傳輸指令執(zhí)行后,各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。 (5) 更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。 參考程序:DDATASEGMENT;定義源數(shù)據(jù)段 MSRDB "HELLO,WORLD!$" LENEQU $-

6、 MSR DDATAENDS   EXDASEGMENT;定義附加數(shù)據(jù)段 MSDDB LEN DUP(?) EXDAENDS   MYSTACK SEGMENT STACK;定義堆棧段 DW 20 DUP(?) MYSTACK ENDS CODESEGMENT;定義代碼段 ASSUME CS:CODE,DS:DDATA,ES:EXDA START:MOV AX,DDATA MOV DS,AX;裝載數(shù)據(jù)段寄存器 MOV AX,EXDA MOV ES,AX;裝載附加數(shù)據(jù)段寄存器 MOV SI,OFFSET MSR;設(shè)置SI MOV DI,OFFSET MSD;設(shè)置DI MOV

7、CX,LEN NEXT:MOV AL,SI;開(kāi)始傳輸數(shù)據(jù) MOV ES:DI,AL INC SI INC DIDEC CX JNZ NEXT PUSH ESPOP DS;將附加段寄存器指向的段值賦給數(shù)據(jù)段寄存器 MOV DX,OFFSET MSDMOV AH,9 INT 21H MOV AX,4C00H;利用DOS功能調(diào)用返回DOS狀態(tài) INT 21H CODEENDS END START 將程序主體部分的寄存器間接尋址方式改為相對(duì)尋址方式,則如下所示: MOV BX,0 MOV CX,LEN NEXT:MOV AL,MSRBX MOV ES:MSDBX,AL INC BX LOOP NEXT

8、 運(yùn)算類程序?qū)嶒?yàn)實(shí)驗(yàn)?zāi)康?(1) 掌握運(yùn)算類指令編程及調(diào)試方法。 (2) 掌握運(yùn)算類指令對(duì)各狀態(tài)標(biāo)志位的影響及測(cè)試方法。   實(shí)驗(yàn)內(nèi)容及說(shuō)明     80x86指令系統(tǒng)提供了實(shí)現(xiàn)加、減、乘、除運(yùn)算的基本指令,可對(duì)表1所示的數(shù)據(jù)類型進(jìn)行算術(shù)運(yùn)算。 表11二進(jìn)制雙精度加法運(yùn)算     本實(shí)驗(yàn)要求計(jì)算X+Y=Z,將結(jié)果Z輸出到屏幕,其中X=001565A0H,Y=0021B79EH。 實(shí)驗(yàn)利用累加器AX,先求低十六位和,并存入低址存儲(chǔ)單元,后求高16位和,再存入高址存儲(chǔ)單元。由于低位和可能向高位有進(jìn)位,因而高位字相加語(yǔ)句需用ADC

9、指令,則低位相加有進(jìn)位時(shí),CF=1,高位字相加時(shí),同時(shí)加上CF中的1。在80386以上微機(jī)中可以直接使用32位寄存器和32位加法指令完成本實(shí)驗(yàn)的功能。   2十進(jìn)制數(shù)的BCD碼減法運(yùn)算     本實(shí)驗(yàn)要求計(jì)算X-Y=Z,其中,X、Y、Z為BCD碼,其中X=0400H,Y=0102H。 3乘法運(yùn)算     本實(shí)驗(yàn)要求實(shí)現(xiàn)十進(jìn)制數(shù)的乘法,被乘數(shù)和乘數(shù)均以BCD碼形式存放于內(nèi)存中,被乘數(shù)為54320H,乘數(shù)為3H,運(yùn)算結(jié)束后,將乘積在屏幕上顯示。   4用減奇數(shù)開(kāi)平方運(yùn)算     80x86

10、指令系統(tǒng)中有乘除法指令但沒(méi)有開(kāi)平方指令,因此,開(kāi)平方運(yùn)算是通過(guò)程序來(lái)實(shí)現(xiàn)的。用減奇數(shù)法可求得近似平方根,獲得平方根的整數(shù)部分。我們知道,N個(gè)自然數(shù)中的奇數(shù)之和等于N2,即: 1+3+5=9=32 1+3+5+7=16=42 1+3+5+7+9+11+13+15=64=82     若要做S的開(kāi)方運(yùn)算,那麼就可以從S中逐次減去自然數(shù)中的奇數(shù)1,3,5,7,一直進(jìn)行到相減數(shù)為0或不夠減下一個(gè)自然數(shù)的奇數(shù)為止,然后統(tǒng)計(jì)減去自然數(shù)的奇數(shù)個(gè)數(shù),它就是S的近似平方根。 本實(shí)驗(yàn)要求利用減奇法計(jì)算0040H的開(kāi)平方值,并將運(yùn)算結(jié)果顯示在屏幕上。 實(shí)驗(yàn)步驟 (1) 運(yùn)行Tdpit軟

11、件,選擇文件菜單進(jìn)行實(shí)驗(yàn)程序的編寫。 (2) 使用編譯菜單中的編譯和連接對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接。 (3) 使用編譯菜單中的運(yùn)行,運(yùn)行程序,觀察運(yùn)行結(jié)果。 (4) 使用編譯菜單中的調(diào)試,調(diào)試程序,觀察調(diào)試過(guò)程中,數(shù)據(jù)傳輸指令執(zhí)行后,各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。 (5) 更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。 參考程序兩個(gè)字節(jié)數(shù)據(jù)相加STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA SEGMENTMES1DB'The result is:$'X DB 03HY DB 05HDATAENDSCODE SEGMENTASSUME CS:C

12、ODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AH,00H MOV SI,OFFSET X MOV AL,SI ADD AL,SI+01H AND AL,0FH MOV BL,AL MOVDX,OFFSET MES1 MOVAH,09H INT21H MOVAX,BX CALLSHOW MOVAX,4C00H INT21H SHOWPROCNEAR MOVAL,BL ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的數(shù) JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL;show character

13、 MOVAH,02H INT21H MOVAL,BL ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H RET ENDPCODE ENDS END START;A4-1.asm;二進(jìn)制雙精度加法運(yùn)算STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA SEGMENTMES1DB'The result is:$'XL DW 65A0HXH DW 0015HYL DW 0B79EHYH DW 002

14、1HDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOVDX,OFFSET MES1 MOVAH,09H INT21H MOV AX,XL ADD AX,YL MOVBX,AX MOV AX,XH ADC AX,YH PUSHBX CALLSHWORD POPBX MOVAX,BX CALLSHWORD MOVAX,4C00H INT21HSHWORDPROCNEAR MOVBL,AH CALLSHOW MOVBL,AL CALLSHOW RET ENDPSHOWPROCNEAR PUSHAX PU

15、SHDX MOVAL,BL ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的數(shù) JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,BL ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H POPDX POPAX RET ENDPCODE ENDS END START;A4-2.asm;十進(jìn)制數(shù)的BCD碼減法運(yùn)算STACK1 S

16、EGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA SEGMENTMES1DB'The result is:$'X DW 0400HY DW 0102HDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AH,00H SAHF MOV SI,OFFSET X MOV AL,SI SBB AL,SI+02H DAS PUSHF AND AL,0FH POPF MOV BL,AL INC SI MOV AL,SI SBB AL,SI+02H DAS PU

17、SHF AND AL,0FH POPF MOV BH,AL MOVDX,OFFSET MES1 MOVAH,09H INT21H MOVAX,BX CALLSHWORD MOVAX,4C00H INT21HSHWORDPROCNEAR MOVBL,AH CALLSHOW MOVBL,AL CALLSHOW RET ENDPSHOWPROCNEAR PUSHAX PUSHDX MOVAL,BL ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的數(shù) JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL;show character MOVAH,0

18、2H INT21H MOVAL,BL ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H POPDX POPAX RET ENDPCODE ENDS END START;A4-3.asm;乘法運(yùn)算STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA SEGMENTMES1 DB 'The result is:$'ERRMES DB 'Error exist!$'DATA1 DB 0

19、0H,02H,03H,04H,05HDATA2 DB 03HRESULTDB 06H DUP(0)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX 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,0005HA1: MOV AL,SI+04H AND AL,0FH CMP AL,09H JNC ERROR DEC SI MUL BL

20、AAM ADD AL,DI+05H AAA MOV DI+05H,AL DEC DI MOV DI+05H,AH LOOP A1 MOVDX,OFFSET MES1 MOVAH,09H INT21H MOV CX,06H MOV SI,OFFSET RESULTA2: CALLSHOW MOVDL,20H MOVAH,02H INT21H INCSI LOOPA2 MOVAX,4C00H INT21HERROR: MOVDX,OFFSET ERRMES MOVAH,09H INT21H MOVAX,4C00H INT21HSHOWPROCNEAR MOVAL,DS:SI ANDAL,0F0H;

21、取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的數(shù) JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,DS:SI ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H RET ENDPCODE ENDS ENDSTART;A4-4.asm;用減奇法開(kāi)平方運(yùn)算STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDD

22、ATASEGMENTMES1DB'The square root of $'MES2DB' is:$'NUMBDW0040HDDATAENDSCODE SEGMENT ASSUME CS: CODE,DS:DDATASTART: MOVAX,DDATA MOVDS,AX MOVDX,OFFSET MES1 MOVAH,09H INT21H MOVSI,OFFSET NUMB MOV AX,SI CALLSHWORD MOVDX,OFFSET MES2 MOVAH,09H INT21H MOVAX,SI MOV CL,00H MOV DX,0001HA1: SUB

23、 AX,DX JB A2 INC CL ADD DX,02H JMP A1A2: MOVBL,CL CALLSHOW MOVAX,4C00H INT21HSHWORDPROCNEAR MOVBL,AH CALLSHOW MOVBL,AL CALLSHOW RET ENDPSHOWPROCNEAR PUSHAX PUSHDX MOVAL,BL ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的數(shù) JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,BL ANDAL,0

24、FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H POPDX POPAX RET ENDPCODE ENDS END START 分支程序設(shè)計(jì)實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康?掌握分支程序的設(shè)計(jì)方法。   實(shí)驗(yàn)內(nèi)容及說(shuō)明     程序有順序、循環(huán)、分支和子程序四種結(jié)構(gòu)形式,分支結(jié)構(gòu)的示意圖如圖1所示。本實(shí)驗(yàn)要求通過(guò)求無(wú)符號(hào)字節(jié)序列中的最大值和最小值來(lái)反映分支程序的結(jié)構(gòu)形式。 圖1 圖2實(shí)驗(yàn)可以使用BH,BL作為暫存現(xiàn)行的最大值和最小值,且在程序的初始

25、,將BH和BL初始化為首字節(jié)的內(nèi)容,然后進(jìn)入循環(huán)操作。在循環(huán)操作中,依次從字節(jié)序列中逐個(gè)取出一個(gè)字節(jié)的內(nèi)容與BH,BL進(jìn)行比較,若取出的字節(jié)內(nèi)容比BH的內(nèi)容大或比BL中的內(nèi)容小,則修改之。當(dāng)循環(huán)結(jié)束操作時(shí),將BH,BL分別送屏幕顯示。參考實(shí)驗(yàn)流程如圖2所示。實(shí)驗(yàn)步驟 (1) 運(yùn)行Tdpit軟件,選擇文件菜單編寫實(shí)驗(yàn)程序;提供8字節(jié)的數(shù)據(jù):0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H。 (2) 使用編譯菜單中的編譯和連接對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接。 (3) 使用編譯菜單中的運(yùn)行,運(yùn)行程序,觀察運(yùn)行結(jié)果。 (4) 更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。 參考程序;A5.as

26、m;分支程序設(shè)計(jì)實(shí)驗(yàn)STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDDATASEGMENTMES1DB 'The least number is:$'MES2 DB 0AH,0DH,'The largest number is:$'NUMBDB 0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9HDDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DDATASTART: MOVAX,DDATA MOVDS,AX MOV SI,OFFSET NUMB MOV CX,0008H

27、JCXZ A4 MOV BH,SI MOV BL,BHA1: LODSB;AL=DS:SI,SI=SI+1 CMP AL,BH JBE A2 MOV BH,AL JMP A3A2: CMP AL,BL JAE A3 MOV BL,ALA3: LOOP A1A4: MOVDX,OFFSET MES1;show mes1 MOVAH,09H INT 21H MOVAL,BL;show the least number ANDAL,0F0H;get the highest 4 bits SHRAL,4 CMPAL,0AH JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL;sh

28、ow character MOVAH,02H INT21H MOVAL,BL ANDAL,0FH;get the lowest 4 bits CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVDX,OFFSET MES2;show mes2 MOVAH,09H INT 21H MOVAL,BH;show the largest number ANDAL,0F0H;get the highest 4 bits SHRAL,4 CMPAL,0AH JBC22 ADDAL,07HC22

29、: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAL,BH ANDAL,0FH;get the lowest 4 bits CMPAL,0AH JBC33 ADD AL,07HC33: ADDAL,30H MOVDL,AL;show character MOVAH,02H INT21H MOVAX,4C00H;go back to dos INT21HCODE ENDS END START 循環(huán)程序設(shè)計(jì)實(shí)驗(yàn) 實(shí)驗(yàn)?zāi)康?掌握循環(huán)程序的設(shè)計(jì)方法。 實(shí)驗(yàn)內(nèi)容及說(shuō)明 本實(shí)驗(yàn)要求通過(guò)求某數(shù)據(jù)區(qū)內(nèi)負(fù)數(shù)的個(gè)數(shù)來(lái)表現(xiàn)循環(huán)程序的結(jié)構(gòu)形式。要求實(shí)驗(yàn)程

30、序在數(shù)據(jù)區(qū)中存放一組數(shù)據(jù),為統(tǒng)計(jì)負(fù)數(shù)的個(gè)數(shù),逐個(gè)判斷區(qū)內(nèi)的數(shù)據(jù),然后將所有數(shù)據(jù)中凡是符號(hào)位為1的數(shù)據(jù)的個(gè)數(shù)累加起來(lái),即得到區(qū)內(nèi)所包含負(fù)數(shù)的個(gè)數(shù)。循環(huán)程序的結(jié)構(gòu)示意如圖1所示。 實(shí)驗(yàn)步驟 (1) 運(yùn)行Tdpit軟件,選擇文件菜單編寫實(shí)驗(yàn)程序。提供10字節(jié)的數(shù)據(jù):12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01H。 (2) 使用編譯菜單中的編譯和連接對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接。 (3) 使用編譯菜單中的運(yùn)行,運(yùn)行程序,觀察運(yùn)行結(jié)果。 (4) 更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。 ;A6.asm;循環(huán)程序設(shè)計(jì)實(shí)驗(yàn)STACK1 SEGMENT STACK DW 256 D

31、UP(?)STACK1 ENDSDDATASEGMENTNUMBDB12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01HMES1DB'The number of negative is:$'DDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DDATASTART: MOVAX,DDATA MOVDS,AX MOVDI,OFFSET NUMB XORBH,BH MOVCX,10DA1: MOV AL,DI TEST AL,80H JE A2 INC BLA2: INC DI LOOP A1 MOVDX,OFFSET MES1

32、;show mes MOVAH,09H INT 21H MOVAL,BL ;show the number of negative ANDAL,0F0H ;get the highest 4 bits SHRAL,4 CMPAL,0AH JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL ;show character MOVAH,02H INT21H MOVAL,BL ANDAL,0FH ;get the lowest 4 bits CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL ;show character MOVAH

33、,02H INT21H MOVAX,4C00H ;go back to dos INT21HCODE ENDS END START綜合程序設(shè)計(jì)實(shí)驗(yàn)  實(shí)驗(yàn)?zāi)康?(1) 掌握分支、循環(huán)、子程序調(diào)用的基本程序結(jié)構(gòu)。 (2) 掌握32位寄存器、指令使用的基本方法。 (3) 學(xué)習(xí)綜合程序的設(shè)計(jì)、編制及調(diào)試。   實(shí)驗(yàn)內(nèi)容及步驟 1排序?qū)嶒?yàn)     本實(shí)驗(yàn)要求編寫一個(gè)程序,對(duì)存貯區(qū)中的一組雙字進(jìn)行排序,并將排序結(jié)果顯示在屏幕上。在編寫過(guò)程中,應(yīng)使用32位寄存器,并且采用基址+變址+偏移的尋址方式。在程序中使用80x86指令系統(tǒng)中有關(guān)32位的指令、尋址方式

34、及32位寄存器時(shí)需要在文件頭使用“.386”或“.386p”。 具體實(shí)驗(yàn)步驟如下: (1) 運(yùn)行Tddebug軟件,選擇Edit菜單編寫實(shí)驗(yàn)程序。 (2) 使用Compile菜單中的Compile和Link對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接。 (3) 使用Rmrun菜單中的Run,運(yùn)行程序,觀察運(yùn)行結(jié)果。 (4) 更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。   2用32位寄存器、指令、擴(kuò)展尋址方式實(shí)現(xiàn)數(shù)碼轉(zhuǎn)換及顯示     本實(shí)驗(yàn)要求將一組ASCII字符轉(zhuǎn)換成十六進(jìn)制數(shù)碼,并在屏幕上顯示出來(lái)。要求使用32位寄存器、32位的指令和尋址方式。如將字符串“This is t

35、angdu speaking!”進(jìn)行轉(zhuǎn)換,應(yīng)轉(zhuǎn)換成:54H、68H、69H、73H、20H、69H、73H、20H、74H、61H、6EH、67H、64H、75H、20H、73H、70H、65H、61H、6BH 、69H、6EH、67H、21H。 具體實(shí)驗(yàn)步驟如下。 (1) 運(yùn)行Tdpit軟件,選擇文件菜單編寫實(shí)驗(yàn)程序。 (2) 使用編譯菜單中的編譯和連接對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接。 (3) 使用運(yùn)行菜單中的運(yùn)行,運(yùn)行程序,觀察運(yùn)行結(jié)果。 (4) 更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。 參考程序:一維字節(jié)數(shù)據(jù)排序STACK1 SEGMENT STACK USE16DB64DUP(?)STACK1

36、 ENDSDATASEGMENTUSE16MES1DB'The array is:$'MES2DB'After sort:$'DATA1DB15H,0D8H,02H,04H,09H,44H,03H,32HCOUNT=8DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART: MOV AX,DATA ;顯示未排序的數(shù)組 MOVDS,AX MOVDX,OFFSET MES1 MOVAH,09H INT 21H CALLKENTER CALLSAHEX CALLKENTER CALLBUBBLE;顯示排序后的數(shù)組 MOVDX,OFF

37、SET MES2 MOVAH,09H INT21H CALLKENTER CALLSAHEX CALLKENTER MOVAX,4C00H INT21HBUBBLEPROC XORSI,SI XORCX,CX MOVSI,OFFSET DATA1 MOVCX,COUNTL1: XORBX,BX XORAX,AXL2: CMPBX,CX JAELB MOVAL,SI+BX+1 MOV DL,SI+BX CMPSI+BX,AL JAELNS XCHGSI+BX,AL MOVSI+BX+1,ALLNS: INCBX JMPL2LB: LOOPL1 RETBUBBLEENDPSAHEXPROCNEAR

38、 XORSI,SI XORCX,CX MOVSI,OFFSET DATA1 MOVCX,COUNTC1: MOVBX,CX DECBX MOVAL,DS:SI+BX ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的數(shù) JBC2 ADDAL,07HC2: ADDAL,30H MOVDL,AL MOVAH,02H INT21H;顯示字符 MOVAL,DS:SI+BX ANDAL,0FH;取低4位 CMPAL,0AH JBC3 ADD AL,07HC3: ADDAL,30H MOVDL,AL;顯示字符 MOVAH,02H INT21H TESTBX,00H JNZC

39、4 MOVDL,20H MOVAH,02H INT21HC4: LOOPC1 RETSAHEXENDPKENTERPROCNEAR MOVDL,0AH MOVAH,02H INT21H MOVDL,0DH MOVAH,02H INT21H RETKENTERENDPCODE ENDS ENDSTART;A8-1.asm;綜合程序設(shè)計(jì)實(shí)驗(yàn)排序?qū)嶒?yàn).386pSTACK1 SEGMENT STACK USE16DB64DUP(?)STACK1 ENDSDATASEGMENTUSE16MES1DB'The array is:$'MES2DB'After sort:$'D

40、ATA1DD110015H,111101D8H,22110002H,111a0004H,1d110009H,111f044H,11d10203H,32HCOUNT=8DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATASTART: MOV AX,DATA ;顯示未排序的數(shù)組 MOVDS,AX MOVDX,OFFSET MES1 MOVAH,09H INT 21H CALLKENTER CALLSAHEX CALLKENTER CALLBUBBLE;顯示排序后的數(shù)組 MOVDX,OFFSET MES2 MOVAH,09H INT21H CALLKENTER

41、CALLSAHEX CALLKENTER MOVAX,4C00H INT21HBUBBLEPROC XORESI,ESI XORECX,ECX MOVSI,OFFSET DATA1 MOVCX,COUNTL1: XOREBX,EBXL2: CMPEBX,ECX JAELB MOVEAX,ESI+EBX*4+4 CMPESI+EBX*4,EAX JGELNS XCHGESI+EBX*4,EAX MOVESI+EBX*4+4,EAXLNS: INCEBX JMPL2LB: LOOPL1 RETBUBBLEENDPSAHEXPROCNEAR XORESI,ESI XORECX,ECX MOVSI,OFFSET DATA1 MOVCX,COUNT*4C1: MOVEBX,ECX DECEBX MOVAL,DS:ESI+EBX ANDAL,0F0H;取高4位 SHRAL,4 CMPAL,0AH;是否是A以上的數(shù) JBC

溫馨提示

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

評(píng)論

0/150

提交評(píng)論