版權(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)指導(dǎo)書方義秋 編著計(jì)算機(jī)實(shí)驗(yàn)教學(xué)中心2目 錄實(shí)驗(yàn)要求 3第一部分 微機(jī)原理及匯編程序設(shè)計(jì) 4實(shí)驗(yàn)一、認(rèn)識(shí)Tddebug集成操作軟件4實(shí)驗(yàn)二、I/O程序設(shè)計(jì) 9實(shí)驗(yàn)三、分支程序設(shè)計(jì)11實(shí)驗(yàn)四、循環(huán)程序設(shè)計(jì)13實(shí)驗(yàn)五、運(yùn)算類程序設(shè)計(jì)15實(shí)驗(yàn)六、代碼轉(zhuǎn)換程序設(shè)計(jì)19實(shí)驗(yàn)七、宏指令應(yīng)用24實(shí)驗(yàn)八、字符串處理26實(shí)驗(yàn)九、數(shù)據(jù)表格處3理28實(shí)驗(yàn)十、子程序及軟中斷程序設(shè)計(jì)29第二部分 接口部分實(shí)驗(yàn)33實(shí)驗(yàn)十一、 PC機(jī)內(nèi)部8259中斷應(yīng)用33實(shí)驗(yàn)十二、 PCI總線中斷應(yīng)用39實(shí)驗(yàn)十三、8254定時(shí)/計(jì)數(shù)器應(yīng)用45實(shí)驗(yàn)十四、8255并行接口應(yīng)用53實(shí)驗(yàn)十五、交通燈控制58附錄一 TD-P
2、IT-B 實(shí)驗(yàn)系統(tǒng)的硬件環(huán)境 604實(shí)驗(yàn)要求實(shí)驗(yàn)要求預(yù)習(xí)實(shí)驗(yàn)內(nèi)容預(yù)習(xí)實(shí)驗(yàn)內(nèi)容1.明確本次實(shí)驗(yàn)?zāi)康募叭蝿?wù),了解和掌握實(shí)驗(yàn)所需的理論知識(shí)及相關(guān)接口芯片的工作原理。2.通過(guò)閱讀示例程序,掌握編程方法及相關(guān)技巧。3.對(duì)每次實(shí)驗(yàn),選擇其中一個(gè)項(xiàng)題目自己設(shè)計(jì)編寫程序。實(shí)驗(yàn)過(guò)程實(shí)驗(yàn)過(guò)程1.帶上理論課教材、實(shí)驗(yàn)指導(dǎo)書及準(zhǔn)備的實(shí)驗(yàn)程序。2.若為接口電路,請(qǐng)關(guān)閉電源搭接線路,檢查無(wú)誤后,再開電源。3.調(diào)試程序,記錄結(jié)果。4.實(shí)驗(yàn)結(jié)束后,請(qǐng)關(guān)閉電源,將各實(shí)驗(yàn)器材歸位,清潔自己的桌面。編寫實(shí)驗(yàn)報(bào)告編寫實(shí)驗(yàn)報(bào)告1.實(shí)驗(yàn)題目。2.分析設(shè)計(jì)思想,繪制實(shí)驗(yàn)原理圖、流程圖。3.程序清單及相關(guān)注釋。4.分析實(shí)驗(yàn)結(jié)果。5.說(shuō)明在實(shí)
3、驗(yàn)過(guò)程中遇到了哪些問題,是如何處理的。6.收獲體會(huì),不足之處和今后應(yīng)注意的問題等。注意事項(xiàng)注意事項(xiàng)1.實(shí)驗(yàn)以前,應(yīng)確保 PCI 總線擴(kuò)展卡與實(shí)驗(yàn)箱間扁平電纜連接的正確性。2.實(shí)驗(yàn)前后應(yīng)仔細(xì)檢查實(shí)驗(yàn)箱,防止導(dǎo)線、元件等物品落入裝置內(nèi),導(dǎo)致線路短路、元件損壞。3.愛護(hù)實(shí)驗(yàn)設(shè)施,插接、拔取排線時(shí),手握白色插頭,不得不得從線中間拉取。4.實(shí)驗(yàn)箱電源關(guān)閉后,不能立即重新開啟。關(guān)閉與重新開啟之間至少應(yīng)有 30 秒間隔。5第一部分第一部分 微機(jī)原理及匯編程序設(shè)計(jì)微機(jī)原理及匯編程序設(shè)計(jì)實(shí)驗(yàn)一、認(rèn)識(shí)實(shí)驗(yàn)一、認(rèn)識(shí) Tddebug 集成操作軟件集成操作軟件一一實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康?.熟悉匯編程序的開發(fā)過(guò)程。2.認(rèn)識(shí) T
4、ddebug 集成操作軟件。3.掌握在 Tddebug 集成環(huán)境中編輯、編譯、連接匯編語(yǔ)言程序方法。4.掌握 INT 21H 軟件中斷來(lái)調(diào)用 DOS 內(nèi)部子程序的方法二二實(shí)驗(yàn)設(shè)備實(shí)驗(yàn)設(shè)備PC 微機(jī)一臺(tái)三三匯編語(yǔ)言程序的開發(fā)過(guò)程匯編語(yǔ)言程序的開發(fā)過(guò)程匯編語(yǔ)言程序的開發(fā)過(guò)程如圖 1.1 所示,這個(gè)過(guò)程主要有編輯、編譯、鏈接幾個(gè)步驟構(gòu)成。1、源程序的編輯E: EDIT TEST.ASM編輯過(guò)程就是將源程序輸入內(nèi)存,生成一個(gè)擴(kuò)展名為 ASM 的文本文件并存入硬盤。2、源程序的編譯E:TASM TEST.ASM編譯也稱為匯編,就是利用匯編器(如 TASM 或 MASM)對(duì)源程序進(jìn)行編譯,生成擴(kuò)展名為 O
5、BJ 的目標(biāo)文件。在編譯過(guò)程中,檢查語(yǔ)法錯(cuò)誤,若有錯(cuò),則不生成目標(biāo)代碼文件,并給出錯(cuò)誤信息。根據(jù)錯(cuò)誤信息應(yīng)返回到編輯狀態(tài),修改源程序。3、目標(biāo)程序的鏈接E: TLINK TEST.OBJ鏈接過(guò)程是利用鏈接程序(如 TLINK 或 LINK)將用戶目標(biāo)程序和庫(kù)文件鏈接、定位,生成擴(kuò)展名為 EXE 的可執(zhí)行文件。鏈接時(shí),如果鏈接文件找不到所需要的鏈接信息,則發(fā)出錯(cuò)誤信息,不生成可執(zhí)行文件。4、調(diào)試可執(zhí)行程序匯編源程序調(diào)用編輯程序edit.exe調(diào)用編譯程序tasm.exe或masm.exe調(diào)用鏈接程序tlink.exe或link.exe編輯.asm匯編.obj鏈接編輯編譯鏈接圖 1.1 匯編語(yǔ)言程
6、序開發(fā)過(guò)程6E:TD TEST.EXE如果生成的 EXE 文件運(yùn)行后,并沒有按照設(shè)計(jì)意圖運(yùn)行,就需要對(duì)程序進(jìn)行調(diào)試,找出錯(cuò)誤。再對(duì)源程序進(jìn)行修改,即重復(fù)進(jìn)行編輯、編譯、鏈接、調(diào)試,直到生成完全正確的可執(zhí)行文件為止。四四Tddebug 集成操作軟件使用說(shuō)明集成操作軟件使用說(shuō)明1.該軟件是集編輯(Edit.exe) 、編譯(Tasm.exe) 、連接(Link.exe)和調(diào)試(TD.exe)等多個(gè)功能于一體,可在 DOS 環(huán)境下運(yùn)行,為用戶提供了一個(gè)學(xué)習(xí)微機(jī)原理的實(shí)驗(yàn)平臺(tái)。2.啟動(dòng) Tddebug D:wjyl Tddebug若啟動(dòng)成功,進(jìn)入主界面。3.Tddebug 的菜單結(jié)構(gòu)主菜單 子菜單 菜
7、單說(shuō)明Edit 編輯源文件(.asm)Compile Compile 編譯源文件(.asm) Link 連接目標(biāo)文件(.obj) Build All 編譯和連接Pmrun 進(jìn)入保護(hù)模式調(diào)試狀態(tài)Rmrun Run 運(yùn)行實(shí)模式程序(.exe) Debug 進(jìn)入實(shí)模式調(diào)試狀態(tài)(.exe)Help 版本信息Quit退出 Tddebug4.菜單選擇(1)快捷鍵選擇主菜單:ALT熱鍵(,)(2)按左右鍵或直接使用快捷鍵在主菜單之間切換。使用上下鍵可選擇子菜單中的菜單項(xiàng)。5.執(zhí)行菜單項(xiàng)選中要執(zhí)行的菜單項(xiàng),鍵入 Enter 鍵,系統(tǒng)彈出對(duì)話框,輸入需操作的文件名,以Enter 鍵結(jié)尾,取消操作按 Esc 鍵。
8、6.實(shí)模式調(diào)試窗口說(shuō)明(1)鍵入 Alt+R 選擇 Rmrun 主菜單的 Debug 子菜單彈出實(shí)模式調(diào)試窗口。 此時(shí)可能會(huì)疊加一個(gè)報(bào)告無(wú)符號(hào)表的對(duì)話框,按 Esc 鍵關(guān)閉該對(duì)話框。(2)該窗口實(shí)際是 Turbo Debugger 調(diào)試器窗口,簡(jiǎn)稱 TD。其窗口的劃分如圖 1-1 所示。主菜單條代碼顯示調(diào)試區(qū)寄存器顯示調(diào)試區(qū)標(biāo)志寄存器顯示調(diào)試區(qū)內(nèi)存數(shù)據(jù)顯示調(diào)試區(qū)堆棧顯示調(diào)試區(qū)快捷鍵操作提示區(qū)圖 1-1 Turbo Debugger 調(diào)試窗口劃分圖(3)主菜單中包含了 File、Edit、View、Run、Breakpoints、Data、Options、Windows和 Help 共 9 個(gè)菜
9、單項(xiàng)。可使用熱鍵選擇相應(yīng)的菜單。在調(diào)試程序或操作調(diào)試器中會(huì)使用一些快捷鍵來(lái)實(shí)現(xiàn)一些功能,下面將列出常用功能的快捷鍵及實(shí)現(xiàn)功能??旖萱I:快捷鍵:7F1:顯示幫助窗口F2:設(shè)置/清除斷點(diǎn)F4:執(zhí)行到光標(biāo)處F5:放大/縮小窗口F7:?jiǎn)尾綀?zhí)行F8:?jiǎn)尉鋱?zhí)行F9:運(yùn)行程序F10:激活主菜單Ctrl+Break:終止程序執(zhí)行Alt+X:退出 TDTab:切換焦點(diǎn)區(qū)域當(dāng)焦點(diǎn)區(qū)域在寄存器顯示區(qū)中時(shí):當(dāng)焦點(diǎn)區(qū)域在寄存器顯示區(qū)中時(shí):Ctrl+R:切換 16 位/32 位通用寄存器并顯示Ctrl+I:使光條指示寄存器的內(nèi)容加 1Ctrl+D:使光條指示寄存器的內(nèi)容減 1Ctrl+Z:使光條指示寄存器的內(nèi)容清零Ctr
10、l+C:手動(dòng)修改光條指示寄存器的內(nèi)容當(dāng)焦點(diǎn)區(qū)域在數(shù)據(jù)顯示區(qū)中時(shí):當(dāng)焦點(diǎn)區(qū)域在數(shù)據(jù)顯示區(qū)中時(shí):Ctrl+D:修改數(shù)據(jù)顯示格式Ctrl+G:指定需要顯示的內(nèi)存區(qū)域首地址Ctrl+S:查找指定的字節(jié)值表Ctrl+C:修改光標(biāo)當(dāng)前指示存儲(chǔ)單元的內(nèi)容當(dāng)焦點(diǎn)區(qū)域在代碼顯示區(qū)中時(shí):當(dāng)焦點(diǎn)區(qū)域在代碼顯示區(qū)中時(shí):Ctrl+G:指定需要顯示的代碼區(qū)域首地址Ctrl+S:查找指定的指令數(shù)字鍵/字符:修改光標(biāo)當(dāng)前指示指令五實(shí)驗(yàn)內(nèi)容及說(shuō)明實(shí)驗(yàn)內(nèi)容及說(shuō)明1.實(shí)驗(yàn)內(nèi)容:數(shù)據(jù)傳送實(shí)驗(yàn)1)編程將數(shù)據(jù)段中的一個(gè)字符串傳送到附加段中,并輸出附加段中的目標(biāo)字符串到屏幕上。參見示例出程序。2)修改此程序,采用字符串傳送指令完成。2.2
11、.實(shí)驗(yàn)中使用 DOS 功能調(diào)用(INT 21H):參見教材32 位微型計(jì)算機(jī)原理與接口技術(shù)89 頁(yè)(1 1)顯示字符串)顯示字符串入口:AH=09H調(diào)用參數(shù):DS:DX=串首地址, $為結(jié)束字符。(2 2)返回)返回 DOSDOS 系統(tǒng)系統(tǒng)入口:AH=4CH調(diào)用參數(shù):AL=返回碼3有關(guān)字符串的操作指令參見教材32 位微型計(jì)算機(jī)原理與接口技術(shù)62 頁(yè)4 實(shí)驗(yàn)?zāi)康模和ㄟ^(guò)對(duì)該程序進(jìn)行調(diào)試,查看程序段、數(shù)據(jù)段、附加段裝入內(nèi)存后的分配情況。單步執(zhí)行數(shù)據(jù)傳送指令后,觀察各個(gè)寄存器及數(shù)據(jù)區(qū)的內(nèi)容。六六實(shí)驗(yàn)步驟實(shí)驗(yàn)步驟81.運(yùn)行 Tddebug 軟件,選擇 Edit 菜單編寫實(shí)驗(yàn)程序2.使用 Compile
12、菜單中的 Compile 和 Link 對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接,生成執(zhí)行文件。3.使用 Rmrun 菜單中的 Run 運(yùn)行程序,觀察運(yùn)行結(jié)果。4.使用 Rmrun 菜單中的 Debug 調(diào)試程序,查看程序段、數(shù)據(jù)段、附加段裝入內(nèi)存后的分配情況。單步執(zhí)行數(shù)據(jù)傳送指令后,觀察各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。過(guò)程如下:1)按 F7 單步執(zhí)行,在代碼區(qū)中有一個(gè)三角,表示正在執(zhí)行的指令。每一條指令的執(zhí)行一定會(huì)使目標(biāo)寄存器和狀態(tài)寄存器發(fā)生變化,從相關(guān)窗口看結(jié)果。2)檢查內(nèi)存數(shù)據(jù)區(qū)的內(nèi)容,關(guān)鍵是找出用戶程序的數(shù)據(jù)段和附加段:方法 1:在 CPU 窗口按 Tab 鍵使內(nèi)存數(shù)據(jù)顯示區(qū)成為活動(dòng)區(qū),按 Ctrl+G 鍵,
13、輸入:“DS 或 ES 寄存器的值:偏移地址” ,即可顯示用戶指定的數(shù)據(jù)區(qū)方法 2:選擇菜單 View| Dump,彈出內(nèi)存數(shù)據(jù)顯示窗口。3) 查看執(zhí)行結(jié)果:按 Alt+F5,切換到用戶窗口。5.更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察、調(diào)試程序的正確性。七七參考程序清單參考程序清單;數(shù)據(jù)傳送實(shí)驗(yàn),采用相對(duì)尋址方式DDATASEGMENT ;定義源數(shù)據(jù)段MSR DB HELLO,WORLD!$LEN EQU $- MSRDDATAENDSEXDA SEGMENT ;定義附加數(shù)據(jù)段MSD DB LEN DUP(?)EXDA ENDSMYSTACK SEGMENT STACK ;定義堆棧段DW 20 DUP(?)
14、MYSTACK ENDSCODE SEGMENT ;定義代碼段ASSUME CS:CODE,DS:DDATA,ES:EXDASTART: MOV AX,DDATAMOV DS,AX ;裝載數(shù)據(jù)段寄存器MOV AX,EXDAMOV ES,AX ;裝載附加數(shù)據(jù)段寄存器MOV SI,OFFSET MSRMOV DI,OFFSET MSDMOV CX,LENMOV BX,0NEXT: MOV AL,MSRBX ;開始傳輸數(shù)據(jù)MOV ES:MSDBX,ALINCBXLOOP NEXT9PUSH ESPOP DS ;將附加段寄存器指向的段值賦給數(shù)據(jù)段寄存器MOV DX,OFFSET MSDMOV AH,9
15、 INT 21H ;顯示字符串MOV AH,4CH INT 21H ;返回 DOS 狀態(tài)CODE ENDS END START10實(shí)驗(yàn)二、實(shí)驗(yàn)二、I/O 程序設(shè)程序設(shè)計(jì)計(jì)一一實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康?.理解軟中斷的調(diào)用方法及中斷過(guò)程。2.掌握 INT 21H 軟件中斷來(lái)調(diào)用 DOS 系統(tǒng) I/O 子程序的方法。3.掌握將存儲(chǔ)在內(nèi)存單元中的數(shù)據(jù)在屏幕上顯示的方法。4.掌握從鍵盤輸入信息到內(nèi)存的方法。二二實(shí)驗(yàn)設(shè)備實(shí)驗(yàn)設(shè)備PC 微機(jī)一臺(tái)三三實(shí)驗(yàn)預(yù)習(xí)要求實(shí)驗(yàn)預(yù)習(xí)要求1復(fù)習(xí) DOS 功能調(diào)用(INT 21H)中用于字符輸入(功能號(hào)為 01H) 、字符輸出(功能號(hào)為 02H) 、字符串輸入(功能號(hào)為 0AH)以及
16、字符串輸出(功能號(hào)為 09H)的調(diào)用方法。參見教材32 位微型計(jì)算機(jī)原理與接口技術(shù)89 頁(yè)。2閱讀示例程序,掌握輸入/輸出方法。3從實(shí)驗(yàn)內(nèi)容中任選一道題目,仔細(xì)閱讀相關(guān)的實(shí)驗(yàn)要求及說(shuō)明,編寫程序,以便上機(jī)調(diào)試。四四實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容1 【示例】:將指定數(shù)據(jù)區(qū)中一個(gè)字節(jié)的數(shù)據(jù)以十六進(jìn)制數(shù)形式顯示在屏幕上。設(shè)計(jì)思路:首先將該數(shù)以十六進(jìn)制數(shù)形式分解,然后將每一位分別轉(zhuǎn)換為 ASCII 碼送屏幕顯示。其中 0H9H 之間的數(shù)加 30H,即可得 0H9H 的 ASCII 碼,而 AHFH 的ASCII 碼,則需再加 7H,參見表 5-1。參考程序流程如圖 2-1 所示。示例程序參見參考程序清單。2編程由鍵
17、盤輸入任意一個(gè)字符,將該字符的 ASCII 碼值顯示在屏幕上。3從鍵盤輸入兩個(gè) 1 位十進(jìn)制數(shù),計(jì)算二者之和,并將結(jié)果顯示在屏幕上。4編程由鍵盤輸入任意一位數(shù),將該數(shù)以二進(jìn)制數(shù)形式顯示在屏幕上,例:5=00000101B五五實(shí)驗(yàn)說(shuō)明實(shí)驗(yàn)說(shuō)明存儲(chǔ)在內(nèi)存單元中的數(shù)據(jù)要顯示在屏幕上,必須首先將一個(gè)數(shù)據(jù)區(qū)中的數(shù)分解為各位不同進(jìn)制的數(shù)(參見表 5-1) ,然后轉(zhuǎn)換為字符,通過(guò) DOS 功能調(diào)用(INT 21H)完成顯示。例:1) 顯示單個(gè)字符顯示單個(gè)字符MOV AH, 02HMOV DL, 待顯示字符的 ASCII 碼INT 21H2) 鍵盤輸入并回顯鍵盤輸入并回顯MOV AH, 01HINT 21H得
18、到按鍵的 ASCII 碼,存放于 AL 中六實(shí)驗(yàn)步驟實(shí)驗(yàn)步驟111.畫出實(shí)驗(yàn)流程圖。2.運(yùn)行 Tddebug 軟件,選擇 Edit 菜單編寫實(shí)驗(yàn)程序3.使用 Compile 菜單中的 Compile 和 Link 對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接,生成執(zhí)行文件。4.使用 Rmrun 菜單中的 Run 運(yùn)行程序,觀察運(yùn)行結(jié)果。5.使用 Rmrun 菜單中的 Debug 調(diào)試程序。單步執(zhí)行指令,觀察各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。6.更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。七七參考程序清單及流程參考程序清單及流程;將指定數(shù)據(jù)區(qū) SD 的數(shù)據(jù)以十六進(jìn)制數(shù)形式顯示在屏幕上DATASEGMENTMESDBShow a a
19、s hex:,0AH,0DH,$SDDBaDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATAMOVDS,AXMOVDX,OFFSET MES;顯示提示信息MOVAH,09HINT 21HMOVSI,OFFSET SDMOVAL,DS:SIANDAL,0F0H;取高 4 位 MOV CL,4SHRAL,CLCMPAL,0AH;是否是 A 以上的數(shù)JBC2ADDAL,07HC2:ADD AL,30HMOVDL,AL ;顯示字符 MOVAH,02HINT21HMOVAL,DS:SIANDAL,0FH;取低 4 位CMPAL,0AHJBC
20、3ADD AL,07HC3:ADD AL,30HMOVDL,AL;顯示字符 MOVAH,02HINT21HMOVAH,4CH ;返回 DOS圖 2-1 一個(gè)字節(jié)數(shù)以十六進(jìn)制數(shù)形式顯示處理流程12INT21HCODEENDSEND START13實(shí)驗(yàn)三、分實(shí)驗(yàn)三、分支程序設(shè)計(jì)支程序設(shè)計(jì)一一實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康哪康?.掌握比較指令、條件轉(zhuǎn)移指令的用法2.掌握分支結(jié)構(gòu)程序的組成3.掌握分支程序的設(shè)計(jì)、調(diào)試方法二二實(shí)驗(yàn)設(shè)備實(shí)驗(yàn)設(shè)備PC 微機(jī)一臺(tái)三三實(shí)驗(yàn)預(yù)習(xí)要求實(shí)驗(yàn)預(yù)習(xí)要求1復(fù)習(xí)比較指令、條件轉(zhuǎn)移指令的用法。2閱讀示例程序,掌握分支編程方法及相關(guān)技巧。3從實(shí)驗(yàn)內(nèi)容中任選一道題目,仔細(xì)閱讀相關(guān)的實(shí)驗(yàn)要求及說(shuō)明,編
21、寫程序,以便上機(jī)調(diào)試。四四實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容1 【示例】判斷 X 的大小,并根據(jù)判斷結(jié)果以不同方式分別顯示。2鍵入一個(gè)數(shù),判斷數(shù)是否在 5 X24 范圍內(nèi),是輸出標(biāo)志 0,不是輸出。3. 編寫程序,在屏幕上顯示一組菜單,根據(jù)鍵盤輸入的菜單編號(hào),提示你選擇的菜單名。4從鍵盤輸入一個(gè)字符,判斷該字符是小寫字母、大寫字母、數(shù)字或其他字符,并給出相應(yīng)的提示。五五實(shí)驗(yàn)要求及說(shuō)明實(shí)驗(yàn)要求及說(shuō)明1判斷判斷 X 的大小,并根據(jù)判斷結(jié)果以不同方式分別顯示的大小,并根據(jù)判斷結(jié)果以不同方式分別顯示設(shè) NUMBER 單元的數(shù) X 以及數(shù)值 N1,N2 均為單字節(jié)無(wú)符號(hào)數(shù),請(qǐng)判斷 X 的大小,并根據(jù)判斷結(jié)果分別顯示:N1
22、=X=N2,或 XN2。參見程序清單參見程序清單2鍵入一個(gè)數(shù),判斷數(shù)是否在鍵入一個(gè)數(shù),判斷數(shù)是否在 5 X24 范圍內(nèi),是輸出標(biāo)志范圍內(nèi),是輸出標(biāo)志 0,不是輸出,不是輸出3編寫程序,在屏幕上顯示一組菜單,根據(jù)鍵盤輸入的菜單編號(hào),提示你選擇的菜單名。編寫程序,在屏幕上顯示一組菜單,根據(jù)鍵盤輸入的菜單編號(hào),提示你選擇的菜單名。假設(shè)在屏幕上顯示的菜單如下:1Open2Save3Copy4Exit(Please choose 1,2,3,OR 5)若輸入 1,則顯示“I choose Open”后程序結(jié)束;若輸入 2,則顯示“I choose Save”后程序結(jié)束;若輸入 3,則顯示“I choos
23、e Copy”后程序結(jié)束;若輸入 4,則顯示“I choose Exit”后程序結(jié)束;若輸入其它字符,則顯示“You press an error key ”后程序結(jié)束;注意可使用宏指令簡(jiǎn)化程序。4從鍵盤輸入一個(gè)字符,判斷該字符是小寫字母、大寫字母、數(shù)字或其他字符,并給出相從鍵盤輸入一個(gè)字符,判斷該字符是小寫字母、大寫字母、數(shù)字或其他字符,并給出相應(yīng)的提示。應(yīng)的提示。14數(shù)字 09 的 ASCII 碼為 30H39H;大寫字母的 ASCII 碼為 41H5AH;小寫字母的ASCII 碼為 61H7AH;六實(shí)驗(yàn)步驟實(shí)驗(yàn)步驟1 畫出實(shí)驗(yàn)流程圖。2 運(yùn)行 Tddebug 軟件,選擇 Edit 菜單編
24、寫實(shí)驗(yàn)程序3 使用 Compile 菜單中的 Compile 和 Link 對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接,生成執(zhí)行文件。4 使用 Rmrun 菜單中的 Run 運(yùn)行程序,觀察運(yùn)行結(jié)果。5 使用 Rmrun 菜單中的 Debug 調(diào)試程序。觀察構(gòu)成分支條件的各標(biāo)志的變化情況及相關(guān)寄存器內(nèi)容。6 更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。七七參考程序清單參考程序清單;設(shè) NUMBER 單元的數(shù) X 以及數(shù)值 N1,N2 均為單字節(jié)無(wú)符號(hào)數(shù),請(qǐng)判斷 X 的大小,并根據(jù)判斷結(jié)果分別顯示:N1=X=N2,或 XN2。DATA SEGMENT USE16MESG1 DB N1=X=N2 $ MESG2 DB XN
25、2 $ NUMBER DB 66 ;無(wú)符號(hào)數(shù) XN1 EQU 22N2 EQU 88DATA ENDSCODE SEGMENT USE16 ASSUME CS:CODE, DS:DATABEG: MOV AX , DATA MOV DS, AX MOV DX, OFFSET MESG1 CMP NUMBER, N1 JAE NEXT ;X N1 轉(zhuǎn) MOV DX, OFFSET MESG2 JMP DISPNEXT: CMP NUMBER, N2 JBE DISP ;X N2 轉(zhuǎn) MOV DX, OFFSET MESG3DISP: MOV AH, 9 INT 21H ;顯示結(jié)果信息 MOV A
26、H, 4CH INT 21H ;返回 DOSCODE ENDS END BEG15實(shí)驗(yàn)四、循環(huán)程實(shí)驗(yàn)四、循環(huán)程序設(shè)計(jì)序設(shè)計(jì)一一實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康?掌握比較指令、轉(zhuǎn)移指令和循環(huán)指令的使用方法2掌握循環(huán)結(jié)構(gòu)程序的組成3掌握循環(huán)程序的設(shè)計(jì)、調(diào)試方法二二實(shí)驗(yàn)設(shè)備實(shí)驗(yàn)設(shè)備PC 微機(jī)一臺(tái)三三實(shí)驗(yàn)預(yù)習(xí)要求實(shí)驗(yàn)預(yù)習(xí)要求1復(fù)習(xí)比較指令、條件轉(zhuǎn)移指令和循環(huán)指令。2閱讀示例程序,掌握循環(huán)程序的結(jié)構(gòu)、循環(huán)控制方法及相關(guān)技巧。3從實(shí)驗(yàn)內(nèi)容中任選一道題目,仔細(xì)閱讀相關(guān)的實(shí)驗(yàn)要求及說(shuō)明,編寫程序,以便上機(jī)調(diào)試。四四實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容1 【示例】求某數(shù)據(jù)區(qū)內(nèi)負(fù)數(shù)的個(gè)數(shù)2試編程統(tǒng)計(jì)數(shù)據(jù)區(qū)中正數(shù)、零和負(fù)數(shù)的個(gè)數(shù)。3. 編程求無(wú)符號(hào)數(shù)
27、字節(jié)序列中最大值和最小值。4從鍵盤輸入一字符串,搜索該字符串中是否有字符“A” ,若有請(qǐng)輸出其在串中的位置。五五實(shí)驗(yàn)說(shuō)明實(shí)驗(yàn)說(shuō)明1求某數(shù)據(jù)區(qū)內(nèi)負(fù)數(shù)的個(gè)數(shù)為統(tǒng)計(jì)數(shù)據(jù)區(qū)內(nèi)負(fù)數(shù)的個(gè)數(shù),需逐個(gè)判別區(qū)內(nèi)的每一個(gè)數(shù)據(jù),然后將所有數(shù)據(jù)中凡是符號(hào)位為 1 的數(shù)據(jù)個(gè)數(shù)累加起來(lái),即得到區(qū)內(nèi)包含負(fù)數(shù)的個(gè)數(shù)。參見程序清單.2試編程統(tǒng)計(jì)數(shù)據(jù)區(qū)中正數(shù)、零和負(fù)數(shù)的個(gè)數(shù)。3編程求無(wú)符號(hào)數(shù)字節(jié)序列中最大值和最小值實(shí)驗(yàn)中可使用 BH 和 BL 作為暫存現(xiàn)行最大值和最小值,且在初始時(shí)將 BH 和 BL 初始化為首字節(jié)的內(nèi)容,循環(huán)依次比較每個(gè)字節(jié)的內(nèi)容,求得最大值(存于 BH 中)和最小值(存于 BL 中) ,送屏幕顯示。4 從鍵盤
28、輸入一字符串,搜索該字符串中是否有字符從鍵盤輸入一字符串,搜索該字符串中是否有字符“A” ,若有請(qǐng)輸出其在串中的位置。,若有請(qǐng)輸出其在串中的位置。六實(shí)驗(yàn)步驟實(shí)驗(yàn)步驟1.畫出實(shí)驗(yàn)流程圖。2.運(yùn)行 Tddebug 軟件,選擇 Edit 菜單編寫實(shí)驗(yàn)程序3.使用 Compile 菜單中的 Compile 和 Link 對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接,生成執(zhí)行文件。4.使用 Rmrun 菜單中的 Run 運(yùn)行程序,觀察運(yùn)行結(jié)果。5.使用 Rmrun 菜單中的 Debug 調(diào)試程序。觀察構(gòu)成分支、循環(huán)條件的各標(biāo)志的變化16情況及相關(guān)寄存器內(nèi)容。6.更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。七七參考程序清單參考程序
29、清單;確定數(shù)據(jù)區(qū) NUMB 中負(fù)數(shù)的個(gè)數(shù)(存放于 BL 中)DDATASEGMENTNUMBDB12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01HMES DBThe number of negative is:$DDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DDATASTART:MOVAX,DDATAMOVDS,AXMOVDI,OFFSET NUMBXORBL,BLMOVCX,10A1: MOV AL,DI TEST AL,80HJE A2INCBLA2: INC DILOOP A1 ;統(tǒng)計(jì)負(fù)數(shù)個(gè)數(shù)MOVDX,OFFSET MESM
30、OVAH,09HINT 21HMOVAL,BL ;顯示負(fù)數(shù)個(gè)數(shù),注意與實(shí)驗(yàn)二所使用的方法的區(qū)別MOV CX,2A3: PUSH CX MOV CL,4 ROL AL,CL POP CX MOV BL,AL AND AL,0FH CMP AL,0AHJB A4ADD AL,07HA4: ADD AL,30HMOV DL,ALMOV AH,02H INT 21H MOV AL,BL LOOP A3MOVAH,4CHINT21H17CODE ENDS END START18實(shí)驗(yàn)五、運(yùn)算實(shí)驗(yàn)五、運(yùn)算類程類程序設(shè)計(jì)序設(shè)計(jì)一實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康?.掌握運(yùn)算類指令對(duì)各狀態(tài)標(biāo)志位的影響及其測(cè)試方法2.掌握運(yùn)用運(yùn)算
31、類指令編程及調(diào)試的方法3.掌握子程序設(shè)計(jì)及調(diào)用方法二二實(shí)驗(yàn)設(shè)備實(shí)驗(yàn)設(shè)備PC 機(jī)一臺(tái)三三實(shí)驗(yàn)預(yù)習(xí)要求實(shí)驗(yàn)預(yù)習(xí)要求1復(fù)習(xí)運(yùn)算類指令的用法。2復(fù)習(xí)子程序設(shè)計(jì)及調(diào)用方法。3閱讀示例程序,掌握子程序的編程方法及相關(guān)技巧。4從實(shí)驗(yàn)內(nèi)容中任選一道題目,仔細(xì)閱讀相關(guān)的實(shí)驗(yàn)要求及說(shuō)明,用子程序處理方式編寫程序,以便上機(jī)調(diào)試。四四實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容1 示例:二進(jìn)制雙精度加法運(yùn)算示例:二進(jìn)制雙精度加法運(yùn)算2 十進(jìn)制數(shù)的 BCD 碼加減法運(yùn)算3 乘法運(yùn)算4 除法運(yùn)算5 編程用減奇數(shù)法開平方五五實(shí)驗(yàn)要求及說(shuō)明實(shí)驗(yàn)要求及說(shuō)明80 x86 指令系統(tǒng)提供了實(shí)現(xiàn)加、減、乘、除運(yùn)算的基本指令,可對(duì)表 4-1 所示的數(shù)據(jù)類型進(jìn)行算術(shù)
32、運(yùn)算。表 4-1 數(shù)據(jù)類型算術(shù)運(yùn)算表二進(jìn)制BCD 碼數(shù)制帶符號(hào)無(wú)符號(hào)組合非組合運(yùn)算符、操作符字節(jié)、字、多精度字節(jié)(二位數(shù)字)字節(jié)(一位數(shù)字)1.二進(jìn)制雙精度加法運(yùn)算二進(jìn)制雙精度加法運(yùn)算計(jì)算 XY=Z,并將結(jié)果輸出到屏幕上。其中 X=001565A0H,Y=0021B79EH,運(yùn)算的結(jié)果 Z=00371D3EH。(1)本實(shí)驗(yàn)是雙精度(2 個(gè) 16 位,即 32 位)運(yùn)算,利用累加器 AX,先求低 16 位和,并存儲(chǔ)于低地址存儲(chǔ)單元,后求高 16 位和,再存入高地址存儲(chǔ)單元。由于低位和可能向高位有進(jìn)位,此時(shí) CF=1,因而高位字相加語(yǔ)句需用 ADC 指令,即同時(shí)加上 CF 中的 1。參見參考程序清
33、單。(2)畫出 X、Y、Z 三個(gè)數(shù)在內(nèi)存中的分布示意圖。19(3)修改示例程序,直接使用 32 位寄存器和 32 位加法指令完成本實(shí)驗(yàn)功能。2.十進(jìn)制數(shù)的十進(jìn)制數(shù)的 BCD 碼加減法運(yùn)算碼加減法運(yùn)算計(jì)算 XY=Z,其中,X、Y、Z 為非組合的 BCD 碼,X=0400H,Y=0102H,運(yùn)算結(jié)果 Z=0208H。(1)編寫兩個(gè)數(shù)值長(zhǎng)度不等的編寫兩個(gè)數(shù)值長(zhǎng)度不等的 BCD 碼相加程序。碼相加程序。思路:對(duì)應(yīng)位用 ADC 帶進(jìn)位加法求和(考慮 CF 標(biāo)志) ,再進(jìn)行 DAA 調(diào)整(只對(duì) AL處理。3.乘法運(yùn)算乘法運(yùn)算本實(shí)驗(yàn)要求實(shí)現(xiàn)十進(jìn)制數(shù)乘法,被乘數(shù)和乘數(shù)均以 BCD 碼形式存放在內(nèi)存中,被乘數(shù)為
34、 02345,乘數(shù)為 3,運(yùn)算結(jié)果 7035,顯示在屏幕上為:00 00 07 00 03 05。(1)調(diào)試程序觀察加、減、乘、除及相關(guān)調(diào)整指令,對(duì)標(biāo)志位的影響。4.除法運(yùn)算除法運(yùn)算本實(shí)驗(yàn)要求在內(nèi)存中存儲(chǔ) 5 個(gè)無(wú)符號(hào)數(shù),將其用 101H 除,在進(jìn)行 BCD 碼轉(zhuǎn)換后,若奇偶位為偶(PF=1) ,則顯示“P” ;為負(fù)(SF=1) ,則顯示“S” ;為零(ZF=1) ,則顯示“Z” ;若 PF、SF、ZF 標(biāo)志皆為 0,則顯示“;” 。除法指令 DIV、IDIV 執(zhí)行后,不影響任何標(biāo)志位,而 BCD 碼調(diào)整指令 AAD 會(huì)影響PF、SF、ZF 標(biāo)志。通過(guò)本實(shí)驗(yàn)考察這些指令對(duì)標(biāo)志的影響情況。5.編
35、程用減奇數(shù)法開平方編程用減奇數(shù)法開平方80 x86 指令系統(tǒng)中沒有開平方指令,因此,開平方運(yùn)算是通過(guò)程序來(lái)實(shí)現(xiàn)的。用減奇數(shù)法可求得近似平方根,獲得平方根的整數(shù)部分。因?yàn)?,N 個(gè)自然數(shù)中奇數(shù)之和等于,2N即:,展開:nKNK12) 12(1+3+5=9=231+3+5+7=16=241+3+5+7+9+11+13+15=64=28所以,若要做的運(yùn)算,就可以從 S 中逐次減去自然數(shù)中的奇數(shù)S1,3,5,7,一直到被減數(shù)為 0 或不夠減下一個(gè)自然數(shù)的奇數(shù)為止,然后統(tǒng)計(jì)減去自然數(shù)的奇數(shù)的個(gè)數(shù),它就是 S 的近似平方根。(1)本實(shí)驗(yàn)要求編程實(shí)現(xiàn)計(jì)算 0040H 的開平方值,并將運(yùn)算結(jié)果顯示在屏幕上。(2
36、)試編程,由鍵盤輸入一個(gè)十六進(jìn)制數(shù),將其轉(zhuǎn)換為十進(jìn)制數(shù),并進(jìn)行開平方運(yùn)算。六實(shí)驗(yàn)步驟實(shí)驗(yàn)步驟1.畫出實(shí)驗(yàn)流程圖。2.畫出內(nèi)存數(shù)據(jù)分布示意圖3.運(yùn)行 Tddebug 軟件,選擇 Edit 菜單編寫實(shí)驗(yàn)程序4.使用 Compile 菜單中的 Compile 和 Link 對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接,生成執(zhí)行文20件。5.使用 Rmrun 菜單中的 Run 運(yùn)行程序,觀察運(yùn)行結(jié)果。6.使用 Rmrun 菜單中的 Debug 調(diào)試程序。單步執(zhí)行加、減、乘、除及相關(guān)調(diào)整指令時(shí),觀察各標(biāo)志的變化情況及寄存器、數(shù)據(jù)區(qū)的內(nèi)容。7.更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。七七參考程序清單參考程序清單雙精度加法運(yùn)算雙
37、精度加法運(yùn)算;計(jì)算 X+Y=Z;X=001565A0H,Y=0021B79EH,運(yùn)算的結(jié)果 Z=00371D3EH。DATA SEGMENTMES DBThe result is:$XLDW 65A0HXHDW 0015HYLDW 0B79EHYHDW 0021HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MES ;顯示信息 MOV AH,09H INT 21H MOV AX,XL ;計(jì)算結(jié)果 ADD AX,YL MOV BX,AX MOV AX,XH ADC AX
38、,YH PUSH BX MOV CX,4 ;顯示高位字 MOV DX,AXAGA1: PUSH CX MOV CL,4 ROL DX,CL POP CX MOV AL,DL AND AL,0FH CMP AL,10 JC NEXT1 ADD AL,7NEXT1: ADD AL,30H MOV AH,0EH INT 10H21 LOOP AGA1 POP BX MOV AX,BX MOV CX,4 ;顯示低位字 MOV DX,AXAGA2: PUSH CX MOV CL,4 ROL DX,CL POP CX MOV AL,DL AND AL,0FH CMP AL,10 JC NEXT2 ADD
39、AL,7NEXT2: ADD AL,30H MOV AH,0EH INT 10H LOOP AGA2 MOV AH,4CH INT 21HCODE ENDSEND START22實(shí)驗(yàn)六、代碼轉(zhuǎn)換程序設(shè)計(jì)實(shí)驗(yàn)六、代碼轉(zhuǎn)換程序設(shè)計(jì)一一實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康?.了解微機(jī)中所使用的各類數(shù)制及編碼方法。2.掌握不同進(jìn)制數(shù)及編碼相互轉(zhuǎn)換的程序設(shè)計(jì)方法,加深對(duì)數(shù)碼轉(zhuǎn)換的理解。3.掌握將存儲(chǔ)在內(nèi)存單元中的數(shù)據(jù)以十六進(jìn)制數(shù)形式、十進(jìn)制數(shù)形式和二進(jìn)制數(shù)形式顯示在屏幕上的方法。二二實(shí)驗(yàn)設(shè)備實(shí)驗(yàn)設(shè)備PC 微機(jī)一臺(tái)三三實(shí)驗(yàn)預(yù)習(xí)要求實(shí)驗(yàn)預(yù)習(xí)要求1復(fù)習(xí)運(yùn)算類指令的用法。2復(fù)習(xí)子程序設(shè)計(jì)及調(diào)用方法。3閱讀示例程序,掌握子程序的編程
40、方法及相關(guān)技巧。4從實(shí)驗(yàn)內(nèi)容中任選一道題目,仔細(xì)閱讀相關(guān)的實(shí)驗(yàn)要求及說(shuō)明,用子程序處理方式編寫程序,以便上機(jī)調(diào)試。四四實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容1 【示例】將 5 位十進(jìn)制數(shù)的數(shù)字串轉(zhuǎn)換為一個(gè)字的二進(jìn)制數(shù)2編寫程序?qū)?nèi)存中一個(gè)字的數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的數(shù)字串顯示。3編程將十進(jìn)制的數(shù)字串轉(zhuǎn)換為 BCD 碼4編程將 BCD 碼轉(zhuǎn)換為二進(jìn)制數(shù)5編程將二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)顯示五實(shí)驗(yàn)原理及說(shuō)明實(shí)驗(yàn)原理及說(shuō)明 計(jì)算機(jī)輸入設(shè)備輸入的信息一般是由 ASCII 碼或 BCD 碼表示的數(shù)據(jù)或字符,CPU 一般均用二進(jìn)制數(shù)進(jìn)行計(jì)算或用其他信息進(jìn)行處理,處理的結(jié)果又必須依照外設(shè)的要求變?yōu)锳SCII 碼、或 BCD 碼或七段顯示碼
41、等。因此,在應(yīng)用軟件中,各類數(shù)制的轉(zhuǎn)換和代碼的轉(zhuǎn)換是必不可少的。計(jì)算機(jī)與外設(shè)間的數(shù)碼轉(zhuǎn)換關(guān)系如圖 6-1 所示,數(shù)碼對(duì)應(yīng)關(guān)系如表 6-1所示。6-1231.將十進(jìn)制數(shù)的數(shù)字串轉(zhuǎn)換為二進(jìn)制數(shù)將十進(jìn)制數(shù)的數(shù)字串轉(zhuǎn)換為二進(jìn)制數(shù)十進(jìn)制數(shù)可以表示為:iinnnnDDDD101010100011其中代表十進(jìn)制數(shù) 1、2、3、9、0。iD上式可以轉(zhuǎn)換為:012110)10)10)10(10DDDDDDnnnii由上式可歸納出十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)的方法:從十進(jìn)制數(shù)的最高位開始做乘nD10 加次位的操作,依次類推,則可求出二進(jìn)制數(shù)結(jié)果。本實(shí)驗(yàn)要求將緩沖區(qū)中的一個(gè) 5 位十進(jìn)制數(shù) 00012 的 ASCII 碼
42、轉(zhuǎn)換成二進(jìn)制數(shù),并將轉(zhuǎn)換結(jié)果以十六進(jìn)制數(shù)形式 000C 按位顯示在屏幕上。轉(zhuǎn)換過(guò)程的參考程序清單見后參考程序清單 1,參考流程如圖 3-2 所示。修改該示例程序,從鍵盤任意輸入 5 個(gè)數(shù),實(shí)現(xiàn)轉(zhuǎn)換并顯示。2.將內(nèi)存中一個(gè)字的數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的數(shù)字串。將內(nèi)存中一個(gè)字的數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的數(shù)字串。十六位二進(jìn)制數(shù)(一個(gè)字)的值域?yàn)?065535,最大可轉(zhuǎn)換為 5 位十進(jìn)制數(shù)。五位十進(jìn)制數(shù)可表示為:01122334410101010DDDDDND因此,將十六位二進(jìn)制數(shù)轉(zhuǎn)換為 5 位 ASCII 碼表示的十進(jìn)制數(shù)數(shù)字串,即采用除 10 取余方法,分別求,并將它們轉(zhuǎn)換為 ASCII 碼。以字符串方式顯示在屏
43、幕上。轉(zhuǎn)換部40 DD分的參考流程參見圖 6-4。假設(shè)緩沖區(qū)中存放的數(shù)是 000CH 轉(zhuǎn)換成十進(jìn)制數(shù)的數(shù)字串后,在屏幕顯示“00012” 。3.將十進(jìn)制數(shù)的數(shù)字串轉(zhuǎn)換為將十進(jìn)制數(shù)的數(shù)字串轉(zhuǎn)換為 BCD 碼碼(1)本實(shí)驗(yàn)要求將一個(gè) 5 位十進(jìn)制數(shù)的數(shù)字串“54321”的 ASCII 碼存放在數(shù)據(jù)區(qū)中,轉(zhuǎn)換為 BCD 碼后,將轉(zhuǎn)換結(jié)果分別顯示在屏幕上,即顯示:01,02,03,04,05。若輸入的不是十進(jìn)制數(shù)的 ASCII 碼,則輸出“FF” 。提示:一個(gè)字節(jié)取其低 4 位即變?yōu)?BCD 碼。6-124轉(zhuǎn)換部分的實(shí)驗(yàn)參考流程見圖 6-3。(2)修改程序,實(shí)現(xiàn)從鍵盤輸入 5 位十進(jìn)制數(shù) 54321,
44、轉(zhuǎn)換 BCD 碼后以輸入順序一致顯示,即顯示:05 04 03 02 01 4.編程將編程將 BCD 碼轉(zhuǎn)換為二進(jìn)制數(shù)碼轉(zhuǎn)換為二進(jìn)制數(shù)本實(shí)驗(yàn)要求將 4 個(gè)二位十進(jìn)制的 BCD 碼存放在某一段內(nèi)存單元中,轉(zhuǎn)換出的二進(jìn)制碼存入其后的存儲(chǔ)單元中,轉(zhuǎn)換結(jié)果以十六進(jìn)制方式送屏幕顯示。轉(zhuǎn)換部分的實(shí)驗(yàn)流程參見圖 6-5。假設(shè) 4 個(gè)十進(jìn)制數(shù)是:17,34,51,68用 BCD 碼表示為:01H,07H,03H,04H,05H,01H,06H,08H顯示為:0011,0022,0033,0044六實(shí)驗(yàn)步驟實(shí)驗(yàn)步驟1.畫出實(shí)驗(yàn)流程圖。2.運(yùn)行 Tddebug 軟件,選擇 Edit 菜單編寫實(shí)驗(yàn)程序3.使用 Co
45、mpile 菜單中的 Compile 和 Link 對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接,生成執(zhí)行文件。4.使用 Rmrun 菜單中的 Run 運(yùn)行程序,觀察運(yùn)行結(jié)果。5.使用 Rmrun 菜單中的 Debug 調(diào)試程序。單步執(zhí)行指令,觀察各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。6.更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。圖 6-2 將 5 位十進(jìn)制數(shù)的數(shù)字串轉(zhuǎn)換為二進(jìn)制數(shù)參考流程圖 6-3 將十進(jìn)制數(shù)的數(shù)字串轉(zhuǎn)換為 BCD 碼參考流程25七七參考程序清單參考程序清單將十進(jìn)制數(shù)的數(shù)字串轉(zhuǎn)換為數(shù)將十進(jìn)制數(shù)的數(shù)字串轉(zhuǎn)換為數(shù)DDATASEGMENTMES DBThe ascii code of decimal code are:
46、$BUF DB30H,30H,30H,31H,32H ;十進(jìn)制 00012 的 ASCII 碼DB10H DUP(0)DDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DDATASTART:MOV AX,DDATA MOVDS,AX MOV SI,OFFSET BUF MOVBL,0AH ;送被乘數(shù) MOV CX,0004H ;送轉(zhuǎn)換位數(shù) MOV AH,00H MOV AL,SI ;取第一位 ASCII 碼 SUB AL,30HA1: INC SI IMUL BL ;乘 10 ADD AL,SI SUB AL,30H圖 6-4 將內(nèi)存中一個(gè)字的數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的數(shù)字
47、串參考流程圖 6-5 將 BCD 碼轉(zhuǎn)換為二進(jìn)制數(shù)參考流程26 LOOP A1 MOV BX,AX MOVDX,OFFSET MES ;顯示提示信息 MOVAH,09H INT21H MOV AX,BX ;顯示結(jié)果 MOV CX,4A3: PUSH CX MOV CL,4 ROL AX,CL POP CX MOV BX,AX AND AL,0FH CMP AL,0AH JB A2 ADD AL,07HA2: ADD AL,30HMOV DL,ALMOV AH,02HINT 21H MOV AX,BX LOOP A3 MOV AH,4CHINT 21HCODEENDSEND START27實(shí)驗(yàn)七
48、、宏指令應(yīng)用實(shí)驗(yàn)七、宏指令應(yīng)用一一實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康?熟悉宏指令、宏定義、宏調(diào)用以及宏展開的概念,掌握宏指令的定義與調(diào)用方法。2掌握子程序的定義、調(diào)用以及調(diào)用程序與子程序之間參數(shù)的傳遞方法。3了解宏指令與子程序的異同以及各自的使用場(chǎng)合。二二實(shí)驗(yàn)設(shè)備實(shí)驗(yàn)設(shè)備PC 微機(jī)一臺(tái)三三實(shí)驗(yàn)預(yù)習(xí)要求實(shí)驗(yàn)預(yù)習(xí)要求1復(fù)習(xí)宏指令的定義與調(diào)用方法。2復(fù)習(xí)子程序的定義與調(diào)用方法。2閱讀示例程序,掌握編程方法及相關(guān)技巧。3從實(shí)驗(yàn)內(nèi)容中任選一道題目,仔細(xì)閱讀相關(guān)的實(shí)驗(yàn)要求及說(shuō)明,編寫程序,以便上機(jī)調(diào)試。四四實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容1 【示例】利用宏指令分組顯示變量中多位二進(jìn)制數(shù)。2從鍵盤輸入一個(gè) 5 位的十進(jìn)制數(shù),定義一個(gè)帶參數(shù)的
49、宏,實(shí)現(xiàn)以二進(jìn)制、十進(jìn)制、十六進(jìn)制、八進(jìn)制數(shù)的形式輸出。五五實(shí)驗(yàn)要求及說(shuō)明實(shí)驗(yàn)要求及說(shuō)明1 【示例示例】利用宏指令分組顯示變量中多位二進(jìn)制數(shù)。利用宏指令分組顯示變量中多位二進(jìn)制數(shù)。定義 CRLF 宏指令實(shí)現(xiàn)回車換行功能;定義 DISP 宏指令實(shí)現(xiàn)分組(4 位一組)顯示變量 VAR 中 NN 位二進(jìn)制數(shù)。參見程序清單。2從鍵盤輸入一個(gè)從鍵盤輸入一個(gè) 5 位的十進(jìn)制數(shù),定義一個(gè)帶參數(shù)的宏,實(shí)現(xiàn)以二進(jìn)制、十進(jìn)制、位的十進(jìn)制數(shù),定義一個(gè)帶參數(shù)的宏,實(shí)現(xiàn)以二進(jìn)制、十進(jìn)制、16進(jìn)制、進(jìn)制、8 進(jìn)制數(shù)的形式輸出。進(jìn)制數(shù)的形式輸出。六實(shí)驗(yàn)步驟實(shí)驗(yàn)步驟1.畫出實(shí)驗(yàn)流程圖。2.運(yùn)行 Tddebug 軟件,選擇 E
50、dit 菜單編寫實(shí)驗(yàn)程序3.使用 Compile 菜單中的 Compile 和 Link 對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接,生成執(zhí)行文件。4.使用 Rmrun 菜單中的 Run 運(yùn)行程序,觀察運(yùn)行結(jié)果。5.使用 Rmrun 菜單中的 Debug 調(diào)試程序。觀察宏調(diào)用以及宏展開情況。七七參考程序清單參考程序清單;定義 CRLF 宏指令實(shí)現(xiàn)回車換行功能;;定義 DISP 宏指令實(shí)現(xiàn)分組(4 位一組)顯示變量 VAR 中 NN 位二進(jìn)制數(shù)。CRLF MACRO28 MOV AH, 0EH MOV AL, 0DH INT 10H MOV AL, 0AH INT 10H ENDMDISP MACRO VAR,
51、NN LOCAL LAST1, LAST2 MOV CH, NN/4LAST1: MOV CL, 4LAST2: MOV AL, 0 ROL VAR, 1 ADC AL, 0 MOV AH, 0EH INT 10H DEC CL JNZ LAST2 MOV AL, INT 10H DEC CH JNZ LAST1 CRLF ENDM CODE SEGMENT ASSUME CS:CODENUM DB 88HBEG: MOV BX, 1234H DISP BH, 8 ;顯示 BH 中的 8 位數(shù) DISP BX, 16 ;顯示 BX 中的 16 位數(shù) DISP NUM, 8 ;顯示 NUM 單元
52、中的 8 位數(shù) MOV AH, 4CH INT 21HCODE ENDS END BEG;定義 CRLF 宏指令實(shí)現(xiàn)回車換行功能;定義 DISP 宏指令實(shí)現(xiàn)分組(4 位一組)顯示變量 VAR 中 NN 位二進(jìn)制數(shù)。CRLF MACRO MOV AH, 0EH MOV AL, 0DH INT 10H MOV AL, 0AH INT 10H ENDMDISP MACRO VAR, NN LOCAL LAST1, LAST229 MOV CH, NN/4LAST1: MOV CL, 4LAST2: MOV AL, 0 ROL VAR, 1 ADC AL, 0 MOV AH, 0EH INT 10H
53、DEC CL JNZ LAST2 MOV AL, INT 10H DEC CH JNZ LAST1 CRLF ENDMCODE SEGMENT ASSUME CS:CODENUM DB 88HBEG: MOV EBX, 12345678H DISP BH, 8 ;顯示 BH 中的 8 位數(shù) DISP BX, 16 ;顯示 BX 中的 16 位數(shù) DISP EBX, 32 ;顯示 EBX 中的 32 位數(shù) DISP NUM, 8 ;顯示 NUM 單元中的 8 位數(shù) MOV AH, 4CH INT 21HCODE ENDS END BEG30實(shí)驗(yàn)八、字符串處理實(shí)驗(yàn)八、字符串處理一一實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康?/p>
54、1掌握字符串操作指令。2掌握實(shí)現(xiàn)字符串的搜索、排序等操作。二二實(shí)驗(yàn)設(shè)備實(shí)驗(yàn)設(shè)備PC 微機(jī)一臺(tái)三三實(shí)驗(yàn)預(yù)習(xí)要求實(shí)驗(yàn)預(yù)習(xí)要求1復(fù)習(xí)字符串操作指令。2閱讀示例程序,掌握編程方法及相關(guān)技巧。3從實(shí)驗(yàn)內(nèi)容中任選一道題目,仔細(xì)閱讀相關(guān)的實(shí)驗(yàn)要求及說(shuō)明,編寫程序,以便上機(jī)調(diào)試。四四實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容1 【示例】 為標(biāo)準(zhǔn) ASCII 設(shè)置校驗(yàn)碼。2從源串字符中搜索一個(gè)字串。3從鍵盤輸入一系列字符串,對(duì)他們按從小到大的順序排序輸出在屏幕上。4輸入一條英語(yǔ)句子,將其規(guī)范化:即將每個(gè)單詞的第一個(gè)字符變?yōu)榇髮?,其余為小寫,并將?guī)范化后的句子顯示在屏幕上,同時(shí)統(tǒng)計(jì)出該句中單詞個(gè)數(shù),顯示:Number=?。五五實(shí)驗(yàn)要求及說(shuō)
55、明實(shí)驗(yàn)要求及說(shuō)明1 【示例示例】為標(biāo)準(zhǔn)為標(biāo)準(zhǔn) ASCII 設(shè)置校驗(yàn)碼設(shè)置校驗(yàn)碼標(biāo)準(zhǔn) ASCII 碼的最高位(D7 位)為 0。微機(jī)系統(tǒng)與 I/O 設(shè)備之間在字符傳送過(guò)程中,為了使接收方能夠判斷出接收自負(fù)的正確性,最簡(jiǎn)易的方法是定義標(biāo)準(zhǔn) ASCII 碼的最高位為奇偶校驗(yàn)位。包括校驗(yàn)位在內(nèi)一個(gè)字節(jié)中“1”的個(gè)數(shù)為奇數(shù)個(gè),則稱為奇校驗(yàn) ASCII碼,反之,一個(gè)字節(jié)中“1”的個(gè)數(shù)為偶數(shù)個(gè)則稱為偶校驗(yàn) ASCII 碼。校驗(yàn)位的值由發(fā)送方設(shè)置,接收方負(fù)責(zé)校驗(yàn),如果雙方約定是偶校驗(yàn)傳送,而接收方收到的一個(gè)字符編碼中,有奇數(shù)個(gè)“1” ,那么這個(gè)字符肯定是錯(cuò)誤的。本示例程序要求把 STRING 單元中的一串標(biāo)準(zhǔn)
56、 ASCII 碼轉(zhuǎn)換成奇校驗(yàn) ASCII 碼,存入BUF 單元開始的緩沖區(qū)。技巧:通過(guò) AND AL,AL 指令對(duì) P 標(biāo)志設(shè)置,判斷 P 標(biāo)志,決定是否設(shè)置校驗(yàn)位D7,由指令 OR AL,80H 完成。參見程序清單。2從源串字符中搜索一個(gè)子串。從源串字符中搜索一個(gè)子串。假設(shè)從 STRING 單元開始有一串自負(fù),程序執(zhí)行開始采用人機(jī)對(duì)話方式,從鍵盤輸入一個(gè)任意長(zhǎng)度的子串,清查找源串中是否蘊(yùn)含著鍵入的子串,并給出結(jié)果顯示。思路:鍵盤輸入子串:用 INT 21H 的 0AH 功能,將子串存入內(nèi)存。搜索次數(shù)=源串長(zhǎng)子串長(zhǎng)1字符串的比較:REPE CMPSB ,再判斷 Z 標(biāo)確定是否找到。六六參考程序
57、清單參考程序清單31;把 STRING 單元中的一串標(biāo)準(zhǔn) ASCII 碼轉(zhuǎn)換成奇校驗(yàn) ASCII 碼,存入 BUF 單元開始的緩沖區(qū)。采用附加段與數(shù)據(jù)段“重疊”編程風(fēng)格。DATA SEGMENT STRING DB THE QUICK BROWN FOX JUMPS OVER LAZY DOGCOUNT EQU $-STRING ; 統(tǒng)計(jì)串長(zhǎng)度BUF DB COUNT DUP(?) ; 預(yù)留等長(zhǎng)的緩沖區(qū)DATA ENDSCODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA,ES:DATABEG: MOV AX,DATA MOV DS,AX ;DS 初始化 MOV
58、ES,AX ;ES 初始化,使DS=ES=DATA MOV CX,COUNT MOV SI,OFFSET STRING ;源串首址SI MOV DI,OFFSET BUF ;目標(biāo)區(qū)地址DI CLDLOAD: LODSB ;DS:SIAL, SI+1SI AND AL,AL JNP STORE ;有奇數(shù)個(gè)“1”轉(zhuǎn) OR AL,80H ;否則置校驗(yàn)為位 1STORE: STOSB ;ALES:DI, DI+1DI LOOP LOAD MOV AH,4CH INT 21HCODE ENDS END BEG32實(shí)驗(yàn)九、數(shù)據(jù)表格處理實(shí)驗(yàn)九、數(shù)據(jù)表格處理一一實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康?掌進(jìn)一步掌握分支、循環(huán)、子程序
59、調(diào)用等基本的程序結(jié)構(gòu)。2掌握實(shí)現(xiàn)數(shù)據(jù)查找、插入、刪除、排序等操作。二二實(shí)驗(yàn)設(shè)備實(shí)驗(yàn)設(shè)備PC 微機(jī)一臺(tái)三三實(shí)驗(yàn)預(yù)習(xí)要求實(shí)驗(yàn)預(yù)習(xí)要求從實(shí)驗(yàn)內(nèi)容中任選一道題目,仔細(xì)閱讀相關(guān)的實(shí)驗(yàn)要求及說(shuō)明,編寫程序,以便上機(jī)調(diào)試。四四實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容假設(shè)內(nèi)存中從 BUF 單元開始存放了 10 個(gè)同學(xué)的成績(jī),要求完成:1統(tǒng)計(jì)及格學(xué)生的人數(shù),不及格學(xué)生人數(shù),以及平均成績(jī)。2找出最高成績(jī)和最低成績(jī)。3對(duì)學(xué)生成績(jī)進(jìn)行從大到小排序。4刪除指定學(xué)生的成績(jī)。5在指定位置上插入一個(gè)同學(xué)的成績(jī)。33實(shí)驗(yàn)十、子程序及實(shí)驗(yàn)十、子程序及軟中斷程序設(shè)計(jì)軟中斷程序設(shè)計(jì)一一實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康?.掌握子程序的定義和調(diào)用方法2.掌握系統(tǒng)功能調(diào)用程序(
60、軟中斷程序)的使用和編寫方法3.了解子程序與軟中斷之間的差異。4.認(rèn)識(shí)和理解中斷特性。二二實(shí)驗(yàn)設(shè)備實(shí)驗(yàn)設(shè)備PC 微機(jī)一臺(tái)三三實(shí)驗(yàn)預(yù)習(xí)要求實(shí)驗(yàn)預(yù)習(xí)要求1復(fù)習(xí)子程序的定義與調(diào)用方法。2復(fù)習(xí)中斷的概念,了解 PC 機(jī)系統(tǒng)中斷向量表的占用情況(見表 10-1) 。3復(fù)習(xí)子程序的調(diào)用過(guò)程與軟中斷調(diào)用過(guò)程之間異同。4閱讀示例程序,掌握編寫軟中斷程序的方法及相關(guān)技巧。5從實(shí)驗(yàn)內(nèi)容中任選一道題目,仔細(xì)閱讀相關(guān)的實(shí)驗(yàn)要求及說(shuō)明,編寫程序,以便上機(jī)調(diào)試。四四實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容從 PC 機(jī)系統(tǒng)中斷向量表的占用情況可見,42H4FH 是系統(tǒng)未使用的中斷向量,我們可利用它們開發(fā)用戶自己軟中斷程序。1 【示例】實(shí)驗(yàn)要求利用
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度嬰幼兒游泳館加盟服務(wù)合同4篇
- 二零二五年度實(shí)木地板翻新與保養(yǎng)服務(wù)合同4篇
- 2025年代理協(xié)議示范文本-辦公文具代理合同
- 2025版別墅區(qū)物業(yè)委托經(jīng)營(yíng)管理服務(wù)標(biāo)準(zhǔn)范本3篇
- 二零二五年度公司股權(quán)激勵(lì)計(jì)劃后續(xù)管理與跟蹤合同2篇
- 2025年中國(guó)雙面羊絨大衣行業(yè)市場(chǎng)調(diào)研分析及投資戰(zhàn)略咨詢報(bào)告
- 2025年度海洋科學(xué)研究中心研究員聘用合同
- 2025年度交通行業(yè)短期運(yùn)輸司機(jī)勞動(dòng)合同
- 二零二五年度消防安全員消防技術(shù)咨詢服務(wù)聘用合同
- 二零二五年度農(nóng)業(yè)科技推廣勞務(wù)合同執(zhí)行與效果評(píng)估
- 第三單元名著導(dǎo)讀《經(jīng)典常談》知識(shí)清單 統(tǒng)編版語(yǔ)文八年級(jí)下冊(cè)
- 第十七章-阿法芙·I·梅勒斯的轉(zhuǎn)變理論
- 焊接機(jī)器人在汽車制造中應(yīng)用案例分析報(bào)告
- 合成生物學(xué)在生物技術(shù)中的應(yīng)用
- 中醫(yī)門診病歷
- 廣西華銀鋁業(yè)財(cái)務(wù)分析報(bào)告
- 無(wú)違法犯罪記錄證明申請(qǐng)表(個(gè)人)
- 大學(xué)生勞動(dòng)教育PPT完整全套教學(xué)課件
- 繼電保護(hù)原理應(yīng)用及配置課件
- 《殺死一只知更鳥》讀書分享PPT
- 蓋洛普Q12解讀和實(shí)施完整版
評(píng)論
0/150
提交評(píng)論