微機(jī)原理實(shí)驗(yàn)指導(dǎo)書-20190627_第1頁
微機(jī)原理實(shí)驗(yàn)指導(dǎo)書-20190627_第2頁
微機(jī)原理實(shí)驗(yàn)指導(dǎo)書-20190627_第3頁
微機(jī)原理實(shí)驗(yàn)指導(dǎo)書-20190627_第4頁
微機(jī)原理實(shí)驗(yàn)指導(dǎo)書-20190627_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、微機(jī)原理與接口實(shí)驗(yàn)指導(dǎo)書鹽城工學(xué)院光電信息技術(shù)研究所周 鋒 編寫2019 年 6 月 8 日實(shí)驗(yàn)一 EMU8086軟件使用 3實(shí)驗(yàn)二數(shù)據(jù)傳送實(shí)驗(yàn) 8實(shí)驗(yàn)三算術(shù)邏輯運(yùn)算及移位操作實(shí)驗(yàn) 11實(shí)驗(yàn)四串操作實(shí)驗(yàn) 15實(shí)驗(yàn)五字符及字符串的輸入輸出實(shí)驗(yàn) 19實(shí)驗(yàn)六直線與分支程序設(shè)計(jì)實(shí)驗(yàn) 22實(shí)驗(yàn)七循環(huán)程序設(shè)計(jì)實(shí)驗(yàn) 28實(shí)驗(yàn)八綜合程序設(shè)計(jì) 344基礎(chǔ)軟件實(shí)驗(yàn)部分共有8 個(gè)實(shí)驗(yàn)組成,通過對這些實(shí)驗(yàn)程序的編寫、調(diào)試,使學(xué)生熟悉8086/8088 的指令系統(tǒng)等,了解程序設(shè)計(jì)過程,掌握匯編程序設(shè)計(jì)方法以及如何使用實(shí)驗(yàn)系統(tǒng)提供的各種調(diào)試、分析手段來排除程序錯(cuò)誤。實(shí)驗(yàn)一 EMU 8086 軟件使用EMU 808是一款基

2、于WindowS勺集編輯、匯編、鏈接、調(diào)試運(yùn)行于一體的可 視化的8086 CPU©真軟件,有著與8086十分相近的功能。EMU8086交互式學(xué)習(xí) 匯編語言(Assembly Language)、計(jì)算機(jī)結(jié)構(gòu)(Computer Architecture )和逆 向工程(Reverse Engineering )的完整仿真體系。其內(nèi)部集成了匯編程序匯編器、鏈接器、虛擬硬件、參考資料、例程、學(xué)習(xí)指南等。EMU8086學(xué)習(xí)Intel 8086 微處理器的理想工具,它模擬真實(shí)微處理器的每一步驟,并顯示內(nèi)部寄存器、存儲器、 堆棧、 變量和標(biāo)志寄存器,而且其中任何一個(gè)數(shù)值都可通過鼠標(biāo)雙擊來改變。同時(shí)

3、它還提供了微機(jī)顯示器、直流步進(jìn)電機(jī)、交通燈、LED?虛擬外設(shè)。實(shí)驗(yàn)1對EMU 8086勺使用方法作一簡介,以HELLO1序?yàn)槔?,參考例程?下所示:;DSEG SEGMENTMSG1 DB 'Hello,this is a sample program!',0DH,0AH,'$'DSEG ENDS; ;SSEG SEGMENT STACKST1 DB 100 DUP()TDP EQU $-ST1SSEG ENDS; ;CSEG SEGMENTASSUME CS:CSEG,DS:DSEG,SS:SSEGSTART: MOV AX,DSEGMOV DS,AXMOV

4、AX,SSEGMOV SS,AXMOV SP,TDPMOV AH,9MOV DX,OFFSET MSG1INT 21HMOV AH,4CHINT 21HCSEG ENDSEND START;* ;雙擊EMU8081H標(biāo),打開程序。此時(shí)會彈出 welcome窗口,見圖1-1所示, 可將該窗口關(guān)閉直接進(jìn)入編輯狀態(tài); 也可點(diǎn)擊它的new按鈕,則會彈出代碼模板 選擇框供用戶選擇(可選擇 EXE模板),見圖1-2所示,一般點(diǎn)擊Cancel按鈕, 直接進(jìn)入編輯狀態(tài)。在編輯窗口,可直接將源程序輸入,見圖 1-3所示。圖 1-1 welcome 窗口:巾:O36 sxnd wicrcpEGiZEiffscrr

5、 eKolatar 4? 口51 Cill 噌Ui L 11liVriX|l4£ hl!*,/學(xué)41 血/4蜘>!|I4 Ia整合 .Q. 陽而引rm«gi41acwplcservetmulaicCeP0Eaar c ravtri orDB ' Hello ith * s i s a samNSGl DSEC SSEC sn PDF SSEG CSEG8TARF:ENDS seghent srncK DB 100 Dyh?) 皿 a-sn ENDS SEGHENrASSUME CS;CSE6.DS:D$EG.SS;SSEGple prmi! ' ODH

6、i??贖 'CSEGnnv rinvnnv MOV rinv 電 INT inv INT ENDSOX. DSEGS, AXRXr SSEGSS. H;:SP.TDPAH.9DX.UFFSEr HSG121HRH.dCH 21HEND STfiRfdr4 j鼻fil3卜*00 op整7圖1-3編輯窗口輸入源程序點(diǎn)擊compile (編譯)按鈕則進(jìn)行匯編和鏈接,生成.EXE文件,并提示存盤。點(diǎn)擊emulate (仿真)按鈕則可進(jìn)入8086仿真器界面,見圖1-4所示。界 面中提供了寄存器窗口、內(nèi)存單元窗口及反匯編窗口,下方一行按鈕則提供了虛 擬屏幕、源代碼觀察、復(fù)位、輔助工具、變量、 DE

7、BUG堆棧及FLAGS(標(biāo)志寄存器)觀察等功能用戶可點(diǎn)擊run連續(xù)運(yùn)行程序,也可點(diǎn)擊single step對程序進(jìn)行單步調(diào)試 圖1-5為HELLO.EXE勺運(yùn)行結(jié)果,用戶通過虛擬屏幕觀察,非常形象生動。etHml Fit nr ; hrH lGk 胖jtgf dILnad . reHad10-single step1riinfila jvgth WtbuM T*i4w 4Mt.am.aJ. irarto.al dcvi z&s: virtxidl ilrivoDT1DfJj0OUDDoaQJ00AM AHQDD oTis1U當(dāng)A li )DUUJOD03DOt1AOOODOTIA.OJ

8、OOQ._A0071A1071A2N456 了 89ABCDEF AAa A A AAAA AAA Amu 11 Ulm 了77了了 了7 77了717y00eee000eB1I0ESDB10E0C 4。49A8DB60B0BkB 467 81D 100Id I ImbdN Iz649? 880099618104080030co工 NL00I1 N1H10IL%! ATSd他喈。匕*MOV AX. 00710hMOV MOV MOV MOV MOV MOV JNT MOV INT NOP NOP NOP NOP NOPSSAD0AD圖1-4 8086仿真器界面6圖1-5 HELLO.EXE的運(yùn)

9、行結(jié)果EMU 8086s供了斷點(diǎn)設(shè)置功能,見圖1-6所示,先用鼠標(biāo)選中要設(shè)置為斷 點(diǎn)的指令,然后點(diǎn)擊菜單 debugset break point ,即可設(shè)置斷點(diǎn)。若要清除斷點(diǎn),貝點(diǎn)擊菜單 debugclear break point 。LeBulator: hello, ezefile mathdeb”view eYttrnal virtuU d&vicis virtual irive helpF3Shift+IStep delay ms; Leadstep 匕mskF6呼 m eoriditi口n.run imtil(D71ESK)Ctrl+F«r-nnF9stopxt

10、bfE。point (C71£6h)clear break point (D7IBBh) wh口w current brstk point1015SPEPSIDID5ES07000000riooDiurrsM 口品truulion (at C3;工FlFTS4tir toU7ZC0F- 071C1: 071C2; 071C3:1 t.)otl rOTimj Shift+Ctrl+FT百444斗4q4-1-n0000990X9ooo11圖1-6斷點(diǎn)設(shè)置EMU 8086也支持DEBUGS試程序,仿真器界面下方的一行按鈕中有debug按鈕,點(diǎn)擊打開后可輸入 DEBUGT令進(jìn)行調(diào)試。見圖1-

11、7所示。圖 1-7 EMU 8086 提供的 DEBUG實(shí)驗(yàn)二數(shù)據(jù)傳送實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康暮鸵? .熟悉8086指令系統(tǒng)的數(shù)據(jù)傳送指令及8086的尋址方式。2 .利用EMU8086m式工具調(diào)試匯編語言程序。3 .通過觀察深入掌握數(shù)據(jù)傳送類指令的功能。4 .初步理解匯編語言程序設(shè)計(jì)方法。二、實(shí)驗(yàn)任務(wù)編輯匯編程序,并匯編、鏈接和調(diào)試程序,驗(yàn)證結(jié)果。三、實(shí)驗(yàn)設(shè)備和軟件PC機(jī)、EMU8086四、實(shí)驗(yàn)內(nèi)容1 . MOV指令實(shí)驗(yàn)通過下述程序段的輸入和執(zhí)行來熟悉 EMU8086勺實(shí)用,并用單步調(diào)試的方式 來觀察每條指令執(zhí)行的結(jié)果。MOV BL,08HMOV CL,BLMOV AX,03FFHMOV BX,AX

12、MOV DS:0020H,BX2 .堆棧操作指令實(shí)驗(yàn)用一下程序段將一組數(shù)據(jù)壓入堆棧區(qū),并觀察以三種方式出棧的結(jié)果,并把 程序調(diào)試的結(jié)果寫入表2-1中。(按照完整的匯編語言程序設(shè)計(jì)步驟進(jìn)行)表2-1出棧后數(shù)據(jù)的變化第一種出棧方式第二種出棧方式第二種出棧方式AX=BX=CX=DX=程序段如下:MOV AX,0102HMOV BX,0304HMOV CX,0506HMOV DX,0708HPUSH AXPUSH BXPUSH CXPUSH DX;*第一種出棧方式:POP DXPOP CXPOP BXPOP AX;*第二種出棧方式:POP AXPOP BXPOP CXPOP DX;第三種出棧方式:PO

13、P CXPOP DXPOP AXPOP BX3 .將DS:1000H字節(jié)存儲單元中的內(nèi)容發(fā)送到DS:2020H單元中存放。試著分別用 8086 的直接尋址、寄存器間接尋址、寄存器相對尋址方式實(shí)現(xiàn)數(shù)據(jù)傳送。參考程序如下:;*; 第一種方式,直接尋址MOV 1000H,1234H ; 設(shè)置初始值MOV AX,1000HMOV 2020H,AX;*; 第二種方式,寄存器間接尋址MOV 1000H,1234H ; 設(shè)置初始值MOV BX,1000HMOV AX,BXMOV BX,2020HMOV BX,AX;*; 第三種方式,寄存器相對尋址MOV 1000H,1234H ; 設(shè)置初始值MOV BX,1

14、000HMOV AX,BXMOV BX,2000HMOV SI,20HMOV BX+SI,AX;* ;4 .設(shè)AX寄存器中的內(nèi)容為1111H, BX寄存器的內(nèi)容為2222H,將AX寄存器 中的內(nèi)容與BX寄存器內(nèi)容進(jìn)行交換,然后再講 BX寄存器中的內(nèi)容與DS:0010H 單元中的內(nèi)容進(jìn)行交換。試著編寫程序段,并上機(jī)驗(yàn)證結(jié)果。參考程序如下:;* ;;交換指令XCHGMOV AX,1111H ;設(shè)置初始值MOV BX,2222HXCHG AX,BXXCHG BX,0010H;* ;五、實(shí)驗(yàn)練習(xí)題1 .指出下列指令的錯(cuò)誤并加以改正,然后用EMU808知行調(diào)試(1) MOV BX,SI(2) MOV A

15、H, BX(3) MOV AX, SIDI(4) MOV BYTE PTRBX,2000H(5) MOV CS,AX(6) MOV DS,2000H2 .設(shè)DS=1000H,ES=2000H,t應(yīng)的內(nèi)存單元中的內(nèi)容如圖 9-12所示。要求編 寫程序段,將圖中所示數(shù)據(jù)段的1個(gè)字單元的內(nèi)容傳送到 AX寄存器,附加段1 個(gè)字節(jié)的內(nèi)容傳到BX寄存器。( FFH JEEHDDHCCH實(shí)驗(yàn)三算術(shù)邏輯運(yùn)算及移位操作實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康暮鸵? .熟悉8086指令系統(tǒng)的邏輯運(yùn)算指令和移位指令的功能。2 . 了解標(biāo)志寄存器各標(biāo)志位的意義和指令執(zhí)行對它的影響。3 .熟悉在PC上簡歷、匯編、鏈接、執(zhí)行和調(diào)試 8086匯

16、編語言的全過程。4 .初步理解匯編語言程序設(shè)計(jì)方法。二、實(shí)驗(yàn)任務(wù)編輯匯編程序,并匯編、鏈接和調(diào)試程序,驗(yàn)證結(jié)果。三、實(shí)驗(yàn)設(shè)備和軟件PC機(jī)、EMU8086四、實(shí)驗(yàn)內(nèi)容1 .理解指令執(zhí)行及其對標(biāo)志位的影響本實(shí)驗(yàn)共包含5段程序,程序段代碼如表3-1至3-5所示。要求:(1)自行定義所需要的邏輯段,并分別將表3-1中各段程序代碼填寫在代碼段中;(2)完成程序的匯編、鏈接,并在 EMU808郵境中單步執(zhí)行程序段;(3)觀察個(gè)程序段中每條指令的執(zhí)行結(jié)果(寄存器或內(nèi)容單元中數(shù)據(jù)的變 化)及其對標(biāo)志位的影響表3-1程序段1執(zhí)行結(jié)果及標(biāo)志位程序段1:執(zhí)行結(jié)果標(biāo)志位CFZFSFOFPFAFMOV AX,1018H

17、MOV SI,030AHMOV SI,AXADD AL,30HMOV DX,3FFHADD AX,DXMOV DS:WORD PTR20H,1000HADD SI,AXPUSH AXPOP BXAX=SI=SI=AL=DX=AX=20H=SI=SP=BX=表3-2程序段2執(zhí)行結(jié)果及標(biāo)志位程序段2:執(zhí)行結(jié)果標(biāo)志位CFZFSFOFPFAFMOV AX,0A0AH ADD AX,0FFFFHMOV CX,0FF00H ADC AX,CX SUB AX,AX INC AXOR CX,0FFHAND CX,0F0FHMOV DS:10H,CXAX=AX=CX=AX=AX=AX=CX=CX=10H=表3-

18、3程序段3執(zhí)行結(jié)果及標(biāo)志位程序段3:執(zhí)行結(jié)果標(biāo)志位CFZFSFOFPFAFMOV BL,25HMOV DS:BYTE PTR10H,4MOV AL,DS:10HMUL BLBL=10H=AL=AX=表3-4程序段4執(zhí)行結(jié)果及標(biāo)志位程序段4:執(zhí)行結(jié)果標(biāo)志位CFZFSFOFPFAFMOV DS:WORD PTR10H,80HMOV BL,4MOV AX,DS:10HDIV BL10H=BL=AX=AX=表3-5程序段5執(zhí)行結(jié)果及標(biāo)志位程序段5:執(zhí)行結(jié)果標(biāo)志位CFZFSFOFPFAFMOV AX,0DEC AXADD AX,3FFFHADD AX,AXNOT AXSUB AX,3OR AX,0FBF

19、DHAND AX,0AFCFHSHL AX,1RCL AX,1AX=AX=AX=AX=AX =AX=AX=AX=AX=AX =2. 無符號字節(jié)數(shù)求和與求乘積程序設(shè)計(jì)編寫程序?qū)崿F(xiàn):用BX寄存器作為地址指針,為BX賦值0010H;將BX所指向的內(nèi)存單位開始連續(xù)存入3 個(gè)無符號數(shù)(10H、 04H、 30H) ;計(jì)算內(nèi)存單元中的這3個(gè)數(shù)之和,并將結(jié)果存放到0013H單元中去;再求出這3個(gè)數(shù)之積,獎(jiǎng)乘積存 放到0014H為首地址的單元中。寫出完成此功能的程序段并上機(jī)驗(yàn)證結(jié)果。 參考 程序如下所示:;* ;DSEG SEGMENTNUM DB 100 DUP(0)DSEG ENDSCSEG SEGMEN

20、TASSUME CS:CSEG, DS:DSEGSTART:MOV AX,DSEGMOV DS,AX;*; 程序段 1:MOV BX,0010H;完成賦初值10H、 04H、 30HMOV BYTE PTRBX,10HINC BXMOV BYTE PTRBX,04HINC BXMOV BYTE PTRBX,30H ;MOV BX,0010H; 完成 3個(gè)數(shù)累加,并存放結(jié)果,0013H=44HMOV AL,BXINC BXADD AL,BXINC BXADD AL,BXINC BXMOV BX,AL ;MOV BX,0010H; 完成 3個(gè)數(shù)累乘,并存放結(jié)果,0014H=0COOHMOV AL,

21、BXINC BXMUL BXINC BXMUL BXMOV 0014H,AX; * ;CSEG ENDSEND START五、實(shí)驗(yàn)練習(xí)題1.寫出完成下述功能的程序段,并說明程序運(yùn)行的最后結(jié)果AX值。(1)傳送15H到AL寄存器;(2)再將AL的內(nèi)容乘以2;(3)接著傳送15H到BL寄存器;(4)最后把AL的內(nèi)容乘以BL的內(nèi)容。2. 寫出完成下述功能的程序段,并說明程序運(yùn)行后的商。(1)傳送數(shù)據(jù)2058H到DS:1000H單元中,數(shù)據(jù)12H至U DS:1002H中;(2)把DS:1000Hl元中的數(shù)據(jù)傳送到 AX寄存器;(3)把AX寄存器的內(nèi)容算術(shù)右移二位;(4)再把AX寄存器的內(nèi)容除以DS:1

22、002H字節(jié)單元中的數(shù);(5)最后把商存入字節(jié)單元 DS:1003H中。38實(shí)驗(yàn)四 串操作實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康暮鸵?. 熟悉8086 指令系統(tǒng)的串操作指令功能及串操作指令的實(shí)用方法。2. 學(xué)習(xí)8086 匯編語言程序的基本結(jié)構(gòu)。3. 熟悉在PC上簡歷、匯編、鏈接、執(zhí)行和調(diào)試 8086匯編語言的全過程。4. 初步理解匯編語言程序設(shè)計(jì)方法。二、實(shí)驗(yàn)任務(wù)1. 復(fù)習(xí) 8086 指令系統(tǒng)中的串操作類指令。2 .認(rèn)真閱讀預(yù)備知識中EMU8086k機(jī)步驟,熟悉匯編語言程序的建立、匯編、 鏈接、執(zhí)行和調(diào)試全過程。3 . 根據(jù)本實(shí)驗(yàn)的編程提示及題目要求再實(shí)驗(yàn)前編寫好實(shí)驗(yàn)中的程序段。三、實(shí)驗(yàn)設(shè)備和軟件PC機(jī)、EMU8

23、086四、實(shí)驗(yàn)內(nèi)容1. 串操作指令應(yīng)用實(shí)驗(yàn)。編寫匯編語言源程序結(jié)構(gòu)框架。定義程序中所用串操作指令要求的數(shù)據(jù)段和附加段,并定義代碼段。( 1)在代碼段中輸入以下程序段并運(yùn)行之,回答后面的問題。CLDMOV DI,1000H;DIMOV AX,55AAHMOV CX,10HREP STOSW從ES:100H開始的16個(gè)字單元的內(nèi)容是什么?執(zhí)行后DI=?CX= ? 請解釋其原因參考代碼如下:;DSEG SEGMENTORG 100HNUM1 DB 50 DUP(0)DSEG ENDS.*ESEG SEGMENTORG 200HNUM2 DB 50 DUP(0)ESEG ENDS;CSEG SEGME

24、NTASSUME CS:CSEG, DS:DSEG ES:ESEGSTART:MOV AX,DSEGMOV DS,AXMOV AX,ESEGMOV ES,AX;CLD ; 地址按照加法向下增長MOV DI,1000H;DI默認(rèn)是ES段ES:1000H開始連續(xù)32個(gè)字節(jié)賦值55AAHMOV AX,55AAHMOV CX,10HREP STOSWMOV AH,4CHINT 21H;CSEG ENDSEND START( 2) 若將數(shù)據(jù)段與附加段定義為重合段,則上述代碼執(zhí)行后,數(shù)據(jù)段 1000H起始的16 個(gè)字單元內(nèi)容是什么?參考程序如下:; *DSEG SEGMENTNUM1 DB 100 DUP

25、(0)DSEG ENDSCSEG SEGMENTASSUME CS:CSEG, ES:DSEG, DS:DSEGSTART:MOV AX,DSEGMOV DS,AXMOV ES,AX ; 數(shù)據(jù)段和附加段地址重疊MOV AX,DSEGMOV ES,AX; *CLD ;地址按照加法向下增長MOV DI,1000HMOV AX,55AAHMOV CX,10HREP STOSWMOV AH,4CHINT 21H ; CSEG ENDS END START ( 3)在上題的基礎(chǔ)上,在代碼段中再輸入以下程序段并運(yùn)行,編程序調(diào)試運(yùn)行,并回答問題:從ES:2000H開始的16個(gè)字單元的內(nèi)容是什么?執(zhí)行后 SI

26、=?DI=1020 CX=0 并分析。參考程序如下:; *CSEG SEGMENTASSUME CS:CSEG, DS:DSEG ES:ESEGSTART:MOV AX,1000HMOV DS,AXMOV ES,AX; *CLD ; 地址按照加法向下增長MOV DI,1000H;DI默認(rèn)是ES段ES:1000H開始連續(xù)32個(gè)字節(jié)賦值55AAH MOV AX,55AAHMOV CX,10H REP STOSW MOV SI,1000H MOV DI,2000H MOV CX,20H REP MOVSB MOV AH,4CH INT 21H; ;CSEG ENDS END START2. 串傳送程

27、序設(shè)計(jì)實(shí)驗(yàn)。從DS:1000H 開始存放有一個(gè)字符串"This is astring",要求把這個(gè)字符串從;后往前傳送到DS:2000H開始的內(nèi)存區(qū)域中(即 傳送結(jié)束后,從DS:2000H開始的;內(nèi)存單元的內(nèi)容為"gnirts a si sihT" ),試 編寫程序段并上機(jī)驗(yàn)證。參考程序如下:; *DSEG SEGMENT ;ORG 1000H DB 'This is a string' DB 1000 DUP(1)DSEG ENDSDW 100 DUP(0)STACK ENDS; *CSEG SEGMENTASSUME CS:CSEG,

28、 DS:DSEG SS:STACKSTART:MOV AX,DSEGMOV DS,AXMOV ES,AXMOV SI,00HMOV DI,20HCLDMOV CX,16TAG:CLDLODSBSTDSTOSBLOOP TAGMOV AH,4CHINT 21H;CSEG ENDSEND START五、實(shí)驗(yàn)練習(xí)題1. 簡要說明執(zhí)行串操作指令之前應(yīng)初始化哪些寄存器和標(biāo)志位。2. 總結(jié)串操作指令的用途及使用方法。實(shí)驗(yàn)五字符及字符串的輸入輸出實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康暮鸵?. 熟悉如何調(diào)用系統(tǒng)功能進(jìn)行字符及字符串的輸入和輸出。2. 掌握在PC機(jī)上建立、匯編、鏈接和運(yùn)行 8088匯編語言程序的過程。3. 編寫簡單

29、的算法程序。二、實(shí)驗(yàn)任務(wù)編輯匯編程序,并匯編、鏈接和調(diào)試程序,驗(yàn)證結(jié)果。三、實(shí)驗(yàn)設(shè)備和軟件PC機(jī)、EMU8086四、實(shí)驗(yàn)內(nèi)容4. 尋找最大最小數(shù)程序?qū)嶒?yàn)BUF單BUF設(shè)內(nèi)存緩沖區(qū)從BUF單元開始,存放若干個(gè)單字節(jié)數(shù),其數(shù)據(jù)長度在 元,要求找出最大數(shù)送 MAW元,最小數(shù)送MIN單元。參考源程序:;*;FILENAME: 5-1.ASM;尋找最大最小數(shù)程序?qū)嶒?yàn);設(shè)內(nèi)存緩沖區(qū)從BUF單元開始,存放若干個(gè)單字節(jié)數(shù),其數(shù)據(jù)長度在;單元,要求找出最大數(shù)送 MAW元,最小數(shù)送MIN單元。; *DATA SEGMENTBUF DB 9 , -4, 55, 78, -81 , 0, 41, 124B1 EQU

30、$-BUFMAX DB 0MIN DB 0DATA ENDS; *CODE SEGMENTASSUME C: SCOD,E DS: DATASTART: MOV AX, DATAMOV DS, AXMOV CH, 0MOV CL, B1;CX=數(shù)據(jù)個(gè)數(shù)DEC CX;循環(huán)次數(shù)MOV AL, BUF;第一個(gè)數(shù)據(jù)送AL寄存器MOV MAX, AL;假設(shè)第一個(gè)數(shù)是最大數(shù)MOV MIN,AL;假設(shè)第一個(gè)數(shù)是最小數(shù)MOV BX, OFFSET BUF+1 ; 下一個(gè)數(shù)據(jù)地址LAST:MOV AL, BXCMP AL, MAX;比較JG GREATCMP AL, MINJL LESSJMP NEXTGREA

31、T:MOV MAX, AL;大數(shù) ->MAXJMP NEXTLESS: MOV MIN, AL;小數(shù) ->MINNEXT: INC BXLOOP LASTMOV AH, 4CHINT 21HCODE ENDSEND START; *5. 代碼轉(zhuǎn)換實(shí)驗(yàn)從鍵盤輸入2個(gè)十進(jìn)制數(shù)組合成壓縮BCM存入DL再將壓縮BC叩轉(zhuǎn)換 成ASCII碼送CRT顯示。.*;FILENAME: 5-2.ASM;代碼轉(zhuǎn)換程序?qū)嶒?yàn);從鍵盤輸入2個(gè)十進(jìn)制數(shù)組合成壓縮 BCM存入DL,再將壓縮BCDK轉(zhuǎn) 換;成ASCII碼送CRT®示。;例如:輸入12,則顯示12;輸入CD則顯示34; '0'

32、;=30H 'A'=41H 'B'=42H 'a'=61H, *CODE SEGMENTASSUME CS:CODEST: MOV AH, 01H ;鍵盤輸入并顯示,AL=U入字符INT 21HMOV CL, 4SHL AL, CL ; 輸入的數(shù)據(jù)左移四位MOV DL, AL ; 暫存數(shù)據(jù)MOV AH, 01H; 鍵盤輸入并顯示,AL=U入字符INT 21HAND AL, 0FH ; 清除剛輸入的數(shù)據(jù)高4 個(gè)位OR DL, AL ;合成壓縮BCD5馬MOV BL, DLSHR DL, CL保護(hù)DL原值處理壓縮BCM高位,右移動4位OR DL, 3

33、0H ;數(shù)字0的ASCII碼為30H,把高半字節(jié)變成 ASCIIMOV AH, 02H ;顯示十位數(shù),DL=U出字符INT 21HMOV DL, BL ;處理壓縮BCM低位,變成 ASCII輸出AND DL, 0FHOR DL, 30HMOV AH, 02H; 顯示個(gè)位數(shù)INT 21HMOV AH, 4CHINT 21HCODE ENDSEND ST要求先編寫匯編文件,EMU8086采用單步調(diào)試的方法進(jìn)行運(yùn)行調(diào)試,任意輸入兩個(gè)數(shù)字,驗(yàn)證實(shí)驗(yàn)結(jié)果。五、實(shí)驗(yàn)練習(xí)題1 .說明INT 21H系統(tǒng)功能調(diào)用中01H號功能、02H號功能的作用,使用方法, 并指出輸入數(shù)據(jù)存放到哪個(gè)寄存器中。2 . 查找 IN

34、T 21H 系統(tǒng)功能調(diào)用指令,說明如何實(shí)現(xiàn)字符集字符串的輸入輸出?實(shí)驗(yàn)六直線與分支程序設(shè)計(jì)實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康暮鸵? .學(xué)習(xí)應(yīng)用匯編語言進(jìn)行加減運(yùn)算的方法。2 .學(xué)習(xí)提示信息的顯示及鍵盤輸入字符的方法。3 .學(xué)會編寫簡單的直線和分支算法程序。二、實(shí)驗(yàn)任務(wù)認(rèn)真閱讀程序提示及字符串的輸入輸出方法,理解直線程序是順序結(jié)構(gòu)程序,根據(jù)本實(shí)驗(yàn)的編程提示和程序框架預(yù)先編寫匯編語言源程序,并驗(yàn)證結(jié)果。三、實(shí)驗(yàn)設(shè)備和軟件PC機(jī)、EMU8086四、實(shí)驗(yàn)內(nèi)容1 .直線程序設(shè)計(jì)圖6-1直線程序控制流程圖(1)在NU般量中定義了 5個(gè)無符號字節(jié)數(shù)據(jù) U V、W X、Y,再定義字節(jié) 變量乙編寫程序計(jì)算Z= (U+V-W*X

35、 /Y,并將結(jié)果輸出顯示到屏幕上。程序流 程如圖 6-1 所示。程序測試數(shù)據(jù)分別是:U=09H, V=16H, W=02H, X=03H, Y=05H。(2)若將上述5個(gè)字節(jié)數(shù)據(jù)修改為:U=7Q V=23, W=42 X=17, Y=41,重 新運(yùn)行并解釋原因。(自己修改程序編程);*;FILENAME: 6-1.ASM;運(yùn)算Z=( U+V-W*X) /Y;在NU度量中定義了 5個(gè)無符號字節(jié)數(shù)據(jù)U、V、W X、Y,再定義字節(jié)變;量Z。編寫程序計(jì)算Z= (U+V-W*X /Y,并將結(jié)果輸出顯示到屏幕上。; 程序流程如圖6-1 所示。程序測試數(shù)據(jù)分別是:U=09H, V=16H, W=02H,;

36、X=03H, Y=05H。; *DSEG SEGMENTBUF DB 09H , 16H, 02H, 03H, 05H,0DSEG ENDS; *CSEG SEGMENTASSUME CS:CSEG, DS:DSEGSTATR:MOV AX,DSEG MOV DS,AX ; *MOV AL,BUF+2 ; 做運(yùn)算Z=( U+V-W*X) /YMUL BUF+3MOV BL,AL; *MOV AX,0MOV AL,BUFADD AL,BUF+1 SUB AL,BL ; * MOV BL,BUF+4 DIV BLMOV BUF+5,AL ;結(jié)果存放在 AL中; *AND AL, 0FH ; 清除剛

37、輸入的數(shù)據(jù)高4個(gè)位OR DL, AL ;合成壓縮BC則MOV BL, DL;保護(hù)DL原值SHR DL, CL;處理壓縮BC則高位,右移動4位OR DL, 30H;數(shù)字0的ASCII碼為30H,把高半字節(jié)變成ASCIIMOV AH, 02H;顯示十位數(shù),DL= 俞出字符INT 21H處理壓縮BC則低位,變成ASCII輸出MOV DL, BL AND DL, 0FH OR DL, 30H MOV AH, 02H ;顯示個(gè)位數(shù)INT 21H;*MOV AH, 4CH INT 21H CSEG ENDSEND STATR2 .分支程序設(shè)計(jì)從鍵盤輸入一個(gè)十進(jìn)制正整數(shù) N (106碼9 ),將其轉(zhuǎn)換成為十

38、六進(jìn)制數(shù),轉(zhuǎn) 換的結(jié)果顯示在屏幕上。(鍵盤輸入的內(nèi)容都是ASCII的形式)(1)程序流程可以參照圖6-1所示。其中“顯示結(jié)果”處理框可編寫成為子程序,其流程圖如圖6-2所小。圖6-1分支程序設(shè)計(jì)流程圖6-2 AL低4位轉(zhuǎn)換為ASCII碼并顯示(2)字符09的ASCII碼是30H39H,即在數(shù)值09的基礎(chǔ)上加30H;字符AF的ASCII是41H-46H,即在數(shù)值 AF的基礎(chǔ)上加37Ho參考程序如下:*;FILENAME: 6-1.ASM;從鍵盤輸入一個(gè)十進(jìn)制正整數(shù)N (10<N< 99),將其轉(zhuǎn)換成為十六進(jìn); 制數(shù),轉(zhuǎn)換的結(jié)果顯示在屏幕上。; 例如輸入12,顯示0C ;輸入47,顯示

39、2F; *DSEG SEGMENTSTR DB 3,0,3 DUP(0)MES DB 'Input a decimal number(10-99):',0AH,0DH,'$'MES1 DB 0AH,0DH,'Show decimal number as hex;$'FORAL DB 0DSEG ENDS; *CSEG SEGMENTASSUME CS:CSEG, DS:DSEGSTART:MOV AX,DSEG;初始化MOV DS,AX; *LEA DX,MES ; 輸出提示"Input a decimal number(1099):&

40、quot;MOV AH,9INT 21H; *LEA DX,STR ; 輸入字符到STRMOV AH, 10INT 21H; *MOV AH,STR+2 ; 將 ASCII 碼的兩位十進(jìn)制數(shù)轉(zhuǎn)換成為二進(jìn)制數(shù)SUB AH,30HMOV AL,STR+3SUB AL,30H; *SHL AH , 1 ;AL=AH*10+ALMOV BL,AHSHL AH,1SHL AH,1ADD AH,BLADD AL,AHMOV FORAL,AL; *LEA DX,MES1 ; 輸出提示"Show decimal number as hex:"MOV AH,9INT 21H; *MOV AL

41、,FORAL轉(zhuǎn)換并輸出AHMOV BL,ALMOV CL,4SHR BL,CLCMP BL,0AHJB L1ADD BL,7L1:ADD BL,30HMOV DL,BLMOV AH,2INT 21H; *MOV AL,FORAL ; 轉(zhuǎn)換并輸出AHAND AL,0FHCMP AL,0AHJB L2ADD AL,7L2:ADD AL,30HMOV DL,ALMOV AH,2INT 21H; *KEY:MOV AH,1 ; 判斷是否有按鍵按下?INT 16H; 觀察結(jié)果,并使程序有控制的退出JZ KEY ; 這三條指令可以省略MOV AH,4CH ;返回OS的指令序列INT 21HCSEG END

42、SEND START設(shè)內(nèi)存緩沖區(qū)從BUF單元開始,存放若干個(gè)單字節(jié)數(shù),其數(shù)據(jù)長度在 BUF單 元,要求找出最大數(shù)送 MAW元,最小數(shù)送MIN單元。要求先編寫匯編文件,EMU8086采用單步調(diào)試的方法進(jìn)行運(yùn)行調(diào)試,任意 輸入兩個(gè)數(shù)字,驗(yàn)證實(shí)驗(yàn)結(jié)果。五、實(shí)驗(yàn)練習(xí)題1 .說明INT 21H系統(tǒng)功能調(diào)用中01H號功能、02H號功能的作用,使用方法, 并指出輸入數(shù)據(jù)存放到哪個(gè)寄存器中。2 . 查找 INT 21H 系統(tǒng)功能調(diào)用指令,說明如何實(shí)現(xiàn)字符集字符串的輸入輸 出?實(shí)驗(yàn)七循環(huán)程序設(shè)計(jì)實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康暮鸵?. 掌握提示信息的顯示及鍵盤輸入字符的方法。2. 掌握循環(huán)程序的設(shè)計(jì)方法。二、實(shí)驗(yàn)任務(wù)1. 復(fù)

43、習(xí)比較指令、轉(zhuǎn)移指令、循環(huán)指令的用法。2. 認(rèn)真閱讀編程提示及字符與字符串的輸入和輸出方法。3. 根據(jù)編程提示,編寫出匯編語言源程序。學(xué)習(xí)使用EMU80861成環(huán)境軟件,驗(yàn)證及編寫調(diào)試實(shí)驗(yàn)內(nèi)容的程序。三、實(shí)驗(yàn)設(shè)備和軟件PC機(jī)、EMU8086四、實(shí)驗(yàn)內(nèi)容以完整程序結(jié)構(gòu)編寫實(shí)現(xiàn)下述功能的匯編語言程序。在屏幕上顯示提示信息“Please input 10 numbers:”。根據(jù)提示,由鍵盤輸入10個(gè)數(shù)(數(shù)的范圍 為099)。將輸入的這10個(gè)數(shù)從小到大進(jìn)行排序,并統(tǒng)計(jì) 059、6079、 8099的數(shù)各有多少。將排序后的10個(gè)數(shù)顯示到屏幕上(每個(gè)數(shù)之間用逗號 分隔) ,并顯示統(tǒng)計(jì)的結(jié)果。顯示格式如下:Sorted numbers:xx,xx,xx,xx,xx,xx,xx,xx,xx,xx 0 59:xx 60 79:xx 80 99:xx(1)提示信息的顯示。提示信息需要預(yù)先定義在數(shù)據(jù)段中,用 DB偽指令 定義。字符串前后加單引號,結(jié)尾必須用美元符號'$' 作為字符串的結(jié)束。若希望提示信息后光標(biāo)能在下一行的起始位置顯示,應(yīng)在字符串后加回車和換行

溫馨提示

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

最新文檔

評論

0/150

提交評論