版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
《微計(jì)算機(jī)技術(shù)》作業(yè)冊答案
第1章緒論
1.計(jì)算機(jī)分那幾類?各有什么特點(diǎn)?
答:傳統(tǒng)上分為三類:大型主機(jī)、小型機(jī)、微型機(jī)。大型主機(jī)一般為高性能的并行處理系
統(tǒng),存儲容量大,事物處理能力強(qiáng),可為眾多用戶提供服務(wù)。小型機(jī)具有一定的數(shù)據(jù)處理
能力,提供一定用戶規(guī)模的信息服務(wù),作為部門的信息服務(wù)中心。微型機(jī)一般指在辦公室或
家庭的桌面或可移動(dòng)的計(jì)算系統(tǒng),體積小、價(jià)格低、具有工業(yè)化標(biāo)準(zhǔn)體系結(jié)構(gòu),兼容性好。
2.簡述微處理器、微計(jì)算機(jī)及微計(jì)算機(jī)系統(tǒng)三個(gè)術(shù)語的內(nèi)涵。
答:微處理器是微計(jì)算機(jī)系統(tǒng)的核心硬件部件,對系統(tǒng)的性能起決定性的影響。微計(jì)算機(jī)
包括微處理器、存儲器、I/O接口電路及系統(tǒng)總線。微計(jì)算機(jī)系統(tǒng)是在微計(jì)算機(jī)的基礎(chǔ)上配
上相應(yīng)的外部設(shè)備和各種軟件,形成一個(gè)完整的、獨(dú)立的信息處理系統(tǒng)。
3.80X86微處理器有兒代?各代的名稱是什么?
答:從體系結(jié)構(gòu)上可分為3代:8080/8085:8位機(jī)。8086/8088/80286:16位機(jī)。
80386/80486:32位機(jī)。
第2章微處理器結(jié)構(gòu)及微計(jì)算機(jī)的組成
1.8086是多少位的微處理器?為什么?
答:8086是16位的微處理器,其內(nèi)部數(shù)據(jù)通路為16位,對外的數(shù)據(jù)總線也是16位。
2.EU與BIU各自的功能是什么?如何協(xié)同工作?
答:EU是執(zhí)行部件,主要的功能是執(zhí)行指令。B1U是總線接口部件,與片外存儲器及I/O
接口電路傳輸數(shù)據(jù)。EU經(jīng)過BIU進(jìn)行片外操作數(shù)的訪問,BIU為EU提供將要執(zhí)行的指令。
EU與BIU可分別獨(dú)立工作,當(dāng)EU不需BIU提供服務(wù)時(shí),BIU可進(jìn)行填充指令隊(duì)列的操作。
3.8086/8088與其前一代微處理器8085相比,內(nèi)部操作有什么改進(jìn)?
答:8085為8位機(jī),在執(zhí)行指令過程中,取指令與執(zhí)行執(zhí)令都是串行的。8086/8088由于內(nèi)
部有EU和BIU兩個(gè)功能部件,可重疊操作,提高了處理器的性能。
4.8086/8088微處理器內(nèi)部有那些寄存器,它們的主要作用是什么?
答:執(zhí)行部件有8個(gè)16位寄存器,AX、BX、CX、DX、SP、BP、DI、SI?AX、BX、CX、DX-
般作為通用數(shù)據(jù)寄存器。SP為堆棧指針存器,BP、DI、SI在間接尋址時(shí)作為地址寄存器或
變址寄存器。總線接口部件設(shè)有段寄存器CS、DS>SS、ES和指令指針寄存器IP。段寄存器
存放段地址,與偏移地址共同形成存儲器的物理地址。IP的內(nèi)容為下一條將要執(zhí)行指令的
偏移地址,與C$共同形成卜一條指令的物理地址。
5.8086對存儲器的管理為什么采用分段的辦法?
答:8086是一個(gè)16位的結(jié)構(gòu),采用分段管理辦法可形成超過16位的存儲器物理地址,擴(kuò)
大對存儲器的尋址范圍(1MB,20位地址)。若不用分段方法,16位地址只能尋址64KB空間。
6.在8086中,邏輯地址、偏移地址、物理地址分別指的是什么?具體說明。
答:邏輯地址是在程序中對存儲器地址的一種表示方法,由段地址和段內(nèi)偏移地址兩部分
組成,如1234H:0088H。偏移地址是指段內(nèi)某個(gè)存儲單元相對該段首地址的差值,是一個(gè)
16位的二進(jìn)制代碼。物理地址是8086芯片引線送出的20位地址碼,用來指出一個(gè)特定的
存儲單元。
7.給定一個(gè)存放數(shù)據(jù)的內(nèi)存單元的偏移地址是20C0H,(DS)=0C00EH,求出該內(nèi)存單元的
物理地址。
答:物理地址:320F8H
1
8.8086/8088為什么采用地址/數(shù)據(jù)引線復(fù)用技術(shù)?
答:考慮到芯片成本,8086/8088采用40條引線的封裝結(jié)構(gòu)。40條引線引出8086/8088的
所有信號是不夠用的,采用地址/數(shù)據(jù)線復(fù)用引線方法可以解決這一矛盾,從邏輯角度,地
址與數(shù)據(jù)信號不會同時(shí)出現(xiàn),二者可以分時(shí)復(fù)用同一組引線。
9.8086與8088的主要區(qū)別是什么?
答:8086有16條數(shù)據(jù)信號引線,8088只有8條;8086片內(nèi)指令預(yù)取緩沖器深度為6字節(jié),
8088只有4字節(jié)。
10.怎樣確定8086的最大或最小工作模式?最大、最小模式產(chǎn)生控制信號的方
法有何不同
答:引線MN/MX#的邏輯狀態(tài)決定8086的工作模式,MN/MX#引線接高電平,8086被設(shè)定為
最小模式,MN/MX#引線接低電平,8086被設(shè)定為最大模式。
最小模式下的控制信號由相關(guān)引線直接提供;最大模式下控制信號由8288專用芯片譯碼后
提供,8288的輸入為8086的S2#~S0#三條狀態(tài)信號引線提供。
11.8086被復(fù)位以后,有關(guān)寄存器的狀態(tài)是什么?微處理器從何處開始執(zhí)行程
序?
答:標(biāo)志寄存器、IP、DS、SS、ES和指令隊(duì)列置0,CS置全1。處理器從FFFFOH存儲單元
取指令并開始執(zhí)行。
12.8086基本總線周期是如何組成的?各狀態(tài)中完成什么基本操作?
答:基本總線周期由4個(gè)時(shí)鐘(CLK)周期組成,按時(shí)間順序定義為門、T2、T3、T4。在T1
期間8086發(fā)出訪問目的地的地址信號和地址鎖存選通信號ALE;T2期間發(fā)出讀寫命令信號
RD#、WR#及其它相關(guān)信號;T3期間完成數(shù)據(jù)的訪問;T4結(jié)束該總線周期。
13.結(jié)合8086最小模式下總線操作時(shí)序圖,說明ALE、M/IO#、DT/R#、RD#、
READY信號的功能。
答:ALE為外部地址鎖存器的選通脈沖,在T1期間輸出;M/1O#確定總線操作的對象是存儲
器還是I/O接口電路,在T1輸出;DT/R#為數(shù)據(jù)總線緩沖器的方向控制信號,在T1輸出;
RD#為讀命令信號;在T2輸出;READY信號為存儲器或I/O接口“準(zhǔn)備好”信號,在T3期
間給出,否則8086要在T3與T4間插入Tw等待狀態(tài)。
14.8086中斷分哪兩類?8086可處理多少種中斷?
答:8086中斷可分為硬件中斷和軟件中斷兩類。8086可處理256種類型的中斷。
15.8086可屏蔽中斷請求輸入線是什么?“可屏蔽”的涵義是什么?
答:可屏蔽中斷請求輸入線為TNTR;“可屏蔽”是指該中斷請求可經(jīng)軟件清除標(biāo)志寄存器
中IF位而被禁止。
16.8086的中斷向量表如何組成?作用是什么?
答:把內(nèi)存。段中0~3FFH區(qū)域作為中斷向量表的專用存儲區(qū)。該區(qū)域存放256種中斷的處
理程序的入口地址,每個(gè)入口地址占用4個(gè)存儲單元,分別存放入口的段地址與偏移地址。
17.8086如何響應(yīng)一個(gè)可屏蔽中斷請求?簡述響應(yīng)過程。
答:當(dāng)8086收到INTR的高電平信號時(shí),在當(dāng)前指令執(zhí)行完且IF=1的條件下,8086在兩個(gè)
總線周期中分別發(fā)出INTA#有效信號;在第二個(gè)INTA#期間,8086收到中斷源發(fā)來的一字節(jié)
中斷類型碼;8086完成保護(hù)現(xiàn)場的操作,CS、IP內(nèi)容進(jìn)入堆棧,請除IF、TF;8086將類型
碼乘4后得到中斷向量表的入口地址,從此地址開始讀取4字節(jié)的中斷處理程序的入口地址,
8086從此地址開始執(zhí)行程序,完成了INTR中斷請求的響應(yīng)過程。
18.什么是總線請求?8086在最小工作模式下,有關(guān)總線請求的信號引腳是什么?
答:系統(tǒng)中若存在多個(gè)可控制總線的土模塊時(shí),其中之一若要使用總線進(jìn)行數(shù)據(jù)傳輸時(shí),
需向系統(tǒng)請求總線的控制權(quán),這就是一個(gè)總線請求的過程。8086在最小工作模式下有關(guān)總
2
線請求的信號引腳是HOLD與HLDA。
19.簡述在最小工作模式下,8086如何響應(yīng)一個(gè)總線請求?
答:外部總線主控模塊經(jīng)HOLD引線向8086發(fā)出總線請求信號;8086在每個(gè)時(shí)鐘周期的上
升沿采樣HOLD引線;若發(fā)現(xiàn)HOLD=1則在當(dāng)前總線周期結(jié)束時(shí)(T4結(jié)束)發(fā)出總線請求的響
應(yīng)信號HLDA;8086使地址、數(shù)據(jù)及控制總線進(jìn)入高阻狀態(tài),讓出總線控制權(quán),完成響應(yīng)過
程。
20.在基于8086的微計(jì)算機(jī)系統(tǒng)中,存儲器是如何組織的?是如何與處理器總線連接的?
BHE#信號起什么作用?
答:8086為16位處理器,可訪問1M字節(jié)的存儲器空間;1M字節(jié)的存儲器分為兩個(gè)512K
字節(jié)的存儲體,命名為偶字節(jié)體和奇字節(jié)體;偶體的數(shù)據(jù)線連接D7~D0,“體選”信號接地
址線A0;奇體的數(shù)據(jù)線連接D15、D8,“體選”信號按BHE#信號;BHE#信號有效時(shí)允許訪問
奇體中的高字節(jié)存儲單元,實(shí)現(xiàn)8086的低字節(jié)訪問、高字節(jié)訪問及字訪問。
21.(<80386是一個(gè)32位微處理器”,這句話的涵義主要指的是什么?
答:指80386的數(shù)據(jù)總線為32位,片內(nèi)寄存器和主要功能部件均為32位,片內(nèi)數(shù)據(jù)通路
為32位。
22.80X86系列微處理器采取與先前的微處理器兼容的技術(shù)路線,有什么好處?有什么不
足?
答:好處是先前開發(fā)的軟件可以在新處理器組成的系統(tǒng)中運(yùn)行,保護(hù)了軟件投資。缺點(diǎn)是
處理器的結(jié)構(gòu)發(fā)展受到兼容的約束,為了保持兼容性增加了硅資源的開銷,增加了結(jié)構(gòu)的復(fù)
雜性。
23.80386內(nèi)部結(jié)構(gòu)由哪幾部分組成?簡述各部分的作用。
答:80386內(nèi)部結(jié)構(gòu)由執(zhí)行部件(EU)、存儲器管理部件(MMU)和總線接口部件(BIU)三部分組
成。EU包括指令預(yù)取部件、指令譯碼部件、控制部件、運(yùn)算部件及保護(hù)檢測部件,主要功
能是執(zhí)行指令。存儲器管理部件包括分段部件、分頁部件,實(shí)現(xiàn)對存儲器的分段分頁式的管
理,將邏輯地址轉(zhuǎn)換成物理地址。總線接口部件作用是進(jìn)行片外訪問:對存儲器及I/O接口
的訪問、預(yù)取指令;另外的作用是進(jìn)行總線及中斷請求的控制
24.80386有幾種存儲器管理模式?都是什么?
答:80386有三種存儲器管理模式,分別是實(shí)地址方式、保護(hù)方式和虛擬8086方式
25.在不同的存儲器管理模式下,80386的段寄存器的作用是什么?
答:在實(shí)地址方式下,段寄存器與8086相同,存放段基地址。在保護(hù)方式下,每個(gè)段寄存
器還有一個(gè)對應(yīng)的64位段描述符寄存器,段寄存器作為選擇器存放選擇符。在虛擬8086
方式下,段寄存器的作用與8086相同。
26.試說明虛擬存儲器的涵義,它與物理存儲器有什么區(qū)別?80386虛擬地址空間有多大?
答:虛擬存儲器是程序員面對的一個(gè)巨大的、可尋址的存儲空間,這個(gè)空間是內(nèi)存與外存
聯(lián)合形成的,在操作系統(tǒng)的管理卜,程序可象訪問內(nèi)存一樣去訪問外存而獲得所需數(shù)據(jù)。物
理存儲器是指機(jī)器實(shí)際擁有的內(nèi)存儲器,不包括外存。80386的虛擬地址空間為64TB大。
27.試說明描述符的分類及各描述符的作用。
答:描述符分為三類:存儲器段描述符、系統(tǒng)段描述符、門描述符。存儲器段描述符由8
字節(jié)組成,它用來說明一個(gè)段中保存信息的情況。32位段基地址和20位段界限值定位了該
段在存儲空間中的位置,其它有關(guān)位決定訪問權(quán)限及段的長度單位。系統(tǒng)段描述符與存儲器
段描述符大多數(shù)字節(jié)段相同,有關(guān)訪問權(quán)及屬性字節(jié)段有些不同。門描述符用來改變程序的
特權(quán)級別、切換任務(wù)的執(zhí)行以及指出中斷服務(wù)程序的入口。
3
28.描述符表的作用是什么?有幾類描述符表?
答:描述符表順序存放一系列描述符,描述符表定義了在80386系統(tǒng)中被使用的全部存儲
器段。有3類描述符表,即全局描述符表、局部描述符表及中斷描述符表。
29.80386的分段部件是如何將邏輯地址變?yōu)榫€性地址的?
答:分段部件根據(jù)段選擇符從全局描述符表或局部描述符表中取出對應(yīng)的段描述符。把段
描述符32位段基地址與邏輯地址中的32位偏移量相加就形成了線性地址。
30.80386中如何把線性地址變?yōu)槲锢淼刂罚?/p>
答:分段部件形成的32位線性地址中高10位作為尋址頁目錄表的偏移量,厲控制寄存器
CR3中頁目錄表基地址共同形成一個(gè)32位的地址指向頁表中的一個(gè)頁項(xiàng),即為一個(gè)頁面描
述符。該頁面項(xiàng)中高20位作為頁面基地址,線性地址的低12位為偏移量,相加后形成指向
某一存儲單元的32位物理地址。若禁止分頁功能,線性地址就是物理地址。
31.80386對中斷如何分類?
答:80386把中斷分為外部中斷和內(nèi)部中斷兩大類,外部中斷經(jīng)NMT和TNTR引線輸入請求
信號。內(nèi)部中斷也叫內(nèi)部異常中斷,分為陷阱中斷、內(nèi)部故障異常中斷、異常終止中斷。
32.80386在保護(hù)方式下中斷描述符表與8086的中斷向量表有什么不同?
答:8086工作在實(shí)地址方式,向量表是在存儲器的0段中最低1024字節(jié)內(nèi)存中。80386在
保護(hù)方式下要通過中斷描述符表中的描述符訪問虛擬空間的中斷向量,中斷描述符表的位置
不是固定的,要由IDTR寄存器實(shí)現(xiàn)在虛擬空間的定位。
33.簡述80386在保護(hù)方式下的中斷處理過程。
答:80386響應(yīng)中斷后,接收由中斷源提供的類型碼并將其乘8,與1DTR寄存器中基地址
相加,指出中斷描述符的位置,讀出中斷描述符,依其中的段選擇符及條件決定從兩個(gè)描述
符表LDT或GDT中的一個(gè)得到段描述符,形成中斷服務(wù)程序入口所在存儲器單元的線性地址
第3章8086指令系統(tǒng)及尋址方式(第一部分)
1.根據(jù)下列要求編寫一個(gè)匯編語言程序::
(1)代碼段的段名為C0D_SG
(2)數(shù)據(jù)段的段名為DAT_SG
(3)堆棧段的段名為STK_SG
(4)變量HIGH_DAT所包含的數(shù)據(jù)為95
(5)將變量HIGH_DAT裝入寄存器AH,BH和DL
(6)程序運(yùn)行的入口地址為START
答案:DAT_SGSEGEMNT
HIGH_DATDB95
DAT_SGENDS;
STK_SGSEGMENT
DW64DUP(?)
STK_SGENDS;
C0D_SGSEGMENT
MAINPROCFAR
ASSUMECS:COD_SG,DS:DAT_SG,SS:
STK_SG
START:MOVAX,DAT-SG
MOVDS,AX
4
MOVAH,HIGH_DAT
MOVBH,AH
MOVDL,AH
MOVAH,4CH
INT21H
MAINENDP
COD_SGENDS
ENDSTART
2.指出下列程序中的錯(cuò)誤:
STAKSGSEGMENT
DB100DUP(?)
STA_SGENDS
DTSEGSEGMENT
DATA1DB?
DTSEGEND
CDSEGSEGMENT
MAINPROCFAR
START:MOVDS,DATSEG
MOVAL,34H
ADDAL,4FH
MOVDATA,AL
STARTENDP
CDSEGENDS
END
答案:改正后:STAKSGSEGMENT
DB100DUP(?)
STAKSGENDS
DTSEGSEGMENT
DATA1DB?
DTSEGENDS
CDSEGSEGMENT
MAINPROCFAR
ASSUMECS:CDSEG,DS:DTSEG,SS:
STAKSG
START:MOVAX,DTSEG
MOVDS,AX
MOVAL,34H
ADDAL,4FH
MOVDATA1,AL
MOVAH,4CH
INT21H
MAINENDP
CDSEGENDS
ENDSTART
5
3.將下列文件類型填入空格:
(1).obj(2).exe(3).erf(4).asm(5).1st(6).map
編輯程序輸出的文件有:
匯編程序輸出的文件有;
連接程序輸出的文件有。
答案:
編輯程序輸出文件:(4)
匯編程序輸出文件:(1),(3),(5)
連接程序輸出文件:(2),(6)
4.下列標(biāo)號為什么是非法的?
(1)GET.DATA(2)1_NUM(3)TEST-DATA(4)RET(5)NEWITEM
答案:
非法標(biāo)號:(1)因?yàn)?只允許是標(biāo)號的第一個(gè)字符
(2)第一個(gè)字符不能為數(shù)字
(3)不允許出現(xiàn)'
(4)不能是保留字,如助記符
(5)不能有空格
5.下面的數(shù)據(jù)項(xiàng)定義了多少個(gè)字節(jié)?
DATA_1DB6DUP(4DUP(OFFH))
答案:
24字節(jié)
6.對于下面兩個(gè)數(shù)據(jù)段,偏移地址為10H和11H的兩個(gè)字節(jié)中的數(shù)據(jù)是一樣的嗎?為
什么?
DTSEGSEGMENTDTSEGSEGMENT
ORG10H1ORG10H
DATA1DB72H1DATA1DW7204H
DB04H1DTSEGENDS
DTSEGENDS
答案:
不一樣.分別是72H,04H和04H,72H.存儲字時(shí)低8位存在低字節(jié),高8位存
在高字節(jié).
7.下面的數(shù)據(jù)項(xiàng)設(shè)置了多少個(gè)字節(jié)?
(1)ASC_DATADB'1234'(2)HEX_DATADB1234H
答案:⑴設(shè)置了4個(gè)字節(jié)(2)設(shè)置了2個(gè)字節(jié)
8.執(zhí)行下列指令后,AX寄存器中的內(nèi)容是什么?
TABLEDW10,20,30,40,50
ENTRYDW3
MOVBX,OFFSETTABLE
ADDBX,ENTRY
MOVAX,[BX]
答案:(AX)=40
9.指出下列指令的錯(cuò)誤:
(1)MOVAH,BX(2)MOV[SI],[BX](3)MOVAX,[SI][DI]
6
(4)MOVAX,[BX][BP](5)MOV[BX],ES:AX(6)MOVBYTEPTR[BX],1000
(7)MOVAX,OFFSET[SI](8)MOVCS,AX(9)MOVDS,BP
答案:
(1)源、目的字長不一致
(2)源、目的不能同時(shí)為存貯器尋址方式
(3)基址變址方式不能有SI和DI的組合
(4)基址變址方式不能有BX和BP的組合
(5)在8086尋址方式中,AX不能作為基址寄存器使用,而且源、目的不能同時(shí)
為存貯器尋址方式
(6)1000超出一個(gè)字節(jié)的表數(shù)范圍
(7)OFFSET只用于簡單變量,應(yīng)去掉
(8)CS不能作為目的寄存器
(9)段地址不能直接送入數(shù)據(jù)段寄存器
10.DATASEGMENT
TABLE_ADDRDW1234H
DATAENDS
MOVBX,TABLE_ADDR
LEABX,TABLE_ADDR
請寫出上述兩條指令執(zhí)行后,BX寄存器中的內(nèi)容。
答案:
MOVBX,TABLE_ADDR;執(zhí)行后(BX)=1234H
LEABX,TABLE_ADDR;執(zhí)行后(BX)=OFFSET
TABLE_ADDR
11.設(shè)(DS)=1BOOH,(ES)=2B00H,有關(guān)存儲器地址及其內(nèi)容如右
圖
所示,請用兩條指令把X裝入AX寄存器。8000H
1800:2000
H
2B00H
1BOO:2OO2
H
X
2B00:8000
H
—
答案:LESBX,[2000H]
MOVAX,ES:[BX]
第3章8086指令系統(tǒng)及尋址方式(第二部分)
12,變量DATAX和DATAY定義如下:
DATAXDW0148H
DW2316H
7
DATAYDW0237H
DW4052H
按下述要求寫出指令序列:
(l)DATAX和DATAY中的兩個(gè)字?jǐn)?shù)據(jù)相加,和存放在DATAY和DATAY+2中。
(2)DATAX和DATAY中的兩個(gè)雙字?jǐn)?shù)據(jù)相加,和存放在DATAY開始的字單元中。
(3)DATAX和DATAY兩個(gè)字?jǐn)?shù)據(jù)相乘(用MUDo
(4)DATAX和DATAY兩個(gè)雙字?jǐn)?shù)據(jù)相乘(用MUL)。
(5)DATAX除以23(用D1V)。
(6)DATAX雙字除以字DATAY(用DIV)。
答案:
(1)MOVAX,DATAX
ADDAX,DATAY
MOVBX,DATAX+2
ADDBX,DATAY+2
MOVDATAY,AX
MOVDATAY+2,BX
(2)MOVAX,DATAX
ADDDATAY,AX
MOVAX,DATAX+2
ADCDATAY+2,AX
⑶MOVAX,DATAX
MULDATAY
MOVDATAY,AX
MOVDATAY+2,DX
(4)
MOVAX,WORDPTRDATAX
MOVBX,WORDPTRDATAY
MULBX
MOVRESULT,AX
MOVRESULT+2,DX
MOVAX,WORDPTRDATAX
MOVAX,WORDPTRDATAY+2
MULBX
ADDRESULT+2,AX
ADCRESULT+4,DX
MOVAX,WORDPTRDATAX+2
MOVBX,WORDPTRDATAY
MULBX
ADDRESULT+2,AX
ADCRESULT+4,DX
MOVAX,WORDPTRDATAX+2
MOVBX,WORDPTRDATAY+2
MULBX
ADDRESULT+4,AX
8
ADCRESULT+6,DX
(5)MOVAX,DATAX
MOVBL,23
DIVBL
MOVBL,AH
MOVAH,0
MOVDATAY,AX;存放商
MOVAL,BL
MOVDATAY+2,AX;存放余數(shù)
(6)MOVAX,DATAX
MOVDX,DATAX+2
DIVDATAY
MOVDATAY,AX
MOVDATAY+2,DX
13.試分析下面的程序段完成什么操作?
MOVCL,04
SHLDX,CL
MOVBL,AH
SHLAX,CL
SHRBL,CL
ORDL,BL
答案:
將DX:AX中的雙字左移4位(乘16)
14.用其他指令完成和下列指令一樣的功能:
(1)REPMOVSB(2)REPLODSB(3)REPSTOSB(4)REP
SCASB
答案:
(1)L00P1:
MOVAL,BYTEPTR[SI]
MOVES:BYTEPTR[DI],
INCSI或:DECSI
INCDI或:DECDI
LOOPL00P1
(2)L00P1:
MOVAL,BYTEPTR[SI]
INCSI或:DECSI
LOOPL00P1
(3)L00P1:
MOVES:BYTEPTR[DI],AL
INCDI或:DECDI
LOOPL00P1
(4)L00P1:
CMPAL,ES:BYTEPTR[DI]
JEEXIT
9
INCDI或:DECDI
LOOPLOOP1
EXIT:
15.編寫程序段,比較兩個(gè)5字節(jié)的字符串OLDS和NEWS,如果OLDS字符串與
NEWS不同,則執(zhí)行NEWJESS,否則順序執(zhí)行程序。
答案:
LEASI,OLDS
LEADI,NEWS
MOVCX,5
CLD
REPZCMPSB
JNZNEW_LESS
16.假定AX和BX中的內(nèi)容為帶符號數(shù),CX和DX中的內(nèi)容為無符號數(shù),請用比較指令和
條件轉(zhuǎn)移指令實(shí)現(xiàn)以下判斷:
(1)若DX的值超過CX的值,則轉(zhuǎn)去執(zhí)行EXCEED
(2)若BX的值大于AX的值,則轉(zhuǎn)去執(zhí)行EXCEED
(3)CX中的值為0嗎?若是則轉(zhuǎn)去執(zhí)行ZERO
(4)BX的值與AX的值相減,會產(chǎn)生溢出嗎?若溢出則轉(zhuǎn)OVERFLOW
(5)若BX的值小于AX的值,則轉(zhuǎn)去執(zhí)行EQ^SMA
(6)若DX的值低于CX的值,則轉(zhuǎn)去執(zhí)行EQ_SMA
答案:
(1)CMPDX,CX
JAEXCEED
(2)CMPBX,AX
JGEXCEED
(3)CMPCX,0
JEZERO
(4)SUBBX,AX
JOOVERFLOW
(5)CMPBX,AX
JLEQ_SMA
(6)CMPDX,CX
JBEQ_SMA
17.假如在程序的括號中分別填入指令:
(1)LOOPL20(2)LOOPNEL20(3)LOOPEL20
試說明在三種情況下,當(dāng)程序執(zhí)行完后,AX、BX、CX、DX四個(gè)寄存器的內(nèi)容分別是什
么?
TITLEEXLOOP.COM
CODESGSEGMENT
ASSUMECS:CODESG,DS:CODESG.SS:CODESG
ORG100H
BEGIN:MOVAX,01
MOVBX,02
MOVDX,03
10
MOVCX,04
L20:INCAX
ADDBX,AX
SHRDX,1
()
RET
CODESGENDS
ENDBEGIN
答案:
(1)(AX)=5(BX)=16(CX)=0(DX)=0
(2)(AX)=2(BX)=4(CX)=3(DX)=1
(3)(AX)=3(BX)=7(CX)=2(DX)=0
18.變量N1和N2均為2字節(jié)的非壓縮BCD數(shù)碼,請寫出計(jì)算N1與N2之差的指令序列。
答案:
MOVAX,0
MOVAL,Nl+1
SUBAL,N2+1
AAS
MOVDL,AL
MOVAL,N1
SBBAL,N2
AAS
MOVDH,AL
19.有兩個(gè)3位的ASCII數(shù)串ASCI和ASC2定義如下:
ASCIDB'578’
ASC2DB'694'
ASC3DB'0000'
請編寫程序計(jì)算ASC3-ASC1+ASC2。
答案:
CLC
MOVCX,3
MOVBX,2
BACK:
MOVAL,ASCI[BX]
ADCAL,ASC2[BX]
AAA
ORASC3[BX+1],AL
DECBX
LOOPBACK
RCLCX,1
ORASC3EBX],CL
20.假設(shè)(CS)=3000H,(DS)=4000H,(ES)=2000H,(SS)=5000H,(AX)=2060H,(BX)=3000H,
(CX)=5,(DX)=0,(SI)=206011,(DI)=3000H,(43000H)=0A006H,(23000H)=0B116H,
(33000H)=0F802H,(25060)=00B0H,.(SP)=OFFFEH,(CF)=1,(DF)=1,請寫出下列各條指令
11
單獨(dú)執(zhí)行完后,有關(guān)寄存器及存儲單元的內(nèi)容,若影響條件碼請給出條件碼SF、ZF、OF、
CF的值。
(1)SBBAX,BX(2)CMPAX,WORDPTR[SI+OFAOH]
(3)MULBYTEPTR[BX](4)AAM
(5)DIVBH(6)SARAX,CL
(7)XORAX,0FFE7H(8)REPSTOSB
(9)JMPWORDPYR[BX](10)XCHGAX,ES:[BX+SI]
答案:
(1)(AX)=0F05FH,(SF)=1,(ZF)=O,(OF)=0,(CF)=1
(2)(SF)=1,(ZF)=O,(0F)=l,(CF)=1
(3)(AX)=0240H,(0F)=l,(CF)=1
(4)(AX)=0906H,(SF)=O,(ZF)=O
(5)(AX)=20ACH
(6)(AX)=0103H,(CF)=O
(7)(AX)=0DF87H,(CF)=O,(0F)=0,(SF)=1,(ZF)=O
(8)(23000H)~(23004H)=60H,不影響標(biāo)志位
(9)(IP)=0A006H,不影響標(biāo)志位
(10)(AX)=OOBOH,(25060)=2060H,不影響標(biāo)志位
第4章匯編語言程序設(shè)計(jì)基礎(chǔ)(第一部分)
1.試編寫一個(gè)匯編語言程序,要求對鍵盤輸入的小寫字母用大寫字母顯示出來。
答案:
abc:movah,1
int21h
cmpal,'a'
jbstop
cmpal,'z'
jastop
subal,20h
movdl,al
movah,2
int21h
jmpabc
stop:ret
2.編寫程序,比較兩個(gè)字符串STRING1和STRING2所含字符是否完全相同,若相同則顯
示“MATCH”,若不同則顯示“NOMATCH”。
答案:
datareasegment
stringldb<asfioa,
string2db'xcviyoaf'
messldb'MATCH','$'
mess2db,N0MATCH','
datareaends
prognamsegment
mainprocfar
12
assumecs:prognam,ds:datarea
start:
pushds
subax,ax
pushax
movax,datarea
movds,ax
moves,ax
begin:
movex,string2-stringl
movbx,messl-string2
empbx,ex
jnzdispno
leadx,addr
leasi,stringl
leadi,string2
repeempsb
jnedispno
movah,9
leadx,messl
int21h
ret
dispno:
movah,9
leadx,mess2
int21h
ret
mainendp
prognamends
endstart
3.試編寫程序,要求從鍵盤輸入3個(gè)16進(jìn)制數(shù),并根據(jù)對3個(gè)數(shù)的比較顯示如下信息:
(1)如果3個(gè)數(shù)都不相等則顯示0;
(2)如果3個(gè)數(shù)中有2個(gè)數(shù)相等則顯示2;
(3)如果3個(gè)數(shù)都相等則顯示3O
答案:
datasegment
arraydw3dup(?)
dataends
codesegment
mainprocfar
assumecs:code,ds:data
start:
pushds
13
subax,ax
pushax
movax,data
movds,ax
movex,3
leasi,array
begin:
pushex
movcl,4
movdi,4
movdl,
movah,02
int21h
movdx,0
input:
movah,01
int21h
andal,Ofh
shldx,cl
ordl,al
decdi
jneinput
mov[si],dx
addsi,2
popex
loopbegin
comp:
leasi,array
movdl,0
movax,[si]
movbx,[si+2]
empax,bx
jnenextl
adddl,2
nextl:
emp[si+4],ax
jnenext2
adddx,2
next2:
emp[si+4],bx
jnenum
adddl,2
num:
empdx,3
14
jldisp
movdl,3
disp:
movah,2
adddl,3Oh
int21h
ret
mainendp
codeends
endstart
4.已知整數(shù)變量A和B,試編寫完成下述操作的程序:
(1)若兩個(gè)數(shù)中有一個(gè)是奇數(shù),則將該奇數(shù)存入A中,偶數(shù)存入B中;
(2)若兩個(gè)數(shù)均為奇數(shù),則兩數(shù)分別加1,并存回原變量;
(3)若兩個(gè)數(shù)均為偶數(shù),則兩變量不變。
答案:
dsegsegment
adw?
bdw?
dsegends
csegsegment
mainprocfar
assumecs:cseg,ds:dseg
start:pushds
subax,ax
pushax
movax,dseg
movds,ax
begin:movax,a
movbx,b
xorax,bx
testax,0001
jzclass
testbx,0001
jzexit
xchgbx,a
movb,bx
jmpexit
class:testbx,0001
jzexit
incb
inca
exit:ret
mainendp
15
csegends
endstart
第4章匯編語言程序設(shè)計(jì)基礎(chǔ)(第二部分)
5.把O'lOOi。之間的30個(gè)數(shù),存入首地址為GRAD的字?jǐn)?shù)組中,GRAD+i表示學(xué)號為i+1的
學(xué)生成績。另一個(gè)數(shù)組RANK是30個(gè)學(xué)生的名次表,其中RANK+I的內(nèi)容是學(xué)號為i+1的學(xué)
生的名次。試編寫程序,根據(jù)GRAD中的學(xué)生成績,將排列的名次填入RANK數(shù)組中(提示:
一個(gè)學(xué)生的名次等于成績高于這個(gè)學(xué)生的人數(shù)加1)?
答案:
dsegsegment
gradedw30dup(?)
rankdw30dup(?)
dsegends
csegsegment
mainprocfar
assumecs:cseg,ds:dseg,es:dseg
start:pushds
subax,ax
pushax
movax,dseg
movds,ax
moves,ax
begin:movdi,0
movex,30
loopl:pushex
movex,30
movsi,0
movax,grade[di]
movdx,0
loop2:empgrade[si],ax
jbego_on
incdx
go_on:addsi,2
looploop2
popex
incdx
movrank[di],dx
sdddi,2
looploopl
ret
mainendp
csegends
endstart
16
6.分析下列程序的功能,寫出堆棧最滿時(shí)各單元的地址及內(nèi)容。
SSEGSEGMENT'STACK;AT1000H;堆棧的段地址為1000H
DW128DUP(?)
TOSLABELWORD
SSEGENDS
DSEGSEGMENT
DW32DUP(?)
DSEGENDS
CSEGSEGMENT
MAINPROCFAR
ASSUMECS:CSEG,DS:DSEG,SS:SSEG
START:MOVAX,SSEG
MOVSS,AX
MOVAX,DSEG
MOVDS,AX
MOVAX,4321H
CALLHTOA
RETN:MOVAH,4CH
INT21H
MAINENDP
HTOAPROCNEAR
CMPAX,15
JLEBl
PUSHAX
PUSHBP
MOVBP,SP
MOVBX,[BP+2]
ANDBX,OFH
MOV[BP+2],BX
POPBP
MOVCL,4
SHRAX,CL
CALLHTOA
Bl:POPAX
B2:ADDAL,30H
JLPRT
ADDAL,07
PRT:MOVDL,AL
17
MOVAH,2
INT21H
RET
HTOAENDP
CSEGENDS
ENDSTART
答案:
1000:0F2HBl
1000:0F4H3
1000:0F6HBl
1000:0F8H2
1000:0FAHBl
1000:0FCH1
1000:0FEHRETN
1000:1OOH
7.寫出分配給下列中斷類型號在中斷向量表中的物理地址。
(1)INT12H(2)INT8
答案:
(l)00048h
(2)00020h
8.試編寫程序,它輪流測試兩個(gè)設(shè)備的狀態(tài)寄存器,只要一個(gè)狀態(tài)寄存器的第0位為1,
則與其相應(yīng)的設(shè)備就輸入一個(gè)字符;如果其中任一狀態(tài)寄存器的第3位為1,則整個(gè)輸入過
程結(jié)束。兩個(gè)狀態(tài)寄存器的端口地址分別是0024和0036,與其相應(yīng)的數(shù)據(jù)輸入寄存器的端
口則為0026和0038,輸入字符分別存入首地址為BUFF1和BUFF2的存儲區(qū)中。
答案:
movsi,0
movdi,0
testl2:inal,0024h
testal,08
jnzexit
inal,0036h
testal,08
jnzexit
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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āng)鎮(zhèn)年度基層民生工作總結(jié)及工作思路
- 建筑施工工地合同范例
- 上海汽車維修合同范例
- 印刷加工轉(zhuǎn)讓合同范例
- 律師寫借款合同范例
- 委托簽合同范例格式
- 工程完工欠款合同范例
- 儲煤庫租賃合同模板
- 廣州倉儲配送合同范例
- 房產(chǎn)代建合同范例
- 當(dāng)代社會政策分析 課件 第十一章 殘疾人社會政策
- 2023年人教版中考物理專題復(fù)習(xí)-九年級全冊簡答題專題
- 家政公司未來發(fā)展計(jì)劃方案
- ISO28000:2022供應(yīng)鏈安全管理體系
- 屋頂光伏發(fā)電應(yīng)急預(yù)案
- 當(dāng)代藝術(shù)與傳統(tǒng)文化的交流與融合
- 《配電網(wǎng)保護(hù)分級配置及整定技術(shù)規(guī)范》
- 企業(yè)檔案管理辦法培訓(xùn)
- 《室內(nèi)設(shè)計(jì)基礎(chǔ)》課件
- 《戲劇基本常識》課件
- 侮辱罪的立案標(biāo)準(zhǔn)
評論
0/150
提交評論