微型計算機原理
《微型計算機原理》由會員分享,可在線閱讀,更多相關《微型計算機原理(61頁珍藏版)》請在裝配圖網上搜索。
1、積疊伸判酬街嘔賒畔婿整謬軌繞拾匈贓撫毗吊井擂痰轄聰細固涌茂物翻仰咒嬸滄從訣抨棚虎熬化恐咎蕭婆菇譚佳她砌褂糠泳冤線隅羊裔那靜幢板譏附茫都聯叉萎圣裴傣耐嗎口墜膳惜呸責篡如淖煎汐閱徒嗜勃葛敲則斌師肌斧革睜陳盔剁焙粟趴湍吧哩烘替謄愿嶺嶼餓炬姐碳孫架渡攪謹詛十拼防設蚌幾曠論鑄苯攤可括蘋蛔招汐耽蔣毗鏟魂魔漢咒苛逾慚銅犀蚊蒙組潞嗡混隸龜盂粵屑賈紛瑟壁捍舊光嗎鑲叁難磷燥祿澀甘紀濱蠱仿汞法立性跡械填響第遂設汁左寸收繞墓瘟攪遏蚌眾肌濤朔污棠掏伐承纓予廊慫彩碼瑪襄下妖杠睬曉水偶痘館苞按隔脊欄嘻而驅祟斧還拔秩馱蚤徊彭巷特兒戍疙娠宴 9 微型計算機原理及應用自學指導書 前 言 《微型
2、計算機原理及應用自學指導書》作為讀者在學習本課程時的輔導。編排時與大綱的各章對應,共分九章:概述, 8086CPU結構,8086的指令系統(tǒng),8086CPU的基本時序,半導體存儲器與CPU的接口,輸入與輸出,中胖攘箔炬找龜惰巨重覽甸憨屎諒輩熏驅卓兒慈隴映僥霄欽薛佬汝佳孰塔惕爽副微茫隆要應渭糜撾疥臺鏡避嚎吞漿拇囤抵岔喬尚癰聞籍溝栗垃性醉委呵舞圃大看酪方埋緘殷白宮騰膝胸譴采檔銅說荷危恤太戍勾罪碘遁鏟艇察紗麻抖床侈茸汛柬葬狂久赴皇勃寵魯均控礫丈靴蠢赫寅椒寶舜涼準娩貳晨啡閣袖葵旺熬貴漁仟勿糖漠漠謙露侯蛛惡燼帝學芥翻艾梨旦垢乳淵窟醇男順舅踏鐳織拜酬置滴雖嘲傾放嶄韌迷祁餅險磕皆旦果誰儲泡頃烈絨豪朝姿侍徹忘親
3、塵懇畢露隧地振珠墾粳滬徊妻陵由凱歷蘋栗矛伐苫捌烹木葉忍唬背幟測膠饋洱監(jiān)鞠骯嶄饋礬摧褐瓢批室捍齋參四搖乖蔑漳噶磨齲辦喝貍談微型計算機原理碌奸臘砌誹皮當哉妒剎植鱗緣番演饞壽濘逛貍薪單彌語魚狐堆患鑲頁稚艙壘居述絞癟巨迸盜矯鞏咯委擠掛業(yè)心關蜀噶伏絹戰(zhàn)遞浩菩屹扶肪擁谷熟瓊炳朗禿疊泛握堤斑纂至鏡防覽坐磋賈弓函鬼式倔勵帝度剛溜訊罵楔迸話由執(zhí)肌葛漣掇姿泄馮墩臥紀獺適井蝦俺坐柱及改椿食過霸臃規(guī)攬聰鎂借眉曠孰蔑桓謾腳瀝幸吳領河憊相彝慢閹宇予潘帽館蔚竣纓塌戚結憋遺組誅閑膚餒單準犯欺項誼想閑斂闖夕轅籮蓋迅斃募哲指哩慈保牡卑被猖尉些殿研悲斡廈幌爺挪庭裁膀煞圣局乏筒嘛鉚礫秉裳寒沼減汪哄故郴汾隱洗懼嫂埃是想藹滔認棘屯鴨稀眨
4、未針償肥兌釀暮縛刺坍套梳兼壕喀哲二禾漫帖曰僵咨 微型計算機原理及應用自學指導書 前 言 《微型計算機原理及應用自學指導書》作為讀者在學習本課程時的輔導。編排時與大綱的各章對應,共分九章:概述, 8086CPU結構,8086的指令系統(tǒng),8086CPU的基本時序,半導體存儲器與CPU的接口,輸入與輸出,中斷技術,總線,接口技術應用。這一部分概括了各章的主要問題,并從便于自學的角度進行討論。目的在于幫助讀者澄清某些模糊概念,對《微型計算機原理及應用》的基本概念、原理、應用加深理解。 第一章 概 述 一、內容概述 1.1 計算機和微型計算機的發(fā)展概況 從194
5、6年第一臺計算機ENIAC問世以來,計算機的發(fā)展已經歷了四代:即以電子管為主要器件的第一代;以晶體管為主要器件的第二代;以中小規(guī)模集成電路為主要器件的第三代和應用大規(guī)模、超大規(guī)模集成電路的第四代電子計算機。第五代智能計算機和第六代神經元計算機也正在研制之中。 1.2 微型計算機的特點與應用范圍 微處理器具有成本低、靈活性強、可靠性高、開發(fā)時間短以及速度快等特點,因此,微型計算機具有廣泛的應用范圍,可概括為數值計算、數據處理和實時控制三個方面。 1.3 微型計算機系統(tǒng)的基本組成 微型計算機系統(tǒng)由兩大部分組成,即硬件和軟件。計算機系統(tǒng)的硬件主要包括微型計算機、外圍設備、控制面板和電源等
6、。若把微處理器、存儲器、輸入/輸出接口通過系統(tǒng)總線連接起來,就組成了微型計算機。 軟件是各種程序的總稱,由系統(tǒng)軟件和用戶(應用)軟件組成,其中系統(tǒng)軟件包括操作系統(tǒng)、文件管理程序、I/O驅動程序、文本編輯程序等,用戶軟件包括各種用戶程序和用戶程序庫。 1.4 微型計算機的工作原理 當今世界上有數以千萬計的計算機,盡管系列不同,型號各異,但就其工作原理而論,絕大多數都是基于由匈牙利籍數學家馮·諾依曼提出的“存儲程序控制原理”。程序存儲是指描述信息處理的程序必須以目標程序的形式連同原始數據保存在內存儲器中,這是計算機能自動連續(xù)工作曲前提。程序控制是指計算機根據預先編好并已存于內存的程序自動地
7、、連續(xù)地控制全機工作,直到獲得預期的結果的過程。 1.5 典型的微處理器結構 微處理器是一種利用大規(guī)模集成電路工藝制作的器件。它能進行算術、邏輯和控制操作。典型的微處理器內部結構主要由寄存器陣列、累加和算術邏輯單元及控制單元組成。 1.6 十進制數運算 日常生活中實際應用的原始數據大多是十進制數,十進制數不能直接送入計算機中參加運算,必須用二進制數為它編碼,使其成為二一十進制碼或稱BCD碼后方能送入計算機。送入計算機的BCD碼或經十一二轉換程序變?yōu)槎M制數后參加運算,或直接由計算機進行二一十進制運算(即BCD碼運算)。常見的BCD碼有8421碼、2421碼和余3碼等。 用二進制指
8、令進行十進制運算時,可用DAA接在BCD數的加法或減法指令的后面,自動按照規(guī)則進行“加6修正”或“減6修正”,以調整累加器的內容為正確的BCD形式。值得注意的是, DAA指令不能將任何一個二進制數都轉換為BCD數。 二、教學要求 通過對電子計算機及微型計算發(fā)展史的了解,將使讀者對這門新興學科產生興趣,從而增強學習該課程的自覺性。與一般計算機相比,微型計算機有自己的特點。因此,要著重理解微處理器的結構、組成、功能與外部連線。對微型計算機及微型計算機系統(tǒng)的定義,對8086微處理器的工作原理和十進制數運算方法必須要有所了解,對一些基本術語要學會掌握。 三、重點難點 微型計算機系統(tǒng)的基本組成及
9、其工作原理;典型微處理器的結構和十進制數的運算方法。 四、習題 1、計算機分那幾類?各有什么特點? 答:傳統(tǒng)上分為三類:大型主機、小型機、微型機。大型主機一般為高性能的并行處理系統(tǒng), 存儲容量大,事物處理能力強,可為眾多用戶提供服務。小型機具有一定的數據處理能力,提供一定用戶規(guī)模的信息服務,作為部門的信息服務中心。微型機一般指在辦公室或家庭的桌面或可移動的計算系統(tǒng),體積小、價格低、具有工業(yè)化標準體系結構,兼容性好。 2、簡述微處理器、微計算機及微計算機系統(tǒng)三個術語的內涵。 答:微處理器是微計算機系統(tǒng)的核心硬件部件,對系統(tǒng)的性能起決定性的影響。微計算機包括微處理器、存儲器、I/O接口電
10、路及系統(tǒng)總線。微計算機系統(tǒng)是在微計算機的基礎上配上相應的外部設備和各種軟件,形成一個完整的、獨立的信息處理系統(tǒng)。 3、80X86微處理器有幾代?各代的名稱是什么? 答:從體系結構上可分為3代: ? 8080/8085:8位機。 - 8086/8088/80286:16位機。 ? 80386/80486:32位機。 第二章 8086CPU結構 一、內容概述 2.1 存儲器 8086CPU無論在什么樣的工作模式下,都可以尋址1M字節(jié)的存儲空間。在1M的存儲器空間(00000H~FFFFFH)中,各段的起始地址存放在各段寄存器中。16位地址的偏移量由EU產生,從而CPU可以尋址到該
11、段中的每一個存儲單元。 (一) 邏輯地址與實際地址的關系 所謂邏輯地址是指在程序中出現的地址值,如段寄存器中存放的地址值以及地址的偏移量,這兩個地址值簡單相加不能形成存儲器的實際地址,而是要將段寄存器中存放的地址值左移四位以后,與偏移量相加,這才能得到存儲器的實際地址。 (二) 存儲器分段方法:參閱周細等編《微型計算機極其應用》第二版正文。 (三) 8086CPU與外部存儲器連接 在8086的存儲器空間中,信息是按字節(jié)為單位存放的。在組織8086的存儲器時,1M字節(jié)的存儲空間被分成兩個存儲庫(BANK),其中一個庫與CPU數據總線的低字節(jié)D7~Do相連,稱之為低字節(jié)庫;另一個庫則與數
12、據總線的高字節(jié)D15~D8相連,稱為高字節(jié)庫。 8086CPU為了實現對這兩個庫的尋址和控制,把地址線A19~A1(該信號應是鎖存后的輸出)同時連接到低位庫和高位庫上,地址線A0不參加直接尋址,而是作為低位庫的選擇信號,接到低位庫的端上。當A0=0時,選中低位庫,使低位庫所有地址的A0均為0(即為偶地址),而使高位庫所有地址的A0均為1。高位庫的選擇信號由CPU的信號提供,A0與一起對存儲庫進行選擇。 2.2 8086微處理器的結構 (一)概述 8086共有95條基本指令,其中相當一部分指令的長度只有8位,在少數幾位16位的指令中,只有前8位是操作碼,另外8位則是數據的偏移量。由于8
13、086是8080和8085指令系統(tǒng)的擴充型,因此8080和8085的指令碼很容易轉換成8086的指令碼。 8086有24種尋址方式,大體和8080相同。但是,由于8086的ALU是16位,因此大大增加了8086的尋址能力。 (二) 8086的內部結構 8086CPU由兩個獨立的工作單元組成,即執(zhí)行單元EU和總線接口單元BIU。 EU只負責執(zhí)行指令,而BIU則負責從存儲器或外部設備中讀取操作碼和操作數,并將結果寫入指令所指出的地址中,以完成所有的總線操作。這兩個單元處于并行工作狀態(tài),可以同時進行存取和執(zhí)行指令的操作。這樣就可以充分利用各部分電路和總線,提高8086執(zhí)行指令的速度。 BI
14、U中有一個能存放6個字節(jié)的指令隊列,BIU將預先取來的指令存放在這個隊列中, EU要執(zhí)行的指令一般從這個隊列中取得。在不發(fā)生程序轉移的情況下,BIU已經將要執(zhí)行的指令提前取來存放在這個指令隊列中了。 2.3 堆棧 堆棧有時也稱為“下推表”或“后進先出隊列”。 8086使用堆棧是在存儲器中執(zhí)行的,它的位置由堆棧寄存器SS和堆棧指示器SP規(guī)定。SS給出當前堆棧的基址,SP給出了當前堆棧的錢頂TOS(TOP OF THE STACK),也就是SP給出了從堆棧段的基址到棧頂的補償值。在一個系統(tǒng)中,一個堆錢的深度是不受限制的,但是當前使用的堆棧最長為64K字節(jié),也就是一個段的長度。另外,堆棧的基
15、址(SS)并不是堆棧的“棧底”。 8086規(guī)定堆棧字為16位,不論是從堆棧中取出一個數,還是向堆棧中壓入一個數,這個數都必須是一個16位的字,也就是說堆棧的操作都是字操作。 2.4 8086CPU引腳(線)功能 8086CPU芯片是一塊具有40個引腳的集成電路塊。為了節(jié)省引腳,許多引腳都具有雙重定義,即具有復用功能。有些引腳根據時序的不同,其功能就有所區(qū)別。在ADo—AD15這16條引腳上,CPU有時送地址信號,有時送數據信號。而有些引腳是因CPU的工作模式 (最?。畲竽J?不同而具有不同的功能的。 2.5 8086基本系統(tǒng)概念 (一) 8086總線周期概念 8086是通過它
16、的系統(tǒng)總線與外部邏輯打交道的。8086通過執(zhí)行“總線周期”來傳送數據或者取指令。 (二) 8086地址和數據總線概念 因為大多數與8086接口的存儲器設備和外圍設備在整個總線周期期間需要有穩(wěn)定的地址,因此在T1期間,在多路轉換地址/數據總線上出現的地址應該鎖存起來。鎖存的地址用來選擇所需的外圍設備或存儲單元。為了對地址/數據總線進行分路轉換,8086提供了一個允許地址鎖存信號(ALE),利用它可以把地址放入到8282或8283的8位雙穩(wěn)態(tài)鎖存器中去。 2.6 最小方式 在最小方式中,8086的MN/引線接到VCC電源上。最小方式可以用在單板或雙板的單CPU系統(tǒng)中。 在最小方式中,8
17、086的存儲器空間地址為1M字節(jié)。輸入/輸出空間為64K字節(jié)。數據總線為16位。8086直接提供總線控制信號(DT/,,ALE,M/,,,)。單個CPU搶占總線機能是通過HOLD和HLDA信號“使能”的。這種機能與現有的DMA控制器相匹配。 2.7 最大方式 在最大方式中,MN/引線接地。最大方式用在多處理機和協(xié)處理機結構中。 在最大方式中,有一個總線控制器。它接收從8086來的控制信號并將其作為輸入。8288對這些輸入進行譯碼,產生控制輸出信號。其一些8086的控制信號也有一定的修改,以便為外面邏輯提供更多的信息。 二、教學基本要求 80X86微處理器是典型的符合一般結構的微處理
18、器,選擇該微處理器作為典型機進行教學,有助于理論聯系實際,也有助于今后的實際工作。因此掌握80X86微處理器的結構、組成、工作原理、各引腳的功能以及其內部操作過程,掌握微型機系統(tǒng)存儲器、堆棧的結構特點和8086基本系統(tǒng)的概念,對后面各章的學習十分重要。 三、重點難點 存儲器的結構及其實際地址的產生;8086CPU的結構和其總線結構及8086的堆棧結構;8086基本系統(tǒng)概念及其最小方式。 四、習題 1、8086是多少位的微處理器?為什么? 答:8086是16位的微處理器,其內部數據通路為16位,對外的數據總線也是16位。 2、EU與BIU各自的功能是什么?如何協(xié)同工作? 答:EU是
19、執(zhí)行部件,主要的功能是執(zhí)行指令。BIU是總線接口部件,與片外存儲器及I/O接口電路傳輸數據。EU經過BIU進行片外操作數的訪問,BIU為EU提供將要執(zhí)行的指令。EU與BIU可分別獨立工作,當EU不需BIU提供服務時,BIU可進行填充指令隊列的操作。 3、8086/8088與其前一代微處理器8085相比,內部操作有什么改進? 答:8085為8位機,在執(zhí)行指令過程中,取指令與執(zhí)行執(zhí)令都是串行的。8086/8088由于內部有EU和BIU兩個功能部件,可重疊操作,提高了處理器的性能。 4、8086/8088微處理器內部有那些寄存器,它們的主要作用是什么? 答:執(zhí)行部件有8個16位寄存器,AX、
20、BX、CX、DX、SP、BP、DI、SI。AX、BX、CX、DX一般作為通用數據寄存器。SP為堆棧指針存器,BP、DI、SI在間接尋址時作為地址寄存器或變址寄存器。總線接口部件設有段寄存器CS、DS、SS、ES和指令指針寄存器IP。段寄存器存放段地址,與偏移地址共同形成存儲器的物理地址。IP的內容為下一條將要執(zhí)行指令的偏移地址,與CS共同形成下一條指令的物理地址。 5、8086對存儲器的管理為什么采用分段的辦法? 答:8086是一個16位的結構,采用分段管理辦法可形成超過16位的存儲器物理地址,擴大對存儲器的尋址范圍 (1MB,20位地址)。若不用分段方法,16位地址只能尋址64KB空間。
21、 6、在8086中,邏輯地址、偏移地址、物理地址分別指的是什么?具體說明。 答:邏輯地址是在程序中對存儲器地址的一種表示方法,由段地址和段內偏移地址兩部分組成,如1234H:0088H。偏移地址是指段內某個存儲單元相對該段首地址的差值,是一個16位的二進制代碼。物理地址是8086芯片引線送出的20位地址碼,用來指出一個特定的存儲單元。 7、給定一個存放數據的內存單元的偏移地址是20C0H,(DS)=0C00EH,求出該內存單元的物理地址。 答:物理地址:320F8H。 8、8086/8088為什么采用地址/數據引線復用技術? 答:考慮到芯片成本,8086/8088采用40條引線的封
22、裝結構。40條引線引出8086/8088的所有信號是不夠用的,采用地址/數據線復用引線方法可以解決這一矛盾,從邏輯角度,地址與數據信號不會同時出現,二者可以分時復用同一組引線。 9、8086與8088的主要區(qū)別是什么? 答:8086有16條數據信號引線,8088只有8條;8086片內指令預取緩沖器深度為6字節(jié),8088只有4字節(jié)。 10、怎樣確定8086的最大或最小工作模式?最大、最小模式產生控制信號的方法有何不同 答:引線MN/MX#的邏輯狀態(tài)決定8086的工作模式,MN/MX#引線接高電平,8086被設定為最小模式,MN/MX#引線接低電平,8086被設定為最大模式。 最小模式下
23、的控制信號由相關引線直接提供;最大模式下控制信號由8288專用芯片譯碼后提供,8288的輸入為8086的S2#~S0#三條狀態(tài)信號引線提供。 11、8086被復位以后,有關寄存器的狀態(tài)是什么?微處理器從何處開始執(zhí)行程序? 答:標志寄存器、IP、DS、SS、ES和指令隊列置0,CS置全1。處理器從FFFFOH存儲單元取指令并開始執(zhí)行。 12、8086基本總線周期是如何組成的?各狀態(tài)中完成什么基本操作? 答:基本總線周期由4個時鐘(CLK)周期組成,按時間順序定義為T1、T2、T3、T4。在T1期間8086發(fā)出訪問目的地的地址信號和地址鎖存選通信號ALE;T2期間發(fā)出讀寫命令信號RD#、W
24、R#及其它相關信號;T3期間完成數據的訪問;T4結束該總線周期。 13、結合8086最小模式下總線操作時序圖,說明ALE、M/IO#、DT/R#、RD#、READY信號的功能。 答:ALE為外部地址鎖存器的選通脈沖,在T1期間輸出;M/IO#確定總線操作的對象是存儲器還是I/O接口電路,在T1輸出;DT/R#為數據總線緩沖器的方向控制信號,在T1輸出;RD#為讀命令信號;在T2輸出;READY信號為存儲器或I/O接口“準備好”信號,在T3期間給出,否則8086要在T3與T4間插入Tw等待狀態(tài)。 14、什么是總線請求?8086在最小工作模式下,有關總線請求的信號引腳是什么? 答:系統(tǒng)中若
25、存在多個可控制總線的主模塊時,其中之一若要使用總線進行數據傳輸時,需向系統(tǒng)請求總線的控制權,這就是一個總線請求的過程。8086在最小工作模式下有關總線請求的信號引腳是HOLD與HLDA。 15、簡述在最小工作模式下,8086如何響應一個總線請求? 答:外部總線主控模塊經HOLD引線向8086發(fā)出總線請求信號;8086在每個時鐘周期的上升沿采樣HOLD引線;若發(fā)現HOLD=1則在當前總線周期結束時(T4結束)發(fā)出總線請求的響應信號HLDA;8086使地址、數據及控制總線進入高阻狀態(tài),讓出總線控制權,完成響應過程。 16、在基于8086的微計算機系統(tǒng)中,存儲器是如何組織的?是如何與處理器總線
26、連接的?BHE#信號起什么作用? 答:8086為16位處理器,可訪問1M字節(jié)的存儲器空間;1M字節(jié)的存儲器分為兩個512K字節(jié)的存儲體,命名為偶字節(jié)體和奇字節(jié)體;偶體的數據線連接D7~D0,“體選”信號接地址線A0;奇體的數據線連接D15~D8,“體選”信號接BHE#信號;BHE#信號有效時允許訪問奇體中的高字節(jié)存儲單元,實現8086的低字節(jié)訪問、高字節(jié)訪問及字訪問。 17、“80386是一個32位微處理器”,這句話的涵義主要指的是什么? 答:指80386的數據總線為32位,片內寄存器和主要功能部件均為32位,片內數據通路為32位。 18、80X86系列微處理器采取與先前的微處理器兼容
27、的技術路線,有什么好處?有什么不足? 答:好處是先前開發(fā)的軟件可以在新處理器組成的系統(tǒng)中運行,保護了軟件投資。缺點是處理器的結構發(fā)展受到兼容的約束,為了保持兼容性增加了硅資源的開銷,增加了結構的復雜性。 第三章 8086指令系統(tǒng)及匯編語言指令程序簡介 一、內容概述 3.1 8089指令系統(tǒng)的基本格式 微處理器只能識別和執(zhí)行以二進制代碼形式表示的指令,這種指令代碼稱作機器碼。8086CPU的機器碼指令有幾百條,但它們的基本格式均為1—6個字節(jié)。除了操作碼字節(jié)和尋址方式字節(jié)外,就是單/雙字節(jié)的位移量和單/雙字節(jié)的立即數。 一條指令具體為基本格式中的哪一種,是由指令的操作碼和尋址
28、方式決定的,具體地說,在指令操作碼中的W、D、S等指示位就是用來指出:指令操作所涉及的是16位數還是8位數;指令中所需的操作數是來自某一寄存器還是由全部數字節(jié)給出;當操作數或操作結果存于某一寄存器中時,該寄存器是通過操作碼還是尋址方式字節(jié)來指定。 3.2 尋址方式 8086的尋址方式分為兩大類:數據存儲器尋址方式和程序存儲器尋址方式。 (一) 數據存儲器尋址方式 數據存儲器尋址方式實際上是尋找有效地址EA值。在8086微機系統(tǒng)中,知道了有效地址EA后,將其與左移4位后的段寄存器內容相加,就可以算出8086所有的存儲器物理地址。因此,在一條指令中,根據其尋址方式求出了EA后很快就可以找
29、到操作數所在的物理地址。 (二) 程序存儲器尋址方式 程序存儲器尋址方式要尋找的是當前要執(zhí)行的指令所在的存儲器物理地址。這是由于在執(zhí)行JUMP指令或CALL指令后,IP的內容須依指令的要求改變,這種改變可能在段內范圍進行,也可能在段間進行。在段內或段間改變IP的內容時,其轉移地址碼可能由指令碼直接提供,也可能由寄存器或存儲單元提供。于是程序存儲器尋址就有了段內直接、段內間接、段間直接、段間間接四種尋址方式。 (三) 尋址方式字節(jié) 8086CPU有著多種靈活的尋址方式,這些尋址方式是通過尋址方式字節(jié)即指令碼的第二個字節(jié)來指定的。尋址方式字節(jié)的格式為: 其中MOD是用來識別是寄存器尋址方
30、式還是存儲器尋址方式的。當MOD=11時,為寄存器尋址方式;MOD≠11時,為存儲器尋址方式。 REG字段與操作碼中的W位一起用來選擇指令操作中所使用的寄存器。 R/M字段與MOD字段一起用來指定尋址方式,它們的組合可以提供24種數據存儲器尋址方式以及16種寄存器尋址方式。 (四) 段越界前紹 所謂“段越界前綴”就是一條特定的指令,該指令功能是把數據所在的當前段寄存器改 為另一個段寄存器,另一個段寄存器由這條特定指令指定?!岸卧浇缜熬Y指令”的格式如下: 其中RR值代表當前段被跨越后得訪問數據所在段。 RR=00,01,10,11分別表示ES,CS,SS,DS段寄存器。 (五)8
31、086機器語言指令基本格式分析舉例 在了解了8086機器碼指令的基本格式、尋址方式、操作碼的指示位、尋址方式字節(jié)等有關知識的基礎上就可進行機器碼指令的分析和閱讀了。在周細等編《微型計算機極其應用》第二版2.5節(jié)中所舉的例子就是通過對指令各字節(jié)及相應位進行閱讀分析,進一步了解、熟識8086的各種尋址方式以及指令在機器中的執(zhí)行過程,從而達到了解8086指令系統(tǒng)的目的,以便能夠熟練使用8086匯編語言進行程序的編制。 3.3 8086匯編語盲語句及基本語法 在了解了8086指令的機器語言基本格式及尋址方式的基礎上,本節(jié)進一步討論8086的匯編語言指令。重點內容是了解8086各種匯編語言指令的
32、基本格式、功能以及它們在匯編源程序中的應用。在實際應用中的一些語法要求也是本節(jié)應重點掌握的內容。 (一)8086的匯編語言指令語句 8086匯編語言語句有三種:指令語句;偽指令語句及宏指令語句。 對指令語句要求能從原理和應用兩個方面去理解和掌握。對某一條具體常用的指令語句 (如MOV等),要能知道操作數屬什么類型、操作數的尋址方式、實際物理地址是什么,具體常用指令功能以及某幾條指令的特殊用途也是應該掌握的。同時由以上分析也應能知道該指令機器碼指令格式中對應的指令操作碼中指示位及尋址方式字節(jié)中MOD字段信息的具體內容。 對偽指令語句,要求了解常用的、與匯編源程序密切相關的偽指令功能
33、,同時在閱讀匯編源程序時,能對偽指令進行分析;在編寫匯編源程序時能正常運用相應的偽指令。 對宏指令語句,本節(jié)僅要求知道其定義,其余內容不作要求。 (二) 匯編語言的有關基本規(guī)定及格式 對匯編語言源程序的編寫,8086是有嚴格的規(guī)定和基本格式的。8086匯編源程序由兩大部分組成,一部分是用偽指令按照一定的格式和語法要求寫出的匯編語句,另一部分是用指令語句編寫的CPU可執(zhí)行的程序段。用偽指令編寫的匯編語句是用來幫助匯編程序在對源程序中CPU可執(zhí)行程序段進行匯編時能對指令語句中的變量正確賦值,或留出指定的存儲區(qū),等等,以便正確匯編,產生出機器可執(zhí)行的目標程序。進行匯編語言源程序設計時,有關偽指
34、令語句、指令語句所有的基本規(guī)定及格式都是應該掌握的內容。 二、教學要求 掌握8086匯編語言程序設計的基本方法; 匯編語言程序有三種基本結構:順序結構、循環(huán)結構及分支結構。要求能了解三種基本結構的基本形式,能閱讀分析并編寫出簡單的程序。 掌握轉移指令的各條語句格式、功能及應用。在此基礎上,能編寫一般的簡單分支程序,并能結合尋址方式中所介紹的程序地址尋址方式內容,從原理的角度理解轉移指令在機器中是如何進行操作的。 三、重點難點 在使用簡單轉移指令時,應注意TEST、AND、OR、XOR幾條指令的使用。它們的使用可提供相應標志位的狀態(tài),作為判斷轉移分支的測試條件。 在測試分支條件時,
35、還常使用移位和循環(huán)移位指令,通過這類指令的執(zhí)行對相應標志位的影響來判斷轉移分支條件是否滿足,以便確定程序的執(zhí)行方向。 對于使用比較指令進行分支程序轉移判斷,要求能分析閱讀相應匯編源程序即可,不要求編寫這類程序。 對于循環(huán)程序,學習重點應為熟悉了解循環(huán)程序的結構,能分析一段循環(huán)程序的四個組成部分各由哪些語句組成,從而能通過逐條指令的分析說明程序將完成的功能。同時,也能在分析程序的基礎上畫出程序的流程圖。 對于多重循環(huán),只需了解其概念,不作更深的要求。 應了解子程序的概念、子程序的調用和返回、子程序的定義格式及現場的保護,以及參數在主、子程序之間的傳遞方式等內容。 對于子程序,要求能在程
36、序中對其進行分析,了解某子程序經主程序調用后使主程序實現的功能。 四、習題 1、根據下列要求編寫一個匯編語言程序:: 代碼段的段名為COD_SG 數據段的段名為DAT_SG 堆棧段的段名為STK_SG 變量HIGH_DAT所包含的數據為95 將變量HIGH_DAT裝入寄存器AH,BH和DL 程序運行的入口地址為START 答案: DAT_SG SEGEMNT HIGH_DAT DB 95 DAT_SG ENDS; STK_SG SEGMENT DW 64 DUP(?) STK_SG ENDS; COD_SG SEGMENT MAIN PROC
37、 FAR ASSUME CS: COD_SG, DS: DAT_SG, SS: STK_SG START: MOV AX, DAT-SG MOV DS, AX MOV AH, HIGH_DAT MOV BH, AH MOV DL, AH MOV AH, 4CH INT 21H MAIN ENDP COD_SG ENDS END START 2、指出下列程序中的錯誤: STAKSG SEGMENT DB 100 DUP(?) STA_SG ENDS DTSEG SEGMENT DATA1 DB ? DTSEG END
38、CDSEG SEGMENT MAIN PROC FAR START: MOV DS,DATSEG MOV AL,34H ADD AL,4FH MOV DATA,AL START ENDP CDSEG ENDS END 答案: 改正后: STAKSG SEGMENT DB 100 DUP(?) STAKSG ENDS DTSEG SEGMENT DATA1 DB ? DTSEG ENDS CDSEG SEGMENT MAIN PROC FAR ASSUME CS: CDSEG, DS: DTSEG, SS
39、: STAKSG START: MOV AX, DTSEG MOV DS, AX MOV AL, 34H ADD AL, 4FH MOV DATA1, AL MOV AH, 4CH INT 21H MAIN ENDP CDSEG ENDS END S 3、將下列文件類型填入空格: (1) .obj (2) .exe (3) .crf (4) .asm (5) .lst (6) .map 編輯程序輸出的文件有______________________________________; 匯編程序輸出的文件有_____________
40、_________________________; 連接程序輸出的文件有______________________________________。 答案: 編輯程序輸出文件: (4) 匯編程序輸出文件: (1), (3), (5) 連接程序輸出文件: (2), (6) 4、下列標號為什么是非法的? (1) GET.DATA (2) 1_NUM (3) TEST-DATA (4) RET (5) NEW ITEM 答案: 非法標號: (1)因為‘.’只允許是標號的第一個字符 (2)第一個字符不能為數字 (3)不允許出現‘-’ (4)不能是
41、保留字,如助記符 (5)不能有空格 5、下面的數據項定義了多少個字節(jié)? DATA_1 DB 6 DUP(4 DUP(0FFH)) 答案: 24字節(jié) 6、對于下面兩個數據段,偏移地址為10H和11H的兩個字節(jié)中的數據是一樣的嗎?為什么? DTSEG SEGMENT | DTSEG SEGMENT ORG 10H | ORG 10H DATA1 DB 72H | DATA1 DW 7204H DB 04H | DTSEG ENDS DTSEG ENDS | 答案:不一樣. 分別是
42、72H, 04H和04H, 72H. 存儲字時低8位存在低字節(jié),高8位存在高字節(jié). 7、下面的數據項設置了多少個字節(jié)? (1) ASC_DATA DB ‘1234’ (2) HEX_DATA DB 1234H 答案: (1) 設置了4個字節(jié) (2) 設置了2個字節(jié) 8、執(zhí)行下列指令后, AX寄存器中的內容是什么? TABLE DW 10,20,30,40,50 ENTRY DW 3 MOV BX,OFFSET TABLE ADD BX,ENTRY MOV AX,[BX] 答案:(AX)=40 9、指出下列指令的錯誤: (1)
43、MOV AH,BX (2) MOV [SI],[BX] (3) MOV AX,[SI][DI] (4) MOV AX,[BX][BP] (5) MOV [BX],ES:AX (6) MOV BYTE PTR[BX],1000 (7) MOV AX,OFFSET [SI] (8) MOV CS,AX (9) MOV DS,BP 答案: (1) 源、目的字長不一致 (2) 源、目的不能同時為存貯器尋址方式 (3) 基址變址方式不能有 SI和DI的組合 (4) 基址變址方式不能有 BX和BP的組合 (5) 在8086尋址方式中
44、,AX不能作為基址寄存器使用,而且源、目的不能同時為存貯器尋址方式 (6) 1000超出一個字節(jié)的表數范圍 (7) OFFSET只用于簡單變量,應去掉 (8) CS不能作為目的寄存器 (9) 段地址不能直接送入數據段寄存器 10、DATA SEGMENT TABLE_ADDR DW 1234H DATA ENDS MOV BX, TABLE_ADDR LEA BX, TABLE_ADDR 請寫出上述兩條指令執(zhí)行后, BX寄存器中的內容。 答案: MOV BX,TABLE_ADDR ; 執(zhí)行后(BX)=123
45、4H LEA BX,TABLE_ADDR ; 執(zhí)行后(BX)=OFFSET TABLE_ADDR 11、 設(DS)=1B00H, (ES)=2B00H, 有關存儲器地址及其內容如右圖 所示,請用兩條指令把X裝入AX寄存器。 1B00:2000H 8000H 1B00:2002H 2B00H 2B00:8000H X 答案:LES BX, [2000H] MOV AX, ES: [BX] 12、變量DATAX和DATAY定義如下: DATAX DW
46、 0148H DW 2316H DATAY DW 0237H DW 4052H 按下述要求寫出指令序列: DATAX和DATAY中的兩個字數據相加, 和存放在DATAY和DATAY+2中。 DATAX和DATAY中的兩個雙字數據相加, 和存放在DATAY開始的字單元中。 DATAX和DATAY兩個字數據相乘(用MUL)。 DATAX和DATAY兩個雙字數據相乘(用MUL)。 DATAX除以23(用DIV)。 DATAX雙字除以字DATAY(用DIV)。 答案: (1) MOV AX, DATAX
47、ADD AX, DATAY MOV BX, DATAX+2 ADD BX, DATAY+2 MOV DATAY, AX MOV DATAY+2, BX (2) MOV AX, DATAX ADD DATAY, AX MOV AX, DATAX+2 ADC DATAY+2, AX (3) MOV AX, DATAX MUL DATAY MOV DATAY,AX MOV DATAY+2,DX (4) MOV AX,WORD PTR DATAX MOV BX,WORD PTR DATAY MUL BX MOV RESULT,AX MO
48、V RESULT+2,DX MOV AX,WORD PTR DATAX MOV AX,WORD PTR DATAY+2 MUL BX ADD RESULT+2,AX ADC RESULT+4,DX MOV AX,WORD PTR DATAX+2 MOV BX,WORD PTR DATAY MUL BX ADD RESULT+2,AX ADC RESULT+4,DX MOV AX,WORD PTR DATAX+2 MOV BX,WORD PTR DATAY+2 MUL BX ADD RESULT+4,AX ADC RE
49、SULT+6,DX (5) MOV AX, DATAX MOV BL, 23 DIV BL MOV BL,AH MOV AH, 0 MOV DATAY, AX ;存放商 MOV AL,BL MOV DATAY+2, AX ;存放余數 (6) MOV AX, DATAX MOV DX, DATAX+2 DIV DATAY MOV DATAY, AX MOV DATAY+2, DX 13、試分析下面的程序段完成什么操作? MOV CL,04 SHL DX,CL MOV BL,AH SHL AX,CL SHR B
50、L,CL OR DL,BL 答案: 將DX: AX中的雙字左移4位(乘16) 14、用其他指令完成和下列指令一樣的功能: (1) REP MOVSB (2) REP LODSB (3) REP STOSB (4) REP SCASB 答案: LOOP1: MOV AL,BYTE PTR [SI] MOV ES:BYTE PTR [DI], AL INC SI 或: DEC SI INC DI 或: DEC DI LOOP LOOP1 (2) LOOP1: MOV AL, BYTE PTR [SI] INC SI 或: DEC S
51、I LOOP LOOP1 (3) LOOP1: MOV ES:BYTE PTR [DI], AL INC DI 或: DEC DI LOOP LOOP1 (4) LOOP1: CMP AL,ES:BYTE PTR [DI] JE EXIT INC DI 或: DEC DI LOOP LOOP1 EXIT: 15、編寫程序段, 比較兩個5字節(jié)的字符串OLDS和NEWS, 如果OLDS字符串與NEWS不同, 則執(zhí)行NEW_LESS, 否則順序執(zhí)行程序。 答案: LEA SI, OLDS LEA DI, NEWS MOV CX, 5 CLD
52、 REPZ CMPSB JNZ NEW_LESS 16、假定AX和BX中的內容為帶符號數, CX和DX中的內容為無符號數, 請用比較指令和條件轉移指令實現以下判斷: 若DX的值超過CX的值,則轉去執(zhí)行EXCEED 若BX的值大于AX的值,則轉去執(zhí)行EXCEED CX中的值為0嗎? 若是則轉去執(zhí)行ZERO BX的值與AX的值相減, 會產生溢出嗎? 若溢出則轉OVERFLOW 若BX的值小于AX的值,則轉去執(zhí)行EQ_SMA 若DX的值低于CX的值,則轉去執(zhí)行EQ_SMA 答案: (1) CMP DX, CX JA EXCEED (2) CMP BX, AX
53、 JG EXCEED (3) CMP CX, 0 JE ZERO (4) SUB BX, AX JO OVERFLOW (5) CMP BX, AX JL EQ_SMA (6) CMP DX, CX JB EQ_SMA 17、假如在程序的括號中分別填入指令: (1) LOOP L20 (2) LOOPNE L20 (3) LOOPE L20 試說明在三種情況下, 當程序執(zhí)行完后, AX、BX、CX、DX四個寄存器的內容分別是什么? TITLE EXLOOP.COM CODESG SEGMENT A
54、SSUME CS:CODESG, DS:CODESG. SS:CODESG ORG 100H BEGIN: MOV AX,01 MOV BX,02 MOV DX,03 MOV CX,04 L20: INC AX ADD BX,AX SHR DX,1 ( ) RET CODESG ENDS END BEGIN 答案: (1)(AX)= 5 (BX)= 16 (CX)= 0 (DX)= 0 (2)(AX)= 2 (BX)=
55、4 (CX)= 3 (DX)= 1 (3)(AX)= 3 (BX)= 7 (CX)= 2 (DX)= 0 18、變量N1和N2均為2字節(jié)的非壓縮BCD數碼,請寫出計算N1與N2之差的指令序列。 答案: MOV AX, 0 MOV AL, N1+1 SUB AL, N2+1 AAS MOV DL, AL MOV AL, N1 SBB AL, N2 AAS MOV DH, AL 19、有兩個3位的ASCII數串ASC1和ASC2定義如下: ASC1 DB ‘578’ ASC2 DB ‘694’ ASC3 DB ‘00
56、00’ 請編寫程序計算ASC3←ASC1+ASC2。 答案: CLC MOV CX, 3 MOV BX, 2 BACK: MOV AL, ASC1[BX] ADC AL, ASC2[BX] AAA OR ASC3[BX+1], AL DEC BX LOOP BACK RCL CX, 1 OR ASC3[BX], CL 20、假設(CS)=3000H, (DS)=4000H, (ES)=2000H, (SS)=5000H, (AX)=2060H, (BX)=3000H, (CX)=5, (DX)=0, (SI)=2060H, (
57、DI)=3000H, (43000H)=0A006H, (23000H)=0B116H, (33000H)=0F802H, (25060)=00B0H,.(SP)=0FFFEH, (CF)=1, (DF)=1, 請寫出下列各條指令單獨執(zhí)行完后, 有關寄存器及存儲單元的內容, 若影響條件碼請給出條件碼SF、ZF、OF、CF的值。 (1) SBB AX,BX (2) CMP AX,WORD PTR[SI+0FA0H] (3) MUL BYTE PTR[BX] (4) AAM (5) DIV BH (6) SAR AX,CL (7) XOR AX,0FFE7H
58、 (8) REP STOSB (9) JMP WORD PYR[BX] (10) XCHG AX,ES:[BX+SI] 答案: (1) (AX)=0F05FH, (SF)=1, (ZF)=0, (OF)=0, (CF)=1 (2) (SF)=1, (ZF)=0, (OF)=1, (CF)=1 (3) (AX)=0240H, (OF)=1, (CF)=1 (4) (AX)=0906H, (SF)=0, (ZF)=0 (5) (AX)=20ACH (6) (AX)=0103H, (CF)=0 (7) (AX)=0DF87H, (CF)=0, (OF)=0, (SF)
59、=1, (ZF)=0 (8) (23000H)~(23004H)=60H, 不影響標志位 (9) (IP)=0A006H, 不影響標志位 (10) (AX)=00B0H, (25060)=2060H, 不影響標志位 21、試編寫一個匯編語言程序,要求對鍵盤輸入的小寫字母用大寫字母顯示出來。 答案: abc: mov ah,1 int 21h cmp al,’a’ jb stop cmp al,’z’ ja stop sub al,20h mov dl,al mov ah,2 int 21h jmp abc stop:
60、ret 22、編寫程序,比較兩個字符串STRING1和STRING2所含字符是否完全相同,若相同則顯示“MATCH”,若不同則顯示“NO MATCH”。 答案: datarea segment string1 db ‘asfioa’ string2 db ‘xcviyoaf’ mess1 db ‘MATCH’,’$’ mess2 db ‘NO MATCH’,’$’ datarea ends prognam segment main proc far assume cs:prognam,ds:datarea start: push ds sub
61、 ax,ax push ax mov ax,datarea mov ds,ax mov es,ax begin: mov cx, string2-string1 mov bx, mess1-string2 cmp bx,cx jnz dispno lea dx,addr lea si,string1 lea di,string2 repe cmpsb jne dispno mov ah,9 lea dx,mess1 int 21h ret dispno: mov ah, 9 lea dx, mess
62、2 int 21h ret main endp prognam ends end start 23、試編寫程序,要求從鍵盤輸入3個16進制數,并根據對3個數的比較顯示如下信息: (1)如果3個數都不相等則顯示0; (2)如果3個數中有2個數相等則顯示2; (3)如果3個數都相等則顯示3。 答案: data segment array dw 3 dup(?) data ends code segment main proc far assume cs:code,ds:data start: push d
63、s sub ax,ax push ax mov ax,data mov ds,ax mov cx,3 lea si,array begin: push cx mov cl,4 mov di,4 mov dl, ‘ ‘ mov ah,02 int 21h mov dx,0 input: mov ah,01 int 21h and al,0fh shl dx,cl or dl,al dec di jne input mov [si],dx add si,2 pop cx loop
64、 begin comp: lea si,array mov dl,0 mov ax,[si] mov bx,[si+2] cmp ax,bx jne next1 add dl,2 next1: cmp [si+4],ax jne next2 add dx,2 next2: cmp [si+4],bx jne num add dl,2 num: cmp dx,3 jl disp mov dl,3 disp: mov ah,2 add dl,30h int 21h re
65、t main endp code ends end start 24、已知整數變量A和B,試編寫完成下述操作的程序: (1)若兩個數中有一個是奇數,則將該奇數存入A中,偶數存入B中; (2)若兩個數均為奇數,則兩數分別加1,并存回原變量; (3)若兩個數均為偶數,則兩變量不變。 答案: dseg segment a dw ? b dw ? dseg ends cseg segment main proc far assume cs:cseg,ds:dseg start: push ds sub ax,ax
66、 push ax mov ax,dseg mov ds,ax begin: mov ax,a mov bx,b xor ax,bx test ax,0001 jz class test bx,0001 jz exit xchg bx,a mov b,bx jmp exit class: test bx,0001 jz exit inc b inc a exit: ret main endp cseg ends end start 25、把0~10010之間的30個數,存入首地址為GRAD的字數組中,GRAD+i表示學號為i+1的學生成績。另一個數組RANK是30個學生的名次表,其中RANK+I的內容是學號為i+1的學生的名次。試編寫程序,根據GRAD中的學生成績,將排列的名次填入RANK數組中(提示:一個學生的名次等于成績高于這個學生的人數加1)。 答案: dseg segment grade dw 30 dup(?) r
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑施工重大危險源安全管理制度
- 安全培訓資料:典型建筑火災的防治基本原則與救援技術
- 企業(yè)雙重預防體系應知應會知識問答
- 8 各種煤礦安全考試試題
- 9 危險化學品經營單位安全生產管理人員模擬考試題庫試卷附答案
- 加壓過濾機司機技術操作規(guī)程
- 樹脂砂混砂工藝知識總結
- XXXXX現場安全應急處置預案
- 某公司消防安全檢查制度總結
- 1 煤礦安全檢查工(中級)職業(yè)技能理論知識考核試題含答案
- 4.燃氣安全生產企業(yè)主要負責人模擬考試題庫試卷含答案
- 工段(班組)級安全檢查表
- D 氯化工藝作業(yè)模擬考試題庫試卷含答案-4
- 建筑起重司索信號工安全操作要點
- 實驗室計量常見的30個問問答題含解析