微機原理習(xí)題解答_第1頁
微機原理習(xí)題解答_第2頁
微機原理習(xí)題解答_第3頁
微機原理習(xí)題解答_第4頁
微機原理習(xí)題解答_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第1章 習(xí)題和解答15.將下列十進制數(shù)分別轉(zhuǎn)化為二進制數(shù)、十六進制數(shù)和BCD碼。(1)15.32=(0000 1111.0101 0001)2=(0F.51)16=(0001 0101.0011 0010)BCD(2)325.16=(0001 0100 0101.0010 1000)2=(145.28)16=(0011 0010 0101.0001 0110)BCD(3)68.31=(0100 0100.0100 1111)2=(44.4F)16=(0110 1000.0011 0001)BCD(4)214.126=(1101 0110.0010 0000)2=(0D6.20)16=(0010

2、 0001 0100.0001 0010 0110)BCD16.將下列二進制數(shù)分別轉(zhuǎn)化為十進制數(shù)和十六進制數(shù)。(1)10110101= 181=0B5H(2)11001011= 203=0CBH(3)10101.1001= 21.5625=15.9 H(4) 101101.0101= 45.3125=2D.5H17.將下列十六進制數(shù)分別轉(zhuǎn)化為二進制數(shù)、十進制數(shù)。(1)FAH=1111 1010B=250(2)12B8H=0001 0010 1011 1000B=4792(3)5A8.62H=0101 1010 1000.0110 0010B=1448.3828125(4)2DF.2H=0010

3、 1101 1111.0010B=735.12518.若X-107,Y+74按8位二進制可寫出:。X補95H ,Y補=4AH , X +Y補=0DFH,X-Y補=4BH。19.X34AH,Y8CH。問:有三位和兩位十六進制數(shù)X和Y,(1)若X,Y是純數(shù)(無符號數(shù)),則:X+Y3D6H;X-Y2BEH。(2)若X,Y是有符號數(shù),則:X+Y2D6 H;X-Y=3BEH。20.已知X85,Y76(均為十進制數(shù)),求-85補,-76補。并利用補碼的加、減法運算規(guī)則計算X-Y補,-X+Y補,-X-Y補。結(jié)果的各機器數(shù)及其真值請用十六進制表示,并由運算過程中的標志位OF判斷結(jié)果是否溢出。 答:X補=85補

4、=55H,Y補=76補=4CH , -X補=-85補=0ABH, -Y補=-76補=0B4HX-Y補=X補+-Y補=55H+B4H=09H, OF=0-X+Y補=-X補+Y補=ABH+4CH=0F7H, OF=0-X-Y補=-X補+-Y補=ABH+B4H=5FH, OF=121.(1) 設(shè)X補10101010B,則1/2X補=1/2X補=11010101B(2) 設(shè)X補11010100B,則-1/4X補=1/4X補補=11110101補=00001011B第2章 習(xí)題和解答1. 8086是多少位的微處理器?為什么? 答:8086是高性能的第三代微處理器,是Intel系列的16位微處理器。2.

5、EU與BIU各自的功能是什么?如何協(xié)同工作?答:EU其主要功能是執(zhí)行命令。BIU其主要功能是負責(zé)完成CPU與存儲器或I/O設(shè)備之間的數(shù)據(jù)傳送??偩€接口部件BIU和執(zhí)行部件EU并不是同步工作的, 兩者的動作管理遵循如下原則:每當8086的指令隊列中有2個空字節(jié),BIU就會自動把指令取到指令隊列中。 而同時EU從指令隊列取出一條指令,并用幾個時鐘周期去分析、執(zhí)行指令。 當指令隊列已滿,而且EU對BIU又無總線訪問請求時,BIU便進入空閑狀態(tài)。3. 8086/8088微處理器內(nèi)部有那些寄存器,它們的主要作用是什么?答:8086CPU內(nèi)有14個16位的寄存器。其中有4個16位通用寄存器AX、BX、CX

6、、DX,2個16位指針寄存器SP、BP,2個16位變址寄存器SI、DI,4個16位段寄存器CS、DS、SS、ES,1個16位指令指針寄存器IP及1個16位標志寄存器FLAGS。寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數(shù)據(jù)和位址。4. 8086對存儲器的管理為什么采用分段的辦法?答:8086 CPU有20位地址總線,它可尋址的存儲空間為1MB。而8086指令給出的地址編碼只有16位,指令指針和變址寄存器也都是16位的,所以CPU不能直接尋址1 MB空間,為此采用分段管理。5. 在8086中,邏輯地址、偏移地址、物理地址分別指的是什么?具體說明。答:邏輯地址=物理地址:偏移地址;偏

7、移地址=相對于段起始地址的距離; 物理地址=段地址*10H+偏移地址6. 給定一個存放數(shù)據(jù)的內(nèi)存單元的偏移地址是20C0H,(DS)=0C00EH,求出該內(nèi)存單元的物理地址。答: 物理地址=段地址*10H+偏移地址=0C00E0H+20C0H=0C21A0H7. 8086/8088為什么采用地址/數(shù)據(jù)引線復(fù)用技術(shù)?答:8086/8088 CPU具有40條引腳,采用分時復(fù)用地址數(shù)據(jù)總線,從而使8086/8088 CPU用40條引腳實現(xiàn)20位地址、16位數(shù)據(jù)、控制信號及狀態(tài)信號的傳輸。8. 8086與8088的主要區(qū)別是什么?答:8086有16位數(shù)據(jù)線,8088有8位數(shù)據(jù)線。9. 怎樣確定8086

8、的最大或最小工作模式?答:8088/8086CPU的引腳固定接+5V時,CPU處于最小模式下, 引腳固定接地時,CPU處于最大模式下。10. 8086被復(fù)位以后,有關(guān)寄存器的狀態(tài)是什么?微處理器從何處開始執(zhí)行程序?答:復(fù)位信號輸入之后,CPU結(jié)束當前操作,并對處理器的標志寄存器、IP、DS、SS、ES寄存器及指令隊列進行清零操作,而將CS設(shè)置為0FFFFH。11. 8086基本總線周期是如何組成的?各狀態(tài)中完成什么基本操作?答:一個基本的總線周期由4個T狀態(tài)組成,我們分別稱為T1-T44個狀態(tài),在每個T狀態(tài)下,CPU完成不同的動作。T1狀態(tài):根據(jù)IO/M確定對存貯器或I/O操作,20位地址A0

9、A19信號有效,地址鎖存信號ALE有效,給出DT/R信號控制8286數(shù)據(jù)傳輸方向。T2狀態(tài):高四位地址/狀態(tài)線送出狀態(tài)信息S3S6,低16位地址/數(shù)據(jù)線浮空,為下面?zhèn)魉蛿?shù)據(jù)準備;WR或RD有效,表示要對存貯器/I/O端口進行讀或?qū)?;有效,使得總線收發(fā)器(驅(qū)動器)可以傳輸數(shù)據(jù)。T3狀態(tài):從存貯器或者I/O端口讀出的數(shù)據(jù)送上數(shù)據(jù)總線(通過)。Tw狀態(tài):若存貯器或外設(shè)速度較慢,不能及時送上數(shù)據(jù)的話,則通過READY線通知CPU,CPU在的前沿(即結(jié)束末的下降沿)檢測READY,若發(fā)現(xiàn)READY0,則在結(jié)束后自動插入1個或幾個,并在每個的前沿處檢測READY,等到READY變高后,則自動脫離進入。T4

10、狀態(tài):在與(或)的交界處(下降沿),采集數(shù)據(jù),使各控制及狀態(tài)線進入無效。13. 8086中斷分哪兩類?8086可處理多少種中斷?答:中斷共分為兩類:硬件中斷和軟件中斷,8086可處理256種中斷。14. 8086可屏蔽中斷請求輸入線是什么?“可屏蔽”的涵義是什么?答:硬件中斷又可分為兩類:可屏蔽中斷和不可屏蔽中斷。不可屏蔽中斷:由NMI引腳引入,它不受中斷允許標志IF的影響,每個系統(tǒng)中僅允許有一個,都是用來處理緊急情況的,如掉電處理。這種中斷一旦發(fā)生,系統(tǒng)會立即響應(yīng);可屏蔽中斷:由INTR引腳引入,它受中斷允許標志IF的影響,也就是說,只有當IF1時,可屏蔽中斷才能進入,反之則不允許進入。15

11、. 中斷向量表的功能是什么?已知中斷類型碼分別是84H和0FAH,它們的中斷向量應(yīng)放在中斷向量表的什么位置?答:中斷向量表存放的是各中斷程序的入口地址即16位偏移地址和16位段地址,只要給出中斷類型碼,可以算出中斷程序在中斷向量表的什么位置:中斷向量表地址=中斷類型碼*4 中斷向量表地址1=84H*4=210H中斷向量表地址2=0FAH*4=3E8H第3章 習(xí)題和解答1. 簡要分析8086的指令格式由哪些部分組成,什么是操作碼?什么是操作數(shù)?尋址和尋址方式的含義是什么?8086指令系統(tǒng)有哪些尋址方式?答:指令由操作碼和操作數(shù)兩部分組成,操作碼表示計算機執(zhí)行某種指令功能,操作數(shù)表示操作中所需要的

12、數(shù)據(jù)或者數(shù)據(jù)所在存儲單元的地址。尋址方式是尋找操作數(shù)或操作數(shù)地址的方式。8086提供了七種尋址方式:立即尋址、 寄存器尋址、直接尋址、寄存器間接尋址、 相對寄存器尋址、基址變址尋址和相對基址變址尋址方式。2. 設(shè)(DS)=2000H,(ES)= 2100H,(SS)= 1500H,(SI)= 00A0H,(BX)= 0100H,(BP)= 0010H,數(shù)據(jù)變量VAL的偏移地址為0050H,請指出下列指令的源操作數(shù)字段是什么尋址方式?它的物理地址是多少?(1) MOV AX,21H 立即尋址 物理地址無(2) MOV AX,BX 寄存器尋址 物理地址無(3) MOV AX,1000H 直接尋址

13、物理地址=2000H*10H+1000H=21000H(4) MOV AX,VAL 直接尋址 物理地址=2000H*10H+0050H=20050H(5) MOV AX,BX 寄存器間接尋址 物理地址=2000H*10H+0100H=20100H(6) MOV AX,ES:BX 寄存器間接尋址 物理地址=2100H*10H+0100H=21100H(7) MOV AX,BP 寄存器間接尋址 物理地址=1500H*10H+0010H=15010H(8) MOV AX,SI 寄存器間接尋址 物理地址=2000H*10H+00A0H=200A0H(9) MOV AX,BX+10H 相對寄存器尋址 物

14、理地址=2000H*10H+0100H+10H=20110H(10) MOV AX,VALBX 相對寄存器尋址 物理地址=2000H*10H+0100H+50H=20150H(11) MOV AX,BXSI 基址變址尋址 物理地址=2000H*10H+0100H+A0H=201A0H(12) MOV AX,VALBXSI 相對基址變址尋址 物理地址=2000H*10H+0100H+A0H+50H=201F0H3. 給定寄存器及存儲單元的內(nèi)容為:(DS) = 2000H,(BX) = 0100H,(SI) = 0002H,(20100) =32H,(20101)=51H,(20102) =26H

15、,(20103)= 83H,(21200)=1AH,(21201)=B6H,(21202)=D1H,(21203)=29H。試說明下列各條指令執(zhí)行完后,AX寄存器中保存的內(nèi)容是什么。32H51H26H83H1AHB6HD1H29H20100H20101H20102H20103H21200H21201H21202H21203H(1) MOV AX,1200H 立即尋址 AX=1200H(2) MOV AX,BX 寄存器尋址 AX=0100H(3) MOV AX,1200H 直接尋址 物理地址=2000H*10H+1200H=21200H AX=0B61AH(4) MOV AX,BX 寄存器間接尋

16、址 物理地址=2000H*10H+0100H=20100H AX=5132H(5) MOV AX,1100HBX 相對寄存器尋址 物理地址=2000H*10H+0100H+1100H=21200H AX=0B61AH(6) MOV AX,BXSI 基址變址尋址 物理地址=2000H*10H+0100H+02H=20102H AX=8326H4. 試說明指令MOV BX,10HBX與指令LEA BX,10HBX的區(qū)別 答:MOV BX,10HBX BX=物理地址為(DS*10H+BX+10H)2字節(jié)單元的內(nèi)容LEA BX,10HBX BX= BX+10H(地址)5. 假設(shè)(DS)=3000H,(

17、CS)=1000H,(IP)=1500H,(BX)=1000H,位移量大DATA=50H (31000H)=1250H,(31050H)=2400H,(31052H)=6000H。確定下列轉(zhuǎn)移指令的轉(zhuǎn)移地址(1) JMP 2500H IP =2500H CS=1000H CS段指令物理地址=1000H*10H+2500H=12500H(2) JMP BX IP=BX=1000H CS=1000H CS段指令物理地址=1000H*10H+1000H=11000H (3) JMP WORD PTRBX DS段物理地址=3000H*10H+1000H=31000H IP=(31000H)=1250H

18、 CS=1000H: CS段指令物理地址=1000H*10H+1250H= 11250H (4) JMP DWORD PTRBX+DATA DS段物理地址=3000H*10H+1000H+50H=31050H IP=(31050H)=2400H CS=(31052H)=6000H CS段指令物理地址=6000H*10H+2400H=62400H6. 設(shè)堆棧指針SP的初值為2500H, (AX)=1234H,(BX)=5678H。執(zhí)行指令PUSH AX后,(SP)=?,再執(zhí)行指令PUSH BX及POP AX之后,(SP)=? (AX)=? (BX)=? PUSH AX SP=SP-2=2500H

19、-2=24FEHPUSH BX SP=SP-2=24FEH-2=24FCHPOP AX SP=SP+2=24FCH+2=24FEH AX=5678H BX=5678H7. 分析下列指令的正誤,對于錯誤的指令要說明原因并加以改正。(1) MOV AH,BX 錯 數(shù)據(jù)結(jié)構(gòu)不同 MOV AX,BX或 MOV AH,BL(2) MOV BX,SI 錯 二存儲單元間不允許直接傳送數(shù)據(jù) MOV AX,SI MOV BX,AX(3) MOV AX,SIDI 錯 源區(qū)都為變址寄存器 MOV AX,BXDI 或MOV AX,BXSI(4) MOV MYDATBXSI,ES:AX 錯 段前綴應(yīng)指向存儲單元MOV

20、ES:MYDATBXSI,AX(5) MOV BYTE PTRBX,1000 錯 數(shù)據(jù)結(jié)構(gòu)不同 MOV BYTE PTRBX,100 (6) MOV BX,OFFSET MAYDATSI 錯 MAYDAT為符號地址 MOV BX,OFFSET MAYDAT(7) MOV CS,AX 錯 不允許給CS賦值 MOV DS,AX(8) MOV DS,BP 錯 賦值方式不對 MOV AX,BP MOV DS,AX8. 設(shè)VAR1、VAR2為字變量,LAB為標號,分析下列指令的錯誤之處并加以改正。(1) ADD VAR1,VAR2 錯 VAR1、VAR2為字變量(代表2個存儲單元地址) MOV AX,

21、VAR2 ADD VAR1,AX(2) MOV AL,VAR2 錯 數(shù)據(jù)結(jié)構(gòu)不同 MOV AX,VAR2(3) SUB AL,VAR1 錯 數(shù)據(jù)結(jié)構(gòu)不同 SUB AX,VAR1(4) JMP LABSI 錯 LAB為標號地址 JMP LAB(5) JNZ VAR1 錯 VAR1為字變量不是標號地址 JNZ LAB 9. 已知 (AL)=6CH, (BL)=0A9H,執(zhí)行指令A(yù)DD AL,BL后,AF、CF、OF、PF、SF、和ZF的值各為多少?ADD AL,BL AL=6CH+ A9H=15H AF=1 CF=1 OF=0 PF=0 SF=0 ZF=010. 試判斷下列程序執(zhí)行后,(BX)=的

22、內(nèi)容。 MOV CL,5 MOV BX,01C9H BX=01C9HROL BX,1 BX=0392HRCR BX,CL BX=201CH 11. 寫出能夠完成下列操作的8086CPU指令。(1) 把4629H傳送給AX寄存器; MOV AX, 4629H(2) 從AX寄存器中減去3218H; SUB AX, 3218H(3) 把BUF的偏移地址送入BX中。 LEA BX, BUF12. 根據(jù)以下要求寫出相應(yīng)的匯編語言指令。 (1) 把BX和DX寄存器的內(nèi)容相加,結(jié)果存入DX寄存器中; ADD DX, BX(2) 用BX和SI的基址變址尋址方式,把存儲器中的一個字節(jié)與AL內(nèi)容相加,并保存在AL

23、寄存器中; ADD AL, BXSI(3) 用寄存器BX和位移量21B5H的變址尋址方式把存儲器中的一個字和(CX)相加,并把結(jié)果送回存儲器單元中; ADD WORD PTR BX+21B5H, CX(4) 用位移量2158H的直接尋址方式把存儲器中的一個字與數(shù)3160H相加,并把結(jié)果送回該存儲器中; ADD WORD PTR 2158H, 3160H(5) 把數(shù)25H與(AL)相加,結(jié)果送回寄存器AL中。 ADD AL, 25H13. 按下列要求寫出相應(yīng)的指令或程序段。(1) 使BL寄存器中的高、低四位互換; MOV CL, 4 ROL BL, CL(2)屏蔽AX寄存器中的b10和b5位;

24、AND AX, 1111 1011 1101 1111B (3)分別測試AX寄存器中b13和b2位是否為1。 TEST AX, 0000 0000 0000 0100B 測試AX寄存器中b2位是否為1TEST AX, 0010 0000 0000 0000B 測試AX寄存器中b13位是否為114. 執(zhí)行以下兩條指令后,標志寄存器FLAGS的六個狀態(tài)為各為何值? MOV AX,95C8HADD AX,8379H AX=1941H AF=1 CF=1 OF=1 PF=1 SF=0 ZF=0 15. 若(AL)=85H,(BL)=11H,在分別執(zhí)行指令MUL和IMUL后,其結(jié)果是多少?MUL BL

25、AL*BL=85H*11H=133*17=2261àAX=08D5H(無符號數(shù)相乘)IMUL BL AL*BL=-7BH*11H=(-123)*17= -2091àAX=0F7D5H(有符號數(shù)相乘)第4章 習(xí)題和解答1. 請分別用DB、DW、DD偽指令寫出在DATA開始的連續(xù)8個單元中依次存放數(shù)據(jù)11H、22H、33H、44H、55H、66H、77H、88H的數(shù)據(jù)定義語句。DATA DB 11H,22H,33H,44H,55H,66H,77H,88H10H20H30H?31H32H33H0000H0001H0002H0003H0004H0015H0016H0017H0018

26、H0019HDATA1STRINGDATA2DATA DW 1122H,3344H, 5566H,7788HDATA DD 11223344H, 55667788H2. 若程序的數(shù)據(jù)段定義如下,寫出各指令語句獨立執(zhí)行后的結(jié)果: DSEGSEGMENTDATA1DB10H,20H,30H ;3個字節(jié)(數(shù)據(jù)為10H,20H,30H),地址0000H-0002HDATA2DW10DUP(?) ;20個字節(jié)(數(shù)據(jù)全為未知數(shù)),地址0003H-0016HSTRINGDB123 ;3個字節(jié)(數(shù)據(jù)為31H,32H,33H),地址0017H-0019HDSEGENDS (1) MOV AL,DATA1 AL=

27、10H(2) MOV BX,OFFSET DATA2 BX=0003H(3) LEA SI,STRING SI=0017H ADD BX,SI BX=001AH MOV AL,SI+2 AL=33H 3. 試編寫求兩個無符號雙字長數(shù)之和的程序。兩數(shù)分別在MEM1和MEM2單元中,和放在SUM單元。78H96H34H82H32HA4H76H98H0000H0001H0002H0003H0004H0005H0006H0007HMEM1MEM2 DATAS SEGMENT MEM1 DD 82349678H MEM2 DD 9876A432H SUM DD ? DATAS ENDS CODES SE

28、GMENT ASSUME CS:CODES, DS:DATAS START: MOV AX, DATAS MOV DS, AX ;取定義的DS段的段地址àDSLEA BX,MEM1 ;取MEM1偏移地址BX=0000H LEA SI, MEM2 ;取MEM2偏移地址SI=0004H LEA DI, SUM ;取SUM偏移地址DI=0008H MOV AX, WORD PTR BX ;將0000H地址的內(nèi)容9678HàAX=9678H ADD AX, WORD PTR SI ;AX+0004H地址的內(nèi)容A432HàAX=3AAAH, 有進位CF=1 MOV WORD

29、 PTR DI, AX ;將AX的內(nèi)容à偏移地址DI=0008H字單元中 INC BX ;BX=BX+1=0001H INC BX ;BX=BX+1=0002H INC SI ;SI=SI+1=0005H INC SI ;SI=SI+1=0006H INC DI ;DI=DI+1=0009H INC DI ;DI=DI+1=000AH MOV AX,WORD PTR BX ;將0002H地址的內(nèi)容8234HàAX=8234H ADC AX,WORD PTR SI ;AX+0006H地址的內(nèi)容9876H+CFàAX=1AABH, 有進位CF=1 MOV WORD P

30、TR DI,AX ;將AX的內(nèi)容à偏移地址DI=000AH字單元中 MOV AH, 4CH INT 21H CODES ENDS END START 4. 試編寫程序,測試AL寄存器的第4位是否為0? TEST AL, 00001000B JZ LP 5. 編寫程序,將BUFFER中的一個8位二進制數(shù)轉(zhuǎn)換為ASCII碼,并按位數(shù)高低順序存放在ANSWER開始的內(nèi)存單元中。DATA SEGMENTBUFFER DB 3CHANSWER DB ?, ? DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA M

31、OV DS, AXMOV AL, BUFFER ;AL=3CHMOV CL, 4SHR AL, CL ;將AL內(nèi)容右移4位AL=03H,先取高四位3 CMP AL,9 ;JG LP1 ;若AL內(nèi)容大于9,說明AL內(nèi)容在A-F之間ADD AL,30H ;否則AL內(nèi)容小于9,將AL內(nèi)容轉(zhuǎn)換為ASCII碼即AL+30H->ALJMP LP2LP1:ADD AL,37H ;將AL內(nèi)容轉(zhuǎn)換為ASCII碼即AL+37H->AL(如0CH+37H=43H大寫C的ASCII碼)LP2:MOV ANSWER, AL ;將結(jié)果存入ANSWER第一個單元MOV AL, BUFFER ;AL=3CHAND

32、 AL, 0FH ; 取AL內(nèi)容低四位C 48H45H4CH4CH4FH21H20H47H4FH4FH44H20H4DH4FH52H4EH49H4EH47H21H?0000H0001H0002H0003H0004H0005H0006H0007H0008H0009H000AH000BH000CH000DH000EH000FH0010H0011H0012H0013H0014H0026HDATA1HELLO!GOODMORNING!DATA2CMP AL,9 ;JG LP3 ;若AL內(nèi)容大于9,說明AL內(nèi)容在A-F之間ADD AL,30H ;否則AL內(nèi)容小于9JMP LP4 ;將AL內(nèi)容轉(zhuǎn)換為ASC

33、II碼即AL+30H->ALLP3: ADD AL,37H ;將AL內(nèi)容轉(zhuǎn)換為ASCII碼LP4: MOV ANSWER+1, AL ;將結(jié)果存入ANSWER第二個單元 MOV AH, 4CH INT 21H CODE ENDS END START 6. 假設(shè)數(shù)據(jù)項定義如下:DATA1DBHELLO! GOOD MORNING!DATA2DB20DUP(?) 用串操作指令編寫程序段,使其分別完成以下功能:i.從左到右將DATA1中的字符串傳送到DATA2中;LEA SI, DATA1 ;SI=0000HLEA DI, DATA2 ;DI=0014HMOV CX, 20 ;20個字符REP

34、 MOVSB ; 將DATA1中的字符串傳送到DATA2中 ii.傳送完后,比較DATA1和DATA2中的內(nèi)容是否相同; LEA SI, DATA1LEA DI, DATA2MOV CX, 20 ;20個字符 REPE CMPSB ;CX不為零時,字符相同繼續(xù)比較,不同指令停止 JNZ STOP ;若不同-> STOP0AH00H14H00H1EH00H28H00H32H00H03H00H0000H0001H0002H0003H0004H0005H0006H0007H0008H0009H000AH000BHTABLEENTRY ;否則都相同iii.把DATA1中的第3和第4個字節(jié)裝入AX

35、; MOV AX, WORD PTR DATA1+2iv.將AX的內(nèi)容存入DATA2+5開始的字節(jié)單元中。 MOV WORD PTR DATA2+5, AX7. 執(zhí)行下列指令后,AX寄存器中的內(nèi)容是多少? TABLEDW 10,20,30,40,50 ENTRYDW 3 MOVBX,OFFSETTABLE ;BX=0000H(地址) ADDBX,ENTRY ;BX=0003HMOVAX,BX ;AX=1E00H8. 編寫程序段,將STRING1中的最后20個字符移到STRING2中(順序不變)。DATA SEGMENTSTRING1 DB “0123456789ABCDEFGHIJKLMNOP

36、QRSTUVWXYZ” ;36個字符ASCII碼STRING2 DB 20 DUP(?)L EQU STRING2- STRING1 ; STRING1的長度=36DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATASTART: MOV AX, DATA MOV DS, AX MOV ES, AXLEA SI, STRING1 ;取STRING1串的首地址=0000HLEA DI, STRING2 ;取STRING2串的首地址=0024H=36MOV CX, 20MOV AX, L ;AX=36=0024HSUB AX, CX ;AX=3

37、6-20=0024H-0014H=0010HADD SI, AX ;SI=SI+AX=0000H+0010H=0010HREP MOVSBMOV AH, 4CHINT 21H CODE ENDS END START 9. 假設(shè)一個48位數(shù)存放在DX:AX:BX中,試編寫程序段,將該48位數(shù)乘2。 CODE SEGMENT ASSUME CS:CODE START: MOV BX, 9ABCH ;設(shè)DX AX BX=1234 5678 9ABCH MOV AX, 5678H ;DX AX BX*2=將DX AX BX左移一次 MOV DX, 1234H SHL BX, 1 ;BX=BX*2=35

38、78H, CF=1 RCL AX, 1 ;AX=AX*2+CF=ACF1H, CF=0 RCL DX, 1 ;DX=DX*2+CF=2468H, CF=0 MOV AH, 4CHINT 21H CODE ENDS END START10. 試編寫程序,比較AX,BX,CX中帶符號數(shù)的大小,并將最大的數(shù)放在AX中。 CODE SEGMENT ASSUME CS:CODESTART: MOV AX, -5 MOV BX, 6 MOV CX, 10CMP AX, BX JGE LL1 XCHG AX, BXLL1: CMP AX, CX JGE LL2 XCHG AX, CXLL2: MOV AH,

39、 4CHINT 21H CODE ENDS END START11. 若接口03F8H的狀態(tài)的數(shù)據(jù)(b1)和(b3)同時為1,表示接口03F8H有準備好的8位數(shù)據(jù),當CPU將數(shù)據(jù)取走后,b1和b3就不再同時為1了。僅當又有數(shù)據(jù)準備好時才再同時為1。試編寫程序,從上述接口讀入20個數(shù)據(jù),并順序放在DATA開始的地址中。DATAS SEGMENT DATA DB 20 DUP(?)DATAS ENDSCODES SEGMENT ASSUME CS:CODES, DS:DATAS START: MOV AX, DATA MOV DS, AXMOV CX, 20 LEA BX, DATAMOV DX,

40、 03F8H LOP: IN AL, DX ;讀接口狀態(tài) NOT AL ;將AL內(nèi)容取反,若b1=1和b3=1取反后全為0 TEST AL, 00001010b ;判斷接口03F8H的狀態(tài)的數(shù)據(jù)(b1)和(b3)是否同時為1 JNZ LOP ;若相與的結(jié)果不為零表示接口沒有準備好,繼續(xù)讀狀態(tài) IN AL, DX ;若相與的結(jié)果為零表示接口準備好;讀接口數(shù)據(jù) MOV BX, AL ;存數(shù)據(jù) INC BXDEC CX JNZ LOP ;從接口讀入20個數(shù)據(jù) MOV AH, 4CH INT 21HCODES ENDS END START12. 畫圖說明下列語句分配的存儲空間及初始化的數(shù)據(jù)值(1) D

41、ATA1DBBYTE,12,12H,2 DUP(0,?,3)(2) DATA2DW2 DUP(0,1,2),?,-5,256H13. 請用子程序結(jié)構(gòu)編寫如下程序:從鍵盤輸入一個二位十進制的月份數(shù)(0112),然后顯示出響應(yīng)的英文縮寫名。0000H0001H0002H0000H0001H0002H?FFFB0256HDATA20000H0002H0004H0006H0008H000AH000CH000DH000EH0010H0012H0014H42H59H55H45H0CH12H00H?03H00H?H03HDATA10000H0001H0002H0003H0004H0005H0006H0007

42、H0008H0009H000AH000BH14. 給出下列等值語句:LPHAEQU100BETAEQU25GRAMM EQU 4試求出下列表達式的值:(1) ALPHA*100+BETA; MOV AL, LPHA MOV BL, 100 MOV CX, BETA MUL BL ;AL*BL->AX ADD AX, CX(2) (ALPHA + 4)*BETA-2 MOV AL, LPHA ADD AL, 4 MOV BL, BETA MUL BL ;AL*BL->AX10H34H07H09H42H00H42H00H48H45H4CH4CH4FHCDHABH00H00HDATA10

43、000H0001H0002H0003H0004H0005H0006H0007H0008H0009H000AH000BH000CH000DH000EH000FH0010HDATA2DATA3DATA5 SUB AX, 2(3) (BETA/3)MOD 5; MOV AX, BETA MOV BL, 3 DIV BL MOV AL, AL MOD 5(4) GRAMMOR3 MOV AL, GRAMM OR AL, 315.圖示以下數(shù)據(jù)段在存儲器中的存放形式。 DATASEGMENTDATA1 DB10H,34H,07H,09HDATA2 DW2DUP(42H)DATA3 DB HELLODATA

44、4EQU 12DATA5DD0ABCDHDATA ENDS 16. 閱讀下邊的程序段,試說明它實現(xiàn)的功能是什么? DATAS SEGMENTDATA1DBABCDEFGDATAS ENDSCODES SEGMENT ASSUMECS:CODES, DS:DATASSTART: MOV AX, DATAS MOV DS, AX MOV BX, OFFSETDATA1 ;BX取DATA1地址, BX=0000H MOV CX, 7NEXT: MOV AH, 2 ;DOS功能2 MOV AL, BX XCHG AL, DL ;將要顯示字符的ASCII送DL INC BX INT 21H LOOP NEXT ; 功能是顯示字符ABCDEFG MOV AH, 4CH INT 21HCODESENDS END START 17. 編寫一程序段,把BUFFER開始的100個字節(jié)的內(nèi)存區(qū)域初始化為55H、0AAH、55H、0AAH、55H、0AAH。 DATAS SEGMENT BUFFER DB 100 DUP(?) DATAS ENDS C

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論