欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      電子科大計算機學院 語言程序設(shè)計 實驗報告 99分精品版

      時間:2019-05-14 04:33:50下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《電子科大計算機學院 語言程序設(shè)計 實驗報告 99分精品版》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《電子科大計算機學院 語言程序設(shè)計 實驗報告 99分精品版》。

      第一篇:電子科大計算機學院 語言程序設(shè)計 實驗報告 99分精品版

      電子科技大學 計算機科學與工程

      學院

      標 準 實 驗 報 告

      (實驗)課程名稱

      匯編語言與微機接口技術(shù)綜合實驗

      電子科技大學教務(wù)處制表

      電 子 科 技 大 學

      (一)學生姓名:郫縣英格拉姆

      學 號:2014123456789

      指導教師:皮皮怪

      實驗地點:主樓A2_412

      實驗時間:2017年4月25日星期二

      一、實驗室名稱:

      主樓A2_412機房

      二、實驗項目名稱:匯編語言編程訓練

      三、實驗學時:3學時

      四、實驗原理:(包括知識點,電路圖,流程圖)

      知識點

      (一)課后自學——使用DOSBox在win7 x64位下搭建匯編環(huán)境 1.軟件安裝

      a.安裝3DOSBox b.準備debug.exe,masm.exe,link.exe,edit.exe文件。2.使用

      a.DOSBox安裝完成后,打開,可發(fā)下它的提示符是:“Z:>”,這是DOSBox里的虛擬盤。我們需要更改到我們自己的盤符,如果直接更改的話,會提示你錯誤。首先需要mount到自己的目錄。

      b.比如我們準備將D:DEBUG作為我們自己的匯編測試目錄,則執(zhí)行“mount C D:DEBUG”命令,這樣C盤符也就虛擬成了自己本地電腦的D:DEBUG目錄。我們在DOSBox中切換到C盤符時,也就實際上切換到了D:DEBUG目錄。c.將debug.exe,masm.exe,link.exe,edit.com放置于D:DEBUG目錄下,我們就能在DOSBox下直接使用它們了。3.配置

      上面我們?yōu)槭褂肈OSBox,要mount到我們本地目錄,但是我們每一次打開DOSBox都要進行這兩步,有點麻煩,可以通過下面的操作來保存配置。a.開始->所有程序->DOSBox-0.74->Options->DOSBox 0.74 Options,在文本的最后位置找到“[autoexec]”:

      [autoexec] # Lines in this section will be run at startup.# You can put your MOUNT lines here.b.然后將下面的2條命令寫在此處:第一條命令的作用是mount目錄,第二條命令的作用是mount之后切換到D盤符:

      mount C D:DEBUG C: 知識點

      (二)課堂講述——相關(guān)知識介紹

      1.生成可執(zhí)行程序的過程

      ·建立匯編源程序(*.asm)

      ·匯編源程序文件,生成目標文件(*.obj)、·連接目標文件,生成可執(zhí)行文件(*.exe)·運行調(diào)試程序 2.匯編

      假設(shè)masm.exe在D盤根目錄下,編輯了一個名為demo.asm的源文件,則通過命令

      D:>masm demo.asm;擴展名可以忽略,默認為asm類型 得到匯編結(jié)果,如下圖所示:

      ·擴展名為*.lst的文件稱為列表文件,該文件對于后續(xù)的調(diào)試十分有用。

      關(guān)于列表文件(*.lst)

      列表文件同時列出源程序和機器語言程序清單,并給出段表、段的大小及屬性,以及用戶定義的符號表、符號類型及屬性,對于調(diào)試程序十分有用。3.連接

      在生成了目標文件demo.obj以后,通過輸入命令 D:>link demo.obj;LINK.EXE是連接程序,同樣的,擴展名可以忽略,默認為obj類型

      得到連接結(jié)果,如下圖所示:

      4.調(diào)試

      a.關(guān)于DEBUG.EXE b.DEBUG.EXE的用法

      在DOS的提示符下,如下鍵入:c.DEBUG.EXE的注意事項 d.本實驗課需要的DEBUG指令

      運行命令G、追蹤命令T、繼續(xù)命令P、顯示內(nèi)存單元內(nèi)容命令D、退出命令Q

      修改內(nèi)存單元內(nèi)容命令E、檢查和修改寄存器內(nèi)容的命令R

      流程圖

      五、實驗電路(本次實驗無電路圖)

      六、實驗內(nèi)容:(介紹自己所選的實驗內(nèi)容)

      實驗內(nèi)容一:

      學習“第4章 順序、分支、循環(huán)程序例子.ppt”,按照要求完成下列題目并給出實驗結(jié)果(至少選擇兩個):我選擇1、2

      1、利用學號查學生的數(shù)學成績表

      在數(shù)據(jù)段中建立一個成績表TABLE,表中的成績按照學生學號從小到大的順序存放。要查的學號存放在變量NUM中,查表的結(jié)果放在變量MATH中。(用XLAT指令進行查表)

      2、無符號數(shù)排序

      數(shù)據(jù)段的ARY數(shù)組中存放有10個無符號數(shù),試找出其中最大者送入MAX單元。(用LOOP指令做循環(huán))

      實驗內(nèi)容二:

      學習“第4 子程序設(shè)計例子(1).ppt”,用“堆棧傳遞參數(shù)”的方式編程并運行給出結(jié)果.將兩個給定的二進制數(shù)(8位和16位)轉(zhuǎn)換為ASCII碼字符串。用堆棧傳遞參數(shù),要求:分步驟給出堆棧狀態(tài)和運行結(jié)果。

      七、實驗步驟:(編輯調(diào)試的過程)實驗一:

      題目1.利用學號查學生的數(shù)學成績表

      1、根據(jù)題目要求,建立匯編源程序,用Windows系統(tǒng)自帶的記事本進行編輯,另存為projec1.asm,并保存至masm.exe所在目錄中。

      2、匯編源程序文件,生成目標文件project1.obj;

      3、通過link命令連接目標文件,生成可執(zhí)行文件project1.exe;

      4、運行調(diào)試程序,鍵入debug project1.asm,參考LST文件,通過G命令、D命令進行調(diào)試,分析結(jié)果。(分析過程見報告第九部分)。題目2.無符號數(shù)排序

      1、根據(jù)題目要求,建立匯編源程序,用Windows系統(tǒng)自帶的記事本進行編輯,另存為projec2.asm,并保存至masm.exe所在目錄中。

      2、匯編源程序文件,生成目標文件project2.obj

      3、通過link命令連接目標文件,生成可執(zhí)行文件project2.exe

      4、運行調(diào)試程序,參考LST文件,通過G命令、D命令進行調(diào)試,分析結(jié)果,(分析過程見報告第九部分)。

      實驗二:

      題目:用“堆棧傳遞參數(shù)” 的方式編程,將兩個給定的二進制數(shù)(8位和16位)轉(zhuǎn)換為ASCII碼字符串。

      1.根據(jù)題目要求,建立匯編源程序,用Windows系統(tǒng)自帶的記事本進行編輯,另存為projec4.asm,并保存至masm.exe所在目錄中。

      2.匯編源程序文件,生成目標文件project4.obj 3.通過link命令連接目標文件,生成可執(zhí)行文件project4.exe 4.運行調(diào)試程序,通過G命令、D命令進行調(diào)試,分析結(jié)果(分析過程見報告第九部分)。

      八、實驗結(jié)果:(源程序代碼,必要的中文注釋,以及運行結(jié)果,包括截圖或者拍照)實驗一 第一題

      源代碼及其注釋如下:

      TITLE TABLE LOOKUP DATA SEGMENT;數(shù)據(jù)段

      TABLE DB 01, 02, 03, 04, 05, 06, 07, 82, 09, 10

      DB 11, 12, 13, 14, 15, 16, 17, 18, 19, 20;為了便于調(diào)試,把82之外的數(shù)據(jù)進行特殊處理,使其數(shù)值等于所在的位置 NUM DB 8;學號為8 MATH DB ? DATA ENDS STACK1 SEGMENT PARA STACK;堆棧段

      DW 20H DUP(0)STACK1 ENDS

      COSEG SEGMENT

      ASSUME CS:COSEG,DS:DATA,SS:STACK1 START: MOV AX,DATA MOV DS,AX;裝入DS

      MOV BX,OFFSET TABLE;BX指向表首地質(zhì)

      XOR AH,AH;AH清零

      MOV AL,NUM;NUM值賦給AL

      DEC AL;因為實際學號從1開始 XLAT;查表

      MOV MATH,AL;存結(jié)果

      MOV AH,4CH

      INT 21H COSEG ENDS

      END START

      運行結(jié)果介紹及截圖、分析:

      運行調(diào)試程序,通過G命令、D命令進行調(diào)試,分析結(jié)果。

      查看PROJECT1.LST文件,可以分析出調(diào)試的方法,分析過程見圖標記:

      根據(jù)上述分析輸入指令g 0013、d0015 l1進行調(diào)試,結(jié)果見下圖:

      結(jié)果分析:MATH中成績?yōu)?2h,對應(yīng)十進制82,而在程序源代碼中對成績的定義情況如下,其中的學號為8對應(yīng)的成績確實為82:

      符合要求,實驗成功。

      實驗一:第二題

      源代碼及其注釋如下:

      DATA SEGMENT

      ARY DB 01,16,02,03,04,05,06,07,08,09 MAX DB ? DATA ENDS

      STACK1 SEGMENT PARA STACK DW 20H DUP(0)STACK1 ENDS

      CODE SEGMENT

      ASSUME CS:CODE,DS:DATA,SS:STACK1 BEGIN:

      MOV AX,DATA MOV DS,AX;裝入DS

      MOV SI,OFFSET ARY;SI指向ARY第一個元素

      MOV CX,9;CX做計數(shù)器

      MOV AL,[SI];取第一個元素到AL LOP: INC SI;SI指向后一個元素

      CMP AL,[SI];比較兩個數(shù)

      JAE BIGER;前元素>=后元素,則跳到BIGER進行處理

      MOV AL,[SI];取較大數(shù)到AL BIGER: LOOP LOP;循環(huán)執(zhí)行LOOP

      MOV MAX, AL;存最大數(shù)

      MOV AH,4CH

      INT 21H CODE ENDS END BEGIN

      運行結(jié)果介紹及截圖、分析:

      運行調(diào)試程序,通過G命令、D命令進行調(diào)試,分析結(jié)果。

      查看PROJECT2.LST文件,可以分析出調(diào)試的方法,分析過程見圖標記:

      根據(jù)上述分析輸入指令g 0019、d000a l1進行調(diào)試,結(jié)果見下圖:

      MATH中成績?yōu)?0h,對應(yīng)十進制數(shù)16,確實是我編寫的十個數(shù)中的最大數(shù):

      符合要求,實驗成功。

      實驗二:堆棧傳遞參數(shù),轉(zhuǎn)化ASCII碼

      代碼及注釋如下:

      DATA SEGMENT BIN1 DB 35H BIN2 DW 0AB48H ASCBUF DB 20H DUP(?)DATA ENDS

      STACK1 SEGMENT PARA STACK DW 20H DUP(65535);對應(yīng)OFFFFH 便于查看內(nèi)存單元時確定堆棧位置 STACK1 ENDS

      COSEG SEGMENT

      ASSUME CS:COSEG,DS:DATA,SS:STACK1

      BEGIN: MOV AX,DATA MOV DS,AX

      XOR AX,AX;清零AX

      MOV AH,BIN1;第一個數(shù)據(jù)送AH

      PUSH AX;待轉(zhuǎn)換數(shù)據(jù)壓棧

      MOV AX,8

      PUSH AX;待轉(zhuǎn)換位數(shù)壓棧

      LEA DI,ASCBUF PUSH DI;存放ASCII碼首址壓棧

      CALL BINASC;調(diào)用轉(zhuǎn)換子程序

      MOV AX,BIN2;第二個數(shù)據(jù)送AX

      PUSH AX;待轉(zhuǎn)換數(shù)據(jù)壓棧

      MOV AX,10H

      PUSH AX;待轉(zhuǎn)換位數(shù)壓棧

      ADD DI,8

      PUSH DI;DI+8壓棧

      CALL BINASC;調(diào)用轉(zhuǎn)換子程序

      MOV AH,4CH INT 21H BINASC PROC

      PUSH AX

      PUSH CX

      PUSH DX

      PUSH DI

      MOV BP,SP

      MOV DI,[BP+10];從堆棧取入口參數(shù)

      MOV CX,[BP+12]

      MOV DX,[BP+14]

      LOP: ROL DX,1;LOP為將所給轉(zhuǎn)化為ASCII的算法

      MOV AL,DL

      AND AL,1ADD AL,30H MOV [DI],AL

      INC DI

      LOOP LOP POP DI

      POP DX

      POP CX

      POP AX

      RET 6;返回并從堆棧中彈出6個字節(jié) BINASC ENDP COSEG ENDS END BEGIN

      分析:

      首先單步運行幾條指令,通過d 00 查看內(nèi)存單元狀態(tài),檢測堆棧段等的設(shè)置是否成功:

      空間看起來有問題:上面顯示00的部分是設(shè)置的ASCBUF應(yīng)該有用32個字節(jié),截圖顯示是45個;下面的STACK1應(yīng)該有64個字節(jié),截圖顯示是54個,但后面全部執(zhí)行完畢后結(jié)果是正確的。在網(wǎng)絡(luò)上查詢過后得知應(yīng)該是軟件的原因。

      繼續(xù)執(zhí)行至將第一個待轉(zhuǎn)換數(shù)據(jù)0035H壓棧,查看內(nèi)存單元,截圖如下:

      同樣的,執(zhí)行至待轉(zhuǎn)換位數(shù)、存放ASCII碼首址成功入棧,與上圖相似,省去截圖,直至調(diào)用轉(zhuǎn)化子程序,執(zhí)行完一系列入棧操作和取入口參數(shù)、數(shù)據(jù)位數(shù)、待轉(zhuǎn)換數(shù)據(jù)操作:

      進入標號為LOP的程序段,循環(huán)執(zhí)行求ASCII碼的算法,將數(shù)據(jù)一位一位地轉(zhuǎn)化為ASCII碼,循環(huán)過程中可以看到CX依次減1,減小至0時不再執(zhí)行LOP循環(huán):

      繼續(xù)執(zhí)行至第一個數(shù)據(jù)轉(zhuǎn)化結(jié)束,查看內(nèi)存單元情況,與預(yù)期結(jié)果進行比較,第一個待轉(zhuǎn)換數(shù)據(jù)35H=0011 0101B,其對應(yīng)ASCII碼確實與內(nèi)存單元中顯示相同,詳見圖片:

      第二個待轉(zhuǎn)換數(shù)據(jù)分析過程與第一個數(shù)據(jù)相同,轉(zhuǎn)化結(jié)束后同樣與預(yù)期結(jié)果進行比較:

      第二個待轉(zhuǎn)換數(shù)據(jù)AB48H=1010 1011 0100 1000B, 其對應(yīng)ASCII碼確實與內(nèi)存單元中顯示相同,詳見圖片:

      九、結(jié)果分析和改進意見(完成每次留的問答題,以及實驗過程中遇到的問題)

      匯編語言編程作為低級語言,與高級語言相比,可讀性不如高級語言,更易出錯,調(diào)試更麻煩,但是邏輯性很強,更接近機器,分析起來很有意思,每一步都是很小的操作,最后能達到目的。

      在堆棧傳遞參數(shù)的實驗中,內(nèi)存中顯示00的部分是設(shè)置的ASCBUF,應(yīng)該有用32個字節(jié),截圖顯示是45個;下面的STACK1應(yīng)該有64個字節(jié),截圖顯示是54個,但后面全部執(zhí)行完畢后結(jié)果是正確的。在網(wǎng)絡(luò)上查詢過后發(fā)現(xiàn)有很多相似的情況,應(yīng)該是軟件的原因。后期可以研究一下產(chǎn)生這種現(xiàn)象的具體原因和解決方案。

      十、心得體會:

      做實驗很有趣,寫報告很煩。在大三下學期,保研考研找實習最忙的時候,要寫這么多報告,很難受。但是萬幸王老師很漂亮,講話又好聽,我超喜歡她的。如果她直接教匯編理論課我一定好好聽~~~

      報告評分:

      指導教師簽字:

      電 子 科 技 大 學

      (二)學生姓名:郫縣英格拉姆

      學 號:2014123456789

      指導教師:皮皮怪

      實驗地點:主樓A2_412

      實驗時間:2017年5月9日星期二

      一、實驗室名稱:

      主樓A2_411機房

      二、實驗項目名稱:8259A中斷控制器實驗

      三、實驗學時:3學時

      四、實驗原理:(包括知識點,流程圖)

      (一)知識點:

      (老師上課提的問題寫在報告第九部分)

      1.8259A的工作過程

      (1)中斷源在中斷請求輸入端IR0-IR7上產(chǎn)生中斷請求 涉及問題:中斷請求的觸發(fā)方式有哪些?

      ·電平觸發(fā)方式:用IR引腳上的有效高電平信號觸發(fā)中斷。常被用于需要重復(fù)執(zhí)行當前中斷服務(wù)程序的情況,直到IR信號變?yōu)闊o效。

      ·邊沿觸發(fā)方式:采用IR輸入信號的上升沿觸發(fā)中斷,常被用于不希望產(chǎn)生重復(fù)響應(yīng)及中斷請求信號是一個短暫脈沖的情況。

      (2)中斷請求被鎖存在IRR中,并經(jīng)IMR屏蔽,結(jié)果送優(yōu)先權(quán)電路判優(yōu) 涉及問題:IRR/IMR的數(shù)據(jù)是自動寫入還是通過軟件編程設(shè)定?

      ·IRR的數(shù)據(jù)是根據(jù)中斷請求信號自動寫入的(有中斷請求的對應(yīng)位為1,允許多個位為1,如果被響應(yīng)對應(yīng)位清零);

      ·IMR的數(shù)據(jù)是通過軟件編程設(shè)定的(通過對某位或某幾位置1屏蔽該位,使其不能進入優(yōu)先級判別器)

      (3)優(yōu)先權(quán)電路檢出優(yōu)先權(quán)最高的中斷請求位,設(shè)置ISR的對應(yīng)位(置1)涉及問題:中斷判優(yōu)的依據(jù)是什么?ISR是自動寫入還是通過軟件編程設(shè)定?

      ·IRR的數(shù)據(jù)是根據(jù)中斷請求信號自動寫入的(有中斷請求的對應(yīng)位為1,允許多個位為1,如果被響應(yīng)對應(yīng)位清零);

      ·IMR的數(shù)據(jù)是通過軟件編程設(shè)定的(通過對某位或某幾位置1屏蔽該位,使其不能進入優(yōu)先級判別器)

      (4)8259A控制邏輯接受中斷請求,向CPU輸出INT信號

      (5)CPU接受INT信號,進入兩個INTA中斷響應(yīng)周期,第一個周期通知8259A做好響應(yīng)準備,第二個周期8259A將響應(yīng)的中斷類型號輸出到DB上 涉及問題:CPU中斷響應(yīng)過程中的“配套操作”有哪些?

      ·8259A接到來自CPU的第一個脈沖時,設(shè)置ISR并把IRR中的相應(yīng)位復(fù)位。同時,8259A準備向數(shù)據(jù)總線發(fā)送中斷向量。

      ·在8259A發(fā)送中斷向量的最后一個脈沖期間,如果是在自動結(jié)束中斷方式下,在這個脈沖結(jié)束時復(fù)位ISR的相應(yīng)位。在其他方式下,ISR相應(yīng)位要由中斷服務(wù)程序結(jié)束時發(fā)出的EOI命令來復(fù)位。

      (6)CPU讀取該中斷類型號,轉(zhuǎn)移到相應(yīng)的中斷處理程序 涉及問題:如何通過中斷類型號找到中斷處理程序? 2.8259A的命令字

      (1)ICW1/OCW2/OCW3復(fù)用同一個地址(A0=0);剩下的命令字復(fù)用另一個地址(A0=1),在本系統(tǒng)中,復(fù)用地址分別是0FFE0H和0FFE1H,預(yù)置數(shù)類別順序為先初始化命令字,再操作命令字,預(yù)置數(shù)設(shè)定順序為下標順序(見“第六章輸入輸出與中斷-2-8259” P32)

      (2)0FFE0H用于ICW1,OCW2和OCW3,0FFE1H用于ICW2,ICW3,ICW4和OCW1。本次實驗中,ICW3、OCW3不需要進行設(shè)定。

      (3)本實驗只需要用一片8259A進行中斷控制,中斷源采用單脈沖信號,中斷觸發(fā)方式屬于邊沿觸發(fā),且8086/8088系統(tǒng)必須設(shè)定ICW4,因此ICW1=00010011B=13H(4)本系統(tǒng)中,設(shè)定使用中斷類型8來服務(wù)IR7邊沿觸發(fā)產(chǎn)生的中斷,所以ICW2=00001000B=08H(5)對于單片8259A,不需要設(shè)定ICW3,而8086/8088系統(tǒng)需要確定ICW4。因此跳過ICW3的設(shè)定直接設(shè)定ICW4。在該實驗中,我們使用全嵌套方式(最常用的也是默認的工作方式,只開放比當前中斷優(yōu)先級高的中斷,且中斷優(yōu)先權(quán)的級別固定,按照IR0-IR7逐級次之。)和普通EOI方式(一般的中斷結(jié)束方式,在中斷程序返回前,輸出中斷結(jié)束命令把ISR當前優(yōu)先級最高的對應(yīng)位清零)操作,因此ICW4=00001001B=09H(6)對于OCW,假設(shè)使用OCW1來屏蔽除IR7外其它所有中斷,這樣OCW1=01111111B=7FH;選用普通EOI,則OCW2=00100000=20H 3.有關(guān)中斷向量存儲地址的形成說明

      (1)ICW2是設(shè)置中斷類型碼的初始化命令字。其中,D7~D3是8086/8088系統(tǒng)中8259A的中斷指針地址的高5位,D2~D0的值恒為0。

      (2)本系統(tǒng)的中斷序號和中斷地址對應(yīng)表如下:

      4.有關(guān)ICW4的設(shè)置說明

      ICW4的位定義如下:

      ·其中,D7-D5位總是為0 ·在IBM PC/XT系統(tǒng)中,BUF位設(shè)定為1,M/S設(shè)定為0 ·普通中斷結(jié)束方式用于完全嵌套情況下,8259每得到一次EOI命令,將把ISR中已經(jīng)置位的各位中優(yōu)先級最高的位復(fù)位,以此類推?!ひ虼耍诒纠?,ICW4=00001001B=09H 5.有關(guān)OCW2的設(shè)置說明

      OCW2用于控制中斷結(jié)束,其格式如下:

      ·其中,R為優(yōu)先權(quán)控制位,R=1為循環(huán)優(yōu)先權(quán),R=0為固定優(yōu)先權(quán) ·SL位決定了OCW2中L2,L1,L0是否有效,SL=1則有效,否則無效 ·EOI為中斷結(jié)束命令位,在非自動中斷結(jié)束命令下,EOI=1使得中斷服務(wù)寄存器ISR中具有最高優(yōu)先權(quán)的IS復(fù)位,EOI=0則該位無效?!ぴ诒緦嶒炛校琌CW2=0010000=20H 6.七段數(shù)碼管顯示相關(guān)知識

      數(shù)碼管字形口地址:0FFDCH,字形代碼如下表所示:

      上述不同的代碼實際上就是使得每只數(shù)碼管中八只發(fā)光二極管的不同“點亮”組合,從而形成所謂不同的“字形”。

      數(shù)碼管字位口地址:0FFDDH,字位代碼如下表所示:

      上述不同的代碼實際上就是“選通”某一片數(shù)碼管工作的片選信號,顯然,對應(yīng)選通信號高電平有效。

      字位1對應(yīng)邏輯箱最左邊那只數(shù)碼管,字位6對應(yīng)最右邊那只數(shù)碼管。7.七段數(shù)碼管顯示電路圖(ppt)8.Dais微機接口實驗箱操作說明(ppt)9.Windows平臺操作方法(ppt)10.LED平臺操作方法說明(ppt)

      (二)流程圖:(用visio畫的)

      五、實驗電路:

      1、實驗參考電路及接線說明(8259部分)(紅色連線為補充連線)

      ·SP插孔和8259A的IR7插孔相連,同時將SP插孔和8259A的IR6插孔也連接起來,提供兩個中斷源

      ·連接138譯碼輸入端A.B.C,其中A連A2,B連A3,C連A4,138使能控制輸入端G與位于地址線A0引出孔所在位置下方的使能控制輸出端G作對應(yīng)連接。8259的CS端連138譯碼器的Y0孔。

      ·將8259的單元總線接口D0-D7,用8芯排線或8芯扁平線與數(shù)據(jù)總線單元D0-D7任一接口相連。

      2、電路圖拍照:

      六、實驗內(nèi)容:(介紹自己所選的實驗內(nèi)容)

      編制程序,利用8259芯片的IRi作為中斷源,產(chǎn)生多級中斷,系統(tǒng)顯示中斷號,比如:IR7作為中斷源則顯示7。

      七、實驗步驟:

      1.點擊桌面上“Intel8088 微機實驗系統(tǒng)”圖標; 2.選擇通信串口和速率;

      3.檢查有無錯誤對話框,是否正確連接儀器; 4.進入dais集成開發(fā)環(huán)境; 5.選擇本次實驗對應(yīng)的實驗指導;

      6.調(diào)出連線指導,按照實驗原理電路圖,在實驗箱上進行連線;

      7.調(diào)出參考代碼,進行修改,編寫本次實驗的源程序,源代碼及注釋按ppt要求,放在實驗結(jié)果部分;

      8.將源程序編譯、連接、裝載入儀器,若出錯則進行修改,直到裝載成功; 9.將LED平臺復(fù)位,然后點擊綠色按鈕運行;

      八、實驗結(jié)果:(源程序代碼,必要的中文注釋,以及運行結(jié)果,包括截圖或者拍照)

      (一)源程序代碼及中文注釋:

      CODE SEGMENT

      ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3400H H8: JMP P8259 ZXK EQU 0FFDCH;數(shù)字管字形碼端口地址

      ZWK EQU 0FFDDH;數(shù)字管字位碼端口地址

      LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;LED

      DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H

      BUF DB ?,?,?,?,?,?;預(yù)留6個字節(jié)空間存放的是需要顯示的字符,如123456 PORT0 EQU 0FFE0H;偶地址 PORT1 EQU 0FFE1H;奇地址 P8259: CLI;關(guān)中斷

      CALL WP;初始化顯示“P.”

      MOV AX,OFFSET INT8359 MOV BX,0038H;6號中斷向量表

      MOV [BX],AX MOV BX,003AH

      MOV AX,0000H

      MOV [BX],AX

      MOV AX,OFFSET INT8259 MOV BX,003CH;7號中斷向量表

      MOV [BX],AX

      MOV BX,003EH

      MOV AX,0000H

      MOV [BX],AX

      CALL FOR8259;命令字的設(shè)置

      MOV SI,0000H

      STI;開中斷

      CALL WP CON8: CALL DIS JMP CON8;-----INT8259:CLI;初始化8259 IR7

      MOV BX,OFFSET BUF MOV BYTE PTR [BX+SI],07H

      ;INC SI

      CMP SI,0007H

      JZ X59 XX59: MOV AL,20H;OCW2 MOV DX,PORT0 OUT DX,AL

      MOV CX,0050H XXX59: PUSH CX

      CALL DIS POP CX

      LOOP XXX59 POP CX

      MOV CX,3438H

      PUSH CX

      STI

      IRET

      X59: MOV SI,0000H

      CALL WP JMP XX59;-----INT8359:CLI;初始化8259 IR6

      MOV BX,OFFSET BUF MOV BYTE PTR [BX+SI],06H

      ;INC SI

      CMP SI,0007H

      JZ Y59 YY59: MOV AL,20H;OCW2=0010000=20H 一般EOI命令,全嵌套方式

      MOV DX,PORT0 OUT DX,AL

      MOV CX,0050H YYY59: PUSH CX CALL DIS POP CX

      LOOP YYY59 POP CX

      MOV CX,3438H

      PUSH CX

      STI

      IRET

      Y59: MOV SI,0000H

      CALL WP JMP YY59;==============================

      FOR8259:MOV AL,13H;ICW1=00010011B=13H 單脈沖 邊沿觸發(fā)

      MOV DX,PORT0 OUT DX,AL

      MOV AL,08H;ICW2=00001000B=08H 中斷類型8

      MOV DX,PORT1 OUT DX,AL

      MOV AL,09H;ICW4=400001001B=09H 全嵌套方式,普通EOI方式

      OUT DX,AL

      MOV AL,00H;OCW1=00000000B=00H 不屏蔽中斷

      OUT DX,AL

      RET

      ;---------------------------

      WP: MOV BUF,11H;初始化顯示“P.”

      MOV BUF+1,10H

      MOV BUF+2,10H

      MOV BUF+3,10H

      MOV BUF+4,10H

      MOV BUF+5,10H

      RET

      ;-

      DIS: MOV CL,20H;字位碼指向左側(cè)第一個數(shù)碼管

      MOV BX,OFFSET BUF DIS1: MOV AL,[BX];取第一個需要顯示的字符

      PUSH BX

      MOV BX,OFFSET LED;BX指向字形碼表的表頭地址

      XLAT;查表得到需要顯示的字符對應(yīng)的字形碼,并裝入AL

      POP BX

      MOV DX,ZXK OUT DX,AL;將要顯示的字形碼輸出到字形碼端口

      MOV AL,CL

      MOV DX,ZWK OUT DX,AL;將要顯示的字位碼輸出到字位碼端口

      PUSH CX

      MOV CX,0100H DELAY: LOOP $;延時程序

      POP CX

      CMP CL,01H;檢測是否顯示到最右側(cè)的數(shù)碼管

      JZ EXIT;如果是,退出

      INC BX

      SHR CL,1

      JMP DIS1;否則繼續(xù)顯示下一個 EXIT: MOV AL,00H

      MOV DX,ZWK OUT DX,AL;一個都不顯示

      RET;返回主程序;--------------------------CODE ENDS

      END H8

      (二)運行結(jié)果及分析

      1、運行結(jié)果介紹: 不按彈片時,初始化顯示“P.”;

      短按彈片時,顯示“6”;

      長按彈片時,先顯示“6”,再顯示“7”。

      2、照片:將關(guān)鍵部分合并到一張圖片,便于觀察,如下圖:

      3、結(jié)果分析:

      不按彈片時,初始化顯示“P.”;

      短按彈片時,有IR6和IR7兩個中斷源,由于OCW2設(shè)置為固定優(yōu)先級,IR0優(yōu)先級最高,依次遞減,IR6優(yōu)先被處理,因此顯示“6”,由于短按,處理完IR6之后IR7中斷信號源已經(jīng)消失;

      長按彈片時,有IR6和IR7兩個中斷源,IR6優(yōu)先被處理,因此顯示“6”,后處理IR7,因此之后顯示變?yōu)椤?”。

      九、結(jié)果分析和改進意見(完成每次留的問答題,以及實驗過程中遇到的問題)

      (一)上課留的問答題

      1、pc機有幾塊8259,端口地址是多少

      (1)早期的微型計算機使用單片的8259A,如早期IBM PC/XT只有一個8259A,端口地址分別是20H、21H。(2)后期,設(shè)計師們意識到這是不夠的,到了IBM PC/AT,有2個8259A,一個稱作Master,另一個稱作Slave,Slave以基連的方式連接在Master上,如今大多數(shù)PC都有兩個8259A。課件相關(guān)知識:

      2、ret和iret的區(qū)別

      (1)ret是過程調(diào)用的返回指令,一般位于子程序的最后,如果是段內(nèi)返回,則從堆棧中彈出一個字送IP,如果是段間返回,則從堆棧中彈出兩個字送IP和CS,不需要恢復(fù)標志寄存器;

      (2)iret是中斷返回指令,是中斷服務(wù)程序的最后一條指令,負責恢復(fù)斷點并恢復(fù)標志寄存器的內(nèi)容。

      3、中斷和過程調(diào)用的區(qū)別

      (1)中斷是隨機事件或異常事件引起,調(diào)用則是事先已在程序中安排好 ;

      (2)響應(yīng)中斷請求不僅要保護斷點地址,還要保護FLAGS標志寄存器的內(nèi)容;

      (3)調(diào)用指令在指令中直接給出子程序入口地址,而中斷指令只給出中斷向量碼,入口地址則在向量碼指向的內(nèi)存單元中。

      4、短按和長按的區(qū)別

      (1)短按,則中斷時間短,處理完IR6中斷后,IR7的中斷信號源已經(jīng)不存在了;

      (2)長按,則中斷時間長,處理完IR6中斷后,IR7源仍然存在,繼續(xù)處理IR7中斷。

      (二)實驗過程中遇到的問題

      一定要正確運用開關(guān)中斷的指令,為了避免其他中斷服務(wù)影響當前中斷服務(wù)程序的運行,可以在當前程序開始運行的時候加上CLI指令。在當前程序運行結(jié)束的時候,為了不影響其他中斷服務(wù)程序的正常請求和響應(yīng),應(yīng)該加上STI指令開放中斷。做實驗很有趣,寫報告很煩。

      在大三下學期,保研考研找實習最忙的時候,要寫這么多報告,很難受。但是萬幸王老師很漂亮,講話又好聽,我超喜歡她的。如果她直接教匯編理論課我一定好好聽~~~ 可以把中斷源增加至3個、4個等,讓數(shù)碼管的顯示變化更復(fù)雜有趣。

      十一、心得體會:

      做實驗很有趣,寫報告很煩。

      在大三下學期,保研考研找實習最忙的時候,要寫這么多報告,很難受。但是萬幸王老師很漂亮,講話又好聽,我超喜歡她的。如果她直接教匯編理論課我一定好好聽~~~

      報告評分:

      指導教師簽字:

      電 子 科 技 大 學

      (三)學生姓名:郫縣英格拉姆

      學 號:2014123456789

      指導教師:皮皮怪

      實驗地點:主樓A2_412

      實驗時間:2017年5月16日星期二

      一、實驗室名稱:

      主樓A2_411機房

      二、實驗項目名稱:8253時鐘中斷計時實驗

      三、實驗學時:3學時

      四、實驗原理:(包括知識點,流程圖)

      (一)知識點:

      (老師上課提的問題寫在報告第九部分)

      (一)有關(guān)8253芯片

      8253基本工作方式就是對CLK時鐘脈沖進行計數(shù)。CLK脈沖可以是均勻的、連續(xù)的、周期精確的,也可以是不均勻的、斷續(xù)的、周期不定的。

      無論8253工作于何種方式,當計數(shù)器減1到0時,在OUT引腳上必定有電平或脈沖輸出,OUT引腳輸出的信號可以是方波、電平或脈沖等,由工作方式?jīng)Q定。

      8253每個計數(shù)器都可以選擇6種工作方式之一進行工作。在控制字中進行設(shè)定。

      二進制方式計數(shù)的最小值是0001H,最大值為0000H,即216=65536 二-十進制(BCD碼)計數(shù)的最小值是0001H,最大值為0000H,即10^4=10000

      (二)計數(shù)器和定時器的異同點

      相同之處:都需要設(shè)定計數(shù)初值,在每個輸入脈沖的作用下進行減1計數(shù),減到0后產(chǎn)生一個OUT輸出。

      不同之處: 1.定時器方式下減到0后會自動恢復(fù)初始值進行下一輪減1計數(shù);計數(shù)器方式下減到0后必須有新的外界因素的重觸發(fā)才開始新一輪減1計數(shù)。

      2.定時器方式下的輸入時鐘CLK必須是等周期的;計數(shù)器方式下的輸入時鐘CLK不一定是等周期的。

      (三)關(guān)于選擇分頻信號源的說明

      【目標】產(chǎn)生一個1s周期的方波信號(方式3)和1s延時的信號(方式0)1s周期對應(yīng)的頻率是1HZ,當計數(shù)初值=信號頻率時得到1s周期的信號輸出 T0-T7中,最小的非小數(shù)頻率(HZ為單位)計數(shù)初值為76.8K 【結(jié)論】任意一個通道的計數(shù)器最大值<76.8K,無法一次設(shè)定好需要的初值 解決方案(該系統(tǒng)CPU8088/8086采用主頻為14.3818MHz)1.用多個定時/計數(shù)通道進行分頻

      2.對單個定時/計數(shù)通道進行設(shè)置,設(shè)定一定倍數(shù)的周期信號引發(fā)顯示刷新(不是引發(fā)顯示中斷)

      (二)流程圖:(用visio畫的)

      五、實驗電路:

      1、實驗參考電路及接線說明(紅色連線為補充連線)

      ·8253的GATE接+5V(方式3)或者開關(guān)(方式0)。

      ·8253的CLK插孔接分頻器74LS393的T0-T7插孔(建議選擇76.8KHZ)·8253的OUT輸出端與8259的IR7輸入端相連。

      ·連接138譯碼輸入端A.B.C,其中A連A2,B連A3,C連A4,138使能控制輸入端G與位于地址線A0引出孔所在位置下方的使能控制輸出端G作對應(yīng)連接,該端的尋址范圍為0FFE0H~0FFFFH。8253、8259的CS孔與138譯碼器的Y0孔相連。

      ·將8259、8253的單元總線接口D0~D7用8芯排線或8芯扁平線與數(shù)據(jù)總線單元D0~D7任一接口相連(要接兩根數(shù)據(jù)線)。

      2、電路圖拍照:

      六、實驗內(nèi)容:(介紹自己所選的實驗內(nèi)容)利用8253的多個通道產(chǎn)生周期方波信號(方式3),該信號作為8259芯片的中斷源,用邊沿觸發(fā)方式產(chǎn)生中斷(單級中斷),從而在七段數(shù)碼管上構(gòu)成一個“秒表”(顯示范圍為0-9或者00-59)。要求正確設(shè)置參數(shù)和采用適當?shù)木幊碳记?,使得七段?shù)碼管的顯示間隔為1s。

      七、實驗步驟:

      1.點擊桌面上“Intel8088 微機實驗系統(tǒng)”圖標; 2.選擇通信串口和速率;

      3.檢查有無錯誤對話框,是否正確連接儀器; 4.進入dais集成開發(fā)環(huán)境; 5.選擇本次實驗對應(yīng)的實驗指導;

      6.調(diào)出連線指導,按照實驗原理電路圖,在實驗箱上進行連線;

      7.調(diào)出參考代碼,進行修改,編寫本次實驗的源程序,源代碼及注釋按ppt要求,放在實驗結(jié)果部分;

      8.將源程序編譯、連接、裝載入儀器,若出錯則進行修改,直到裝載成功; 9.將LED平臺復(fù)位,然后點擊綠色按鈕運行;

      八、實驗結(jié)果:(源程序代碼,必要的中文注釋,以及運行結(jié)果,包括截圖或者拍照)

      (一)源程序代碼及中文注釋:

      CODE SEGMENT

      ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3400H H8: JMP P8259 ZXK EQU 0FFDCH;數(shù)字管字形碼端口地址

      ZWK EQU 0FFDDH;數(shù)字管字位碼端口地址

      LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;LED

      DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H

      BUF DB ?,?,?,?,?,?;預(yù)留6個字節(jié)空間存放的是需要顯示的字符,如123456 IR_COUNT DB 0 SC_0 EQU BUF+5

      PORT0 EQU 0FFE0H;8253計數(shù)器0 & 8259偶地址 PORT1 EQU 0FFE1H;8253計數(shù)器1 & 8259奇地址 PORT2 EQU 0FFE2H;8253計數(shù)器2 PC EQU 0FFE3H;8253控制寄存器地址 P8259: CLI

      CALL WP;初始化顯示“P.”

      MOV AX,OFFSET IR7_BEGIN;取IR7中斷服務(wù)程序偏移地址

      MOV BX,003CH

      MOV [BX],AX;寫中斷向量表IP

      MOV BX,003EH

      MOV AX,0000H

      MOV [BX],AX;寫中斷向量表CS

      CALL FOR8253;8253初始化

      CALL FOR8259;8259初始化

      MOV SI,0000H

      STI CON8: CALL DIS JMP CON8;-----IR7_BEGIN:

      CLI

      INC BYTE PTR[IR_COUNT]

      CMP BYTE PTR[IR_COUNT],4JB IR7_E MOV BYTE PTR[IR_COUNT],0

      CALL INCS0 IR7_E:

      MOV AL,20H;OCW2,EOI命令

      MOV DX,PORT0 OUT DX,AL

      MOV BX, OFFSET BUF POP CX

      MOV CX,OFFSET CON8;也顯示當前BUF中的數(shù)據(jù)

      PUSH CX

      STI

      IRET INCS0:

      INC BYTE PTR[SC_0]

      CMP BYTE PTR[SC_0],10

      JB INCS0_CARRY MOV BYTE PTR [SC_0], 0 INCS0_CARRY:

      RET

      ;==============================

      FOR8259:MOV AL,13H;ICW1單級中斷,需要ICW4,不需要ICW

      3MOV DX,PORT0 OUT DX,AL

      MOV AL,08H;ICW2 MOV DX,PORT1 OUT DX,AL

      MOV AL,09H;ICW4,特殊全嵌套,緩沖方式,8086

      OUT DX,AL

      MOV AL,7FH;OCW1,中斷屏蔽操作字,屏蔽除IR7之外的所有中斷

      OUT DX,AL

      RET

      ;============================== FOR8253:MOV DX,PC MOV AL,36H;00110110 計數(shù)器0,先低后高,方式3,二進制

      OUT DX,AL

      MOV DX,PORT0 MOV AL,00H;低8位

      OUT DX,AL

      MOV AL,4BH;高8位

      OUT DX,AL

      ;---------------------------

      WP: MOV BUF,11H;初始化顯示“P.”

      MOV BUF+1,10H MOV BUF+2,10H

      MOV BUF+3,10H

      MOV BUF+4,10H

      MOV BUF+5,10H

      RET

      ;-DIS: MOV CL,20H

      MOV BX,OFFSET BUF DIS1: MOV AL,[BX];取第一個需要顯示的字符

      PUSH BX

      MOV BX,OFFSET LED;BX指向字形碼表的表頭地址

      XLAT;查表得到需要顯示的字符對應(yīng)的字形碼,并裝入AL

      POP BX

      MOV DX,ZXK OUT DX,AL;將要顯示的字形碼輸出到字形碼端口

      MOV AL,CL

      MOV DX,ZWK OUT DX,AL;將要顯示的字位碼輸出到字位碼端口

      PUSH CX

      MOV CX,0100H DELAY: LOOP $;延時程序

      POP CX

      CMP CL,01H;檢測是否顯示到最右側(cè)的數(shù)碼管

      JZ EXIT;如果是,退出 INC BX

      SHR CL,1

      JMP DIS1;否則繼續(xù)顯示下一個 EXIT: MOV AL,00H

      MOV DX,ZWK OUT DX,AL;一個都不顯示

      RET;返回主程序

      ;--------------------------CODE ENDS END H8

      (二)運行結(jié)果

      1、運行結(jié)果介紹:

      運行程序,數(shù)碼管左側(cè)顯示“P.”不變,右側(cè)按照1s的時間間隔變化,依次顯示數(shù)字“0”~“9”,實現(xiàn)秒表,很好的完成了實驗要求。

      2、照片:將關(guān)鍵部分合并到一張圖片,便于觀察,如下圖:

      九、結(jié)果分析和改進意見(完成每次留的問答題,以及實驗過程中遇到的問題)

      (一)上課留的問答題

      1、在實驗中,先初始化8253還是8259?為什么?

      先初始化8253。因為8253和8259存在地址復(fù)用,8259的初始化程序中存在指令會干擾8253的初始化。2.PC機上有無8253,地址分配如何?

      有8253。PC/XT微機系統(tǒng)中使用一片8253,T0、T1、T2、控制口地址依次是:40H、41H、42H、43H。三個定時/計數(shù)器各自的用途是:

      定時/計數(shù)器T0:用于日歷時鐘計時; 定時/計數(shù)器T1:用于DRAM內(nèi)存定時刷新; 定時/計數(shù)器T2:用于揚聲器發(fā)聲。

      十一、心得體會:

      做實驗很有趣,寫報告很煩。

      在大三下學期,保研考研找實習最忙的時候,要寫這么多報告,很難受。但是萬幸王老師很漂亮,講話又好聽,我超喜歡她的。如果她直接教匯編理論課我一定好好聽~~~

      報告評分:

      指導教師簽字:

      電 子 科 技 大 學

      (四)學生姓名:郫縣英格拉姆

      學 號:2014123456789

      指導教師:皮皮怪

      實驗地點:主樓A2_412

      實驗時間:2017年5月23日 周二

      一、實驗室名稱:

      主樓A2_411機房

      二、實驗項目名稱:8255A并行可編程接口芯片實驗

      三、實驗學時:3學時

      四、實驗原理:(包括知識點,流程圖)

      (一)知識點:

      (老師上課提的問題寫在報告第九部分)

      1.有關(guān)8255的工作方式

      方式0——基本輸入/輸出方式,不用聯(lián)絡(luò)信號,不用中斷。A組和B組都可以作為輸入/輸出,而且輸出是鎖存的。

      方式1——選通輸入輸出方式,與方式0相比,它的主要特點是當A口、B口工作于方式1時,C口的某些I/O線被定義為A口和B口在方式1下工作時所需的聯(lián)絡(luò)信號線,這些線已經(jīng)定義,不能由用戶改變。A口工作于方式1輸出時,用PC3,PC6和PC7作聯(lián)絡(luò)線。C口剩余的兩個I/O線PC4和PC5工作于方式0。該方式下輸入輸出均帶鎖存器。

      2、實驗題目2注意事項

      【分析】PA口驅(qū)動LED,因此作為輸出,工作在方式1,需要正確連接和設(shè)置PC3/PC6/PC7三個聯(lián)絡(luò)信號,如下圖所示:

      由于8255采用中斷方式傳送數(shù)據(jù),故INTEA=1(PC6=1),需要通過C口置位/復(fù)位控制字來設(shè)定;INTRA由PC3連接8259A的IR,引發(fā)中斷;PC7未用。3、8255A的方式選擇控制字格式 4、8255A通道C置位/復(fù)位控制字格式

      (二)流程圖:(用visio畫的)

      五、實驗電路:

      1、實驗參考電路及接線說明(紅色連線為補充連線)

      ·用PC6連接單脈沖發(fā)生器模擬外設(shè)應(yīng)答信號,PC3連接8259的IR端(單級中斷)

      2、電路圖拍照:

      六、實驗內(nèi)容:(介紹自己所選的實驗內(nèi)容)設(shè)置8255的A組工作在方式1,用中斷的方式驅(qū)動PA口8只發(fā)光二極管,用PC6連接單脈沖發(fā)生器模擬外設(shè)應(yīng)答信號,PC3連接8259的IR端(單級中斷),每按一次單脈沖就點亮一個LED(從左往右或者從右往左依次點亮)。

      七、實驗步驟:

      1.點擊桌面上“Intel8088 微機實驗系統(tǒng)”圖標; 2.選擇通信串口和速率;

      3.檢查有無錯誤對話框,是否正確連接儀器; 4.進入dais集成開發(fā)環(huán)境; 5.選擇本次實驗對應(yīng)的實驗指導;

      6.調(diào)出連線指導,按照實驗原理電路圖,在實驗箱上進行連線;

      7.調(diào)出參考代碼,進行修改,編寫本次實驗的源程序,源代碼及注釋按ppt要求,放在實驗結(jié)果部分;

      8.將源程序編譯、連接、裝載入儀器,若出錯則進行修改,直到裝載成功; 9.將LED平臺復(fù)位,然后點擊綠色按鈕運行;

      八、實驗結(jié)果:(源程序代碼,必要的中文注釋,以及運行結(jié)果,包括截圖或者拍照)

      (一)源程序代碼及中文注釋:

      CODE SEGMENT

      ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3400H H8: JMP P8259 PORT0 EQU 0FFE0H;偶地址 PORT1 EQU 0FFE1H;奇地址 PA EQU 0FFD8H;A口 PB EQU 0FFD9H;B口 PC EQU 0FFDAH;C口 PCTL EQU 0FFDBH;控制口 P8259: CLI

      MOV AX,OFFSET INT8259;7號中斷向量表

      MOV BX,003CH

      MOV [BX],AX

      MOV BX,003EH

      MOV AX,0000H

      MOV [BX],AX CALL FOR8259;設(shè)置命令字

      MOV SI,0000H STARTP1: MOV DX,PCTL MOV AL,0A8H;SET 1010 1000

      OUT DX,AL

      MOV AL,0DH;SET 0000 110

      1OUT DX,AL

      MOV BX,0H

      STI CON8: CALL DIS JMP CON8;-----INT8259:CLI

      SHL BX,1;

      INC BX;

      MOV AL,20H

      MOV DX,PORT0 OUT DX,AL;OCW2,EOI命令

      STI

      IRET

      ;-----FOR8259:MOV AL,13H;ICW1

      MOV DX,PORT0 OUT DX,AL

      MOV AL,08H;ICW

      2MOV DX,PORT1 OUT DX,AL

      MOV AL,09H;ICW4,特殊全嵌套,緩沖方式,8086

      OUT DX,AL

      MOV AL,00H;OCW1 不屏蔽

      OUT DX,AL

      RET

      ;-DIS:

      MOV AX, 0FFFFH

      XOR AX, 0FFFFH MOV DX, PA;A口

      OUT DX, AL

      JMP DIS;--------------------------CODE ENDS

      END H8

      (二)運行結(jié)果及拍照

      1、運行結(jié)果介紹:

      開始運行后,發(fā)光二極管不會亮,每按一次彈片,產(chǎn)生一個單脈沖,就點亮一只發(fā)光二極管,從左向右依次點亮。

      2、照片:將關(guān)鍵部分合并到一張圖片,便于觀察,如下圖:

      九、結(jié)果分析和改進意見(完成每次留的問答題,以及實驗過程中遇到的問題)

      (一)上課留的問答題

      1、PC上有幾片8255,是如何與揚聲器和打印機連接的? 有一片8255。

      與打印機連接情況如下:

      8255A工作在方式1,作為打印機的接口,其電路連接如圖所示,采用中斷方式傳送數(shù)據(jù)。地址為0C0H、0C2H、0C4H、0C6H。

      與揚聲器連接情況如下: PB0輸出揚聲器發(fā)聲控制信號到8253的GATE2端,PB0=1,允許8253計數(shù)器2產(chǎn)生音調(diào)信號;

      PB1輸出揚聲器發(fā)聲信號。PB1=1允許8253輸出的音調(diào)信號加到揚聲器驅(qū)動電路。

      (二)實驗過程中遇到的問題

      一開始怎么調(diào)試是卡死狀態(tài),很絕望,后來發(fā)現(xiàn)居然是電腦前的板子連接的是其他的電腦。

      十一、心得體會:

      做實驗很有趣,寫報告很煩。

      在大三下學期,保研考研找實習最忙的時候,要寫這么多報告,很難受。但是萬幸王老師很漂亮,講話又好聽,我超喜歡她的。如果她直接教匯編理論課我一定好好聽~~~

      報告評分:

      指導教師簽字:

      電 子 科 技 大 學

      (五)學生姓名:郫縣英格拉姆

      學 號:2014123456789

      指導教師:皮皮怪

      實驗地點:主樓A2_412

      實驗時間:2017年6月7日 周三

      一、實驗室名稱:

      主樓A2_411機房

      二、實驗項目名稱:交通燈綜合實驗

      三、實驗學時:3學時

      四、實驗原理:(包括知識點,流程圖)

      (一)知識點:

      (老師上課提的問題寫在報告第九部分)

      (一)實驗涉及的子程序

      1.顯示子程序 2.控制子程序

      3.黃燈閃爍5次子程序

      (二)中斷服務(wù)程序的功能

      調(diào)用顯示子程序并更新顯示緩沖區(qū)數(shù)據(jù)(實現(xiàn)倒數(shù)計數(shù),時間間隔1s)

      (三)主程序功能

      1.初始化8255,8253,8259,顯示緩沖區(qū)以及寫中斷向量

      2.往8255的端口送數(shù),驅(qū)動發(fā)光二極管模擬十字路口交通燈工作狀態(tài) 3.調(diào)用控制子程序以及黃燈閃爍5次子程序 4.循環(huán)操作第2、3步

      (四)編程提示 8255部分

      1.該實驗中,8255選擇工作方式0; 2.由于十字路口的交通燈在東西方向或南北方向的6只發(fā)光二極管的工作狀態(tài)完全一致,因此,12只燈可分為兩組,用PA或PB一個端口即可進行模擬; 3.用PC口一個位連接8253的GATE,作為中斷顯示數(shù)據(jù)的控制開關(guān); 4.該實驗只需要正確設(shè)置方式選擇控制字寄存器;

      5.黃燈閃爍的處理,實際上就是往對應(yīng)的黃燈位置0后再置1,循環(huán)5次; 8253部分

      1.該實驗中,8253選擇工作方式3,產(chǎn)生周期性的方波信號;

      2.正確選擇CLK信號源,正確計算初始值,使得方波信號周期為1s或者接近1s;

      3.由于GATE信號為高電平時才會產(chǎn)生方波信號,因此用PC口某位連接GATE,通過不同的輸出進行8253工作方式3的開關(guān)信號; 8259部分

      1.只需要編寫單級中斷,中斷服務(wù)程序主要完成倒計時的功能; 2.正確設(shè)置命令字寄存器和正確填寫中斷向量; 3.中斷信號源為8253輸出的方波信號

      (二)流程圖:(老師ppt自帶流程圖)

      五、實驗電路:

      1、實驗參考電路及接線說明(紅色連線為補充連線)

      ·138譯碼器的Y0對應(yīng)的地址范圍為0FFE0H--0FFE3H,覆蓋了8253和8259的寄存器地址,因此,8253和8259的CS端均連Y0。

      ·138譯碼輸入端ABC分別連A2、A3、A4,使能控制輸入端G與位于地址線A0引出孔所在位置下方的使能控制輸出端G作對應(yīng)連接。

      ·將8253和8259的單元總線接口D0--D7,與數(shù)據(jù)總線單元D0--D7任一接口相連。

      ·將8255的PA或PB口連接12只發(fā)光二極管(只用端口的6位)·將8255的PC口某位連接8253的某GATE ·將8253的某OUT連接8259的某IR ·將8253的某CLK連接393分頻器某輸出(T0--T7中任意一個,自選)

      2、電路圖拍照:

      六、實驗內(nèi)容:(介紹自己所選的實驗內(nèi)容)

      用8255A驅(qū)動12只發(fā)光二極管,模擬十字路口交通燈工作狀態(tài)。用8253的方式3產(chǎn)生連續(xù)的方波信號,利用該信號的上升沿觸發(fā)中斷,作為8259的中斷請求信號,在七段數(shù)碼管上顯示紅綠燈余下時間(間隔一秒顯示刷新,倒數(shù)計數(shù),當計數(shù)值為0時紅綠燈進行切換,綠燈轉(zhuǎn)換為紅燈之前,黃燈閃爍5次)

      七、實驗步驟:

      1.點擊桌面上“Intel8088 微機實驗系統(tǒng)”圖標; 2.選擇通信串口和速率;

      3.檢查有無錯誤對話框,是否正確連接儀器; 4.進入dais集成開發(fā)環(huán)境; 5.選擇本次實驗對應(yīng)的實驗指導;

      6.調(diào)出連線指導,按照實驗原理電路圖,在實驗箱上進行連線;

      7.調(diào)出參考代碼,進行修改,編寫本次實驗的源程序,源代碼及注釋按ppt要求,放在實驗結(jié)果部分;

      8.將源程序編譯、連接、裝載入儀器,若出錯則進行修改,直到裝載成功; 9.將LED平臺復(fù)位,然后點擊綠色按鈕運行;

      八、實驗結(jié)果:(源程序代碼,必要的中文注釋,以及運行結(jié)果,包括截圖或者拍照)

      (一)源程序代碼及中文注釋:

      CODE SEGMENT

      ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3400H H8: JMP START P0 EQU 0FFE0H;(1)8253 計數(shù)器0(2)用于ICW1,OCW2和OCW3 P1 EQU 0FFE1H;(1)8253 計數(shù)器1(2)用于ICW2,ICW3,ICW4和OCW1 P2 EQU 0FFE2H;8253 計數(shù)器2 P3 EQU 0FFE3H;8253 寫方式字的端口

      PA EQU 0FFD8H;8255 A口 PB EQU 0FFD9H;8255 B口 PC EQU 0FFDAH;8255 C口

      PCTL EQU 0FFDBH;8255 控制口地址

      ZXK EQU 0FFDCH;數(shù)碼管字形口地址

      ZWK EQU 0FFDDH;字位口地址

      LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

      DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H BUF DB ?,?,?,?,?,?

      YELLOW EQU 11111110B GREEN EQU 11111101B RED EQU 11111011B NULL EQU 11111111B

      PATH DW 0;道路通行方向, 0東西方向, 1南北方向 TIME DB 0;通行剩余時間 START: CLI

      MOV AX,OFFSET INT8259;設(shè)置中斷

      MOV BX,003CH

      MOV [BX],AX;放入服務(wù)程序偏移量

      MOV BX,003EH

      MOV AX,0000H;放入系統(tǒng)中斷向量區(qū)段基地址0000

      MOV [BX],AX

      CALL WP;顯示9

      CALL INIT8253;初始化8253

      CALL INIT8255;初始化8255 CALL INIT8259;初始化8259

      STI CON8: CALL DIS JMP CON8;-------8259中斷服務(wù)子程序-------INT8259:

      CLI;關(guān)中斷

      MOV CL,TIME;顯示10

      DEC CL

      MOV BUF,CL

      JNZ L1 MOV DX,PC MOV AL,00H

      OUT DX,AL;PC停止計時

      MOV DX,PA ADD DX,PATH CALL FLASH;閃爍

      MOV AL,RED OUT DX,AL;變?yōu)榧t燈

      XOR PATH,1;另一方向通行

      XOR DX,1

      MOV AL,GREEN OUT DX,AL;變?yōu)榫G燈

      MOV CL,10;定時器初始化

      MOV DX,PC MOV AL,01H

      OUT DX,AL;PC開始計時 L1: MOV TIME,CL;倒計時

      CALL DIS;顯示

      MOV AL,20H;中斷退出

      MOV DX,P0 OUT DX,AL;OCW2 OEI

      POP BX

      MOV BX, OFFSET CON8 PUSH BX

      STI

      IRET

      ;-------閃爍子程序(DX)-------FLASH:

      PUSH CX MOV CL, 5

      FLASH1: MOV AL,YELLOW;初始AL黃

      OUT DX,AL;黃燈亮

      CALL DELAY1;長延時 MOV AL,NULL;清空AL

      OUT DX,AL;(黃)燈滅

      CALL DELAY1;長延時

      LOOP FLASH1 POP CX

      RET

      ;-------8253初始化---------INIT8253:

      MOV AL,00110110B;選計數(shù)器0,從而后面是P0,先低后高字節(jié),選方式3

      MOV DX,P3 OUT DX,AL;寫控制字

      MOV AL,00H;低8位為0

      MOV DX,P0;計數(shù)器0

      OUT DX,AL

      MOV AL,4BH;高8位為4B,這樣393連接T5或T6,應(yīng)該會每秒一個脈沖

      OUT DX,AL

      MOV AL,10010110B;選計數(shù)器2,直接傳低8位,方式3,添加有效果

      MOV DX,P3 OUT DX,AL;寫控制字

      MOV AL,04H

      MOV DX,P2;計數(shù)器2

      OUT DX,AL

      RET

      ;-------8255初始化-------INIT8255:

      MOV AL,10000000B;控制字 A口,方式0,輸出;B口方式0,輸出;C口,輸出

      MOV DX,PCTL OUT DX,AL

      MOV DX,PA;A口

      MOV AL,GREEN;初始狀態(tài),綠燈

      OUT DX,AL

      MOV DX,PB;B口

      MOV AL,RED;初始狀態(tài),紅燈

      OUT DX,AL;初始狀態(tài),LV燈

      MOV TIME,10;初始化計時時間

      MOV DX,PC;C口

      MOV AL,01H;PC輸出始終是1,連到8253GATE

      OUT DX,AL;輸出到C口,開始計時

      RET

      ;----------8259初始化-------INIT8259:

      MOV AL,13H;ICW1

      MOV DX,P0 OUT DX,AL;ICW1單級中斷,需要ICW4,不需要ICW3

      第二篇:《計算機程序設(shè)計》實驗報告

      《計算機 程序設(shè)計》 實驗報告

      姓名:

      學號 :

      實驗日期:

      ****年**月**日

      實驗名稱

      控制結(jié)構(gòu)與基本算法 一、實驗?zāi)康囊?1.熟練掌握 if 語句和 switch 語句 2.循環(huán)控制結(jié)構(gòu)的使用 二、實驗內(nèi)容 1.實驗教材 P86 第四題。

      2.實驗教材 P87 第八題。

      3.實驗教材 P108 第一題。

      4.實驗教材 108 頁的第四題。

      5.選做題:參考實驗教材 P104 第六題,做課件上題目:

      科大有 4 位同學中的一位做了好事不留名,表揚信來了之后,校長問這四位是誰做的好事.A 說:不是我.B 說:是 C.C 說:是 D.D 說:他(C)胡說

      ? 文件名格式:學號-姓名-實驗 5.doc

      ? 序號 1-23:tmf77@mail.ustc.edu.cn ? 序號 24-45:yunmeng@mail.ustc.edu.cn ? 序號 46-67:cys1024@mail.ustc.edu.cn

      三、上機程序(算法設(shè)計思想)

      四、運行結(jié)果

      五、調(diào)試中的問題及解決方法

      第三篇:《C語言程序設(shè)計》實驗報告

      指導教師學院專業(yè)班級學號姓名實驗室

      實驗題目:

      實驗要求:

      實驗內(nèi)容及步驟:

      運行結(jié)果

      心得體會:

      第四篇:Java語言程序設(shè)計實驗報告1

      《Java語言程序設(shè)計》實驗報告一

      學生姓名: 孫文琳

      班級: 信息111

      學號:201152275119 實驗地點: 經(jīng)管中心證券實驗室

      指導教師:趙利平實驗日期:

      2012.3.6

      實驗環(huán)境:Windows 2000+JDK1.6

      1.實驗?zāi)康模?)養(yǎng)成良好的編程風格;(2)掌握字符數(shù)據(jù)類型及其運算;

      (3)熟悉從輸入對話框獲取輸入和從控制臺獲取輸入兩種方法;(4)掌握布爾運算符;(5)掌握分支語句if和switch。

      2.實驗內(nèi)容(1)在控制臺下求兩個實數(shù)的最大值:完成實驗教材P22程序清單2-2;(2)

      3.實驗過程

      報告撰寫具體要求:上述實驗內(nèi)容要求寫出源代碼及運行結(jié)果。實驗內(nèi)容(1)://CompareTwoNumbersl.java

      import java.util.Scanner;

      public class CompareTwoNumbers1{

      double number1,number2;

      Scanner scanner;

      public CompareTwoNumbers1(){

      System.out.println(“請輸入兩個數(shù)字:”);

      scanner=new Scanner(System.in);

      number1=scanner.nextDouble();

      number2=scanner.nextDouble();

      System.out.println(“較大的數(shù)是:”+(number1>number2?number1:number2));

      }

      public static void main(String args[]){ CompareTwoNumbers1 ct=new CompareTwoNumbers1();System.exit(0);}

      }

      實驗內(nèi)容(2):

      //DollarConvertor.java import java.util.Scanner;public class DollarConvertor{ public static void main(String args[]){ System.out.println(“請輸入美元數(shù):”);Scanner scanner=new Scanner(System.in);double i=scanner.nextDouble();double result=i*6.2875;System.out.println(“對應(yīng)的人民幣數(shù):”+result);} }

      實驗內(nèi)容(3): public class MultiplyList1{ public static void main(String args[]){ String output=“";for(int row=1;row<=9;row++){ for(int col=1;col<=row;col++)output+=col+”*“+row+”=“+(row*col)+” “;output+=”n";} System.out.println(output);System.exit(0);}}

      4.實驗總結(jié)

      心得體會:做實驗要小心翼翼,注意Java大小區(qū)分

      第五篇:C語言程序設(shè)計 實驗報告2.3

      C語言程序設(shè)計

      實驗報告

      專業(yè)

      班級

      日期

      11月26日

      成績

      實驗組別

      第 2(2.3)次實驗

      指導教師

      李開

      學生姓名

      學號

      同組人姓名

      實驗名稱 流程控制實驗

      一、實驗?zāi)康?/p>

      (1)掌握復(fù)合語句、if語句、switch語句的使用,熟練掌握for、while、do-while三種基本的循環(huán)控制語句的使用,掌握重復(fù)循環(huán)技術(shù),了解轉(zhuǎn)移語句與標號語句。

      (2)熟練運用for、while、do-while語句來編寫程序。(3)練習轉(zhuǎn)移語句和標號語句的使用。

      (4)使用集成開發(fā)環(huán)境中的調(diào)試功能:單步執(zhí)行、設(shè)置斷點、觀察變量值。

      二、實驗任務(wù)

      3.2 實驗內(nèi)容及要求 1.源程序改錯

      下面是計算s=n!的源程序,在這個源程序中存在若干語法和邏輯錯誤。要求在計算機上對這個例子程序進行調(diào)試修改,使之能夠正確完成指定任務(wù)。例如,8!=40320。#include void main(){ int i,n,s=1;printf(“Please enter n:”);scanf(“%d”,n);for(i=1,i<=n,i++)s=s*i;printf(“%d!= %d”,n,s);}

      2.源程序修改替換

      (1)修改第1題,分別用while和do-while語句替換for語句。

      (2)修改第1題,輸入改為“整數(shù)S”,輸出改為“滿足n!≥S的最小整數(shù)n”。例如輸入整數(shù)40310,輸出結(jié)果為n=8。

      3.程序設(shè)計

      (1)假設(shè)工資稅金按以下方法計算:x < 1000元,不收取稅金;1000 ≤ x < 2000,收取5%的稅金;2000 ≤ x < 3000,收取10%的稅金;3000 ≤ x < 4000,收取15%的稅金;4000 ≤ x < 5000,收取20%的稅金;x>5000,收取25%的稅金。輸入工資金額,輸出應(yīng)收取稅金額度,要求分別用if語句和switch語句來實現(xiàn)。

      (2)將輸入的一行字符復(fù)制到輸出,復(fù)制過程中將一個以上的空格字符用一個空格代替。

      (3)打印如下楊輝三角形。

      /*第0行 */ 1 1 /*第1行 */ 1 2 1 /*第2行 */ 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1

      jjCCii每個數(shù)據(jù)值可以由組合計算(表示第i行第j列位置的值),而的計算如下:

      Ci0?(i=0,1,2,?)Cij?Cij?1*(i-j?1)/ j(j=0,1,2,3,?,i)本程序中為了打印出金字塔效果,要注意空格的數(shù)目。一位數(shù)之間是3個空格,兩位數(shù)之間有2個空格,3位數(shù)之間只有一個空格,程序編制過程中要注意區(qū)分。

      (4)編寫一個程序,將用戶輸入的任意正整數(shù)逆轉(zhuǎn),例如,輸入1234,輸出4321。

      4.選做題

      32f(x)?3x?4x?5x?13?0滿足精度e=10-6 編寫一個程序,用牛頓迭代法求方程的一個近似根,并在屏幕上輸出所求近似根。

      ?x0?a?x?xk?f(xk)/f'(xk),其中f'(x)是牛頓迭代法:求方程近似根的迭代公式為?k?1函數(shù)f(x)的導函數(shù)。牛頓迭代法首先任意設(shè)定的一個實數(shù)a來作為近似根的迭代初值x0,然后用迭代公式計算下一個近似根x1。如此繼續(xù)迭代計算x2, x3, ?, xn, 直到xn?xn?1?精度e

      ,此時值xn即為所求的近似根。

      2.3:

      1.源程序改錯:(源程序)

      #include void main(){ int i,n,s=1;printf(“Please enter n:”);scanf(“%d”,n);for(i=1,i<=n,i++)s=s*i;printf(“%d!= %d”,n,s);} 運行結(jié)果:

      (修改后程序)#include int main(void){

      int i,n,s=1;

      printf(“Please enter n:”);

      scanf(“%d”,&n);

      for(i=1;i<=n;i++)

      s=s*i;

      printf(“%d!= %d”,n,s);

      return 0;}

      2.源程序修改替換

      (1)修改第1題,分別用while和do-while語句替換for語句。(while)

      #include int main(void){ int i=1,n,s=1;printf(“Please enter n:”);scanf(“%d”,&n);while(i<=n){ s=s*i;i++;} printf(“%d!= %d”,n,s);return 0;}

      (do-while)#include int main(void){ int i=1,n,s=1;printf(“Please enter n:”);scanf(“%d”,&n);do {s=s*i;i++;} while(i<=n);printf(“%d!= %d”,n,s);return 0;}

      (2)修改第1題,輸入改為“整數(shù)S”,輸出改為“滿足n!≥S的最小整數(shù)n”。例如輸入整數(shù)40310,輸出結(jié)果為n=8。

      #include int main(void){ int i,n=1,s;printf(“Please enter s:”);scanf(“%d”,&s);for(i=1;n= %d”,i-1,s);return 0;}

      3.程序設(shè)計

      (1)假設(shè)工資稅金按以下方法計算:x < 1000元,不收取稅金;1000 ≤ x < 2000,收取5%的稅金;2000 ≤ x < 3000,收取10%的稅金;3000 ≤ x < 4000,收取15%的稅金;4000 ≤ x < 5000,收取20%的稅金;x>5000,收取25%的稅金。輸入工資金額,輸出應(yīng)收取稅金額度,要求分別用if語句和switch語句來實現(xiàn)。

      (switch語句)#include void main(){

      printf(“輸入你的工資 ”);

      int t;

      float x;

      scanf(“%f”,&x);

      t =(int)(x/1000.0);

      switch(t){

      case 0:

      printf(“no tax!n”);

      break;

      case 1:

      printf(“%fn”,0.05*x);

      break;

      case 2:

      printf(“%fn”,0.10*x);

      break;

      case 3:

      printf(“%fn”,0.15*x);

      break;

      case 4:

      printf(“%fn”,0.20*x);

      break;

      case 5:

      printf(“%fn”,0.25*x);

      break;

      default:

      printf(“%fn”,0.25*x);

      break;

      }

      return 0;}

      (if語句)

      #include “stdio.h” int main(int argc, char *argv[]){

      float x, tax;

      scanf(“%f”, &x);

      if(x<0)

      {

      printf(“Wrong input.n”);

      return 1;

      }

      if(x<1000)

      {

      tax = 0.00;

      }

      else if(x>=1000&&x<2000)

      {

      tax = 0.05 * x;

      }

      else if(x>=2000&&x<3000)

      {

      tax = 0.10 * x;

      }

      else if(x>=3000&&x<4000)

      {

      tax = 0.15 * x;

      }

      else if(x>=4000&&x<5000)

      {

      tax = 0.20 * x;

      }

      else

      {

      tax = 0.25 * x;

      } printf(“Tax of salary %.2f YUAN is %.2f YUAN.n”, x, tax);}

      (2)將輸入的一行字符復(fù)制到輸出,復(fù)制過程中將一個以上的空格字符用一個空格代替。

      #include int main(){ char c,flag;for(flag=0;(c=getchar())!='n';){

      if(c==' '){

      if(flag==0){

      putchar(c);

      flag=1;

      }

      }

      else{

      putchar(c);

      flag=0;

      }

      }

      return 0;}

      (3)打印如下楊輝三角形。

      /*第0行 */ 1 1 /*第1行 */ 1 2 1 /*第2行 */ 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1

      jjCCii每個數(shù)據(jù)值可以由組合計算(表示第i行第j列位置的值),而的計算如下:

      Ci0?1

      (i=0,1,2,?)Cij?Cij?1*(i-j?1)/ j(j=0,1,2,3,?,i)本程序中為了打印出金字塔效果,要注意空格的數(shù)目。一位數(shù)之間是3個空格,兩位數(shù)之間有2個空格,3位數(shù)之間只有一個空格,程序編制過程中要注意區(qū)分。

      #include int Combination(int a,int b);int Triangle(int n);int main(void){ printf(“input the number for triangle of Yanghuin”);Triangle(9);} int Combination(int a,int b){ int t,p,s=1,q=1;if(a==0||b==0){ printf(“%4d”,q);} else{ for(t=b-a+1;t<=b;t++){ s=s*t;} for(p=1;p<=a;p++){ q=q*p;} printf(“%4d”,s/q);} } int Triangle(int n){ int i,o,u;for(i=0;i<=n;i++){ for(u=1;u<41-i*2;u++){ printf(“ ”);} for(o=0;o<=i;o++){ Combination(o,i);} printf(“n”);} }

      (4)編寫一個程序,將用戶輸入的任意正整數(shù)逆轉(zhuǎn),例如,輸入1234,輸出4321。#include #include int main(void){ int a,i,c,n=0;char m;for(a=0;m=getchar(),m!='n';a++){ c=m-'0';n=n+c*pow(10,a);} printf(“%dn”,n);}

      4.選做題

      -6 編寫一個程序,用牛頓迭代法求方程f(x)?3x?4x?5x?13?0滿足精度e=10的一個近似根,并在屏幕上輸出所求近似根。

      32?x0?a?x?xk?f(xk)/f'(xk),其中f'(x)是牛頓迭代法:求方程近似根的迭代公式為?k?1函數(shù)f(x)的導函數(shù)。牛頓迭代法首先任意設(shè)定的一個實數(shù)a來作為近似根的迭代初值x0,然后用迭代公式計算下一個近似根x1。如此繼續(xù)迭代計算x2, x3, ?, xn, 直到xn?xn?1?精度e,此時值xn即為所求的近似根。

      #include #include double f(double x);double f_(double x);double root(double m);int main(){ double m=1;printf(“%lfn”,root(m));return 0;}

      double f(double x){ return(3*x*x*x-4*x*x-5*x+13);} double f_(double x){ return(9*x*x-8*x-5);} double root(double m){ double n;n=m-f(m)/f_(m);if(fabs(m-n)<=0.000001){ return n;} else{ return root(n);} }

      四、實驗體會

      了解更多有關(guān)C語言的語法知識和循環(huán)結(jié)構(gòu)以及熟練了調(diào)試過程。

      下載電子科大計算機學院 語言程序設(shè)計 實驗報告 99分精品版word格式文檔
      下載電子科大計算機學院 語言程序設(shè)計 實驗報告 99分精品版.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔相關(guān)法律責任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        C語言程序設(shè)計—函數(shù)—實驗報告

        實 驗 報 告 專業(yè)軟 件 工 程班級 X 班學號_ XXXXXXXXXXX_ 姓名實驗日期:201X年X月X日報告退發(fā) (訂正 、 重做) 課程 C程序設(shè)計實驗 實驗名稱 函 數(shù)一、實驗?zāi)康?① 熟練掌......

        C語言程序設(shè)計(1,2)實驗報告

        實驗一 C程序的運行環(huán)境和方法 一、實驗?zāi)康?1.了解所用的計算機系統(tǒng)。 2.了解在該系統(tǒng)上如何進行編輯、編譯、連接和運行一個C程序。 3.通過運行簡單的C程序了解C程序的特點。 二......

        C語言程序設(shè)計II實驗報告

        第二部分 實驗內(nèi)容一、實驗?zāi)康?1、掌握一維數(shù)組的定義和引用 2、掌握一維數(shù)組的初始化方法 3、了解與一維數(shù)組有關(guān)的應(yīng)用編程方法 二、實驗意義 數(shù)組的定義,元素引用特征和......

        山科大 C語言程序設(shè)計編程精選44例

        問題 1: 三個數(shù)比較大小 題目描述 從鍵盤上輸入0~100之間的三個數(shù),按從小到大的順序輸出。 輸入 輸入只有一行,為三個整數(shù)。 輸出 按從小到大輸出這三個數(shù)。 樣例輸入 15 10 20......

        考研電子科大通信學院考研心得

        考研經(jīng)驗?也許吧 閑來無事,想著以前在河畔上也得到過很多考研經(jīng)驗方面的東西,覺得自己也應(yīng)該回饋一下河畔。我是通信大四的,考的通信學院,380+分。今年來看這個分數(shù)屬于中上水平......

        C語言程序設(shè)計第四次(2.8)實驗報告范文

        C語言程序設(shè)計實驗報告 專業(yè) 班級日期 11月26日成績 實驗組別 第 3(2.7) 次實驗指導教師 李開 學生姓名 學號同組人姓名實驗名稱 實驗8 指針實驗 一、實驗?zāi)康?(1)熟練掌握指......

        C語言與程序設(shè)計實驗報告六

        《C語言及程序設(shè)計》實驗報告 實驗六 選擇、循環(huán)結(jié)構(gòu)程序設(shè)計 實驗?zāi)康模?進一步對選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)進行程序設(shè)計。 實驗內(nèi)容: 1、打印輸出如下圖所示的圖形: ABBBCCCCC DDDDD......

        《c語言程序設(shè)計》上機實驗報告要求

        《c語言程序設(shè)計》上機實驗報告要求1. 實驗環(huán)境: 軟件系統(tǒng):使用的軟件環(huán)境 硬件系統(tǒng):機型說明 2. 實驗?zāi)康模赫莆杖绾尉庉?、編譯、鏈接調(diào)試運行c程序 3. 實驗內(nèi)容: (1) 掌握順序結(jié)構(gòu)......