微機(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è)
免費(fèi)預(yù)覽已結(jié)束,剩余27頁(yè)可下載查看

下載本文檔

版權(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)算類(lèi)程序?qū)嶒?yàn)6分支程序設(shè)計(jì)實(shí)驗(yàn) 17循環(huán)程序設(shè)計(jì)實(shí)驗(yàn) 19綜合程序設(shè)計(jì)實(shí)驗(yàn)21顯示程序?qū)嶒?yàn)實(shí)驗(yàn)?zāi)康?1)掌握在PC機(jī)上以十六進(jìn)制形式顯示數(shù)據(jù)的方法。(2)掌握部分DOS功能調(diào)用使用方法。熟悉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ò)DO創(chuàng)能調(diào)用完成一些提示信息的顯示。實(shí)驗(yàn)中可使用 DOS5tj能調(diào)用(INT 21H)。(1)顯示單個(gè)字符輸出入口: A

2、H=02H調(diào)用參數(shù):口1=輸出字符(2)顯示字符串入口: AH=09H調(diào)用參數(shù):DS:DX=串地址,$'為結(jié)束字符(3)鍵盤(pán)輸入并回顯入口: AH=01H返回參數(shù):人1=輸出字符返回DOS系統(tǒng)入口: AH=4CH調(diào)用參數(shù):AL=返回碼實(shí)驗(yàn)步驟(1)運(yùn)彳T Tdpit軟件,選擇文件菜單,點(diǎn)擊新建,進(jìn)入一個(gè)源文件編輯界面。根據(jù)實(shí)驗(yàn)內(nèi)容的描述編寫(xiě)實(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)使用編譯菜單中的調(diào)試,調(diào)試程序,觀察調(diào)試過(guò)程中,數(shù)據(jù)傳輸指令執(zhí)行 后,各寄存器及數(shù)據(jù)區(qū)

3、的內(nèi)容。(5)更改數(shù)據(jù)區(qū)中的數(shù)據(jù),檢查程序的正確性。參考程序清單DATASEGMENTMESDB 'Show a as hex:',0AH,0DH,'$'SDDB 'a'DATAENDSCODEEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET MES ;顯示提示信息MOV AH,09HINT 21HMOV DI,OFFSET SDMOV AL,DS:DIAND AL,0F0H;取高 4 位SHR AL,4CMP AL,0AH圖1;是否是A以上的數(shù)JB C2ADD

4、 AL,07HC2: ADD AL,30HMOV DL,ALMOV AH,02H;顯示字符INT 21HMOV AL,DS:DIAND AL,0FH;取低 4 位CMP AL,0AHJB C3ADD AL,07HC3: ADD AL,30HMOV DL,AL;顯示字符MOV AH,02HINT 21HMOV AX,4C00H;返回 DOSINT 21HCODEENDSEND START數(shù)據(jù)傳送實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康氖煜dpit集成環(huán)境和調(diào)試器的使用。(2)掌握與數(shù)據(jù)有關(guān)的不同尋址方式。實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)要求將數(shù)據(jù)段中的一個(gè)字符串傳送到附加段中,并輸出附加段中的目標(biāo)字符串到屏幕上。實(shí)驗(yàn)步驟(1)運(yùn)行Tdpi

5、t軟件,選擇文件菜單,點(diǎn)擊新建進(jìn)行實(shí)驗(yàn)程序的編寫(xiě)。(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ù),考察程序的正確性。參考程序:DDATA SEGMENT;定義源數(shù)據(jù)段MSRDB "HELLO,WORLD!$”LENEQU $- MSRDDATA ENDSEXDASEGMENT;定義附加數(shù)據(jù)段MSD DB LEN DUP(?)EXDAENDSMYSTACK SEGMENT STACK;定義堆棧段DW 2

6、0 DUPMYSTACK ENDSCODEEGMENT;定義代碼段ASSUME CS:CODE,DS:DDATA,ES:EXDASTART: MOV AX,DDATAMOV DS,AX;裝載數(shù)據(jù)段寄存器MOV AX,EXDAMOV ES,AX;裝載附加數(shù)據(jù)段寄存器MOV SI,OFFSET MSR;設(shè)置 SIMOV DI,OFFSET MSD;設(shè)置 DIMOV CX,LENNEXT:MOV AL,SI;開(kāi)始傳輸數(shù)據(jù)MOV ES:DI,ALINC SIINC DIDEC CXJNZ NEXTPUSH ESPOP DS;將附加段寄存器指向的段值賦給數(shù)據(jù)段寄存器MOV DX,OFFSET MSDMO

7、V AH,9INT 21HMOV AX,4C00H;利用DOSJ能調(diào)用返回 DOS犬態(tài)INT 21HCODENDSEND START將程序主體部分的寄存器間接尋址方式改為相對(duì)尋址方式,則如下所示:MOV BX,0MOV CX,LENNEXT:MOV AL,MSRBXMOV ES:MSDBX,ALINC BXLOOP NEXT運(yùn)算類(lèi)程序?qū)嶒?yàn)實(shí)驗(yàn)?zāi)康?1)掌握運(yùn)算類(lèi)指令編程及調(diào)試方法。(2)掌握運(yùn)算類(lèi)指令對(duì)各狀態(tài)標(biāo)志位的影響及測(cè)試方法。實(shí)驗(yàn)內(nèi)容及說(shuō)明80x86指令系統(tǒng)提供了實(shí)現(xiàn)加、減、乘、除運(yùn)算的基本指令,可對(duì)表 1 所示的數(shù)據(jù)類(lèi)型進(jìn)行算術(shù)運(yùn)算。表1酶二進(jìn)制BCD碼帶符號(hào)無(wú)符號(hào)is旨運(yùn)暨招+ -操

8、作數(shù)字節(jié)、字、多精度字節(jié)(二位數(shù)字)字節(jié)(一位數(shù)字)1 .二進(jìn)制雙精度加法運(yùn)算本實(shí)驗(yàn)要求計(jì)算 X+Y=Z,將2果Z輸出到屏幕,其中 X=001565A0H, Y=0021B79EH實(shí)驗(yàn)利用累加器 AX,先求低十六位和,并存入低址存儲(chǔ)單元,后求高16位和,再存入高址存儲(chǔ)單元。由于低位和可能向高位有進(jìn)位,因而高位字相加語(yǔ)句需用ADC指令,則低位相加有進(jìn)位時(shí),CF=1,高位字相加時(shí),同時(shí)加上CF中的1。在80386以上微機(jī)中可以直接使用32位寄存器和32位加法指令完成本實(shí)驗(yàn)的功能。2 .十進(jìn)制數(shù)的 BC加減法運(yùn)算本實(shí)驗(yàn)要求計(jì)算 X-Y=Z,其中,X、Y、Z為BC幽,其中X=0400H, Y=0102

9、H。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指令系統(tǒng)中有乘除法指令但沒(méi)有開(kāi)平方指令,因此,開(kāi)平方運(yùn) 算是通過(guò)程序來(lái)實(shí)現(xiàn)的。用減奇數(shù)法可求得近似平方根,獲得平方根的整數(shù)部分。我們知道,N個(gè)自然數(shù)中的奇數(shù)之和等于N2,即:_ 21+3+5=9=3 一 _421+3+5+7=16=4 _ _ _一 _ 21+3+5+7+9+11+13+15=64=8若要做S的開(kāi)方運(yùn)算,那麼就可以從S中逐次減去自然數(shù)中的奇數(shù)1 ,3, 5, 7,一直進(jìn)行到相減數(shù)為0或不夠減

10、下一個(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)彳f Tdpit軟件,選擇文件菜單進(jìn)行實(shí)驗(yàn)程序的編寫(xiě)。(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 STACKDW 256 DUPSTACK1 ENDSDATA SEGMEN

11、TMES1 DB 'The result is:$'XDB 03HYDB 05HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AH,00HMOV SI,OFFSET XMOV AL,SIADD AL,SI+01HAND AL,0FHMOV BL,ALMOV DX,OFFSET MES1MOV AH,09HINT 21HMOV AX,BXCALL SHOWMOV AX,4C00HINT 21HSHOW PROC NEARMOV AL,BLAND AL,0F0H;取高 4 位SHR

12、 AL,4CMP AL,0AH;是否是A以上的數(shù)JB C2ADD AL,07HC2: ADD AL,30HMOV DL,AL;show characterMOV AH,02HINT 21HMOV AL,BLAND AL,0FH;取低 4 位CMP AL,0AHJBC3ADDAL,07HC3: ADD AL,30HMOV DL,AL;show characterMOV AH,02HINT 21HRETENDPCODE ENDSEND START;A4-1.asm;二進(jìn)制雙精度加法運(yùn)算STACK1 SEGMENT STACKDW 256 DUPSTACK1 ENDSDATA SEGMENTMES1

13、DB'The result is:$'XLDW65A0HXHDW0015HYLDW0B79EHYHDW0021HDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOVAX,DATAMOVDS,AXMOV DX,OFFSET MES1MOV AH,09HINT 21HMOVAX,XLADDAX,YLMOV BX,AX MOVAX,XHADCAX,YHPUSHBXCALLSHWORDPOP BX MOV AX,BX CALL SHWORD MOV AX,4C00H INT 21HSHWORD PROC NEAR MOV BL,AH

14、 CALL SHOW MOV BL,AL CALL SHOW RET ENDPSHOW PROC NEAR PUSH AX PUSH DX MOV AL,BL AND AL,0F0H SHR AL,4 CMP AL,0AH JB C2 ADD AL,07HC2:ADD AL,30HMOV DL,AL MOV AH,02H INT 21H MOV AL,BL AND AL,0FH CMP AL,0AH JB C3ADD AL,07HC3:ADD AL,30H;取高4位;是否是A以上的數(shù);show character;取低4位;show characterMOV DL,AL MOV AH,02HI

15、NT 21H POP DX POP AX RET ENDPCODE ENDS END START ;A4-2.asm;十進(jìn)制數(shù)的BCD碼減法運(yùn)算 STACK1 SEGMENT STACKDW 256 DUPSTACK1 ENDSDATA SEGMENTMES1 DB 'The result is:$'XDW 0400HYDW 0102HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATA MOV DS,AX MOV AH,00H SAHFMOV SI,OFFSET XMOV AL,SISBB AL,SI+0

16、2H DASPUSHFAND AL,0FHPOPF MOV BL,AL INC SI MOV AL,SI SBB AL,SI+02HDAS PUSHFAND AL,0FH POPFMOV BH,ALMOV DX,OFFSET MES1MOV AH,09HINT 21HMOV AX,BXCALL SHWORDMOV AX,4C00HINT 21HSHWORD PROC NEAR MOV BL,AH CALL SHOW MOV BL,AL CALL SHOW RET ENDPSHOW PROC NEAR PUSH AX PUSH DX MOV AL,BL AND AL,0F0H SHR AL,4

17、CMP AL,0AH JB C2 ADD AL,07HC2:ADD AL,30HMOV DL,AL MOV AH,02H INT 21H MOV AL,BL AND AL,0FH CMP AL,0AH JB C3ADD AL,07HC3:ADD AL,30H;取高4位;是否是A以上的數(shù);show character;取低4位;show characterMOV DL,AL MOV AH,02H INT 21HPOP DX POP AX RET ENDP CODE ENDSEND START ;A4-3.asm ;乘法運(yùn)算 STACK1 SEGMENT STACKDW 256 DUP STACK

18、1 ENDSDATA SEGMENTMES1DB 'The result is:$'ERRMES DB 'Error exist!$' DATA1 DB 00H,02H,03H,04H,05H DATA2 DB 03HRESULT DB 06H DUP(0) DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DA TA START: MOVAX,DA TAMOVDS,AXMOVSI,OFFSETDA TA2MOVBL,SIANDBL,0FHCMPBL,09HJNC ERROR MOVSI,OFFSET DA TA1MOVDI,OFF

19、SETRESULTMOVCX,0005HA1:MOVAL,SI+04HANDAL,0FHCMPAL,09HJNC ERROR DECSIMULBLAAM ADDAL,DI+05HAAAMOVDI+05H,ALDECDIMOVDI+05H,AHLOOPA1MOV DX,OFFSET MES1MOV AH,09HINT 21HMOVCX,06HMOVSI,OFFSET RESULTA2:CALLSHOWMOV DL,20HMOV AH,02HINT 21HINC SILOOP A2MOV AX,4C00HINT 21HERROR: MOVDX,OFFSET ERRMESMOV AH,09HINT

20、21HMOV AX,4C00HINT 21HSHOW PROC NEARMOV AL,DS:SIAND AL,0F0H;取高 4位SHR AL,4CMP AL,0AH;是否是 A以上的數(shù)JB C2ADD AL,07HC2:ADD AL,30HMOV DL,AL;show characterMOV AH,02HINT 21HMOV AL,DS:SIAND AL,0FH;取低 4 位CMP AL,0AHJB C3ADDAL,07HC3:ADD AL,30HMOV DL,AL;show characterMOV AH,02H INT 21H RET ENDPCODE ENDS END START ;

21、A4-4.asm ;用減奇法開(kāi)平方運(yùn)算 STACK1 SEGMENT STACKDW 256 DUPSTACK1 ENDSDDATA SEGMENTMES1DB 'The square root of $'MES2 DB ' is:$' NUMB DW 0040H DDATA ENDS CODESEGMENTASSUME CS: CODE,DS:DDA TA START: MOV AX,DDATA MOV DS,AX MOV DX,OFFSET MES1 MOV AH,09H INT 21H MOV SI,OFFSET NUMB MOVAX,SICALLSHWO

22、RDMOV DX,OFFSET MES2 MOV AH,09H INT 21H MOV AX,SI MOVCL,00HMOVDX,0001HA1:SUB AX,DXJB A2 INC CL;取高4位;是否是A以上的數(shù);show character;取低4位;show characterADD DX,02H JMP A1 A2:MOV BL,CLCALL SHOW MOV AX,4C00H INT 21HSHWORD PROC NEAR MOV BL,AH CALL SHOWMOV BL,AL CALL SHOW RET ENDPSHOW PROC NEAR PUSH AX PUSH DX MO

23、V AL,BL AND AL,0F0H SHR AL,4 CMP AL,0AH JB C2 ADD AL,07HC2:ADD AL,30HMOV DL,AL MOV AH,02H INT 21H MOV AL,BL AND AL,0FH CMP AL,0AH JB C3ADD AL,07HC3:ADD AL,30HMOV DL,AL MOV AH,02H INT 21H POP DX POP AX RET ENDPCODE ENDSEND START分支程序設(shè)計(jì)實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康恼莆辗种С绦虻脑O(shè)計(jì)方法。實(shí)驗(yàn)內(nèi)容及說(shuō)明程序有順序、循環(huán)、分支和子程序四種結(jié)構(gòu)形式,分支結(jié)構(gòu)的示意圖如圖1所示。本實(shí)驗(yàn)要求通

24、過(guò)求無(wú)符號(hào)字節(jié)序列中的最大值和最小值來(lái)反映分實(shí)驗(yàn)可以使用 BH, BL作為暫存現(xiàn)行的最大值和最小值,且在程序的初始,將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)彳f Tdpit軟件,選擇文件菜單編寫(xiě)實(shí)驗(yàn)程序;提彳8字節(jié)的數(shù)據(jù):0D9旦07H, 8BH, 0C5H, 0EBH, 04H, 9DH, 0F9H。(2)使用編譯菜單中的編譯和連接對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接。(

25、3)使用編譯菜單中的運(yùn)行,運(yùn)行程序,觀察運(yùn)行結(jié)果。(4)更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。參考程序;A5.asm;分支程序設(shè)計(jì)實(shí)驗(yàn)STACK1 SEGMENT STACKDW 256 DUPSTACK1 ENDSDDATA SEGMENTMESDB 'The least number is:$'MES2 DB 0AH,0DH,'The largest number is:$'NUMDB 0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9HDDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DDATASTART:

26、MOV AX,DDATAMOV DS,AXMOV SI,OFFSET NUMBMOVCX,0008HJCXZ A4MOV BH,SIMOV BL,BHA1: LODSB;AL=DS:SI,SI=SI+1CMP AL,BHJBE A2MOV BH,ALJMP A3A2: CMP AL,BLJAE A3MOV BL,ALA3: LOOP A1A4: MOV DX,OFFSET MES1 ;show mes1MOV AH,09HINT21HMOV AL,BL;show the least numberANDAL,0F0H;get the highest 4 bitsSHR AL,4CMP AL,0A

27、HJBC2ADD AL,07HC2: ADDAL,30HMOV DL,AL;show characterMOV AH,02HINT21HMOV AL,BLAND AL,0FH;get the lowest 4 bitsCMP AL,0AHJBC3ADD AL,07HC3: ADDAL,30HMOVDL,AL;show characterMOVAH,02HINT21HMOVDX,OFFSET MES2 ;show mes2MOVAH,09HINT21HMOVAL,BH;show the largest numberANDAL,0F0H;get the highest 4 bitsSHRAL,4C

28、MPAL,0AHJBC22ADDAL,07HC22:ADDAL,30HMOVDL,AL;show characterMOVAH,02HINT21HMOVAL,BHANDAL,0FH;get the lowest 4 bitsCMPAL,0AHJBC33ADDAL,07HC33:ADDAL,30HMOVDL,AL;show characterMOVAH,02HINT21HMOVAX,4C00H;goback to dosINT21HCODE ENDSEND START循環(huán)程序設(shè)計(jì)實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康恼莆昭h(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í)

29、驗(yàn)程序在數(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)彳f Tdpit軟件,選擇文件菜單編寫(xiě)實(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 STACKDW 256 D

30、UP STACK1 ENDS DDATA SEGMENT NUMBDB 12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01HMES1DB 'The number of negative is:$'DDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DDA TA START: MOV AX,DDATA MOV DS,AX MOV DI,OFFSET NUMB XOR BH,BH MOV CX,10D A1:MOV AL,DITEST AL,80H JE A2 INC BL A2:INC DILOOP A1 MOV DX,OF

31、FSET MES1;show mesMOV AH,09H INT 21H MOV AL,BL;show the number of negativeAND AL,0F0H;get the highest 4 bitsSHR AL,4 CMP AL,0AH JB C2 ADD AL,07HC2:ADD AL,30HMOV DL,AL;show characterMOV AH,02H INT 21H MOV AL,BL AND AL,0FH;get the lowest 4 bitsCMP AL,0AH JB C3 ADDAL,07HC3:ADD AL,30HMOV DL,AL;show char

32、acterMOV AH,02HINT 21HMOV AX,4C00H;go back to dosINT 21HCODE 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)要求編寫(xiě)一個(gè)程序,對(duì)存貯區(qū)中的一組雙字進(jìn)行排序,并將排序結(jié)果顯示在屏幕上。在編寫(xiě)過(guò)程中,應(yīng)使用32位寄存器,并且采用基址+變址+偏移的尋址方式。在程序中使用 80x86指令系統(tǒng)中有關(guān) 32位的指令、尋址方式及32位寄存器時(shí)需要在文件頭使用“ .386”或“.3

33、86p”。具體實(shí)驗(yàn)步驟如下: 運(yùn)彳f Tddebug軟件,選擇Edit菜單編寫(xiě)實(shí)驗(yàn)程序。 使用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 tangdu speaking! ” 進(jìn)行轉(zhuǎn)換,應(yīng)轉(zhuǎn)換成:54H、68H、69H、73H 20H、69H、73H、20H、

34、74H、61H、6EH、67H、64H、75H、20H、73H、70H、65H、61H、6BH、 69H、6EH 67H、21H。 具體實(shí)驗(yàn)步驟如下。(1)運(yùn)彳f Tdpit軟件,選擇文件菜單編寫(xiě)實(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 USE16DB 64 DUP STACK1 ENDSDATA SEGMENT USE16MES1 DB 'The array is:$'MES2 DB &#

35、39;After sort:$'DATA1 DB 15H,0D8H,02H,04H,09H,44H,03H,32HCOUNT =8DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA; 顯示未排序的數(shù)組MOV DS,AXMOV DX,OFFSET MES1MOV AH,09HINT21HCALLKENTERCALLSAHEXCALLKENTERCALL BUBBLE;顯示排序后的數(shù)組MOV DX,OFFSET MES2 MOV AH,09H INT 21H CALLKENTERCALL SAHEX CALLKENTE

36、RMOV AX,4C00H INT 21H BUBBLE PROCXOR SI,SI XOR CX,CX MOV SI,OFFSET DATA1 MOV CX,COUNT L1: XOR BX,BX XOR AX,AX L2: CMP BX,CXJAE LBMOV AL,SI+BX+1MOV DL,SI+BX CMP SI+BX,AL JAE LNS XCHG SI+BX,AL MOV SI+BX+1,AL LNS: INC BXJMP L2 LB: LOOP L1RET BUBBLE ENDP SAHEX PROC NEAR XOR SI,SI XOR CX,CX MOV SI,OFFSET

37、 DATA1 MOV CX,COUNT C1: MOV BX,CXDEC BXMOV AL,DS:SI+BXAND AL,0F0H;取高 4 位SHR AL,4CMP AL,0AH;是否是A以上的數(shù)JB C2 ADD AL,07H C2: ADD AL,30HMOV DL,AL MOV AH,02H INT 21H;顯示字符MOV AL,DS:SI+BX AND AL,0FH;取低 4 位CMP AL,0AH JB C3 ADDAL,07HC3: ADD AL,30HMOV DL,AL;顯示字符USE16MOV AH,02H INT 21H TEST BX,00H JNZ C4 MOV DL,

38、20H MOV AH,02H INT 21H C4: LOOP C1 RET SAHEX ENDP KENTER PROC NEAR MOV DL,0AH MOV AH,02H INT 21H MOV DL,0DH MOV AH,02H INT 21H RET KENTER ENDP CODE ENDS END START ;A8-1.asm ;綜合程序設(shè)計(jì)實(shí)驗(yàn)-排序?qū)嶒?yàn) .386p STACK1 SEGMENT STACKDB 64 DUPSTACK1 ENDSDATA SEGMENT USE16MES1 DB 'The array is:$'MES2 DB 'Aft

39、er sort:$'DATA1 DD 110015H,111101D8H,22110002H,111a0004H,1d110009H ,111f044H,11d10203H,32HCOUNT =8DATA ENDSCODE SEGMENT USE16ASSUMECS:CODE,DS:DATASTART: MOVAX,DA TA;顯示未排序的數(shù)組MOV DS,AXMOV DX,OFFSET MES1MOV AH,09HINT 21HCALLKENTERCALLSAHEXCALLKENTERCALLBUBBLE;顯示排序后的數(shù)組MOV DX,OFFSET MES2MOV AH,09HINT

40、 21HCALLKENTERCALLSAHEXCALLKENTERMOV AX,4C00HINT 21HBUBBLE PROCXOR ESI,ESIXOR ECX,ECXMOV SI,OFFSET DA TA1MOV CX,COUNTL1:XOR EBX,EBXL2:CMP EBX,ECXJAE LBMOV EAX,ESI+EBX*4+4CMP ESI+EBX*4,EAXJGE LNS XCHG ESI+EBX*4,EAX MOV ESI+EBX*4+4,EAX LNS:INC EBXJMP L2 LB:LOOP L1RET BUBBLE ENDP SAHEX PROC NEAR XOR ESI,ESI XOR ECX,ECX MOV SI,OFFSET DA TA1 MOV CX,COUNT*4 C1:MOV EBX,ECXDEC EBX MOV AL,DS:ESI+EBX AND AL,0F0H;取高 4 位SHR AL,4 CMP AL,0AH;是否是 A以上的數(shù)JB C2 ADD AL,07H C2:ADD AL,30HMOV DL,AL MOV AH,02H

溫馨提示

  • 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)論