版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
《計(jì)算機(jī)接口技術(shù)(A)》
實(shí)驗(yàn)指導(dǎo)書
中南民族大學(xué)計(jì)算機(jī)科學(xué)學(xué)院
年月
U—1—
刖百
《計(jì)算機(jī)接口技術(shù)》是包括計(jì)算機(jī)科學(xué)與技術(shù)在內(nèi)的電子類各專業(yè)重要的專
業(yè)課程,是繼匯編語言程序設(shè)計(jì)和計(jì)算機(jī)組成原理等課程之后講授的一門實(shí)踐性
很強(qiáng)的課程,因此必須加強(qiáng)實(shí)驗(yàn)教學(xué)。開設(shè)微機(jī)與接口技術(shù)的相關(guān)實(shí)驗(yàn)課程,可
以促進(jìn)學(xué)生理解計(jì)算機(jī)系統(tǒng)的組織結(jié)構(gòu)及工作原理,掌握微處理器與外部設(shè)備之
間的接口連接方法,包括硬件接I」電路設(shè)計(jì)和相關(guān)應(yīng)用軟件編程,以提高學(xué)生分
析與解決實(shí)際問題的能力。
微型計(jì)算機(jī)接口技術(shù)實(shí)驗(yàn)屬于非獨(dú)立設(shè)課實(shí)驗(yàn)。實(shí)驗(yàn)課程安排與理論教學(xué)緊
密結(jié)合,通過上機(jī)練習(xí)和實(shí)驗(yàn)操作可加深對理論內(nèi)容的理解,要求學(xué)生掌握計(jì)算
機(jī)系統(tǒng)構(gòu)成、接口技術(shù)及其應(yīng)用編程方法以及微型計(jì)算機(jī)實(shí)現(xiàn)技術(shù),同時(shí)了解微
機(jī)技術(shù)新的發(fā)展趨勢,也使學(xué)生系統(tǒng)科學(xué)地接受到分析問題和解決問題的訓(xùn)練。
學(xué)生首先要熟悉通用微機(jī)接口實(shí)驗(yàn)系統(tǒng)的結(jié)構(gòu)、各模塊電路以及使用注意事項(xiàng)。
對于所涵蓋的實(shí)驗(yàn)教學(xué)內(nèi)容,既要掌握簡單應(yīng)用,又要對綜合實(shí)驗(yàn)中的重點(diǎn)內(nèi)容
舉一反三,對實(shí)驗(yàn)現(xiàn)象進(jìn)行分析與思考以加深理解。學(xué)生也可以自己選題,擴(kuò)展
實(shí)驗(yàn)內(nèi)容,設(shè)計(jì)和編排綜合性與研究性實(shí)驗(yàn)。通過實(shí)驗(yàn)教學(xué),要求能正確使用微
機(jī)及其總線解決各種實(shí)際問題。
講義分匯編程序調(diào)試基礎(chǔ)及實(shí)驗(yàn)操作、軟件實(shí)驗(yàn)、硬件實(shí)驗(yàn)和擴(kuò)展實(shí)驗(yàn)等四
大部分。每個(gè)實(shí)驗(yàn)環(huán)節(jié)部分各由若干個(gè)獨(dú)立的實(shí)驗(yàn)項(xiàng)目組成,整個(gè)講義主要遵循
從基礎(chǔ)到應(yīng)用,從基本到復(fù)雜,循序漸進(jìn),從易到難的思路,并結(jié)合教材與教學(xué)
的進(jìn)度而編制。重點(diǎn)熟悉中斷,定時(shí)計(jì)數(shù)器,并、串行I/O等概念,掌握8259,
8253,8255等接口芯片的編程及綜合應(yīng)用。
整個(gè)實(shí)驗(yàn)的內(nèi)容由驗(yàn)證性實(shí)驗(yàn)和綜合設(shè)計(jì)性實(shí)驗(yàn)兩部分組成,考核注重檢查
學(xué)生對理論知識的掌握程度、實(shí)際動(dòng)手能力、運(yùn)用所學(xué)知識解決問題的能力。為
此,要求學(xué)生在實(shí)驗(yàn)前預(yù)習(xí),根據(jù)實(shí)驗(yàn)要求事先編制好程序。實(shí)驗(yàn)時(shí).,再上機(jī)調(diào)
試,將調(diào)試過程與結(jié)果以書面形式反映在實(shí)驗(yàn)報(bào)告上。力求在有限的時(shí)間內(nèi)達(dá)到
滿意的效果。
由于時(shí)間倉促,對于講義中出現(xiàn)的不妥和錯(cuò)誤之處,敬請老師和同學(xué)們批評
指正。
計(jì)算機(jī)科學(xué)學(xué)院
2007年3月
目錄
第
部基礎(chǔ)知識...........................................1
第
1章
實(shí)驗(yàn)箱性能特點(diǎn).......................................1
第
2章
實(shí)驗(yàn)箱鍵盤監(jiān)控使用簡介................................3
第
3章
匯編調(diào)試程序簡介—DEBUG.............................5
第二部分軟件實(shí)驗(yàn)..........................................21
實(shí)驗(yàn)一數(shù)據(jù)區(qū)移動(dòng)..........................................21
實(shí)驗(yàn)二數(shù)據(jù)排序?qū)嶒?yàn)........................................22
實(shí)驗(yàn)三找“零”個(gè)數(shù)........................................22
實(shí)驗(yàn)四32位二進(jìn)制乘法......................................23
實(shí)驗(yàn)五多分支程序設(shè)計(jì)......................................25
實(shí)驗(yàn)六顯示子程序..........................................27
第三部分硬件實(shí)驗(yàn)..........................................29
實(shí)驗(yàn)一定時(shí)器/計(jì)數(shù)器......................................29
實(shí)驗(yàn)二8259單級中斷控制器實(shí)驗(yàn)..............................30
實(shí)驗(yàn)三8255A并行口實(shí)驗(yàn)(一)...............................34
實(shí)驗(yàn)四8255A并行口實(shí)驗(yàn)(二)...............................35
實(shí)驗(yàn)五串行接口和應(yīng)用(一)串行發(fā)送.........................38
實(shí)驗(yàn)六串行接口和應(yīng)用(二)串行接收.........................45
實(shí)驗(yàn)七A/D轉(zhuǎn)換實(shí)驗(yàn)........................................48
實(shí)驗(yàn)八D/A轉(zhuǎn)換實(shí)驗(yàn)(一)..................................50
實(shí)驗(yàn)九D/A轉(zhuǎn)換實(shí)驗(yàn)(二)..................................52
第四部分接口擴(kuò)展實(shí)驗(yàn).......................................53
實(shí)驗(yàn)一繼電器控制..........................................53
實(shí)驗(yàn)二簡單I/0口擴(kuò)展實(shí)驗(yàn).................................54
實(shí)驗(yàn)三存貯器讀寫實(shí)驗(yàn)......................................55
實(shí)驗(yàn)四電子琴實(shí)驗(yàn)...........................................57
實(shí)驗(yàn)五8251可編程通訊接口與PC機(jī)訊.........................63
實(shí)驗(yàn)六LED16*16點(diǎn)陣顯示實(shí)驗(yàn)................................69
實(shí)驗(yàn)七8279鍵盤顯示實(shí)驗(yàn)....................................78
第一部分基礎(chǔ)知識
第1章實(shí)驗(yàn)箱性能特點(diǎn)
1.1系統(tǒng)運(yùn)行環(huán)境
系統(tǒng)運(yùn)行環(huán)境如下圖1-1所示:
圖1-1
1.2系統(tǒng)性能特點(diǎn)
1.采用主頻為4.77MHz的8088CPU為主CPU,并以最小工作方式構(gòu)成系統(tǒng)。
2.配有一片62256靜態(tài)RAM構(gòu)成系統(tǒng)的32K基本內(nèi)存,地址范圍為OOOOOH~07FFFH,
可立即擴(kuò)展為64K,其中OOOOOH~OOFFFH監(jiān)控占用。另配一片27256(32K)EPROM存
放監(jiān)控程序和軟硬件實(shí)驗(yàn)程序,地址范圍F8000H~FFFFFH。
3.自帶鍵盤、顯示器,能獨(dú)立運(yùn)行,為實(shí)驗(yàn)程序調(diào)試帶來方便。
4.配備Windows調(diào)試軟件。
5.提供標(biāo)準(zhǔn)RS232異步通訊口,以連接IBM—PC機(jī)。
6.配有各種微機(jī)常用I/O接口芯片,如定時(shí)/計(jì)數(shù)接口芯片、A/D轉(zhuǎn)換接口芯片、
D/A轉(zhuǎn)換接口芯片、中斷控制器、鍵盤顯示接口、并行I/O接口芯片等。
7.配備鍵盤數(shù)碼顯示、發(fā)光二級管顯示、開關(guān)量輸入輸出等設(shè)備。
8.帶有脈沖發(fā)生器、計(jì)數(shù)器電路、單脈沖發(fā)生器等常用電路。
9.可以單步、斷點(diǎn)調(diào)試各實(shí)驗(yàn)程序。
10.使用單個(gè)+5V電源,僅在做D/A實(shí)驗(yàn)時(shí),再需接入+12V和-12V二個(gè)電源。
11.使用環(huán)境:環(huán)境溫度0~40℃,無明顯潮濕,無明顯振動(dòng)碰撞。
12.工作電源5V±5%,工作電流小于1A,開關(guān)機(jī)瞬間及工作正常時(shí)電源毛刺小于0.5V。
1.3系統(tǒng)資源分配
8088有1兆存儲(chǔ)空間,系統(tǒng)提供用戶使用的空間為OOOOOH~OFFFFH,用于存放、調(diào)
試實(shí)驗(yàn)程序。監(jiān)控占用00000H~00013H作為單步(T)、斷點(diǎn)(INT3)、無條件暫停(NM1)
中斷矢量區(qū),用戶也可以更改這些矢量,指向用戶的處理,但失去了相應(yīng)的單步、斷點(diǎn)暫停
-1-
等監(jiān)控功能。F8000H~OFFFFFH監(jiān)控程序區(qū)系統(tǒng)占用。
1)存貯器地址分配
系統(tǒng)蛻程序區(qū)FOOOOH-FFFFFH
監(jiān)控傭戶中斷矢篁OOOOOH-OOOOFH
用戶中斷矢篁00010H-000FFH
監(jiān)拄數(shù)據(jù)區(qū)00100H-00FFFH
默認(rèn)用戶極00683H
用戶數(shù)據(jù)程序區(qū)01000H-0FFFFH
2)I/O地址分配
地址擴(kuò)展名稱用途
8000H-8FFFH自定義實(shí)嗡用口地址
9000H-9FFFH自定義實(shí)嗡用口地址
0FF20H8155控制口寫方式字
0FF21H8155PA口字位口
OFF22H8155PB口字形口
OFF23H8155PCQ鍵入口
OFF28H8255PA口擴(kuò)展用
0FF29H8255PB口擴(kuò)展用
0FF2AH8255PC口擴(kuò)展用
0FF2BH8255控制口寫方式字
60HEX1實(shí)驗(yàn)用口地址
70HEX4實(shí)驗(yàn)用口地址
80HEX6實(shí)驗(yàn)用口地址
1.4系統(tǒng)配置
系統(tǒng)內(nèi)含串行監(jiān)控和鍵盤顯示監(jiān)控的全部軟硬件設(shè)施,典型配置及其使用特點(diǎn)如下:
-2-
1.主機(jī)板(用串行監(jiān)控和基本監(jiān)控)+IBMPC機(jī)
主機(jī)板和IBMPC機(jī)通過RS232串行口相連。這種配置形式可以充分利用IBMPC
機(jī)的軟硬件資源,實(shí)現(xiàn)源程序的編輯、匯編和鏈接和調(diào)試.全部軟硬件實(shí)驗(yàn)程序源文件
(.ASM)、執(zhí)行文件(.EXE)都在隨機(jī)軟盤上,你可以利用PC機(jī)的鍵盤顯示等輸入輸出設(shè)
備完成各種軟硬件實(shí)驗(yàn)。
2.主機(jī)板(用基本監(jiān)控)+鍵盤顯示
為最經(jīng)濟(jì)型配置,它不需要和IBMPC機(jī)聯(lián)機(jī),自成一體,通過一組鍵盤命令完成
所有軟硬件實(shí)驗(yàn),每個(gè)實(shí)驗(yàn)程序固化在系統(tǒng)監(jiān)控中。這種配置為沒有PC機(jī)的用戶帶來極大
方便。
第2章實(shí)驗(yàn)箱鍵盤監(jiān)控使用簡介
2.1引言
本章詳細(xì)敘述鍵盤監(jiān)控程序的功能和操作方法。
系統(tǒng)一經(jīng)接通電源,數(shù)碼管上顯示監(jiān)控提示符“P.
2.2鍵盤顯示
1)系統(tǒng)配備6位LED顯示器,左邊4位顯示地址,右邊2位顯示該地址內(nèi)容。
2)系統(tǒng)有32個(gè)注塑鍵,左邊16個(gè)數(shù)字鍵,右邊16個(gè)功能鍵(8088系統(tǒng)用9個(gè))。
在鍵盤監(jiān)控狀態(tài)下用戶可以通過一組鍵命令完成下列操作:
?讀寫寄存器內(nèi)容
?讀寫存儲(chǔ)器內(nèi)容
?數(shù)據(jù)塊移動(dòng)
?I/O端口讀寫
?通過單步、斷點(diǎn)、連續(xù)等功能來調(diào)試運(yùn)行實(shí)驗(yàn)程序
2.3功能鍵操說明一纜表
鍵名功能操作
先輸入四位單元地址,再按MEM鍵,讀存貯儲(chǔ)器單元的內(nèi)容,此時(shí)
MEM存貯器讀寫
輸入數(shù)字鍵,則修改該單元的內(nèi)容。
先輸入寄存器代號,再按REG鍵,讀該代號所表示的寄存器單元的
REG寄存器讀寫
內(nèi)容。此時(shí)再輸入數(shù)字鍵,則修改該存儲(chǔ)器的內(nèi)容。
先輸入四位I/O口地址,再按ODRW鍵,讀該I/O口的狀態(tài),每按
ODRW讀I/O口
一次ODRW鍵,則讀入一次。
先輸入四位I/O口地址,再按DAR鍵,顯示00,再輸入要寫的數(shù)據(jù),
DAR寫I/O口
每改寫??次寫入的數(shù)據(jù),I/O口的狀態(tài)跟著改變。
輸入四位源首地址后按F1,再輸入源末地址后按F2,再輸入四位首
MOVE數(shù)據(jù)塊移動(dòng)
地址后按MOVE鍵即可。
-3-
先輸入四位起始地址,再按STEP鍵或在存貯器讀寫狀態(tài)下按STEP
STEP單步運(yùn)行
鍵或在“P.”監(jiān)控提示符號下按STEP鍵,按一次執(zhí)行一條指令語句。
先輸入四位起始地址,按EXEC鍵,或在存貯器讀寫狀態(tài)下按EXEC
EXEC連續(xù)運(yùn)行鍵,或在“P.”監(jiān)控提示符號下按EXEC鍵,或先輸入四位段地址后
按F1鍵,再輸入四位偏移地址按EXEC鍵。
EXEC斷點(diǎn)運(yùn)行先輸入四位斷點(diǎn)地址后按F2鍵,在輸入四位起始地址后按EXEC鍵。
2.4總體操作過程
8088十六位微機(jī)實(shí)驗(yàn)系統(tǒng)上電總清以后,顯示器上顯示監(jiān)控提示符“P.",各寄存器的
初始化值如下:
SP=0638H,CS=0000H,DS=0000H,SS=0000H,IP=1000H,FL=0000H
【注意】?所有命令均在提示符“P.”狀態(tài)輸入。
?在鍵盤監(jiān)控狀態(tài),段地址缺省值為0000H。
2.5監(jiān)控程序命令及操作
1)存貯器單元內(nèi)容顯示修改
操作:XXXXMEM
在提示符“P.”下,先輸入四位存貯單元地址,再按MEM鍵,顯示器左邊4位顯示地
址,右邊2位顯示該單元的內(nèi)容。此時(shí):
?按NEXT鍵使地址加1再顯示。
?按LAST鍵使地址減1再顯示。
?鍵入十六進(jìn)制數(shù)據(jù),則將改寫現(xiàn)行地址單元的內(nèi)容。
?按MON鍵則返回監(jiān)控,顯示提示符“P.”。
2)寄存器內(nèi)容顯示修改
操作:XREG
在“P.”提示符下,先輸入寄存器代號,再按REG鍵,顯示器右邊4位顯示寄存器中
內(nèi)容,左3、4位顯示寄存器名。此時(shí):
?按NEXT鍵,則依次循環(huán)顯示下一個(gè)寄存器中的內(nèi)容。
?按LAST鍵,則依次顯示上一個(gè)寄存器中的內(nèi)容。
?輸入十六進(jìn)制數(shù)字,則該寄存器中的內(nèi)容被修改。
?按MON鍵則返回監(jiān)控,顯示提示符“P.”。
0123456789ABCD
AXBXCXDXSPBPSIDICSDSSSESIPFL
3)I/O口讀
操作:XXXODRW
在提示符“P.”下,先輸入四位I/O口地址,再按ODRW鍵,顯示器左邊4位顯示
口地址,右邊2位顯示其I/O口狀態(tài)數(shù)據(jù)。此時(shí):
?按ODRW鍵,再次讀入I/O口的狀態(tài)。
?按NEXT鍵,I/O地址加1,讀出下一個(gè)口地址的狀態(tài)數(shù)據(jù)。
?按LAST健,I/O地址減1,讀出上一個(gè)口地址的狀態(tài)數(shù)據(jù)。
-4-
?按MON鍵,返回監(jiān)控提示符“P.”。
4)I/O口寫
操作:XXXXDARW
在提示符“P.”狀態(tài)下,輸入4位I/O口地址,按DAR鍵,顯示器左邊4位顯示口
地址,右邊2位初始顯示00,此時(shí)輸入要寫入的數(shù)據(jù)。I/O的狀態(tài)會(huì)隨寫入的內(nèi)容而變化。
?按NEXT鍵,1/0口地址加1。
?按LAST鍵,I/O口地址減1。
?按MON鍵,返回監(jiān)控提示符“P.”。
5)(5)數(shù)據(jù)塊移動(dòng)
操作:XXXXF1XXXXF2XXXXMOVE
在提示符“P.”狀態(tài)下,先輸入4位數(shù)據(jù)塊源首地址,按F1鍵,再輸入數(shù)據(jù)塊源末地
址,按F2鍵,最后輸入目標(biāo)數(shù)據(jù)塊首地址,按MOEV鍵,開始數(shù)據(jù)塊傳送,傳送完畢返回
監(jiān)控,顯示提示符“P.”。
6)單步運(yùn)行
操作:有三種狀態(tài)都可以進(jìn)入單步操作(段地址固定為0000H)
?在監(jiān)控提示符“P.”狀態(tài)下,按STEP鍵,從默認(rèn)的起始地址IP=1000H單元開始單
步運(yùn)行一條指令語句。
?在存貯器單元讀寫狀態(tài)(即左邊4位顯示存貯器地址,右邊2位顯示存貯器單元內(nèi)
容)下,從當(dāng)前存貯器地址開始單步運(yùn)行一條指令語句。
?先輸入四位起始地址,再按STEP鍵,則從輸入的起始地址開始運(yùn)行一條指令語句。
每運(yùn)行一條語句,顯示器顯示下一條指令語句的地址及其內(nèi)容。
7)連續(xù)運(yùn)行
操作:有三種狀態(tài)可以進(jìn)入連續(xù)運(yùn)行
?在監(jiān)控提示符“P.”狀態(tài)下,按EXEC鍵,從默認(rèn)起始地址CS=0000H,IP=1000H
開始連續(xù)運(yùn)行用戶程序。
?在存貯器寫狀態(tài)下,按EXEC鍵,則從輸入的起始地址開始連續(xù)運(yùn)行用戶程序(CS=
OOOOH),
?先輸入起始4位段地址,按F1鍵,再輸入4位起始偏移地址,再按EXEC鍵,則
從規(guī)定的段地址和偏移地址開始連續(xù)運(yùn)行用戶程序。
要想從運(yùn)行用戶程序返回監(jiān)控,可以按8088卡上的STOP暫停鍵或主機(jī)RSET鍵。如
果用STOP鍵中斷程序運(yùn)行,則保護(hù)所有寄存器的內(nèi)容返回監(jiān)控。如果按RESET鍵,則重
新進(jìn)入監(jiān)控狀態(tài),初始化各寄存器。
8)斷點(diǎn)運(yùn)行(默認(rèn)段地址CS=00()0H)
操作:XXXXF2XXXXEXEC
在提示符“P.”狀態(tài)下,輸入4位斷點(diǎn)地址,按F2鍵,再輸入4位起始地址,按EXEC
鍵,程序從起始地址開始運(yùn)行,顯示器顯示“「”執(zhí)行符。當(dāng)程序運(yùn)行到斷點(diǎn)地址處會(huì)自動(dòng)
停下來,并顯示斷點(diǎn)地址和內(nèi)容,同時(shí)保護(hù)所有寄存器的值。
當(dāng)由于某種原因程序不能正常運(yùn)行到斷點(diǎn)地址處時(shí)(即通常所說的程序“跑飛”),可以
按8088卡上的STOP暫停鍵,以確定程序運(yùn)行到何處,同時(shí)必須用存貯器讀寫功能恢復(fù)斷
點(diǎn)處的一個(gè)字節(jié)內(nèi)容。
第3章匯編調(diào)試程序簡介—DEBUG
在編寫和運(yùn)行匯編程序的過程中,會(huì)遇到一些錯(cuò)誤和問題,需要對程序進(jìn)行分析和調(diào)試。
-5-
調(diào)試程序DEBUG就是專為小匯編和宏匯編語言設(shè)計(jì)的?種調(diào)試工具。它在調(diào)試匯編語言程
序時(shí)有很強(qiáng)的功能,能使程序設(shè)計(jì)者接觸到機(jī)器內(nèi)部,能觀察和修改寄存器和存儲(chǔ)單元內(nèi)容,
并能監(jiān)視目標(biāo)程序的執(zhí)行情況,使用戶真正接觸到CPU內(nèi)部,與計(jì)算機(jī)產(chǎn)生最緊密的工作
聯(lián)系。
3.1DEBUG的主要特點(diǎn)
1.能夠在最小環(huán)境下運(yùn)行匯編程序
在DOS狀態(tài)下運(yùn)行匯編程序,必須將源程序經(jīng)過MASM(或ASM)匯編后,再經(jīng)過LINK
連接程序產(chǎn)生可執(zhí)行程序,才能最終運(yùn)行,比較麻煩。DEBUG調(diào)試程序,為用戶提供了編
程、調(diào)試、監(jiān)督、執(zhí)行用戶編寫的匯編程序的環(huán)境。因此調(diào)試周期短,為用戶提供了極大的
方便。
2.提供極簡單的修改手段
DEBUG提供了修改命令,可以修改內(nèi)存單元內(nèi)容,為調(diào)試程序、修改程序帶來了方便。
3.提供了用戶與計(jì)算機(jī)內(nèi)部聯(lián)系的窗口
DEBUG具有顯示命令。它既可以使用戶看到某內(nèi)存單元或某一塊單元內(nèi)容,也可以看
到CPU內(nèi)部各寄存器的內(nèi)容。用單步執(zhí)行命令跟蹤執(zhí)行,每執(zhí)行一步都能使用戶看到各寄
存器的內(nèi)容的變化,以便分析和調(diào)整程序。
4.可裝入、修改或顯示任何文件
當(dāng)然在DEBUG狀態(tài)下運(yùn)行匯編程序也具有一定局限性。
1)在DEBUG狀態(tài)下運(yùn)行的程序不能使用宏匯編程序中的宏指令,大部分偽指令也不
能使用,因此只能把程序分段調(diào)試。
2)不能調(diào)試太長的程序,只能分塊進(jìn)行程序設(shè)計(jì)。
3)在DEBUG狀態(tài)下調(diào)試好的程序不能形成可執(zhí)行文件(.EXE),因此調(diào)試好的只能
記下,到編輯環(huán)境下鍵人調(diào)試好的程序,通過匯編程序(ASM或MASM),再通過連接程
序(LINK)形成可執(zhí)行文件(.EXE)。
3.2通過DEBUG編寫、運(yùn)行匯編程序
卜面通過例子使大家了解在DEBUG狀態(tài)下編寫、運(yùn)行匯編語言程序。
(例1)用匯編語言編寫一個(gè)簡單的加法程序。
MOVAL,32H;將2的ASCII碼送AL寄存器中
MOVDL,37H;將7的ASCII碼送DL寄存器中
ADDDL,AL;將2+7結(jié)果送DL寄存器中
SUBDL,30H;將結(jié)果進(jìn)行調(diào)整,得到9的ASCII碼,送DL
MOVAH,2
INT21H;輸出DL寄存器中的字符
INT20H;中斷當(dāng)前執(zhí)行的程序
該程序是將兩個(gè)十進(jìn)制數(shù)2和7的ASCII碼送入寄存器AL和DL。當(dāng)ASCII碼進(jìn)行相
加時(shí),,必須通過調(diào)整后才能得到正確的結(jié)果。如例中32H+37H=69H,69H-30H=39H,39H
才是十進(jìn)制數(shù)9的ASCII碼。將結(jié)果在顯示器上輸出時(shí),該程序段采用的是DOS系統(tǒng)功能
調(diào)H(INT21H)中的2號功能,即DL寄存器中的字符(ASCH碼)顯示在顯示器上,INT20H
是中斷正常結(jié)束程序。
運(yùn)行步驟如下:
1.進(jìn)入DEBUG狀態(tài)
在DOS狀態(tài)下,進(jìn)人裝有DEBUG程序的磁盤目錄,如D盤MASM目錄下裝有DEBUG
調(diào)試工具。
D:\>CDMASMZ
D:\MASM\>DEBUG/
-6-
屏幕顯示:
“一”為進(jìn)人DEBUG狀態(tài)。在該提示符下可鍵人DEBUG命令。下劃線部分為用戶鍵
人的字符或命令。
2.用DEBUG的A命令送入程序
—A100Z
0A47:0100MOVAL,32/
0A47:0102MOVDL,37/
0A47:0104ADDDL,AL/
0A47:0106SUBDL,30/
0A47:0109MOVAH.2/
0A47:010BINT21HZ
0A47:010DINT20H/
0A47:010F/
當(dāng)鍵入A命令時(shí),會(huì)自動(dòng)產(chǎn)生程序所送內(nèi)存單元的段地址和偏移地址,通過偏移地址
可以看到每條指令占內(nèi)存單元多少個(gè)字節(jié),MOVAL,32占兩個(gè)字節(jié),SUBDL,30占3個(gè)
字節(jié)。當(dāng)程序段送完時(shí),只鍵入回車鍵/,就退出匯編狀態(tài)(A狀態(tài))回到DEBUG狀態(tài)
“一”。其中送入數(shù)據(jù)為十六進(jìn)制數(shù),DEBUG狀態(tài)下程序中的數(shù)據(jù)均按十六進(jìn)制數(shù)處理,不
需要鍵入H來表示數(shù)據(jù)為十六進(jìn)制數(shù)。
3.執(zhí)行程序
用DEBUG的G命令執(zhí)行剛剛匯編的程序:
—GZ
9
Programterminatednormally
4.反匯編
可以用反匯編U命令將鍵入的程序調(diào)出,并且可以得到每條指令的機(jī)器碼。
—U10010DZ
0A47:0100BO30MOVAL,32
0A47:0102B237MOVDL,37
0A47:010400C2ADDDL,AL
0A47:010680EA30SUBDL,30
0A47:0109B402MOVAH,02
0A47:010BCD21INT21
0A47:010DCD20INT20
其中命令U后面的地址為要反匯編程序的起始偏移地址和終止偏移地址。
5.退出DEBUG返回DOS狀態(tài)
-0^
D:\MASM>
3.3DEBUG的進(jìn)入
1.DEBUG的啟動(dòng)
在操作系統(tǒng)(DOS)狀態(tài)下,直接調(diào)入命令的格式如下:
DEBUG[D:]LPath][Filename[.exe]][Parml][Parm2]
其中:口的內(nèi)容為可選項(xiàng)
[d:]為驅(qū)動(dòng)器號,是指要調(diào)入DEBUG狀態(tài)的可調(diào)試文件在哪個(gè)驅(qū)動(dòng)器中,如A:、C:、
D:等。
[Path]為路徑,是指要調(diào)入DEBUG狀態(tài)的可調(diào)試文件是在哪個(gè)目錄下或子目錄下。
LFilenamet.exe]],是指要調(diào)入DEBUG狀態(tài)的可調(diào)試文件的文件名。該文件是通過編輯、
匯編、連接后產(chǎn)生的可執(zhí)行文件,也可以是在DEBUG狀態(tài)下匯編的程序段。通過寫盤命令
W寫入磁盤的文件。
-7-
[Parml][Parm2]為任選參數(shù),是給定文件的說明參數(shù)。
在啟動(dòng)DEBUG時(shí),如果輸入了Filename(文件名),則DEBUG程序把指定文件裝入
內(nèi)存。用戶可以通過DEBUG的命令對指定文件進(jìn)行修改、顯示或執(zhí)行。如果沒有文件名,
則是以當(dāng)前內(nèi)存的內(nèi)容工作,或者用命名命令或裝入命令把需要的文件裝入內(nèi)存,然后再通
過DEBUG命令進(jìn)行修改、顯示或執(zhí)行。
2.DEBUG啟動(dòng)后對寄存器和標(biāo)志位的初始化
當(dāng)啟動(dòng)DEBUG程序后,屏幕上出現(xiàn)“一”,說明系統(tǒng)已進(jìn)入DEBUG狀態(tài),可以調(diào)入
DEBUG的命令,寄存器和標(biāo)志位置成下面狀態(tài):
1)段寄存器(CS,DS,ES和SS)被置成到自由存儲(chǔ)空間的底部,即第一段位于DEBUG
程序的末尾處。
2)指令指針(IP)置為0100H(或0000H)。
3)堆棧指針(SP)置為段的尾部或裝入程序的暫存區(qū)域的底部。
4)寄存器(AX,BX,CX,DX,BP,SI和DI)置為“0"。若啟動(dòng)DEBUG程序時(shí)指
定了文件,則CX寄存器內(nèi)裝入文件長度(字節(jié)數(shù))。如果文件長度大于64KB,則文件長度
位于BX寄存器和CX寄存器中(高位在BX中。
5)標(biāo)志位置為清除值。
由此可見,所有可利用的內(nèi)存空間都作了安排,因此不能用裝入的程序去分配內(nèi)存。如
裝入程序擴(kuò)展名為.EXE的文件,進(jìn)入DEBUG后由DEBUG進(jìn)行分配,把段寄存器、堆棧
指針置成程序中所規(guī)定的值。
3.4DEBUG的主要命令
1.DEBUG命令的有關(guān)規(guī)定
1)DEBUG命令都是一個(gè)字母,后面跟著一個(gè)或多個(gè)參數(shù)。多個(gè)操作參數(shù)之間用“,”
或空格隔開。
2)DEBUG命令必須接著按ENTER(回車)鍵命令才有效。
3)參數(shù)中不論是地址還是數(shù)據(jù),均用十六進(jìn)制數(shù)表示,但十六進(jìn)制數(shù)后面不用“H”。
4)可以用Ctrel-Break鍵來停止一個(gè)命令的執(zhí)行,返回到DEBUG的提示符“一”下。
5)用CtreLNumLock鍵中止正在上卷的輸出行,在通過按任意鍵繼續(xù)輸出信息。
2.DEBUG命令
1)匯編命令A(yù)
格式:①A[段寄存器名]:[偏移地址]
②A[段地址]:[偏移地址]
③A[偏移地址]
@A
功能:用該命令可以將匯編語言程序直接匯編進(jìn)入內(nèi)存。
當(dāng)鍵入A命令后,顯示段地址和偏移地址等待用戶鍵入?yún)R編命令。每鍵入一條匯編指
令回車后,自動(dòng)顯示下一條指令的段地址和偏移地址,再鍵入下一條匯編指令,直到匯編語
言程序全部鍵入,有顯示下一條地址可直接鍵入回車返回到提示符“一”為止。
其中①的段地址在段地址寄存器中,因此在使用該命令時(shí)必須將段地址寄存器送入段地
址;③的段地址在CS中;④的段地址在CS中,偏移地址為10011。
例如:用匯編語言編寫一個(gè)程序段,將十六進(jìn)制0、1、2……F的ASCH碼送人偏移地
址為100H單元開始的存儲(chǔ)單元中,并將該十六進(jìn)制數(shù)據(jù)從100H單元開始的存儲(chǔ)區(qū)傳送到以
200H為起始地址的存儲(chǔ)區(qū)中。
將編好的程序段通過命令A(yù)送入內(nèi)存并匯編,用塊傳送指令MOVSB將數(shù)據(jù)串進(jìn)行傳送。
D:\MASM>DEBUG/
—AZ
14DE:0100DB30,31,32,33,3*35,36,37,38,39,41,42.43.44.45,462
14DE:0110MOVSL100/
14DE:0113MOVDL200/
-8-
UDE:0116MOVCX,10/
14DE:0119REPMOVSB/
UDE:011BHLTZ
UDE:011C/
其中,SI為源串地址寄存器;DI為目的串地址寄存器;計(jì)數(shù)寄存器CX存放計(jì)數(shù)初值
10HoREPMOVSB為重復(fù)傳送;以字節(jié)為傳送單位。每傳送?個(gè)字節(jié),CX中計(jì)數(shù)值減“1”,
直到CX為0為止。
2)顯示內(nèi)存命令D
格式:①D[地址]
②D[地址范圍]
③D
功能:顯示指定內(nèi)存范圍的內(nèi)容。
顯示的內(nèi)容為兩種形式:一種為十六進(jìn)制內(nèi)容,一種為與十六進(jìn)制相對應(yīng)的ASCH碼
字符,對不可見字符以代替。
對于①、③每次顯示128個(gè)字節(jié)內(nèi)容,②顯示的字節(jié)由地址范圍來決定。
若命令中有地址,則顯示的內(nèi)容從指定地址開始;若命令中無地址(如③)則從上一個(gè)D
命令所顯示的最后一個(gè)單元的下一個(gè)單元開始。若以前沒有使用過D命令,則以DEBUG
初始化的段寄存器的內(nèi)容為起始段地址,起始偏移地址為100H,即CS:100。
對于①中的地址為偏移地址,段地址為CS的內(nèi)容。對②中的地址范圍,可以指定段地
址和起始偏移地址和終止偏移地址O
例如:顯示起始地址為100H的內(nèi)存單元內(nèi)容為:
-D100/
OA47:01000B06983A7409A196-3A8B16983AEB1E8B...:t...:...:...
OA47:0110IEFA93DIE3DIE3C4-9FD24126340036OA...........A&4.6.
OA47:0120DIE38B87D2418B97-D4410506OO5250B8…A...A...RP.
0A47:0130OO01EBA3FF36FA93-9A18FO5E22B8708E…?.6…App.P.
0A47:014050833EFA93FC7512-Al963AOB06983A74P....:t
0A47:015009Al963A8B16983A-EB1E8BIEFA93DIE3...:...:.........
OA47:0160DIE3C49FD241268B-1FD1E3D1E38B87D2.....A&...........
OA47:0170418B97D441050600-5250B840OOE957RFA...A...RP.@..W.
再顯示偏移地址為100H120H的內(nèi)容為:
-D100120/
OA47:()100OB06983A7409Al96-3A8B16983AEB1E8B...:t...:...:...
0A47:0110IEFA93DIE3D1E3C4-9FD24126340036OA...........A&4.6.
0A47:0120D1
接著再顯示,只用D命令不鍵入地址,那么接著上次1)顯示的地址開始顯示為:
-DZ
OA47:0120E38B87D2418B97-D4410506005250B8...A...A...RP.
0A47:01300001EBA3FF36FA93-9A18FO5E22B8708E.....6.....App.P.
OA47:014050833EFA93FC7512-Al963AOB06983A74P....:t
0A47:015009Al963A8B16983A-EB1E8BIEFA93DIE3...:...:..........
0A47:0160DIE3C49FD241268B-1FD1E3D1E38B87D2…A&............
0A47:0170418B97D441050600-52508B4000E957FFA...A...RP.@..W.
OA47:01806E48C94814496E49-6E496E496E49CBC6nH.H.Inlnlnlnl..
OA47:019006D89300C606IA93-00C606A29100C606......................
0A47:0IAO70
例如:指定數(shù)據(jù)段寄存器DS的內(nèi)容為段地址,顯示在該段內(nèi)偏移地址為100II?150H
的內(nèi)容。
-DDS:100150/
0A47:01000B06983A7409A196-3A8B16983AEBIE8B...:t...:...:...
0A47:01101EFA93D1E3DIE3C4-9FD241263400360A.............A&4.6.
0A47:0120DIE38B87D24I8B97-D4410506005250B8…A...A...RP,
0A47:01300001EBA3FF36FA93-9A18F05E22B8708E.....6....App.P.
0A47:014050833EFA93FC7512-Al963A0B06983A74P.…:t
0A47:015009
-9-
3)修改存儲(chǔ)單元內(nèi)容命令E
格式:①E[地址][內(nèi)容表]
②E[地址]
功能:①用命令所給定的內(nèi)容表去代替指定地址范圍的內(nèi)存單元內(nèi)容。
②一個(gè)單元一個(gè)單元地連續(xù)修改單元內(nèi)容。
其中:內(nèi)容表為一個(gè)十六進(jìn)制數(shù)或一串十六進(jìn)制數(shù),也可以是用單引號括起的一串字符。
例如:往200H為起始地址單元存放一串十六進(jìn)制數(shù),如:
-E2006162636465666768-6970717273747576/
要看一看是否將這些十六進(jìn)制數(shù)替換了原來單元內(nèi)容。
—D200210/
0A47:02006162636465666768—6970717273747576abcdefghipqrstuv
0A47:021003
如果用一串字符來替換200H單元開始的內(nèi)容(用單引號括起部分),有:
—E200'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
再用D命令看看內(nèi)容是否被替換:
-D200220/
0A47:02004142434445464748-494A4B4C4D4E4F50ABCDEFGHIJKLMNOP
0A47:02105152535455565758—595A3AE91101B8A2QRSTUVWXYZ:...
0A47:0220366
如果一個(gè)單元一個(gè)單元地修改,每修改一個(gè)單元內(nèi)容按空格鍵,再鍵入下一個(gè)單元的
修改內(nèi)容,直到按回車鍵為止。如:
-E20Q/
0A47:020041.61.42.62.43.63.44.64.45.65.46.66.47.67.48.68
0A47:021049.69.4A.70.4B.71.4C.72.4D.73.4E.74.4F.75.50.76
0A47:022059.
(注:.代表空格鍵)
-D200230/
0A47:02006162636465666768-6970717273747576abcdefghipqrstuv
0A47:02107778798081828384~595A3AE91101B8A2wxy….YZ:..???
0A47:0220361E500EE80CFEBS-A6361E500EE803FE6.P......6.P.
0A47:0230FF
4)填充內(nèi)存命令F
格式:F[范圍][單元內(nèi)容表]
功能:將單元內(nèi)容表中的內(nèi)容重復(fù)裝入內(nèi)存的指定范圍內(nèi)。
例如:將'adc'重復(fù)裝入從200H開始的內(nèi)存單元,有:
—F200'adc'/
-D200/
0A47:02006164636164636164-6361646361646361adcadcadcadcadca
0A47:02106463616463616463-6164636164636164dcadcadcadcadcad
0A47:02206361646361646362-6463616463616463cadcadcadcadcadc
0A47:02306164636164636164-6361646361646361adcadcadcadcadca
0A47:02406463616463616463-6164636164636164dcadcadcadcadcad
0A47:02506361646361646361-6163616463616463cadcadcadcadcadc
0A47:02606164636164636164-6361646361646361adcadcadcadcadca
0A47:02706463616463616463-6164636163646364dcadcadcadcadcad
5)內(nèi)存搬家命令M
格式:M[源地址范圍][目標(biāo)起始地址]
其中,源地址范圍和目的起始地址為偏移地址,段地址為DS的內(nèi)容。
功能:把源地址范圍的內(nèi)容搬至以目標(biāo)起始地址開始的存儲(chǔ)單元中。
例如:顯示200H-250H和400H-470H的內(nèi)容。
—D200/
0A47:0200FA93FC7403E90901-A1963A0B06983A75u
0A47:021003E9FD00A1963A8B-16983AE91101B8A2....
0A47:0220361E500EE80CFEB8-A6361E500EE803FE6.P6.P….
-10-
0A47:0230FF36FA939A18F05E-22E91901833EFA17.6….-pp…—>??
0A47:02400075BBFF36FA939A-18FO5E22OEE83FFF.u..6??:."pp????
0A47:0250E90201FF36FA939A-18FO5E22833EFA93….6…OPP.>.
0A47:0260FF74528D46FA5083-3EFA93FC7512Al96.tR.F.P.>???u…
0A47:02703AOB06983A7409A1-963A8B16983AEBIE:…:t…:…:??
-D400/
0A47:0400FF5C74OB8BD9FF46-FE8B7608C6005C8B.\t???.F..V..\.
0A47:04105E06833F00752483-3EE21A00750790OE?.u$.>-u-
0A47:0420E8B5ElEB119A8556-5E228AOE3001FE06....V*pp..0...
0A47:043030012AED03Cl8B5E-068907B81000508B0.*???.'....P?
0A47:044046FE03460850FF37-90OEE883DE83C406F..F.P.7....
0A47:0450BFFE298CD88ECO8B-7608B9FFFF33COF2..)???..V…?3??
0A47:0460AEF7DI2BF98BD987-FEB9FFFFF2AE4F8B…+........0?
0A47:0470CBDIE9F2A513C9F2-A45E5F8BE55DCA04.....、??]??
再用M命令將200H?250H的內(nèi)容送400H-450H中:
-M200250400/
-D400/
0A47:0400FA93FC7403E90901-Al963AOB06983A75…t...:…:u
0A47:041003E9FD00Al963A8B-16983AE91101B8A2...:…:
0A47:042036IE50OEE8OCFEB8-A636IE50OEE803FE6.P....6.P….
0A47:0430FF36FA939A18FO5E-22E91901833EFA17.6….>p.???>..
0A47:04400075BBFF36FA939A-18FO5E22OEE83FFF.u..6-...?.
0A47:0450E9FE298CD88ECO8B-7608B9FFFF33COF2..)??.?.v???.3..
0A47:0460AEF7DI2BF98BD987-FEB9FFFFF2AE4F8B…+.......0.
0A47:0470CBDIE9F2A513C9F2-A45E5F8BE55DCA04.....
6)比較命令C
格式:C[源地址范圍],[目的地址]
其中,源地址范圍是由起始地址和終止地址指出的一片連續(xù)的存儲(chǔ)單元。目的地址為與
源地址所指單元相比較的H標(biāo)地址的起始地址。
功能:從源地址范圍起始的地址單元開始,逐個(gè)與目標(biāo)起始地址往后的單元順序比較每
個(gè)單元內(nèi)容,比較到源終止地址為止。比較結(jié)果一致,則不顯示任何信息;如果不一致,則
以[源地址][源內(nèi)容][目的內(nèi)容][目的地址]的形式顯示失配單元地址及內(nèi)容。
例如:比較100H?107H各單元內(nèi)容是否與200H?207H各單元內(nèi)容一致,先看一下
100H?107H和200H?207H的內(nèi)容。
-D100110/
0A47:01000B06983A7409A196—3A8B16983AEBIE8B…:t…
0A47:01101E—
-D200210/
0A47:0200FA93FC7403E90901-A1963A0B06983A75…t...:…:u
0A47:021003
用C命令進(jìn)行比較:
-C100107200/
0A47:01000BFA0A47:0200
0A47:010106930A47:0201
0A47:010298FC0A47:0202
0A47:01033A740A47:0203
0A47:010474030A47:0204
0A47:010509E90A47:0205
0A47:0106A1090A47:0206
0A47:010796010A47:0207
由于100H?107H與200H?207H各單元內(nèi)容不同,因此列出失配各單元地址和內(nèi)容。第
1列為源地址的段地址;第2列為源地址的偏移地址;第3列為源地址所存放的內(nèi)容;第4
列為目的地址所對應(yīng)的存放內(nèi)容;第5列為目的地址的段地址;第6列為目的地址的偏移地
址。
7)搜索指定內(nèi)容命令S
格式:S[地址范圍][表]
功能:在指定地址范圍內(nèi)搜索表中內(nèi)容,搜索到就顯示表中元素所在地址。
例如:搜索地址范圍為100H-150H中的50H這個(gè)數(shù)據(jù)所在地址。讓我們通過D命令先
來觀察一下100H?170H單元的內(nèi)容,然后再用搜索命令S完成題目要求
D:\MASM>DEBUGZ
—D100/
14DE:01005D58C35051525653—56E8AA005E2EC706]X.PQRVSV...
14DE:0110828900002EC70684—8900002E3400CD14........4-
UDE:01200000E8AD0072182E—A382890ADB74IAE8...r....t-
UDE:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 停薪留職協(xié)議(34篇)
- 掃雪簡報(bào)范文(31篇)
- 施工夏季送清涼活動(dòng)總結(jié)(3篇)
- 永遠(yuǎn)的紅色演講稿
- 工作計(jì)劃范文
- DB12-T 458-2023 規(guī)模奶牛場生產(chǎn)管理規(guī)范
- 浙江省舟山市(2024年-2025年小學(xué)五年級語文)統(tǒng)編版階段練習(xí)(下學(xué)期)試卷及答案
- 2024年碳化硅磨塊項(xiàng)目資金籌措計(jì)劃書代可行性研究報(bào)告
- 2023年甲狀腺激素資金申請報(bào)告
- 高三地理經(jīng)濟(jì)發(fā)達(dá)地區(qū)的可持續(xù)發(fā)展復(fù)習(xí)教案
- 2024年臨床課題研究風(fēng)險(xiǎn)處置預(yù)案
- 大學(xué)生職業(yè)生涯規(guī)劃嬰幼兒托育服務(wù)與管理
- 智能監(jiān)控在腳手架中的應(yīng)用
- 中小學(xué)教師違反職業(yè)道德行為處理辦法
- 關(guān)鍵崗位廉潔從業(yè)培訓(xùn)課件
- 麥肯錫商業(yè)計(jì)劃書
- 醫(yī)院陪護(hù)服務(wù)質(zhì)量評分標(biāo)準(zhǔn)
- 農(nóng)業(yè)旅游商業(yè)計(jì)劃書
- 教師專業(yè)發(fā)展及教師專業(yè)發(fā)展階段
- 兒童危重癥患者的護(hù)理
- 金融市場2024年的金融監(jiān)管和市場波動(dòng)
評論
0/150
提交評論