版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章習(xí)題參考解答
1.1.填空和選擇
(I)運(yùn)算器和控制器合在一起稱為中央處理器,中央處理器和存儲(chǔ)器、I/O接口、
總線及電源合在一起被稱為主機(jī)。
(2)計(jì)算機(jī)的軟件一般分為兩大類:一類叫系統(tǒng)軟件軟件,一類叫應(yīng)用軟件軟件。數(shù)
據(jù)庫(kù)管理系統(tǒng)屬于系統(tǒng)軟件軟件,計(jì)算機(jī)輔助教學(xué)軟件屬于應(yīng)用軟件軟件。
(3)用來(lái)管理計(jì)算機(jī)系統(tǒng)的資源并調(diào)度用戶的作業(yè)程序的軟件稱為圜逐緩;負(fù)責(zé)將
高級(jí)語(yǔ)言的源程序翻譯成目的程序的軟件稱為編譯程序。
(4)計(jì)算機(jī)系統(tǒng)中的存儲(chǔ)器分為外存儲(chǔ)器和內(nèi)存儲(chǔ)器。在CPU執(zhí)行指令時(shí),必須將
指令存放在內(nèi)存儲(chǔ)器中。
(5)計(jì)算機(jī)存儲(chǔ)數(shù)據(jù)的最小單位是寶芭。1KB容量的存儲(chǔ)器能夠存儲(chǔ)1024個(gè)這樣的
基本單位。
(6)在計(jì)算機(jī)系統(tǒng)中,多個(gè)系統(tǒng)部件之間信息傳送的公共通道稱為逛。就其傳送的
信息的性質(zhì)而言,在公共通道上傳送的信息包括崖制和避信息。
(7)采用2的補(bǔ)碼形式表示的8位二進(jìn)制整數(shù),其可表示的數(shù)的范圍為(A1
A.-128~+127B.-2727~+2-127
C.-2-128~2+127D.-127-+128
(8)在定點(diǎn)數(shù)運(yùn)算中產(chǎn)生溢出的原因是(CX
A.運(yùn)算過(guò)程中最高位產(chǎn)生了進(jìn)位或借位
B.參加運(yùn)算的操作數(shù)超出了機(jī)器的表示范圍
C,運(yùn)算的結(jié)果超出了結(jié)果單元的表示范圍
D.寄存器的位數(shù)太少,不得不舍棄最低有效位
(9)下列邏輯部件中,不屬于運(yùn)算器的是(A\
A.指令寄存器B.ALU
C.累加器D.狀態(tài)條件寄存器
2.說(shuō)明微型計(jì)算機(jī)的基本硬件構(gòu)成和各部分功能。
微型計(jì)算機(jī)硬件一般由微處理器、內(nèi)存儲(chǔ)器、外存儲(chǔ)器、系統(tǒng)總線、接口電路、輸入/
輸出設(shè)備等部件組成。
主要組成部件的功能和特點(diǎn)分析如下:
(1)微處理器:是微型計(jì)算機(jī)的核心部件,由運(yùn)算單元ALU、控制單元、寄存器組以
及總線接口部件等組成其功能是負(fù)責(zé)統(tǒng)一協(xié)調(diào)、管理和控制系統(tǒng)中的各個(gè)部件有機(jī)地工作。
(2)內(nèi)存儲(chǔ)器:用來(lái)存放計(jì)算機(jī)工作過(guò)程中需要的操作數(shù)據(jù)和程序。可分為隨機(jī)存儲(chǔ)
器RAM和只讀存儲(chǔ)器ROM。RAM存放當(dāng)前參與運(yùn)行的各種程序和數(shù)據(jù),特點(diǎn)是信息可
讀可寫(xiě),存取方便,但信息斷電后會(huì)丟失;ROM用于存放各種固定的程序和數(shù)據(jù),特點(diǎn)是
信息固定不變,關(guān)機(jī)后原存儲(chǔ)的信息不會(huì)丟失。
(3)系統(tǒng)總線:是CPU與其它部件之間傳送數(shù)據(jù)、地址和控制信息的公共通道???/p>
分成數(shù)據(jù)總線DB、地址總線AB、控制總線CB。
(4)輸入/輸出接口電路:完成微型計(jì)算機(jī)與外部設(shè)備之間的信息交換。由寄存器組、
專用存儲(chǔ)器和控制電路等組成。
(5)輸入/輸入設(shè)備:是微型計(jì)算機(jī)系統(tǒng)與外部進(jìn)行通信聯(lián)系的主要裝置。常用的有鍵
盤(pán)、鼠標(biāo)、顯示器、打印機(jī)和掃描儀等。
3.說(shuō)明微型計(jì)算機(jī)系統(tǒng)的基本構(gòu)成。
微型計(jì)算機(jī)系統(tǒng)包括硬件系統(tǒng)和軟件系統(tǒng)兩大部分。
一、計(jì)算機(jī)硬件系統(tǒng)
硬件是指組成計(jì)算機(jī)的各種物理設(shè)備,它包括計(jì)算機(jī)的主機(jī)和外部設(shè)備。具體由五大功
能部件組成,即:運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備。這五大部分相互配
合,協(xié)同工作。
二、計(jì)算機(jī)軟件系統(tǒng)
計(jì)算機(jī)軟件系統(tǒng)包括系統(tǒng)軟件和應(yīng)用軟件兩大類。
1.系統(tǒng)軟件
系統(tǒng)軟件是指控制和協(xié)調(diào)計(jì)算機(jī)及其外部設(shè)備,支持應(yīng)用軟件的開(kāi)發(fā)和運(yùn)行的軟件。其
主要的功能是進(jìn)行調(diào)度、監(jiān)控和維護(hù)系統(tǒng)等等。
2.應(yīng)用軟件
應(yīng)用軟件是用戶為解決各種實(shí)際問(wèn)題而編制的計(jì)算機(jī)應(yīng)用程序及其有關(guān)資料。
三、硬件和軟件的關(guān)系
1.硬件與軟件是相輔相成的,硬件是計(jì)算機(jī)的物質(zhì)基礎(chǔ),沒(méi)有硬件就無(wú)所謂計(jì)算機(jī)。
2.軟件是計(jì)算機(jī)的靈魂,沒(méi)有軟件,計(jì)算機(jī)的存在就毫無(wú)價(jià)值。
3.硬件系統(tǒng)的發(fā)展給軟件系統(tǒng)提供了良好的開(kāi)發(fā)環(huán)境,而軟件系統(tǒng)發(fā)展又給硬件系統(tǒng)提
出了新的要求。
7.把+進(jìn)制數(shù)2000變成二進(jìn)制數(shù)、八進(jìn)制數(shù)和+六進(jìn)制數(shù)。
2000=7D0H=3720Q=11111010000B
8.把0.213變成二進(jìn)制數(shù)、+六進(jìn)制數(shù)(精確到小數(shù)點(diǎn)后4位)。
0.213=0.3687H=0.1550Q=0.00IIB
9.用4位運(yùn)算器完成如下計(jì)算,并解釋所得結(jié)果:
(1)無(wú)符號(hào)數(shù)6+4(2)無(wú)符號(hào)數(shù)3-4
(3)符號(hào)數(shù)3+4(4)符號(hào)數(shù)3-4
(5)符號(hào)數(shù)-3-4(6)符號(hào)數(shù)-5-4
(1)無(wú)符號(hào)數(shù)6+41010C=0,結(jié)果正確
(2)無(wú)符號(hào)數(shù)3-41111C=l,結(jié)果不正確
(3)符號(hào)數(shù)3+40111V=0,N=0,瞰,獻(xiàn)
正確
(4)符號(hào)數(shù)3-41111V=0,N=1,負(fù)數(shù),結(jié)果正確
(5)符號(hào)數(shù)-3-41001V=0,N=l,負(fù)數(shù),結(jié)算E確
(6)符號(hào)數(shù)-5-40111V=l,N=0,負(fù)溢出,結(jié)
果不正確
10.計(jì)算機(jī)內(nèi)是如何表示+進(jìn)制數(shù)的?它有哪幾種表示方法?
用4位二進(jìn)制數(shù)表示1位+進(jìn)制數(shù),其中有6種非法代碼(比如8421碼中的1010B~
11UB)不用。壓縮的BCD數(shù),及非壓縮的BCD數(shù)(包括ASCII數(shù))。
I3.用+進(jìn)制BCD碼計(jì)算X=35+46,Y=35-46,Z=45+57,說(shuō)明運(yùn)算過(guò)程并解釋結(jié)
果。
353545
46-46+57
7BEF9C
06-66+66(+進(jìn)制修正)
818902
C=0,正確C=l,溢出C=1,溢出
14賽2的補(bǔ)碼兇補(bǔ)+[-Y]補(bǔ)來(lái)計(jì)算[X-Y]補(bǔ)一樣,試用"+的補(bǔ)碼”來(lái)計(jì)算1.13中的Y,
并解釋所得結(jié)果。
因?yàn)?46的"+的補(bǔ)碼"是54(=100-46),所以35-46=35+(54)的補(bǔ),計(jì)
算如下:
35
+54
89且C=1(補(bǔ)碼加時(shí),無(wú)進(jìn)位表示有"借位")
若把89看成"+的補(bǔ)碼"表示的符號(hào)數(shù),則它表示:-11(=-(100-89)%
19.若A=01000011B,說(shuō)明用什么運(yùn)算可完成下述操作:
(1)把A的第0、2、4、6位變反;
(2)把A的第1、2、3位清零;
(3)把A的第4、5、6位置1;
(1)XORA,01010101B
(2)ANDA,11110001B
(3)ORA,01110000B
第2章習(xí)題參考解答
1.8086處理器內(nèi)部一般包括哪些主要部分?
8086處理器與其他處理器一樣,其內(nèi)部有算術(shù)邏輯部件、控制與定時(shí)部件、總線與總
線接口部件、寄存器陣列等。按功能結(jié)構(gòu)可分為兩部分,即總線接口單元(BIU)與執(zhí)行
單元(EU)。BIU主要包括段寄存器、內(nèi)部通信寄存器、指令指針、6字節(jié)指令隊(duì)列、20
位地址加法器和總線控制邏輯電路。EU主要包括通用寄存器陣列、算術(shù)邏輯單元、控
制與定時(shí)部件等。
2.什么是總線?T殳微機(jī)中有哪些總線?
所謂總線是指計(jì)算機(jī)中傳送信息的一組通信導(dǎo)線,它將各個(gè)部件連接成一個(gè)整體。在
微處理器內(nèi)部各單元之間傳送信息的總線稱為片內(nèi)總線;在微處理器多個(gè)外部部件之間
傳送信息的總線稱為片外總線或外部總線。外部總線又分為地址總線、數(shù)據(jù)總線和控制
總線。隨著計(jì)算機(jī)技術(shù)的發(fā)展,總線的概念越來(lái)越重要。微機(jī)中常用的系統(tǒng)總線有PC
總線、ISA總線、PQ總線等。
3.什么是堆棧?它有什么用途?堆棧指針的作用是什么?
堆棧是一個(gè)按照后進(jìn)先出的原則存取數(shù)據(jù)的部件,它是由棧區(qū)和棧指針組成的。堆棧的
作用是:當(dāng)主程序調(diào)用子程序、子程序調(diào)用子程序或中斷時(shí)轉(zhuǎn)入中斷服務(wù)程序時(shí),能把
斷點(diǎn)地址及有關(guān)的寄存器、標(biāo)志位及時(shí)正確地保存下來(lái),并能保證逐次正確地返回。堆
棧除了有保存數(shù)據(jù)的棧區(qū)外,還有一個(gè)堆棧指針SP,它用來(lái)指示棧頂?shù)奈恢谩H羰?向
下生成"的堆棧,隨著壓入堆棧數(shù)據(jù)的增加,棧指針SP的值減少。但SP始終指向棧
頂。
4.在8086CPU中,F(xiàn)R寄存器有哪些標(biāo)志位?分別說(shuō)明各位的功能。
8086CPU中設(shè)置了一個(gè)16位的標(biāo)志寄存器FR,其中用了9位,還有7位保留。9
位中有3位作為控制標(biāo)志,6位作為狀態(tài)標(biāo)志。
IF:中斷控制標(biāo)志。當(dāng)IF=1時(shí),允許可屏蔽中斷請(qǐng)求;當(dāng)IF=0時(shí),禁止可屏蔽中斷
請(qǐng)求。
TF:單步運(yùn)行標(biāo)志。當(dāng)TF=1,單步運(yùn)行;TF=0,連續(xù)運(yùn)行程序。
DF:方向標(biāo)志。當(dāng)DF=0,串操作時(shí)地址按增量修改;DF=1,地址按減量修改。
SF:符號(hào)(負(fù)數(shù))標(biāo)志。當(dāng)運(yùn)算結(jié)果的最高位為1(負(fù)數(shù))時(shí),SF=1;反之SF=0。
ZF:零標(biāo)志。當(dāng)運(yùn)算結(jié)果為0,貝UZF=1;否貝UZF=0。
AF:輔助進(jìn)位/借位標(biāo)志。當(dāng)算術(shù)運(yùn)算時(shí)低4位有進(jìn)位/借位,則AF=1;否則AF
0。AF主要用于BCD碼運(yùn)算中進(jìn)行結(jié)果調(diào)整。
PF:奇偶標(biāo)志。當(dāng)運(yùn)算結(jié)果低8位中1的個(gè)數(shù)為偶數(shù)時(shí)PF=1;否則PF=0。
CF:進(jìn)位/借位標(biāo)志。當(dāng)算術(shù)運(yùn)算結(jié)果最高位有進(jìn)位/借位時(shí),CF=1;否則CF=0。
邏輯運(yùn)算時(shí)CF=0,循環(huán)移位指令也影響CF標(biāo)志。
OF:溢出標(biāo)志。當(dāng)符號(hào)數(shù)算術(shù)運(yùn)算結(jié)果有溢出時(shí)0F=1;否則0F=0。
5.在8086CPU中,有哪些通用寄存器和專用寄存器?試說(shuō)明專用寄存器的作用。
8086CPU中有4個(gè)16位的通用寄存器,即AX、BX、CX、DX。每個(gè)16位寄存器又
可分為2個(gè),共8個(gè)8位寄存器:AH、AUBH、BL、CH、CL、DH、DL。
4個(gè)段寄存器(即代碼段寄存器CS、數(shù)據(jù)段寄存器DS、堆棧段寄存器SS和附加段寄存
器ES)用來(lái)存放各段的起始地址。FR用來(lái)存放標(biāo)志。IP用來(lái)存放程序地址的偏移量,
它不能提供給程序員編程。SP是堆棧指針,專門(mén)用來(lái)指示堆棧位置。BP為基址指針,
作為基址寄存器使用,它與變址寄存器SI、DI配合作為一個(gè)尋址方式。BP主要用來(lái)訪
問(wèn)堆棧段中的數(shù)據(jù)。
6.若CS=8000H,試說(shuō)明現(xiàn)行代碼段可尋址的存儲(chǔ)空間范圍。
若CS=8000H,現(xiàn)行代碼段可尋址的存儲(chǔ)空間范圍為80000H~8FFFFH。
7.設(shè)現(xiàn)行數(shù)據(jù)段位于存儲(chǔ)器的B0000H~BFFFFH,試說(shuō)明DS段寄存器的內(nèi)容。
DS=B000H
8.設(shè)雙字12345678H的起始地址為A001H,試說(shuō)明這個(gè)雙字在存儲(chǔ)器中是如何存放的。
期止RAM
該雙字在存儲(chǔ)器中的存A0001H78放如下:
A0002H56
A0003H34
A0004H12
9.說(shuō)明8086的EU和BIU的主要功能。
8086CPU的BIU對(duì)外提供16位雙向數(shù)據(jù)總線和20位地址總線。它負(fù)責(zé)完成所有的
外部總線操作,即完成取指令、指令排隊(duì)、讀與寫(xiě)操作、地址轉(zhuǎn)換和總線控制。
執(zhí)行單元EU的主要功能是完成指令譯碼與執(zhí)行指令工作。EU從BIU的指令隊(duì)列輸出
端取得指令,對(duì)指令的代碼進(jìn)行譯碼,產(chǎn)生操作數(shù)地址并將其傳送給BIU,向BIU申
請(qǐng)完成存儲(chǔ)器或I/。的讀寫(xiě)周期,對(duì)操作數(shù)進(jìn)行指令規(guī)定的操作。在指令執(zhí)行期間,
EU測(cè)試標(biāo)志位,根據(jù)指令執(zhí)行的結(jié)果修改標(biāo)志位。若指令隊(duì)列是空的,EU等待下一
次取得指令字節(jié),且修改指令隊(duì)列的輸出指針。EU有一個(gè)16位的ALU,專門(mén)用來(lái)對(duì)
操作數(shù)進(jìn)行算術(shù)和邏輯運(yùn)算。
10.說(shuō)明8086CPU組成的系統(tǒng)中為什么必須使用地址鎖存器?
8086的數(shù)據(jù)總線和低16位地址總線是采用分時(shí)復(fù)用的。當(dāng)執(zhí)行存儲(chǔ)器讀寫(xiě)或I/O讀
寫(xiě),在CPU總線周期的T1狀態(tài)時(shí),作地址總線輸出(A15-A0),在其他狀態(tài)均作為
雙向數(shù)據(jù)總線使用。地址總線的高4位A19~A16也是復(fù)用線,但他們是地址/狀態(tài)復(fù)
用線。為了使地址信息在整個(gè)總線周期中均保持有效地址,必須設(shè)置地址鎖存器把T1
狀態(tài)上輸出的20條地址信息進(jìn)行鎖存。
11.8086CPU的最大尋址范圍是多少?如何實(shí)現(xiàn)對(duì)整個(gè)地址空間尋址?
8086的存儲(chǔ)器最大尋址范圍為1M字節(jié)(地址為00000H~FFFFFH);I/O尋址的最
大范圍為64K(口地址為0000H~FFFFH),對(duì)1M存儲(chǔ)器的尋址是通過(guò)段寄存器來(lái)實(shí)
現(xiàn)的,每個(gè)存儲(chǔ)器段為64K字節(jié),1M字節(jié)的存儲(chǔ)器可以分為若干個(gè)64KB段,利用
段寄存器可尋址整個(gè)存儲(chǔ)空間。對(duì)I/。空間的尋址可使用直接尋址(對(duì)8位口地址);
也可使用DX進(jìn)行間接尋址(對(duì)16位口地址)。
16.在8086中,地址/數(shù)據(jù)復(fù)用信號(hào)是如何區(qū)分的?
在8086中,地址/數(shù)據(jù)復(fù)用信號(hào)是在時(shí)間上區(qū)分的。在總線周期的T1狀態(tài),CPU在
這些引腳上輸出存儲(chǔ)器或I/O端口地址,在T2、T3、T4狀態(tài)則輸出數(shù)據(jù)收發(fā)信號(hào)。
第3章習(xí)題及參考解答
1.指出下列各指令中源操作數(shù)和目的操作數(shù)的尋址方式。
(l)MOVDI,100
(2)MOVCX.100[SI]
(3)MOV[SI],AX
(4)ADDAX,[BX+DI]
(5)ANDAX,BX
(6)MOVDX,[1000]
(7)MOVBX,[BP+DI+100]
(8)PUSHF
(9)SUB[1050],CX
(10)ANDDH,[BP+4]
解
源操作數(shù)目的操作數(shù)
(1)立即尋址寄存器尋址
(2)變址尋址寄存器尋址
(3)寄存器尋址寄存器間接尋址
(4)基址加變址尋址寄存器尋址
(5)寄存器尋址寄存器尋址
(6)直接尋址寄存器尋址
(7)基址加變址尋址寄存器尋址
(8)寄存器尋址寄存器間接尋址
(9)寄存器尋址直接尋址
(10)變址尋址寄存器尋址
2.試述指令MOVAX,2000H和MOVAX,DS:[2000H]的區(qū)別?
解區(qū)別有三條:
(1)MOVAX,2000H對(duì)源操作數(shù)是立即尋址,而MOVAX.[2000H]對(duì)源操作數(shù)是
直接尋址;
(2)前者功能是把立即數(shù)2000H送入AX中,而后者是把內(nèi)存2000H單元與2001H
單元的內(nèi)容取出送入AX中;
(3)兩者的機(jī)器代碼不同,執(zhí)行速度也不同,前者執(zhí)行時(shí)間快,后者執(zhí)行時(shí)間慢。
4.若DS=4000H,BX=0800H,[40800H]=05AOH,[40802H]=2000H,求執(zhí)行
指令LDSSI,[BX]后,DS與SI中的內(nèi)容。若上題中的DS換成ES,其他條件不變,求執(zhí)
行指令LESDI,[BX]后,ES與DI中的內(nèi)容。
解
SI=05AOH,DS=2000H
DI=05AOH,ES=2000H
5.若AX=98ABH,BX=A8BCHO求執(zhí)行指令A(yù)DDAX,BX后,AX與BX中的內(nèi)容,
并指出SF,ZF,AF,PF,CF和OF的狀態(tài)。
解AX=4167H,BX=A8BCH,SFZFAFPFCFOF=0010UB.
6.若CX=6700H,DX=78FFH,CF=1O求分別執(zhí)行指令
(l)ADDCX,DX
(2)ADCCX,DX
(3)SUBCX,DX
(5)ANDCX,DX
(6)ORCX,DX
(7)X0RCX,DX
后,CX與DX寄存器中的內(nèi)容,并指出標(biāo)志寄存器SF,ZF,AF,PF,CF及OF的狀
態(tài)。
解
(1)CX=DFFFH,DX=78FFH,SFZFAFPFCFOF=100101B
(2)CX=E000H,DX=78FFH,SFZFAFPFCFOF=101101B
(3)CX=EEO1H,DX=78FFH,SFZFAFPFCFOF=101010B
(4)CX=EE00H,DX=78FFH,SFZFAFPFCFOF=1O111OB
(5)CX=6000H,DX=78FFH,SFZFAFPFCFOF=00x100B
(6)CX=7FFFH,DX=78FFH,SFZFAFPFCFOF=OOxlOOB
(7)CX=1FFFH,DX=78FFH,SFZFAFPFCFOF=OOx100B
7.若AX=FFFEH,BX=FFFDH,求執(zhí)行指令I(lǐng)MULBX后,DX與AX中的內(nèi)容。指
出標(biāo)志位OF與CF的狀態(tài)。
解AX=0006H,DX=0000H,OFCF=00B
8.若AL=75H,BL=48H,
Q)求執(zhí)行指令
ADDAL,BL
DAA
之后AL=?標(biāo)志AF=?CF=?并說(shuō)明BCD碼調(diào)整情況。
⑵若執(zhí)行指令SUBAL,BL與DAS后,情況又如何?
解
(1)AL=23H,AFCF=11B
(2)AL=27H,AFCF=10B
9.設(shè)X、Y、R、S、Z均為16位無(wú)符號(hào)數(shù)的變量。按已給定的表達(dá)式Z(X+Y)/(R-
S)TZ,有程序如下,試在空格處填入適當(dāng)?shù)闹噶?注:在加減過(guò)程中均無(wú)進(jìn)位和借位)。
MOVAX,X
①
MOVCX,R
SUBCX,S
②
③
MOVZ,AX
MOVZ+1,DX
HLT
解
①ADDAX,Y
②MULZ
③DIVCX
10.若有一個(gè)四字節(jié)數(shù),放在寄存器DX與AX中(DX中放高16位),要求這個(gè)4字節(jié)
數(shù)整個(gè)左移T立如何實(shí)現(xiàn)?右移一位又如何實(shí)現(xiàn)?
解
(1)DX與AX左移一位:
SHLAX,01
RCLDX,01
(2)DX與AX右移一位:
SHRDX,01
RCRAX,01
11.都IK字節(jié)的數(shù)據(jù)塊從偏移地址為1000H開(kāi)始的單元傳送到偏移地址為1400H
開(kāi)始的緩沖區(qū)。試用串傳送操作指令和一般傳送指令兩種方法各編一程序?qū)崿F(xiàn)。
解
Q)利用串操作指令編程如下:
MOVSI,1000H
MOVDI,1400H
MOVCX,400H
CLD
REPMOVSB
MOVAM,4CH
INT21H
(2)利用一般傳送指令編程如下:
MOVSI,1000H
MOVDI,1400H
MOVCX,400H
NEXT:MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPNEXT
MOVAH,4CH
INT21H
12.若在內(nèi)存緩沖區(qū)中有一個(gè)長(zhǎng)度為256個(gè)字節(jié)的數(shù)據(jù)塊,起始地址偏移量為2000H。
數(shù)據(jù)塊中的數(shù)據(jù)有正有負(fù),要求把其中的正負(fù)數(shù)分開(kāi).分別送至同段的兩個(gè)緩沖區(qū),存放正
數(shù)的緩沖區(qū)的起始地址偏移量為2100H,存放負(fù)數(shù)的緩沖區(qū)的起始地址偏移量為2200H.
試編一程序。
解
MOVSI,2000H
MOVCX,100H
XORDX,DX
LOOP:MOVAL,[SI]
ADDAL,0
JNSPLUS
INCDH
NEXT:INC
DECCX
JNZLOOP
JMPSTOP
PLUS:INCDL
JMPNEXT
STOP:MOV[2100H],DL
MOV[2200H],DH
MOVAH,4CH
INT21H
13.若SS=1000H,SP=1OOOH,AX=1234H,BX=5678H,Flag=21O3H,試說(shuō)明執(zhí)
行指令
PUSHBX
PUSHAX
PUSHF
POPCX
之后,SP=?SS=?CX=?并畫(huà)圖指出棧中各單元的內(nèi)容。
解SS=1000H,SP=0FFCH,CX=2103H
棧中各單元內(nèi)容如下:
地址RAM
0FFAH03
OFFBH21
OFFCH34
OFFDH12
OFFEH78
OFFFH56
1000HXX
14.若DS=1100H,SI=1000H,CS=1200H,IP=1OOH,[12000H]=2000H,
[12002]=15OOH,求執(zhí)行指令
(l)CALLFAR[SI]后CS與IP的內(nèi)容;
⑵CALL[SI]后CS與IP的內(nèi)容。
解
(1)CS=15OOII,IP=2000H
(2)CS=1200H,IP=2000H
15.若執(zhí)行指令I(lǐng)NT21H后,將轉(zhuǎn)到何處執(zhí)行程序,指出CS與IP的內(nèi)容。
解將轉(zhuǎn)到0:0086H和0:0084H處取出雙字作為CS與IP的值,再執(zhí)行程序。CS
的值為內(nèi)存單元0:0086H和0:0087H的內(nèi)容;IP為內(nèi)存單元0:0084H與0:0085H
的內(nèi)容。
16.編一程序使
(1)AX寄存器低4位清零;
(2)BX寄存器低4位置1;
(3)CX寄存器低4位變反;
(4)DX寄存器高3位不變,其余位清零。
解
(l)ANDAX,FFFOH
(2)ORBX,OOOFH
(3)X0RCX,000FH
(4)ANDDX,E000H
18.指出下列8086指令中哪些是錯(cuò)誤的,錯(cuò)在何處?
⑴MOVDL,BX
⑵MOVDS,2000H
(3)MOV[DI],[SI]
(4)MOVAX,[BX][BP]
(5)XCHGCX,[2400H]
(6)PUSHDH
(7)INAH,DX
(8)0UT01F0H,AX
解
(1)錯(cuò)。數(shù)據(jù)類型不匹配。
(2)錯(cuò)。立即數(shù)不能直接送往段寄存器。
(3)錯(cuò)。兩個(gè)內(nèi)存單元不能直接傳送數(shù)據(jù)。
(4)錯(cuò)。BX和BP部可作為基址寄存器,缺少變址寄存器。沒(méi)有基址加基址尋址方式。
⑸對(duì)。
(6)錯(cuò)。堆棧操作必須是16位數(shù)據(jù),DH是8位寄存器。
(7)錯(cuò)。輸入(IN)指令從端口讀出的數(shù)據(jù)需送給累加器AL或AX,送給AH不行。
(8)錯(cuò)。端口地址為16位時(shí),必須用DX間接尋址。
19.連續(xù)執(zhí)行以下指令,填寫(xiě)執(zhí)行指令的結(jié)果(MEM為存儲(chǔ)器物理地址)。
MOVAX,2280H
MOVCX.OFFOOH
MOVDS,AX
MOVSI,CX
ADDCX,AX;①cx=__H,CF=___B
MOV[SI],CX;②[SI]=__H.[SI+1]=__H
ADC[SI],AL;③[SI]=__H,MEM=__H
DECBYTE[SI];④[SI]=__H,ZFCFPF=___B
MOVAX,06
ADCAX,08;?AX=__H,CFAF=_B
AAA;@AX=__H,CFAF=_B
ADDAL,59H;⑦AL=__H,CFAF=___B
DAA;⑧AL=__H
ANDAL,OFH
MOVBX,-8
NEGBX;?BX=_
MOVDL,06
MULDL;?AX=__H
ORAX,OFFOOH
CWD;(n)AX=__H
IDIVBX;(12)AX=__H,DX=___H
MOVAH,4CH
INT21H
解
①CX=2180H,CF=1B
②[SI]=80H,[SI+1]=21H
?[SI]=01H,MEM=32700H
@[SI]=OOH,ZFCFPF=111B
⑤AX=OOOFH,CFAF=OOB
@AX=0105H,CFAF=11B
?AL=5EH,CFAF=OOB
⑧AL=64H
@BX=0008H
@AX=0018H
(n)AX=FF18H
(12)AX=FFE3H,DX=OOOOH
第4章習(xí)題及參考解答
1.試編一程序,把地址偏移量為100H單元開(kāi)始的256個(gè)單元分別寫(xiě)入OOH,01H,
02H,03H,…,F(xiàn)FH數(shù)據(jù)。
解源程序如下
DATASEGMENT
ORG100H
BUF1DB256DUP(?)
COUNTEQU$-BUF1
DATAENDS
STKSEGMENTSTACK
DB100DUP(?)
STKENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETBUF1;成LEASI,BUF1
MOVCX,COUNT
XORAL,AL;或MOVAL,OOH
NEXT:MOV[SI],AL
INCAL
INCSI
LOOPNEXT
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
2.統(tǒng)計(jì)上題寫(xiě)入的數(shù)據(jù)塊中0元素、正元素、負(fù)元素的個(gè)數(shù),并分別把統(tǒng)計(jì)結(jié)果送入
上述數(shù)據(jù)塊之后的三個(gè)單元中。
解
DATASEGMENT
ORG100H
BUF1DBOOH,O1H.02H,…,OFEH,OFFH;共256個(gè)數(shù)據(jù)
COUNTEOU$-BUF1
DB3DUP(?)
DATAENDS
STKSEGMENTSTACK
DB100DUP(?)
STKENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETBUFl
MOCCX,COUNT
XORBX,BX;BL與BH分別存放正、負(fù)元素的個(gè)數(shù)
XORDH,DH;DH寄存器存放0元素個(gè)數(shù)
NEXT2:MOVAL,[SI]
CMPAL,0
JZZERO;若ZF=1』購(gòu)0,車拴ZERO,DH+1
JSNEGAT;若SF=0則為負(fù)數(shù),BH+1
INCBL;既不是0又不是負(fù),則為正數(shù),BL+1
JMPNEXT3
ZERO:INCDH;0的個(gè)數(shù)加1
JMPNEXT3
NEGAT:INCBH;負(fù)數(shù)個(gè)數(shù)加1
NEXT3:INCSI;修改地址指針SI
LOOPNEXT2;未完,繼續(xù)循環(huán)
MOV[SI],DH;存入0元素個(gè)數(shù)統(tǒng)計(jì)結(jié)果
INCSI
MOV[SI],BX;存入正、負(fù)數(shù)個(gè)數(shù)統(tǒng)計(jì)結(jié)果
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
4.把地址偏移量為STRG1單元開(kāi)始的128個(gè)單元的內(nèi)容傳送到地址偏移量為STRG2
開(kāi)始的單元中。
解
DATASEGMENT
STRGIDBXXH,XXH,XXH,….XXH;128個(gè)數(shù)據(jù)
COUNTEOU$-STRGI
STRG2DB128DUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETSTRG1
MOVDI,OFFSETSTRG2
MOVCX,COUNT
CLD
REPMOVSB
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
5.寄存器SI做地址指針,自SI所指的內(nèi)存單元開(kāi)始連續(xù)存放三個(gè)無(wú)符號(hào)數(shù)(以字為單
位),編一程序求它們的和,并將結(jié)果存放在這三個(gè)數(shù)之后的單元中。
解
DATASEGMENT
BUFDWXXH,YYH,ZZH
SUMDW?,?
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
STARTMOVAX,DATA
MOVDS,AX
MOVSI,OFFSETBUF
MOVDI,OFFSETSUM
MOVAX,[SI]
ADDAX,[SI+2]
MOV[DI],AX
MOVAX,0
ADDCAX,0
MOV[DI+2],AX
MOVAX,[DI]
ADDCAX,[SI+4]
MOV[DI],AX
MOVAX,0
ADDCAX,[DI+2]
MOV[DI+2],AX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
6.讀下面程序段,問(wèn):在什么情況下本段程序的執(zhí)行結(jié)果是AH=O?
START:INAL,5FH
MOVAH,0
JZBRCH
MOVAH,0
JMPSTOP
BRCH:MOVAH,OFFH
STOP:INT20H
解當(dāng)標(biāo)志寄存器的ZF=O時(shí),執(zhí)行結(jié)果AH=0。(JZ之前的兩條指令對(duì)零標(biāo)志沒(méi)有
影響)
7.下面語(yǔ)句在存儲(chǔ)器中分別為變量分配多少字節(jié)?
ONEDW10
TWODW4DUP(?),5
THREEDB2DUP(?,8DUP(O))
COUNTEQU10
FOURDDCOUNTDUP(?)
FIVEDB'HOWAREYOU?'
解
ONEDW10;為ONE分配2個(gè)字節(jié)
TWODW4DUP(?),5;為T(mén)WO分配10個(gè)字節(jié)
THREEDB2DUP(?,8DUP(O));為T(mén)HREE分配18個(gè)字節(jié)
COUNTEQU10;不給COUNT分配存儲(chǔ)單元
FOURDDCOUNTDUP(?);為FOUR分酉己40個(gè)字節(jié)
FIVEDB'HOWAREYOU?';為FIVE分配12個(gè)字節(jié)
8.數(shù)據(jù)定義語(yǔ)句如下所示:
FIRSTDB90H,5FH,6EH,69H
SECONDDB5DUP(?)
THIRDDB5DUP(?)
FORTHDBDUP(?)
自FIRST單元開(kāi)始存放的是一個(gè)四字節(jié)的十六進(jìn)制數(shù)(低位字節(jié)在前),要求:
Q)編一段程序?qū)⑦@個(gè)數(shù)左移兩位后存放到自SECOND開(kāi)始的單元(注意保留移出部
分);
(2)編一段程序?qū)⑦@個(gè)數(shù)右移兩位后存放到自THIRD開(kāi)始的單元(注意保留移出部分);
(3)編一段程序?qū)⑦@個(gè)數(shù)求補(bǔ)后存放到自FORTH開(kāi)始的單元。
解
DATASEGMENT
FIRSTDB90H,5FH,6EH,69H
SECONDDB5DUP(?)
THIRDDB5DUP(?)
FORTHDBDUP(?)
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
CALLSUBP1
CALLSUBP2
CALLSUBP3
MOVAH,4CH
INT21H
SUBP1PROC
MOVSI,OFFSETFIRST
MOVDI,OFFSETSECOND
XORBL,BL
MOVCL,2
MOVAX,[SI]
MOVDX,[SI+2]
LOP1:SHLAX,1
RCLDX,1
RCLBL,1
DECCL
JNZLOP1
MOV[DI],AX
MOV[DI+2],DX
MOV[DIM],BL
RET
SUBP1ENDP
SUBP2PROC
MOVSI,OFFSETFIRST
MOVDI,OFFSETTHIRD
XORBL,BL
MOVCL,2
MOVAX,[SI]
MOVDX,[SI+2]
LOP2:SHRDX,1
RCRAX,1
RCRBL,1
DECCL
JNZLOP2
MOV[DI],BL
MOV[DI+1],AX
MOV[DI+3],DX
RET
SUBP2ENDP
SUBP3PROC
MOVSI,OFFSETFIRST
MOVDI,OFFSETFORTH
MOVAX,[SI]
MOVDX,[SI+2]
NOTAX
NOTDX
ADDAX,1
ADCDX,0
MOV[DI],AX
MOV[DI+2],DX
RET
SUBP3ENDP
CODEENDS
ENDSTART
9.指令語(yǔ)句ANDAX,OPD1ANDOPD2中,OPD1和OPD2是兩個(gè)已賦值的變量,
問(wèn)兩個(gè)AND操作分別在什么時(shí)間進(jìn)行?有什么區(qū)別?
解前面的AND是指令,在程序運(yùn)行時(shí)執(zhí)行,后面的AND是運(yùn)算符,在匯編的時(shí)候
由匯編程序計(jì)算,表達(dá)式計(jì)算結(jié)果出現(xiàn)在執(zhí)行程序中。二者的區(qū)別在于,前者是指令,程序
運(yùn)行時(shí)執(zhí)行,后者是運(yùn)算符,匯編時(shí)計(jì)算。
10.如下指令或程序是否有錯(cuò),若有錯(cuò),請(qǐng)指出錯(cuò)在哪里?
(1)KIEOU1024
MOVKI,AX
(2)MOVDS,100
MOV[1000],[2000]
(3)IMPDB?
MOVIMP,AX
(4)A1DB?
A2DB10
I
I
I
CMPAl,A2
(5)將1000送入XI單元,用如下程序:
XIDB?
I
I
I
MOVBX,XI
MOV[BX],1000
解
(l)MOVKI,AX錯(cuò)。因?yàn)镵I為立即數(shù),它不能作為目的操作數(shù)。
(2)這兩條指令都是錯(cuò)的。第一條立即數(shù)不能直接送給段寄存器;第二條兩個(gè)操作數(shù)不
能同時(shí)為內(nèi)存操作數(shù)。
(3)MOVIMP,AX錯(cuò)。兩操作數(shù)類型不匹配,IMP是一字節(jié)內(nèi)存單元,而AX寄存
器中為16位數(shù)據(jù)。
(4)CMPAl,A2錯(cuò)。兩個(gè)操便A1與A2不能同時(shí)為內(nèi)存操作數(shù)。
(5)M0V[BX],1000錯(cuò)。兩操作數(shù)類型不匹配,[BX]只定義了一字節(jié)單元,而1000
是16位數(shù)據(jù)。
11.8086匯編語(yǔ)言程序中段的類型有幾種?各段如何定義?段定義語(yǔ)句中,定位類型、
組合類型、類別各起什么作用?各有什么含義?
解8086匯編語(yǔ)言中,段的類型有三種,即代碼段、堆棧段、數(shù)據(jù)段(附加數(shù)據(jù)段可歸
屬于數(shù)據(jù)段)。各段可用段定義語(yǔ)句(SEGMENT與ENDS)和段名賦給段寄存器語(yǔ)句
(ASSUME)來(lái)定義。段定義語(yǔ)句中,定位類型表示此段的起始邊界要求,可允許4種段的起
始邊界,即PAGE、PARA、WORD或BYTE。它們分別表示段的起始值為以頁(yè)、節(jié)、字、
字節(jié)為邊界,若此項(xiàng)省略,則默認(rèn)值為PARA。組合類型用來(lái)告訴連接程序本段與其他段的
關(guān)系,分別為NONE、PUBLIC.COMMON.AT表達(dá)式、STACK或MEMORY。每一種
的含義請(qǐng)參看主教材。類別是連接程序(UNK)需要的。它可以是任何合法的名稱,必須用單
引號(hào)括起來(lái),連接程序只使同類別的段發(fā)生關(guān)聯(lián)。典型類別如‘CODE'、'STACK'。
12.使用DOS功能調(diào)用0AH從鍵盤(pán)輸入40個(gè)字符的字符串并將其送入一輸入緩沖
區(qū)。在按下Enter鍵后,顯示這些字符。
解
NAMEKBDINPUT
CODESEGMENT
ASSUMECS:CODE,DS:CODE
ORG100H
START:JMPBEGIN
BUFDB41
NUMBDB?
CHARSDB41DUP(?)
MSG1DB'Typeanything,followedbyenter.',ODH,OAH,'$'
MSG2DBODH,OAH,'ContentsoftheKBDinputbuf:',ODH,OAH,'$'
BEGIN:MOVAX,CS
MOVDS,AX
MOVDX,OFFSETMSG1
MOVAH,9
INT21H
MOVDX,OFFSETBUF
MOVAH,OAH
INT21H
MOVDX,OFFSETMSG2
MOVAH,9
INT21H
XORBX,BX
MOVBL,NUMB
MOVCHARS[BX],'$'
MOVDX,OFFSETCHARS
MOVAH,9
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
說(shuō)明
本題把數(shù)據(jù)區(qū)放在代碼段中,沒(méi)有單獨(dú)定義數(shù)據(jù)段。并且用ORG100H語(yǔ)句把程序起
始地址的偏移量放在100H開(kāi)始的單元,用JMPBEGIN指令跳過(guò)數(shù)據(jù)區(qū),這樣可以把該程
序經(jīng)匯編、連接后的執(zhí)行程序(.EXE)用EXE2BIN軟件生成.COM文件。
或:
DATASEGMENT
BUFDB41
NUMBDB?
CHARSDB41DUP(?)
MSG1DB'Typeanything,followedbyenter.",ODH,OAH,'$'
MSG2DBODH,OAH,'ContentsoftheKBDinputbuf:',ODH,OAH,
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMSG1
MOVAH,9
INT21H
MOVDX,OFFSETBUF
MOVAH,OAH
INT21H
MOVDX,OFFSETMSG2
MOVAH,9
INT21H
XORBX,BX
MOVBL,NUMB
MOVCHARS[BX],'$'
MOVDX,OFFSETCHARS
MOVAH,9
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
13.某軟件共可接收10個(gè)鍵盤(pán)命令(分別為A,B,C,…,J),完成這10個(gè)命令的程
序分別為過(guò)程P0,Pl,...,P9O編一程序從鍵盤(pán)接收命令,并轉(zhuǎn)到相應(yīng)的過(guò)程去執(zhí)行。要
求用兩種方法:
Q)用比較、轉(zhuǎn)移指令實(shí)現(xiàn);
(2)用跳轉(zhuǎn)表實(shí)現(xiàn)。
解
Q)用比較、轉(zhuǎn)移指令實(shí)現(xiàn)
CODESEGMENT
ASSUMECS:CODE
ORG100H
START:JMPBEGIN
MSGDB正rrorcharacter!',ODH,OAH,
BEGIN:MOVAX,CS
MOVDS,AX
MOVAH,1
INT21H
CMPAL,'A'
JZPSO
CMPAL,'B'
JZPSI
CMPAL,'C
JZPS2
CMPAL,'D'
JZPS3
CMPAL,'E'
JZPS4
CMPAL,'F
JZPS5
CMPAL,'G'
JZPS6
CMPAL,'H'
JZPS7
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 混凝土模板支撐工程專項(xiàng)方案
- 2025年骨科器械使用培訓(xùn)考試試題及答案
- 橋面鋪裝病害原因分析及防治措施
- 2025年5G+工業(yè)互聯(lián)網(wǎng)融合應(yīng)用政策科技政策合規(guī)考核試卷及答案
- 2025年勞務(wù)員考試題庫(kù)附答案
- 2025年房地產(chǎn)估價(jià)師之基本制度法規(guī)政策含相關(guān)知識(shí)押題練習(xí)試題及答案
- 2025年五年級(jí)美術(shù)教師個(gè)人年度工作總結(jié)
- 《心理咨詢知情同意書(shū)》
- 建設(shè)工程施工合同糾紛要素式起訴狀模板可導(dǎo)出多種格式
- 2026 年專用型離婚協(xié)議書(shū)合規(guī)版
- 電力工程有限公司管理制度制度范本
- 科研倫理與學(xué)術(shù)規(guī)范-課后作業(yè)答案
- 《混凝土結(jié)構(gòu)工程施工規(guī)范》
- 安全防范系統(tǒng)安裝維護(hù)員題庫(kù)
- mbd技術(shù)體系在航空制造中的應(yīng)用
- 苗木育苗方式
- 通信原理-脈沖編碼調(diào)制(PCM)
- 省直單位公費(fèi)醫(yī)療管理辦法實(shí)施細(xì)則
- 附錄 阿特拉斯空壓機(jī)操作手冊(cè)
- JJG 693-2011可燃?xì)怏w檢測(cè)報(bào)警器
- GB/T 39557-2020家用電冰箱換熱器
評(píng)論
0/150
提交評(píng)論