欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      接口習題[共五篇]

      時間:2019-05-14 19:42:28下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《接口習題》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《接口習題》。

      第一篇:接口習題

      一.單選題

      1.JAVA語言的類間的繼承關系是()。A多重的B.單重的 C.線程的 D.不能繼承 2.以下關于JAVA語言繼承的說法正確的是()。A.Java中的類可以有多個直接父類 B.抽象類中不能有子類 C.JAVA中的接口支持多繼承 D.最終類可以作為其他類的父類

      3.下列選項中,用于定義接口的關鍵字是()。A)interface

      B)implements C)abstract D)class 4.下列選項中,用于實現(xiàn)接口的關鍵字是()。A)interfaceB)implementsC)abstract D)class 5.以下哪個接口的定義是正確的?

      A)interface B{

      void print(){ };

      }

      B)abstract interface B { void print();}

      C)abstract interface B extends A1,A2 { abstract void print(){ };D)interface B { void print();} 6.定義一個接口時,下列哪個關鍵字用不到?

      A)public B)extends C)interface D)class 7.在使用interface聲明一個接口時,只可以使用哪個修飾符修飾該接口。

      A)private B)protected C)private或者protected D)public 8.下列類頭定義中,錯誤的是 ? A)public x extends y B)public class x extends y C)class x extends y implements y1 D)class x 9.下列敘述正確的是? A)Java中允許多重繼承

      B)Java一個類只能實現(xiàn)一個接口 C)Java中只能單重繼承

      D)Java中一個類可以繼承多個抽象類

      10.現(xiàn)有類A和接口B,以下描述中表示類A實現(xiàn)接口B的語句是()。

      A.class A implements B B.class B implements A C.class A extends B D.class B extends A 二.填空題

      1.接口中的所有屬性均為__public____、___static___和__final_。2.接口中的方法均為_public__和_abstract_。

      3.JAVA語言中,定義一個類A繼承自父類B,并實現(xiàn)接口C的類頭是___class A extends B implements C_______。

      4.下面是定義一個接口ITF的程序,完成程序填空。public ___interface____ ITF { public static final double PI=Math.PI;public abstract double area(double a, double b)

      } 5.定義一個接口CanSwim,類Swimmer實現(xiàn)接口CanSwim,完成程序填空。

      publicinterfaceCanSwim { void swim();} class Swimmer implementsCanSwim {

      } 三.編程題 public void swim(){ } 1.編寫程序模擬“挑戰(zhàn)杯”演講大賽,共有10個評委打分,分數(shù)為1到10之間的隨機數(shù),將10個分數(shù)存放在int類型數(shù)組中,編程利用for循環(huán)實現(xiàn)計算歌手的最后得分。

      2.利用接口繼承完成對生物、動物、人三個接口的定義。其中生物接口定義呼吸抽象方法;動物接口除具備生物接口特征之外,還定義了吃飯和睡覺兩個抽象方法;人接口除具備動物接口特征外,還定義了思維和學習兩個抽象方法。定義一個學生類實現(xiàn)上述人接口。

      第二篇:微機原理與接口技術習題答案10章

      第10章 定時/計數(shù)器8253應用設計

      1.試分析 8255A方式0、方式1和方式2的主要區(qū)別,并分別說明它們適合于什么應用場合。

      答:方式0是基本的輸入/輸出,端口A、B、C都可以作為輸入輸出端口。適用于CPU與非智能I/O設備的數(shù)據(jù)傳輸;

      方式1是有聯(lián)絡信號的輸入/輸出,端口A、B都可以設定成該方式,此時三個端口的信號線分成了A、B兩組,PC7~PC4用作A組的聯(lián)絡信號,PC3~PC0用作B組的聯(lián)絡信號。適用于高速CPU與低速I/O設備的數(shù)據(jù)傳輸;

      方式2是雙向傳輸,只有A組端口可以設定成該方式,PC6~PC7用作輸出的聯(lián)絡信號,PC4~PC5用作輸入的聯(lián)絡信號,PC3用作中斷請求信號。適用于雙機之間數(shù)據(jù)的并行傳送。

      2.8255A的A組設置成方式1輸入,與CPU之間采用中斷方式聯(lián)絡,則產(chǎn)生中斷請求信號INTRA的條件是 STBA=

      ,IBFA=

      ,INTEA=。

      3.如果8255A的端口地址為300H~303H,A組和B組均為方式0,端口A為輸出,端口B為輸入,PC3~PC0為輸入,PC7~PC4為輸出,寫出8255A的初始化程序段;編程實現(xiàn)將從端口C低4位讀入的值從高4位送出。解: MOV DX,303H

      MOV AL,10000011B OUT DX,AL MOV DX,302H IN AL,DX MOV CL,4 SHL AL,CL OUT DX,AL 4.在實際應用中經(jīng)常需要檢測設備的狀態(tài),并進行指示。在8086最小方式系統(tǒng)下,有一片8255A,其分配的端口地址為8F00H~8F07H中的奇地址,外部設備產(chǎn)生的狀態(tài)有16個(K15~K0),要求采用4個發(fā)光二極管來指示開關量中“1”的個數(shù)。(1)畫出8255A - 0 - 的連接圖;(2)編寫程序段實現(xiàn)連續(xù)檢測并顯示。解:(1)

      8086D8~D158255D0~D7RDRDWRA2A1M/IOBHEA15A11A10A9A8A0A14A13A12A7A6A5A4A3PA0PA1......WRA1PA716位開關量(K15~K0)A0PB0PB1PB7......VCCCSPC3PC2PC1PC0

      (2)MOV DX,8F07H

      MOV AL,10010010B;端口A、B方式0輸入,端口C方式0輸出 OUT DX,AL NEXT:

      L2:

      MOV DX,8F03H;從端口B讀取高8位開關量 IN AL,DX XCHG AL,AH MOV DX,8F01H;從端口A讀取低8位開關量 IN AL,DX MOV BX,AX XOR AL,AL MOV CX,16 CLC SHL BX,1

      - 1 -

      L1:

      JNC L1 INC AL LOOP L2 MOV DX,8F05H;從端口C送出 OUT DX,AL JMP NEXT;進行下一次檢測

      5.利用IBM PC系統(tǒng)機的總線槽,開發(fā)由一片8255A構成的子系統(tǒng),8255A端口地址為260H~263H,編程實現(xiàn)產(chǎn)生如圖10.20所示的8個信號(各個信號的節(jié)拍不必嚴格相等)。

      Y0Y1Y7?

      圖10.20 要求產(chǎn)生的信號波形

      解:8355A與IBM PC機總線的連接框圖如下:

      可將8255A的端口A作為要產(chǎn)生的信號的輸出端口,設定為方式0輸出,端口B和端口C不做使用,均設定為方式0輸出。程序段如下:

      MOV

      DX,263H

      ;設定8255A的工作方式

      - 2 -

      MOV

      AL,10000000B

      OUT

      DX,AL

      MOV

      DX,260H

      ;產(chǎn)生指定信號

      XOR

      AL,AL

      OUT

      DX,AL REP:

      MOV

      AL,80H

      MOV

      CX,7 REP1:

      OUT

      DX,AL

      SAR

      AL,1

      LOOP REP1

      MOV

      CX,8 REP2:

      SHL

      AL,1

      OUT

      DX,AL

      LOOP REP2

      JMP

      REP

      6.在實際應用中,經(jīng)常會遇到要求輸入多個數(shù)據(jù)量,這時需要用到多路開關,如圖10.21表示八選一的邏輯框圖及其真值表?,F(xiàn)有8組16位開關量數(shù)據(jù)(無符號數(shù)),要求通過一片8255A(端口地址為260H~263H)分時輸入到CPU(8088最小方式系統(tǒng))中,并找出它們中的最大值,并通過4個發(fā)光二極管指示其序號(燈亮表示“1”)。畫出8255A的連接圖,并編程實現(xiàn)。

      解:由于開關量是16為數(shù)據(jù),故可以將8255A的PA端與PB端設定為方式0,分別讀取開關量的低八位和高八位,以PC低三位端口的控制八選一電路的輸出依次從X0到X7,- 3 -

      八選一x0x1x2x3x4x5x6x7ys0s1s2s2s1s00 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1yx0x1x2x3x4x5x6x7圖10.21 八選一邏輯電路使用PC端口的高八位輸出最大開關量的序號(該序號為1~8),控制發(fā)光二極管的亮滅以碼指示序號。連接圖如下:

      程序段如下:

      MOV DX,263H

      MOV AL,10011010B;設定工作方式,PA,PB均工作于方式0,PA、PB為輸入,PC為輸出

      OUT

      DX,AL

      MOV

      CX,8

      XOR

      BX,BX

      MOV

      SI,0

      ;SI表示輸入開關量的序號 ST1:

      MOV

      DX,262H

      OUT

      DX,SI

      MOV

      DX,260H

      ;將開關量數(shù)據(jù)的低八位寫入AL

      IN

      AL,DX

      MOV

      DX,261H

      ;將開關量數(shù)據(jù)的高八位寫入AH

      IN

      AH,DX

      - 4 -

      CMP

      BX,AX

      JA

      NEXT

      MOV

      BX,AX

      ;將當前最大值保存在BX中

      INC

      SI

      PUSH

      SI

      ;將當前最大值的序號壓棧 NEXT:

      INC

      SI

      LOOP

      ST1

      POP

      SI

      XOR

      AX,AX

      MOV

      AX,SI

      MOV

      CL,4

      ROL

      AL,CL

      MOV

      DX,262H

      OUT

      DX,AL

      ;最大值的序號出棧

      ;將最大值的序號(4位)移至AL的高四位 的高四位輸出最大值序號 - 5 -

      ;PC

      第三篇:微機原理與接口技術習題答案2

      第2章 8086 CPU結構與功能

      1.微處理器內部結構由哪幾部分組成?闡述各部分的主要功能。解:微處理器內部結構由四部分組成:

      (1)算術邏輯運算單元ALU:完成所有的運算操作;

      (2)工作寄存器:暫存尋址信息和計算過程中的中間結果;

      (3)控制器:完成指令的讀入、寄存和譯碼,并產(chǎn)生控制信號序列使ALU完成指定操作;

      (4)I/O控制邏輯:處理I/O操作。

      2.微處理器級總線有哪幾類?各類總線有什么作用? 解:微處理器級總線有三類:

      (1)數(shù)據(jù)總線:傳送信息;

      (2)地址總線:傳送地址碼;

      (3)控制總線 傳送控制信號。

      3.為什么地址總線是單向的,而數(shù)據(jù)總線是雙向的?

      解:地址碼只能由CPU生成。而數(shù)據(jù)需要在CPU和存儲器之間傳輸。4.8086/8088微處理器內部有哪些寄存器?其主要作用是什么?

      解:8086CPU內部有14個16位寄存器,其中8個通用寄存器(4數(shù)據(jù)寄存器AX、BX、CX、DX,4地址指針/變址寄存器SI、DI、SP、BP),4個段寄存器(CS、DS、ES、SS),2個控制寄存器(指令指針I(yè)P,微處理器狀態(tài)字PSW)。

      應該注意的是:可以在指令中用作為地址指針的寄存器有:SI、DI、BP和BX;在微處理器狀態(tài)字PSW中,一共設定了9個標志位,其中6個標志位用于反映ALU前一次操作的結果狀態(tài)(CF,PF,AF,ZF,SF,OF),另3個標志位用于控制CPU操作(DF,IF,TF)。

      5.如果某微處理器有20條地址總線和16條數(shù)據(jù)總線:

      (1)假定存儲器地址空間與I/O地址空間是分開的,則存儲器地址空間有多大?

      (2)數(shù)據(jù)總線上傳送的有符號整數(shù)的范圍有多大? 解:(1)存儲器地址空間為:220?1MB

      1(2)有符號數(shù)范圍為: ?2~2?1,即 -32768~32767 6.將十六進制數(shù)62A0H與下列各數(shù)相加,求出其結果及標志位CF、AF、SF、ZF、OF

      15和PF的值:

      (1)

      1234H;(2)

      4321H;(3)

      CFA0H;(4)

      9D60H 解:(1)

      74D4H

      CF=0 AF=0 SF=0 ZF=0 OF=0 PF=1

      (2)

      A5C1H CF=0 AF=0 SF=1 ZF=0 OF=1 PF=0

      (3)

      3240H

      CF=1 AF=0 SF=0 ZF=0 OF=0 PF=0

      (4)

      0000H

      CF=1 AF=0 SF=0 ZF=1 OF=0 PF=1 7.從下列各數(shù)中減去4AE0H,求出其結果及標志位CF、AF、SF、ZF、OF和PF的值:

      (1)1234H;(2)5D90H;(3)9090H;(4)EA04H 解:(1)

      C754H

      CF=1 AF=0 SF=1 ZF=0 OF=0 PF=0(2)

      12B0H

      CF=0 AF=0 SF=0 ZF=0 OF=0 PF=0(3)

      45B0H

      CF=0 AF=0 SF=0 ZF=0 OF=1 PF=0

      (4)

      9F24H

      CF=0 AF=0 SF=1 ZF=0 OF=0 PF=1 9.寫出下列存儲器地址的段地址、偏移地址和物理地址:(1)2134:10A0;(2)1FA0:0A1F;(3)267A:B876 解:物理地址=段地址*10H+偏移地址

      (1)段地址:2134H,偏移地址:10A0H,物理地址:223E0H(2)段地址:1FA0H,偏移地址:0A1FH,物理地址:2041FH(3)段地址:267AH,偏移地址:B876H,物理地址:32016H 10.給定一個數(shù)據(jù)的有效地址為2359H,并且(DS)=490BH,求該數(shù)據(jù)的物理地址。解:物理地址=段地址*10H+偏移地址

      物理地址=490BH +2359H = 4B409H 11.如果在一個程序段開始執(zhí)行之前,(CS)=0A7F0H,(IP)=2B40H,求該程序段的第一個字的物理地址。

      解:物理地址=段地址*10H+偏移地址

      物理地址=CS*10H+IP = AAA40H 12.IBM PC有哪些寄存器可用來指示存儲器的地址? 解:變址寄存器SI,DI,堆棧指針SP,BP,另外還有BX。

      第四篇:微機原理與接口技術習題答案4

      第4章 匯編語言程序設計

      1.已知在BUF的起始處保存有N個字符的ASCII碼,編寫匯編語言程序實現(xiàn),將這組字符串傳送到緩沖區(qū)BUFR中,并且使字符串的順序與原來的順序相反。解:BUF

      BUFR

      MOV CX, N LEA SI, BUF LEA DI, BUFR ADD DI,CX DEC DI L1: MOV AL,[SI] MOV [DI],AL INC SI DEC DI LOOP L1

      2.利用移位、傳送和相加指令實現(xiàn)AX的內容擴大10倍。

      解:將擴大后的結果放在DX:AX中,注意到10×AX=8×AX+2×AX。XOR SHL RCL DX,DX AX, 1 DX, 1 DB “BONJOUR_BELLE” DB 100 DUP(?)MOV BX,AX MOV SHL RCL SHL RCL CX,DX AX, 1 DX, 1 AX, 1 DX, 1 ADD ADC AX, BX DX, CX 3.在緩沖區(qū)VAR中連續(xù)存放著3個16位的無符號數(shù),編寫程序實現(xiàn)將其按遞增關系排列;如果VAR中保存的為有符號數(shù),則再編寫程序實現(xiàn)將其按遞減關系排列。解:VAR DW 1236,-432,3900 XOR SI,SI MOV AX,VAR[SI] CMP AX, VAR[SI+2] JAE L1 XCHG AX, VAR[SI+2] L1:

      CMP AX, VAR[SI+4] JAE L2 XCHG AX, VAR[SI+4] L2: MOV VAR[SI], AX MOV AX,VAR[SI+2] CMP AX, VAR[SI+4] JAE L3 XCHG AX, VAR[SI+4] L3:

      MOV VAR[SI+2], AX 4.編寫程序段實現(xiàn)將AL和BL中的每一位依次交叉,得到的16位字保存在DX中,例如(AL)=01100101B,(BL)=11011010B,則得到的(DX)=10110110 10011001B。解:利用移位指令完成。

      L1: SHR AL,1 RCR DX,1 XOR DX,DX MOV CX,8

      SHR BL,1 RCR DX,1 LOOP L1 5.在變量VAR1和VAR2中分別保存有兩個字節(jié)型的正整數(shù),編寫完整的匯編語言程序實現(xiàn):

      (1)當兩數(shù)中有一個奇數(shù)時,將奇數(shù)存入VAR1,偶數(shù)存入VAR2;

      (2)當兩數(shù)均為奇數(shù)時,兩個變量的內容不變;(3)當兩數(shù)均為偶數(shù)時,兩數(shù)縮小一倍后存入原處。

      解:當VAR1為奇數(shù)時,不論VAR2的奇偶性,這兩個單元的內容均不變;只有當VAR1為偶數(shù)時,如果VAR2為奇數(shù),則VAR1與VAR2內容交換;如果VAR2為偶數(shù),則兩數(shù)縮小一倍后存入原處。DATA SEGMENT

      VAR1

      DB 28

      VAR2 DB 36 DATA ENDS CODE SEGMENT

      ASSUME CS:CODE, DS:DATA, ES:DATA START: MOV AX, DATA MOV DS,AX MOV ES, AX MOV AL,VAR1 MOV BL,VAR2 TEST AL,1 JZ EVEN1 JMP OVER

      EVEN1:

      TEST BL,1

      JZ

      EVEN2

      MOV VAR1,BL MOV JMP VAR2,AL OVER EVEN2:

      SHR MOV SHR MOV AL,1 VAR1,AL BL,1 VAR2,BL

      OVER:

      MOV AH,4CH MOV AL,0 INT ENDS END START 21H CODE

      6.已知在字變量VAR1、VAR2和VAR3中保存有3個相同的代碼,但有一個錯碼,編寫程序段找出這個錯碼,并將它送到AX,其地址送SI;如果3個代碼都相同,則在AX中置-1標志。解:在數(shù)據(jù)段中定義:

      VAR1 DW 5A34H VAR2 DW 5A35H VAR3 DW 3A34H

      在代碼段中編寫程序段:

      MOV AX,-1 MOV BX,VAR1 CMP BX,VAR2 JZ

      L2 CMP BX,VAR3 JZ

      L1 MOV AX,BX LEA SI,VAR1 JMP OVER L1: MOV AX,VAR2 LEA SI,VAR2 JMP OVER L2: CMP BX,VAR3 JZ

      OVER MOV AX,VAR3 LEA SI,VAR3 OVER: 7.分析下列程序段的功能:

      MOV CL,04 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL 解:程序段完成DX:AX組成的32位無符號數(shù)左移4位,低位補零(也即除以16)。8.下列程序段執(zhí)行后,求BX寄存器的內容:

      MOV CL,3 MOV BX,0B7H ROL BX,1 ROR BX,CL 解:實際上完成BX內容循環(huán)右移2位,因此,BX寄存器的內容為C02DH。9.下列程序段執(zhí)行后,求BX寄存器的內容:

      MOV CL,5 MOV BX,7D5CH SHR BX,CL 解:完成BX內容邏輯右移5位,因此,BX寄存器的內容為03EAH。10.將BUFFERS中N個字按相反順序傳遞到BUFFERT中。解:

      LEA SI,BUFFERS LEA DI,BUFFERT MOV CX,N ADD DI,N ADD DI,N SUB DI,2 L1: MOV AX,[SI] MOV [DI],AX ADD SI,2 SUB DI,2 LOOP L1 11.數(shù)組ARRAY中存放有一組字型數(shù)據(jù),前兩個字節(jié)存放數(shù)據(jù)長度(5的倍數(shù))。為給這個數(shù)組中的數(shù)據(jù)進行加密保護,每5個數(shù)據(jù)取出一個數(shù)據(jù)進行加密處理:奇數(shù)位進行取反,偶數(shù)位不變,例如對數(shù)據(jù)0110 1100 1011 0001B加密后變成1100 0110 0001 1011B,編寫加密程序encrpytion 和解密程序 unencrpytion。

      解:約定從第一個數(shù)據(jù)開始,每5個數(shù)據(jù)為一組,每組中的第一個數(shù)據(jù)采取加密/解密處理。由于加密算法采用的是取反操作,解密算法也采用取反操作,因此解密和解密算法是同一個程序。

      ENCRPYTION PROC NEAR LEA SI,ARRAY

      XOR DX,DX

      MOV AX,[SI]

      MOV BX,5

      DIV BX

      MOV CX, AX

      ADD SI, 2 L1:

      MOV AX, [SI]

      XOR AX,0AAAAH

      MOV [SI], AX

      ADD SI,10

      LOOP L1

      RET ENCRPYTION ENDP

      13.設BUF中存放有N個無符號數(shù)(或有符號數(shù)),編程實現(xiàn)求它們的最小值(存入AX)和最大值(存入DX)。

      解:BUF存放有N個無符號數(shù)的程序如下: MOV CX,N-1 LEA SI,BUF MOV AX,[SI] MOV DX,AX ADD SI,2 L1: CMP AX,[SI] JBE NOCHG1 XCHG AX,[SI] NOCHG1: CMP DX,[SI] JAE NOCHG2 XCHG DX,[SI] NOCHG2: ADD SI,2 LOOP L1 如果BUF中存放的是有符號數(shù),則只需要將程序中的兩行內容修改:

      JBE NOCHG1 JAE NOCHG2

      改成:JLE NOCHG1 改成:JGE NOCHG2

      14.設BUFFER中存放有N個無符號(第1個字節(jié)存放緩沖區(qū)的長度),編程實現(xiàn)將其中的0元素抹去,并更新其長度。

      解:設BUFFER中存放的是字節(jié)型數(shù)據(jù)。采用雙指針方法:SI為讀指針,DI為寫指針,從低地址開始,內存中讀出一個字節(jié),如果不為0,則寫入內存;如果為0,則不進行寫操作。

      LEA SI, BUFFER XOR CX,CX MOV CL, [SI] INC SI MOV DI, SI XOR BH,BH XOR AL,AL L1: CMP [SI],AL JZ L2 MOV BL,[SI] MOV [DI],BL INC DI INC BH L2: INC SI LOOP L1 MOV BUFFER,BH 16.編寫一個子程序實現(xiàn)統(tǒng)計AL中1的個數(shù),然后檢測出字節(jié)型緩沖區(qū)BUF中0和1個數(shù)相等的元素個數(shù)。

      解:統(tǒng)計AL中1的個數(shù),只需將AL右移,移出的一位內容進行累加,子程序為: COUNTBYTE PROC NEAR

      PUSH AX

      PUSH CX

      MOV CX,8

      XOR BL,BL COU1:

      SHR AL,1

      ADC BL,0

      LOOP COU1

      POP CX

      POP AX

      RET COUNTBYTE ENDP 在此基礎上,可以檢測出字節(jié)型緩沖區(qū)BUF中0和1個數(shù)相等的元素個數(shù),即一個字節(jié)中有4個1。設BUF中有N個字節(jié)型數(shù)據(jù),結果保持在BH中。

      MOV CX,N LEA SI, BUF XOR BH,BH L1: MOV AL,[SI] CALL COUNTBYTE CMP BL,4 JNZ L2 INC BH L2: INC SI LOOP L1

      19.在緩沖區(qū)BUFFER中,第1個字節(jié)存放數(shù)組的長度(<256),從第2個字節(jié)開始存放字符的ASCII碼,編寫子程序完成在最高位給字符加上偶校驗。解:STACK SEGMENT STACK 'STACK'

      DW 100H DUP(?)

      TOP LABEL BYTE STACK ENDS

      DATA SEGMENT BUFFER DB 3

      DB 'ABC'

      DATA ENDS CODE SEGMENT

      ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START:

      MOV AX,STACK

      MOV SS,AX

      LEA SP,TOP

      MOV AX,DATA

      MOV DS,AX

      MOV ES,AX

      LEA DI,BUFFER

      XOR CX,CX

      MOV CL,[DI]

      INC DI

      CALL SETEVEN

      MOV AH,4CH

      MOV AL,0

      INT 21H SETEVEN

      PROC NEAR

      PUSH AX

      PUSH BX

      PUSH CX

      PUSH DI SETEVEN1:

      MOV AL,[DI]

      CALL COUNTBYTE

      ;加偶校驗子程序

      ;返回DOS;首字節(jié)為字符串長度;字符串

      AND BL,01H

      JZ SETEVEN2

      OR AL,80H

      MOV [DI],AL SETEVEN2:

      INC DI

      LOOP SETEVEN1

      POP DI

      POP CX

      POP BX

      POP AX

      RET SETEVEN

      ENDP COUNTBYTE PROC NEAR

      PUSH AX

      PUSH CX

      MOV CX,8

      XOR BL,BL COU1:

      SHR AL,1

      ADC BL,0

      LOOP COU1

      POP CX

      POP AX

      RET COUNTBYTE ENDP CODE ENDS

      END START 20.編寫程序完成求多位數(shù)(N個字)的絕對值。21.已知斐波那契數(shù)列的定義為:F1數(shù)列前n項的子程序。

      ?1,F2?1,Fi?Fi?1?Fi?2(i?3),編寫求該解:設獎斐波那契數(shù)列存放在字變量RESULT中。在數(shù)據(jù)段中定義

      RESULT DW 100H DUP(?)

      在代碼段中編寫子程序 FIBONACCI PROC NEAR

      XOR DI,DI

      MOV RESULT[DI],1

      ;前兩個數(shù)為1

      MOV RESULT[DI+2],1

      ADD DI,4

      MOV CX,N L1:

      MOV AX, RESULT[DI-4]

      ADD AX, RESULT[DI-2]

      MOV RESULT[DI],AX

      ADD DI,2

      LOOP L1

      RET FIBONACCI ENDP

      22.編寫程序實現(xiàn)循環(huán)顯示10條信息,保存每條信息的變量分別為INFOM1~INFORM10。解:在數(shù)據(jù)段中定義變量:

      TABLE DW INFORM1, INFORM2, INFORM3, INFORM4, INFORM5

      DW INFORM6, INFORM7, INFORM8, INFORM9, INFORM10 在代碼段中編寫程序段:

      MOV XOR MOV MOV CX,10 SI,SI DX,TABLE[SI] AH,9 L1:

      INT ADD CALL LOOP 21H SI,2 WAIT L1 這里,WAIT為延時子程序,用于在顯示信息之間的停頓。

      23.編寫程序實現(xiàn)將包含20個數(shù)據(jù)的數(shù)組ARRAY分成兩個數(shù)組:正數(shù)數(shù)組ARRAYP和負數(shù)數(shù)組ARRAYN,并分別將這兩個數(shù)組中數(shù)據(jù)的個數(shù)顯示出來。

      解:先編寫一個子程序DISPALD,完成以3位十進制數(shù)形式顯示出AL的內容。

      DISPALD PROC NEAR PUSH AX PUSH CX PUSH DX XOR AH,AH MOV CL,100 DIV CL PUSH AX MOV DL,30H ADD DL,AL MOV AH,2 INT 21H POP AX MOV AL,AH XOR AH,AH MOV CL,10 DIV CL PUSH AX MOV DL,30H ADD DL,AL MOV AH,2 INT 21H POP AX MOV DL,30H ADD DL,AH MOV AH,2 INT 21H POP DX POP CX POP AX RET DISPALD ENDP

      在此基礎上,根據(jù)題目要求,需要用到3個指針:SI指向源數(shù)組ARRAY,DI指向正數(shù)數(shù)組ARRAYP,BX指向負數(shù)數(shù)組ARRAYN。

      MOV XOR LEA LEA LEA MOV AND JS MOV INC INC JMP MOV INC INC INC CX,20 DX,DX SI,ARRAY DI,ARRAYP BX,ARRAYN AL,[SI] AL,AL L2 [DI],AL DI DL L3 [BX],AL BX DH SI L1:

      L2:

      L3:

      LOOP MOV CALL MOV CALL L1 AL,DL DISPALD AL,DH DISPALD 24.編寫程序實現(xiàn)求緩沖區(qū)BUFFER的100個字中的最小偶數(shù)(存入AX)。解:設BUFFER中存放的是有符號數(shù)。

      L1:

      L2: MOV CX,100 LEA SI,BUFFER MOV AX, 7FFFH AND WORD PTR [SI],1 JNZ L2 CMP [SI],AX JGE L2 MOV AX,[SI] ADD SI,2 LOOP L1

      225.編寫程序實現(xiàn)求級數(shù)1解:BL用于存放項數(shù)。

      ?22???n2??的前n項和剛大于2000的項數(shù)n。

      STACK SEGMENT STACK 'STACK'

      DW 100H DUP(?)TOP LABEL WORD STACK ENDS DATA SEGMENT

      DB 100H DUP(?)DATA ENDS CODE SEGMENT

      ASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK START:

      MOV AX,DATA

      MOV DS,AX

      MOV ES,AX

      MOV AX,STACK

      MOV SS,AX

      LEA SP,TOP

      MOV BL,1

      MOV CX,0 COUNT:

      MOV AL, BL

      MUL BL

      ADD CX,AX

      CMP CX,2000

      JA EXIT

      INC BL

      JMP COUNT EXIT:

      26.定義一條宏指令,實現(xiàn)將指定數(shù)據(jù)段的段地址傳送到段寄存器ES或DS的功能。解:

      27.定義一條宏指令,實現(xiàn)從鍵盤中輸入一個字符串(利用INT 21H的09號功能)。28.定義一條宏指令,實現(xiàn)在屏幕上輸出回車、換行。29.利用其它指令完成與下列指令一樣的功能:

      (1)REP MOVSB;

      (3)REP STOSB;

      解:設DF=0(1)

      L1: MOV AL,[SI]

      MOV ES:[DI],AL INC INC SI DI

      (2)REP LODSB;(4)REP SCASB。

      LOOP L1(2)

      L1: MOV AL,[SI] INC SI LOOP L1(3)

      L1: MOV ES:[DI],AL

      INC DI LOOP L1(4)

      L1: MOV AL,[SI]

      CMP AL,ES:[DI] INC INC SI DI LOOP L1 30.設在數(shù)據(jù)段中定義了:

      STR1 DB ‘ASSEMBLE LANGUAGE’ STR2 DB 20 DUP(?)利用字符串指令編寫程序段實現(xiàn):

      (1)從左到右將STR1中的字符串傳送到STR2;(2)從右到左將STR1中的字符串傳送到STR2;(3)將STR1中的第6個和第7個字節(jié)裝入DX;

      (4)掃描STR1字符串中有無空格,如有則將第一個空格符的地址傳送到SI。解: STR1中有17個字符(含一個空格),設DS和ES均指向STR1和STR2所在的段。(1)

      CLD MOV LEA LEA REP MOV LEA LEA CX,17 SI,STR1 DI,STR2 MOVSB CX,17 SI,STR1 DI,STR2(2)

      ADD DEC MOV MOV DEC INC LOOP LEA MOV MOV LEA MOV CMP JZ INC LOOP SI,CX SI AL,[SI] [DI],AL SI DI L1 SI,STR1 DX,[SI+6] CX,17 SI,STR1 AL,20H [SI], AL L2 SI L1 L1:

      (3)

      (4)

      L1:

      L2:

      31.設在數(shù)據(jù)段中定義了:

      STRING DB ‘Today is Sunday & July 16, 2000’

      編寫程序實現(xiàn)將STRING中的’&’用’/’代替。解:STRING中保存了30個字符。

      MOV LEA MOV CMP JNZ MOV INC LOOP CX,30 SI,STRING AL,’&’ [SI],AL L2 BYTE PTR [SI],’/’ SI L1 L1:

      L2:

      32.分析下列程序段完成的功能:

      MOV CX,100 LEA SI,F(xiàn)IRST LEA DI,SECOND REP MOVSB 解:將緩沖區(qū)FIRST中100個字節(jié)傳送到SECOND中。33.分析下列程序段:

      LEA DI,STRING MOV CX,200 CLD MOV AL,20H REPZ SCASB JNZ FOUND JMP NOT_FOUND 問:轉移到FOUND的條件。

      解:在緩沖區(qū)STRING中搜索非空格字符,如果有非空格則轉到FOUND,如果200個單元中都是空格,則轉到NOT_FOUND。

      34.設在數(shù)據(jù)段的變量OLDS和NEWS中保存有5個字節(jié)的字符串,如果OLDS字符串不同于NEWS字符串,則執(zhí)行NEW_LESS,否則順序執(zhí)行程序。解:設DS和ES均指向字符串OLDS和NEWS所在的段。CLD MOV

      35.編程實現(xiàn)將STRING字符串中的小寫字母變換成大寫字母。解:設STRING中的字符個數(shù)為N。

      LEA LEA REPZ JNZ CX,5 SI,OLDS DI,NEWS CMPSB NEW_LESS

      MOV LEA MOV AND INC CX,N SI,STRING AL,5FH [SI],AL SI L1:

      LOOP L1 36.設在數(shù)據(jù)段中定義了:

      STUDENT_NAME DB 30 DUP(?)STUDENT_ADDR DB 9 DUP(?)STUDENT_PRINT DB 50 DUP(?)編寫程序實現(xiàn):

      用空格符清除緩沖區(qū)STUDENT_PRINT; 在STUDENT_ADDR中查找第一個’_’字符; 在STUDENT_ADDR中查找最后一個’_’字符;

      如果STUDENT_NAME中全為空格符,則STUDENT_PRINT全存入’*’;

      將STUDENT_NAME傳送到STUDENT_PRINT的前30個字節(jié)中,將STUDENT_ADDR傳送到STUDENT_PRINT的后9個字節(jié)中。

      37.(上機題)編寫程序實現(xiàn),將緩沖區(qū)BUFFER中的100個字按遞增排序,并按下列格式順序顯示:

      數(shù)據(jù)1 <原序號> 數(shù)據(jù)2 <原序號> ??

      38.(上機題)按同余法產(chǎn)生一組隨機數(shù)N(1

      Total <總人數(shù)> A:

      <人數(shù)1> B:

      <人數(shù)2> C:

      <人數(shù)3> D:

      <人數(shù)4> E:

      <人數(shù)5> F:

      <人數(shù)6>

      39.(上機題)編寫程序實現(xiàn)下列5項功能,通過從鍵盤輸入1~5進行菜單式選擇:

      (1)按數(shù)字鍵“1”,完成將字符串中的小寫字母變換成大寫字母。用戶輸入由英文大小寫字母或數(shù)字0~9組成的字符串(以回車結束),變換后按下列格式在屏幕上顯示:

      <原字符串>例如:abcdgyt0092 <新字符串>

      ABCDGYT0092 按任一鍵重做;按Esc鍵返回主菜單。

      (2)按數(shù)字鍵“2”,完成在字符串中找最大值。用戶輸入由英文大小寫字母或數(shù)字

      0~9組成的字符串(以回車結束),找出最大值后按下列格式在屏幕上顯示:

      <原字符串>

      The maximum is <最大值>.

      按任一鍵重做;按Esc鍵返回主菜單。

      (3)按數(shù)字鍵“3”,完成輸入數(shù)據(jù)組的排序。用戶輸入一組十進制數(shù)值(小于255),然后變換成十六進制數(shù),并按遞增方式進行排序,按下列格式在屏幕上顯示:

      <原數(shù)值串>

      <新數(shù)值串> 按任一鍵重做;按Esc鍵返回主菜單。

      (4)按數(shù)字鍵“4”,完成時間的顯示。首先提示用戶對時,即改變系統(tǒng)的定時器

      HH:MM:SS(以冒號間隔,回車結束),然后在屏幕的右上角實時顯示出時

      間:HH:MM:SS。

      按任一鍵重新對時;按Esc鍵返回主菜單。

      (5)按數(shù)字鍵“5”,結束程序的運行,返回操作系統(tǒng)。解:

      ※主程序的編程思路: 此程序共5個功能,可采用跳轉表法來實現(xiàn)多路分支結構程序設計?,F(xiàn)將這5個程序段,各程序段的首地址分別標號為G1,G2,G3,G4,G5。將5個程序段的入口地址做成表TABLE放入數(shù)據(jù)段,程序根據(jù)給定的參數(shù)計算出欲轉入的程序段的首地址在TABLE中的位置后,取出該地址,跳轉至該程序段。

      首先,通過調用子程序MENU,設置顯示器,并輸出提示文檔。接著,讀取‘1’-‘5’之間的ASCII表示數(shù)。然后,通過跳轉表TABLE實現(xiàn)由輸入?yún)?shù)轉入相應的程序段。由于表中按“字”存放數(shù)據(jù),則每個數(shù)據(jù)的位移量是:0、2、4、6、8。對于輸入?yún)?shù)N,計算位移量的公式是N=(N-1)*2。

      當輸入‘1’時,跳轉到標號G1。調用子程序CHGLTR,完成將輸入字符串中的小寫字母變換成大寫字母。用戶按鍵,若為ESC,則轉到主程序段首調用MENU,否則,轉到標號G1;

      當輸入‘2’時,跳轉到標號G2。調用子程序MAXLTR,完成在輸入字符串中找最大值。用戶按鍵,若為ESC,則轉到主程序段首調用MENU,否則,轉到標號G2;

      當輸入‘3’時,跳轉到標號G3。調用子程序SORTNUM,完成輸入數(shù)據(jù)組的排序。用戶按鍵,若為ESC,則轉到主程序段首調用MENU,否則,轉到標號G3。

      當輸入‘4’時,跳轉到標號G4。調用子程序TIMCHK,完成時間的顯示。用戶按鍵,若為ESC,則轉到主程序段首調用MENU,否則,轉到標號G4。

      當輸入‘5’時,跳轉到標號G5。結束程序的運行,返回操作系統(tǒng)。其流程框圖見圖3-1。

      第五篇:微機原理與接口技術(第二版)習題答案

      第1章

      1.1 微處理器、微型計算機和微型計算機系統(tǒng)三者之間有什么不同?

      解:

      把CPU(運算器和控制器)用大規(guī)模集成電路技術做在一個芯片上,即為微

      處理器。微處理器加上一定數(shù)量的存儲器和外部設備(或外部設備的接口)構成了

      微型計算機。微型計算機與管理、維護計算機硬件以及支持應用的軟件相結合就形

      成了微型計算機系統(tǒng)。

      1.2 CPU在內部結構上由哪幾部分組成?CPU應該具備哪些主要功能? 解:

      CPU主要由起運算器作用的算術邏輯單元、起控制器作用的指令寄存器、指

      令譯碼器、可編程邏輯陣列和標志寄存器等一些寄存器組成。其主要功能是進行算

      術和邏輯運算以及控制計算機按照程序的規(guī)定自動運行。

      1.3微型計算機采用總線結構有什么優(yōu)點? 解:

      采用總線結構,擴大了數(shù)據(jù)傳送的靈活性、減少了連線。而且總線可以標準

      化,易于兼容和工業(yè)化生產(chǎn)。

      1.4數(shù)據(jù)總線和地址總線在結構上有什么不同之處?如果一個系統(tǒng)的數(shù)據(jù)和地址合用

      一套總線或者合用部分總線,那么要靠什么來區(qū)分地址和數(shù)據(jù)? 解:

      數(shù)據(jù)總線是雙向的(數(shù)據(jù)既可以讀也可以寫),而地址總線是單向的。

      8086CPU為了減少芯片的引腳數(shù)量,采用數(shù)據(jù)與地址線復用,既作數(shù)據(jù)總線也作為

      地址總線。它們主要靠信號的時序來區(qū)分。通常在讀寫數(shù)據(jù)時,總是先輸出地址

      (指定要讀或寫數(shù)據(jù)的單元),過一段時間再讀或寫數(shù)據(jù)。

      1.8在給定的模型中,寫出用累加器的辦法實現(xiàn)15×15的程序。

      DEC H

      JP

      NZ,LOOP

      HALT

      第 2章

      作業(yè) 答案

      2.1 IA-32結構微處理器直至Pentillm4,有哪幾種? 解:80386、30486、Pentium、Pentium Pro、PeruiumII、PentiumIII、Pentium4。

      2.6IA-32結構微處理器有哪幾種操作模式? 解:

      IA一32結構支持3種操作模式:保護模式、實地址模式和系統(tǒng)管理模式。操

      作模式確定哪些指令和結構特性是可以訪問的。

      2.8IA-32結構微處理器的地址空間如何形成?

      解:

      由段寄存器確定的段基地址與各種尋址方式確定的有效地址相加形成了線性地

      址。若末啟用分頁機制,線性地址即為物理地址;若啟用分頁機制,則它把線性地

      址轉為物理地址。

      2.15 8086微處理器的總線接口部件由哪幾部分組成? 解:

      8086微處理器中的總線接口單元(BIU)負責CPU與存儲器之間的信息傳

      送。具體地說,BIU既負責從內存的指定部分取出指令,送至指令隊列中排隊

      (8086的指令隊列有6個字節(jié),而8088的指令隊列只有4個字節(jié));也負責傳送執(zhí)

      行指令時所需的操作數(shù)。執(zhí)行單元(EU)負責執(zhí)行指令規(guī)定的操作。

      2.16段寄存器CS=120OH,指令指針寄存器IP=FFOOH,此時,指令的物理地址為

      多少? 解:

      指令的物理地址=12000H+FFOOH=21FOOH

      第3章 作 業(yè)答案

      3.1分別指出下列指令中的源操作數(shù)和目的操作數(shù)的尋址方式。

      (1)MOV SI, 30O

      (2)MOV CX, DATA[DI]

      (3)ADD AX, [BX][SI]

      (4)AND AX, CX

      (5)MOV[BP], AX

      (6)PUSHF

      解:

      (l)源操作數(shù)為立即尋址,目的操作數(shù)為寄存器尋址。

      (2)源操作數(shù)為變址寄存器加位移量尋址,目的操作數(shù)為寄存器尋址。

      (3)源操作數(shù)為基址加變址尋址,目的操作數(shù)為寄存器尋址。

      (4)源操作數(shù)和目的操作數(shù)都為寄存器尋址。

      (5)源操作數(shù)為寄存器尋址,目的操作數(shù)為寄存器間接尋址。

      (6)為堆棧操作。

      3.2試述指令MOVAX,2000H和MOV AX,DSz[2000H]的區(qū)別。

      解:前一條指令是立即尋址,即把立即數(shù)2000H傳送至寄存器AX。后一條指令

      是直接尋址,是把數(shù)據(jù)(DS)段中的地址為200OH單元的內容傳送至寄存器AX。

      3.3寫出以下指令中內存操作數(shù)的所在地址。

      (1)MOV AL, [BX+10]

      (2)MOV [BP+10], AX

      (3)INC BYTEPTR[SI十5]

      (4)MOV DL, ES:[BX+SI]

      (5)MOV BX,[BP+DI+2] 解:

      (1)數(shù)據(jù)段BX+10單元。

      (2)堆棧段BP+10單元。

      (3)數(shù)據(jù)段SI+5字節(jié)單元。

      (4)附加段(ES段)BX+SI單元。

      (5)堆棧段BP+DI+2單元。

      3.4判斷下列指令書寫是否正確。

      (1)MOV AL, BX

      (2)MOV AL, CL

      (3)INC [BX]

      (4)MOV 5, AL

      (5)MOV [BX],[SI]

      (6)M0V BL, OF5H

      (7)MOV DX, 2000H

      (8)POP CS

      (9)PUSH CS

      解:

      (l)不正確,AL與BX數(shù)據(jù)寬度不同。

      (2)正確。

      (3)不正確,因為不明確是增量字節(jié)還是字。

      (4)不正確,立即數(shù)不能作為目的操作數(shù)。

      (5)不正確,因為不明確要傳送的是字節(jié)還是字。

      (6)正確。

      (7)正確。

      (8)不正確,CS不能作為:pop指令的操作數(shù)。

      (9)不正確,CS不能作為PUSH指令的操作數(shù)。

      3.5設堆錢指針SP的初值為1000H,AX=2000H,BX=3000H,試問:

      (1)執(zhí)行指令PUSHAX后SP的值是多少?

      (2)再執(zhí)行PUSHBX及POPAX后,SP、AX和BX的值各是多少?

      解:

      (1)SP=OFFEH。

      (2)SP=OFFEH;AX=3000H,BX=3000H。

      3.6要想完成把[3000H]送[2000H]中,用指令:

      MOM[200OH],[300OH]

      是否正確?如果不正確,應該用什么方法實現(xiàn)?

      解:不正確。

      正確的方法是:

      MOV AL, [300OH]

      MOV [2000H],AL

      3.7假如想從200中減去AL中的內容,用SUB200,AL是否正確?如果不正確,應該

      用什么方法?

      解:不正確。

      正確的方法是:

      MOV BL, 200

      SUB BL,AL

      3.8試用兩種方法寫出從8OH端口讀入信息的指令。再用兩種方法寫出從4OH口輸

      出10OH的指令。

      解:

      (1)IN AL, 80H

      (2)MOV DX,8OH

      IN AL, DX

      (3)MOV,AL,lOOH

      OUT40H,AL

      4)MOV AL,10OH

      MOV DX,4OH

      OUT DX,AL

      3.9假如:AL=20H,BL=1OH,當執(zhí)行CMPAL,BL后,問:

      (1)AL、BL中的內容是兩個無符號數(shù),比較結果如何?影響哪兒個標志位?

      (2)AL、BL中的內容是兩個有符號數(shù),結果又如何,影響哪幾個標志位?

      解:

      (l)AL=2OH,BL=1OH,O=0,S=0,Z=0,A=0,P=0,C=0。

      (2)因為兩個都是符號正數(shù),其結果與(l)相同。

      3.10若要使AL×10,有哪幾種方法,試編寫出各自的程序段?

      解:

      (1)使用乘法指令:

      MOVBL,10

      MULBI,(2)使用移位指令:

      SHLAL,1

      MOVBL,AL

      SHLAL,2

      ADDAL,BL

      (3)使用加法指令:

      ADDAL,AL

      MOVBL,AL

      ADDAL,AL

      ADDAL,AL

      ADDAL,BL

      3.118086匯編語言指令的尋址方式有哪幾類?哪種尋址方式的指令執(zhí)行速度最快?

      解:尋址方式分為:立即數(shù)尋址方式、寄存器操作數(shù)尋址方式和存儲器操作數(shù)尋

      址方式。其中,寄存器操作數(shù)尋址方式的指令執(zhí)行速度最快。

      3.12在直接尋址方式中,一般只指出操作數(shù)的偏移地址,那么,段地址如何確定?如

      果要用某個段寄存器指出段地址,指令中應該如何表示?

      解:

      默認的數(shù)據(jù)訪問,操作數(shù)在DS段;堆棧操作在SS段;串操作源操作數(shù)(SI)在DS段, 目的操作數(shù)(DI)在ES段;用BP作為指針在SS段。如果要顯式地指定段地址,則在操

      作數(shù)中規(guī)定段寄存器。例如:

      MOVAX,ES:(BX+10H)

      3.13在寄存器間接尋址方式中,如果指令中沒有具體指明段寄存器,那么如何確定

      段地址?

      解:

      在寄存器間接尋址方式中,如果指令中沒有具體指明段寄存器,段地址是

      隱含約定的,也就是隱含地選擇段寄存器。如操作類型為指令,則指定代碼段寄

      存器CS,如操作類型為堆棧操作,則指定堆找段寄存器SS,…,如表3-1中所示。

      當需要超越約定時,通常用段替代前綴加冒號“:”來表示段超越,它允許程序設

      計者偏離任何約定的段。

      例如:

      MOV ES:〔BX],AX

      這時數(shù)據(jù)將從寄存器EAX傳送至附加段中由EBX尋址的存儲單元,而不是傳送

      到數(shù)據(jù)段中。

      3.14采用寄存器間接尋址方式時,BX、BP、SI、DI分別針對什么情況來使用?這4個

      寄存器組合間接尋址時,地址是怎樣計算的?請舉例說明。

      解: 在寄存器間接尋址方式下,BX和BP作為間址寄存器使用,而SI、DI作為

      變址寄存器使用。除BP間址默認的段為堆棧段,其他的都默認為數(shù)據(jù)段。它們

      都可以單獨使用,或加上偏移量或組合使用。如:

      [BX+n]

      LBP+n]

      [SI+n]

      [DI+n]

      [BX+SI+n]

      [BX+DI+n]

      [BP+SI+n]

      [BP+DI+n]

      3.15設DS=2100H,SS=5200H,BX=1400H,BP=6200H,說明下面兩條指令所進行的具體操作:

      MOVBYTEPTR[BP],200

      MOVWORDPTR[BX],2000

      解:前一條指令是把立即數(shù)(應是字節(jié))200,傳送至堆棧段(BP的默認段〉偏移

      量由BP規(guī)定的字節(jié)單元,地址為:52000H+620OH=58200H

      第二條指令是把立即數(shù).2000,傳送至數(shù)據(jù)段(BX的默認段)偏移量由BX規(guī)定的字單元,地址為:21000H+1400H=22400H。

      3.16使用堆錢操作指令時要注意什么問題?傳送指令和交換指令在涉及內存操作數(shù)

      時應該分別要注意什么問題?

      解:使用堆棧指令可以把內存單元作為一個操作數(shù)(從內存到內存)。但堆棧

      固定在堆棧段且只能由SP指向。且堆棧操作要修改堆核指針。MOV指令不能實

      現(xiàn)內存單元間的數(shù)據(jù)傳送。XCHG指令是交換,有一個操作數(shù)必須是寄存器。

      3.17下面這些指令中哪些是正確的?哪些是錯誤的?若是錯誤的,請說明原因。

      (1)XCHG CS, AX

      (2)MOV[BX], [1000]

      (3)XCHGBX, IP

      (4)PUSHCS

      (5)POP CS

      (6)IN BX, DX

      (7)MOVBYTE[BX],100O

      (8)MOVCS,[1000]

      解:

      (l)錯誤,CS不能交換。

      (2)錯誤,MOV指令不能在內存間傳送。

      (3)錯誤,IP不能交換。

      (4)錯誤,CS可以作為PUSH指令的操作數(shù)。

      (5)錯誤,CS可以作為POP指令的操作數(shù)。

      (6)錯誤,IN指令的目的操作數(shù)是累加器。

      (7)錯誤,目的操作數(shù)是字節(jié)單元。

      (8〉錯誤,CS不能作為MOV指令的目的操作數(shù)。

      3.18 以下是格雷碼的編碼表,O 0000 0001

      0011 0010 0110 0111 0101 0100 1100

      請用換碼指令和其他指令設計一個程序段,以實現(xiàn)由格雷碼向ASCII碼的轉換。

      解:

      MOVBX,TABLE

      MOVSI,ASCII_TAB

      MOVAL,0

      MOVCX,10 TRAN:XLATTABLE

      MOVDL,AL

      ADDDL,30H

      MOV[SI],DL

      INCAL

      LOOPTRAN 3.19使用乘法指令時,特別要注意先判斷是用有符號數(shù)乘法指令還是用無符號數(shù)乘

      法指令,這是為什么?

      解:因為有符號數(shù)和無符號數(shù),其數(shù)的乘法是一樣的。但結果的符號取決于兩

      個操作數(shù)的符號。

      3.20字節(jié)擴展指令和字擴展指令一般用在什么場合?舉例說明。

      解:主要用于字節(jié)相除和字相除之前,把被除數(shù)擴展為兩倍寬度的操作數(shù)。

      3.21 什么叫BCD碼?什么叫組合的BCD碼?什么叫非組合的BCD碼?8086匯編語言在對

      BCD碼進行加、減、乘、除運算時,采用什么方法?

      解:BCD碼為十進制編碼的二進制數(shù)。組合的BCD數(shù)是把兩位BCD加在一個字節(jié)

      中,高位的在高4位。非組合的BCD碼是把一位BCD數(shù)放在一個字節(jié)的低4位,高4位

      為0。8086在BCD加、減和乘法運算以后用BCD調整指令把結果調整為正確的BCD

      數(shù)。在BCD除法之前先用BCD調整指令再做除法.3.22用普通運算指令執(zhí)行BCD碼運算時,為什么要進行十進制調整?具體地講,在

      進行BCD碼的加、減、乘、除運算時,程序段的什么位置必須加上十進制調整

      指令?

      解:因為8086指令把操作數(shù)作為二進制數(shù)進行二進制運算,要得到正確的BCD結

      果,需要進行調整。在加、減、乘法指令之后加上BCD調整指令,而在除法指令

      之前先用BCD調整指令再用除法指令。

      第4章

      作業(yè)答案

      4.1在下列程序運行后,給相應的寄存器及存儲單元填入運行的結果:

      MOV AL, 1OH

      MOV CX, 100OH

      MOV BX, 2000H

      MOV [CX],AL

      XCHGCX,BX

      MOV DH, [BX]

      MOV DL, 01H

      XCHGCX, BX

      MOV [BX],DL

      HLT

      解:寄存器及存儲單元的內容如下:

      AL=1OH

      BL=OOH

      BH=2OH

      CL=OOH

      CH=1OH

      DH=1OH

      (10O0H)=lOH

      (200OH)=0lH 2.要求同題4.1,程序如下:

      MOV AL, 50H

      MOV BP, 100OH

      MOV BX, 200OH

      MOV[BP],AL

      MOV DH, 20H

      MOV[BX],DH

      MOV DL, OlH

      MOV DL, [BX]

      MOV CX, 300OH

      HLT

      解:寄存器及存儲單元的內容如下:

      AL=5OH

      BL=OOH

      BH=20H

      CL=OOH

      CH=30H

      DL=20H

      DH=2OH

      BP=100OH

      (10OOH)=5OH

      (20OOH)=20H

      4.3自1000H單元開始有一個100個數(shù)的數(shù)據(jù)塊,若要把它傳送到自200OH開始的存

      儲區(qū)中去,可以采用以下3種方法實現(xiàn),試分別編制程序以實現(xiàn)數(shù)據(jù)塊的傳送。

      (l)不用數(shù)據(jù)塊傳送指令

      (2)用單個傳送的數(shù)據(jù)塊傳送指令

      (3)用數(shù)據(jù)塊成組傳送指令。

      解:

      (1)

      LEA SI, 1OOOH

      LEA DI, 200OH

      MOV CX, 100

      L1: MOV AX, [SI]

      MOV[DI],AX

      LOOPLl

      HLT

      (2)

      LEASI,100OH

      LEADI,2000H

      MOVCX,100

      CLD

      L1: MOVSB

      LOOP L1

      HLT

      (3)

      LEASI, 100OH

      LEADI, 200OH

      MOVCX, 100

      CLD

      REP MOVSB

      HLT

      4.4 利用變址寄存器,編寫一個程序,把自1000H單元開始的100個數(shù)傳送到自1070H

      開始的存儲區(qū)中去。

      解:

      LEASI,100OH

      LEADI,1070H

      MOVCX,100

      CLD

      REP MOVSB

      HLT

      4.5要求同題4.4,源地址為2050H,目的地址為2000H,數(shù)據(jù)塊長度為50.解:

      LEASI,205OH

      LEADI,200OH

      MOVCX,50

      CLD

      REPMOVSB

      HLT

      4.6編寫一個程序,把自100OH單元開始的100個數(shù)傳送'至105OH開始的存儲區(qū)中

      (注意:數(shù)據(jù)區(qū)有重疊)。

      解:

      LEASI, 100OH

      LEADI,1050H

      ADDSI, 63H

      ADDDI, 63H

      MOVCX, 100

      STD

      REPMOVSB

      HLT

      4.7在自0500H單元開始,存有100個數(shù)。要求把它傳送到1000H開始的存儲區(qū)中,但在傳送過程中要檢查數(shù)的值,遇到第一個零就停止傳送。

      解:

      LEA SI, 050OH

      LEA DI, 10OOH

      MOV CX, 100

      N1: MOV AL, [SI]

      CMP AL, 0

      JZ N2

      MOV[DI],AL

      INC SI

      INC DI

      LOOPN1

      N2: HLT

      4.14若在0500H單元中有一個數(shù)

      (1)利用加法指令把它乘2,且送回原存儲單元(假定X×2后仍為一個字節(jié));

      (2)X×4;

      (3)X×10(假定X×l0≤255).解:

      (1)LEA BX, 050OH

      MOV AL, [BX]

      ADD AL, AL

      MOV[BX],AL

      (2)LEA BX, 0500H

      MOV AL, [BX]

      ADD AL, AL

      ADD AL, AL

      MOV[BX],AL

      (3)LEABX, 050OH

      MOVAL, [BX]

      ADDAL, AL

      MOVDL, AL

      ADDAL, AL

      ADD AL,AL

      ADDAL, DL

      MOV[BX],AL

      第 5 章

      作業(yè)答案

      5.1 總線周期的含義是什么?8086/8088CPU的基本總線周期由幾個時鐘組成?如果

      一個CPU的時鐘頻率為8MHz,那么,它的一個時鐘周期是多少?一個基本總線周期是多

      少?如果主頻為5MHz呢?

      解:CPLI訪問總線(從內存儲器或I/0端口讀/寫字節(jié)或字)所需的時間稱為總線周期。8086/8088CPU的基本總線周期由4個時鐘組成。若CPU的時鐘頻率為8(5)MHz,時

      鐘周期為1/8MHz=125(1/5MHz=2O)ns,基本總線周期為4×125(200)ns=500(800)ns

      5.2在總線周期的TI、T2、T3、T4狀態(tài),CPU分別執(zhí)行什么動作?什么情況下需要插入

      等待狀態(tài)Tw?Tw在哪兒插入?怎樣插入?

      解: 下面以存儲器讀為例進行說明。

      在Tl周期:輸出地址信號、地址鎖存允許信號、內存或I/O端口訪問控制信號;

      在T2周期:CPIJ開始執(zhí)行數(shù)據(jù)傳送操作,此時,8086CPU內部的多路開關進行切換,將

      地址/數(shù)據(jù)線AD15~AD0上的地址撤銷,切換為數(shù)據(jù)總線,為讀寫數(shù)據(jù)作準

      備。8288總線控制器發(fā)出數(shù)據(jù)總線允許信號和數(shù)據(jù)發(fā)送/接收控制信號

      DT/R允許數(shù)據(jù)收發(fā)器工作,使數(shù)據(jù)總線與8086CPU的數(shù)據(jù)線接通,并控制數(shù)

      據(jù)傳送的方向。同樣,把地址/狀態(tài)線A19/S6~A16/S3切換成與總線周期有

      關的狀態(tài)信息,指示若干與周期有關的情況。

      在T3周期:開始的時鐘下降沿上,8086CPU采樣READY線。如果READY信號有效(高電平),則在T3狀態(tài)結束后進人TA狀態(tài)。在T4狀態(tài)開始的時鐘下降沿,把數(shù)據(jù)總線上的數(shù)據(jù)讀入CPU或寫到地址選中的單元。在T4狀態(tài):結束總線周期。如果訪問的是慢速存儲器或是外設接口,則應該在Tl狀態(tài)輸出的地址,經(jīng)過譯碼選中某個單元或設備后,立即驅動READY信號到低電平。8086CPU在T3狀態(tài)采樣到READY信號無效,就會插入等待周期Tw,在Tw 狀態(tài)CPU繼續(xù)采樣READY信號;直至其變?yōu)橛行Ш笤龠M人T4狀態(tài),完成數(shù)據(jù)傳送,結束總線周期。在T4狀態(tài),8086CPU完成數(shù)據(jù)傳送,狀態(tài)信號S2 ~S0。變?yōu)闊o操作的過渡狀態(tài)。在此期間,8086CPU結束總線周期,恢復各信號線 的初態(tài),準備執(zhí)行下一個總線周期。

      第6章 作 業(yè) 答 案

      6.1 若有一單板機,具有用8片2114構成的4KBRAM,連線如圖創(chuàng)所示。

      若以每1KBRAM作為一組,則此4組RAM的基本地址是什么?地址有沒有重疊區(qū)?每一組的地址范圍為多少?

      解:RAM的基本地址為:

      第一組 OOOOH~03FFH

      第二組 4000H~43FFH

      第三組 8000H~83FFH

      第四組 COOOH~C3FFH

      地址有重疊區(qū)。每一組的地址范圍為OOOH~3FFH(1024個字節(jié))。

      6.4若要擴充1KBRAM(用2114片子),規(guī)定地址為8000H~83FFH,地址線應該如何

      連接?

      解:擴充lKBRAM至規(guī)定地址8000H~83FFH,其地址線的低10位接芯片,高6位地址

      (Al5~A10=100000)產(chǎn)生組選擇信號。

      第7 章

      作 業(yè) 答 案

      7.1 外部設備為什么要通過接口電路和主機系統(tǒng)相連?

      解: 因為外部設備種類繁多,輸入信息可能是數(shù)字量、模擬量或開關量,而且輸

      入速度、電平、功率與CPU差距很大。所以,通常要通過接口電路與主機系統(tǒng)

      相連。

      7.4 CPU和輸入輸出設備之間傳送的信息有哪幾類?

      解:CPU和輸入輸出設備之間傳送的信息主要有3類。

      (l)數(shù)據(jù)

      在微型計算機中,數(shù)據(jù)通常為8位、16位或32位。

      (2)狀態(tài)信息

      在輸入時,有輸入設備的信息是否準備好;在輸出時有輸出設備是否有空,若輸

      出設備正在輸出信息,則以忙指示等。

      (3)控制信息

      例如,控制輸入輸出設備啟動或停止等。

      7.9設一個接口的輸入端口地址為0100H,狀態(tài)端口地址為0104H,狀態(tài)端口中第5位

      為1表示輸入緩沖區(qū)中有一個字節(jié)準備好,可以輸入。設計具體程序以實現(xiàn)查詢式

      輸入。

      解: 查詢輸入的程序段為:

      POLl: IN AL, 0104H

      ANDAL,20H

      JZ POLl

      IN AL, 0100H

      第 8 章作 業(yè) 答 案

      8.1在中斷響應過程中,8086CPU向8259A發(fā)出的兩個RT互信號分別起什么作用?

      解:

      CPU發(fā)出的第一個INTA脈沖告訴外部電路,其提出的中斷請求已被響應,應準備將類型號發(fā)給CPU,8259A接到了這個INTA脈沖時,把中斷的最高優(yōu)先級

      請求置入中斷狀態(tài)寄存器(ISR)中,同時把IRR(中斷請求寄存器)中的相應位復

      位。CPU發(fā)出的第二個INTA脈沖告訴外部電路將中斷的類型號放在數(shù)據(jù)總線

      上。

      8.28086CPU最多可以有多少個中斷類型?按照產(chǎn)生中斷的方法分為哪兩大類?

      解:8086CPU最多可以有256個中斷類型。按照產(chǎn)生中斷的方法,可以分為內

      部中斷(軟件中斷)和外部(硬件中斷)中斷兩大類。

      8.9 在編寫中斷處理子程序時,為什么要在子程序中保護許多寄存器?

      解:因為在用戶程序運行時,會在寄存器中有中間結果,當在中斷服務程序中要

      使用這些寄存器前要把這些寄存器的內容推至堆棧保存(稱為保護現(xiàn)場)。在從

      中斷服務程序返回至用戶程序時把這些內容從堆找恢復至寄存器中(稱為恢復

      現(xiàn)場)。

      8.12若在一個系統(tǒng)中有5個中斷源,其優(yōu)先權排列為:1、2、3、4、5,它們的中斷服

      務程序的入口地址分別為:3000H、302OH、3050H、3080H、30AOH。編寫一個程序, 當有中斷請求CPU響應時,能用查詢方式轉至申請中斷的優(yōu)先權最高的源的中斷服

      務程序。

      解: 若5個中斷源的中斷請求放在一中斷狀態(tài)寄存器中,按優(yōu)先權分別放在狀態(tài)的7 位(優(yōu)先權最高)至位3中。查詢方法的程序段為:

      IN

      AL,STATUS

      CMP

      AL,80H

      JNE

      N1

      JMP

      3000H

      N1:

      IN

      AL,STATUS

      CMP

      AL,40H

      JNE

      N2

      JMP

      3020H

      N2:

      IN

      AL,STATUS

      CMP

      AL,20H

      JNE N3

      JMP 3050H

      N3:

      IN

      AL,STATUS

      CMP AL,10H

      JNE N4

      JMP 3080H

      N4:

      IN

      AL,STATUS

      CMP AL,08H

      JNE N5

      JMP 30A0H N5:

      RET

      第9章 作 業(yè) 答 案

      9.3在某一應用系統(tǒng)中,計數(shù)器/定時器8253地址為340H~343H,定時用作分頻器(N 為分頻系數(shù)),定時器2用作外部事件計數(shù)器,如何編制初始化程序?

      解:

      定時器0用作分頻器,工作方式2,其初始化程序為:

      MOV AL,34H

      OUT 343H,AL

      MOV AL,N1

      OUT 342H,AL

      MOV AL,N2

      OUT 342H,AL

      定時器2用作外部事件計數(shù)器,工作在方式0,其初始程序:

      MOV AL,0B0H

      OUT 343H,AL

      MOV AL,N1

      OUT 342H,AL

      MOV AL,N2

      OUT 342H,AL

      9.4若已有一頻率發(fā)生器,其頻率為1MHZ,若要示求通過計數(shù)器/定時器8253,著重

      產(chǎn)生每秒一次的信號,8253應如何連接?編寫出初始化程序。

      解:

      1MHZ的信號要變?yōu)槊棵胍淮?,則需經(jīng)過106分頻。一個通道的計數(shù)為16位最

      大為65536。故需要需兩個通道級連,則每個通道計數(shù)為1000。用通道0和通道1級連,都工作在方式2,初始化程序為:

      MOV AL,34H

      OUT 343H,AL

      MOV AL,0E8H

      OUT 342H,AL

      MOV AL,03

      OUT 342H,AL

      MOV AL,74H

      OUT 343H,AL

      MOV AL,0E8H

      OUT 342H,AL

      MOV AL,03

      OUT 342H,AL

      9.9編程將計數(shù)器/定時器8253計數(shù)器0設置為模式1,計數(shù)初值3000H;計數(shù)器1設置

      為模式2初值為2010H;計數(shù)器2設置為模式4初值為4030H;

      解:若端口地址為:0F8H~0FBH,初始化程序為:

      MOV AL,32H

      OUT 0FBH,AL

      MOV AL,00H

      OUT 0F8H,AL

      MOV AL,30H

      OUT 0F8H,AL

      MOV AL,74H

      OUT

      0FBH,AL

      MOV AL,10H

      OUT

      0F9H,AL

      MOV

      AL,20H

      OUT

      0F9H,AL

      MOV

      AL,0B8H

      OUT

      0FBH,AL

      MOV

      AL,30H

      OUT

      0FAH,AL

      MOV

      AL,40H

      OUT

      0FAH,AL

      第10 章 作 業(yè) 答 案

      10.4可編程并行接口芯片8255A的3個端口在使用時有什么差別?

      解:通常端口A或B作為輸入輸出的數(shù)據(jù)端口(端口A還可以作為雙向數(shù)據(jù)端口), 而端口C作為控制或狀態(tài)信息的端口,它在“方式”字的控制下,可以分成兩個4位的端

      口。每個端口包含一個4位鎖存器。它們分別與端口A和B配合使用,可用以作為控制

      信號輸出,或作為狀態(tài)信號輸入。

      10.7 8255A有哪幾種基本工作方式?對這些工作方式有什么規(guī)定?

      解:8255A有3種基本的工作方式:

      方式0-----基本輸入輸出:

      方式1-----選通輸入輸出;

      方式2-----雙向傳送。

      10.8設置8255A工作方式,8255A的控制口地址為OOC6H。要求端口A工作在方式1,輸

      入;端口B工作在方式0,輸出;端口C的高4位配合端口A工作;低4位為輸入。

      解:按要求的方式控制字為:10111001B。編程語句為:

      MOVAL,0B9H

      OUTOOC6H, AL;

      10.9設可編程并行接口芯片8255A的4個端口地址為OOCOH、00C2H、00C4H、OOC6H,要求用置0/置1方式對PC6置1,對PC4置0。

      解:對端口C的PC6置1的控制字為: 00001101B,對PC4置O的控制字為:

      0000100OB。

      程序段為:

      MOV AL,DH

      OUT OOC6H, AL

      MOV AL,08H.OUT00C6H, AL

      下載接口習題[共五篇]word格式文檔
      下載接口習題[共五篇].doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現(xiàn)有涉嫌版權的內容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據(jù),工作人員會在5個工作日內聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權內容。

      相關范文推薦

        微機原理與接口技術 顧暉習題參考答案

        微機原理與接口技術 答案 目錄 第1章習題答案 ...................................................................................... 2 第2章習題答案 .................

        微機原理與接口技術習題解答(錢曉婕)

        “微機原理與接口技術”習題解答 第1章 微型計算機系統(tǒng) 〔習題1.1〕簡答題 〔解答〕 ① 處理器每個單位時間可以處理的二進制數(shù)據(jù)位數(shù)稱計算機字長。 ② 總線信號分成三組,分......

        通信接口避雷器

        通信接口避雷器考慮的主要因素如下: · 線路上可能感應的浪涌形式(例如波形、時間參數(shù)和最大峰值); · 接口電路模擬雷電沖擊擊穿電壓臨界指標; · 保護對象在正常工作狀態(tài)下的數(shù)......

        V5接口技術

        V5 接口技術 連接本地交換機(LE)和用戶終端設備(TE)的用戶環(huán)路無論從實現(xiàn)業(yè)務接入方面,還是從占用通信投資比重方面,都是通信網(wǎng)的一個很重要的組成部分。 隨著通信網(wǎng)的數(shù)字化,光纖和數(shù)......

        施工接口管理辦法

        接口管理辦法 1. 施工接口界面協(xié)調配合措施 接口界面包括相鄰標段的施工接口、土建工程與后續(xù)工程的施工接口,如測量控制網(wǎng)互用,預埋件(或預留孔洞)位置和尺寸的控制,施工信息互......

        微機原理與接口技術課后習題答案(朱紅)(含五篇)

        第一章習題答案 一、選擇題 1.十進制數(shù) 66 轉換成二進制數(shù)為_______。A. 11000010 B.01100110 C.11100110 D.01000010 答案:D 2.十進制數(shù) 27.25 轉換成十六進制數(shù)為______......

        Java學習筆記三_接口(共五篇)

        靜態(tài) (static)字段或方法: 在全局唯一,能夠被其他共享;類寫好后,在函數(shù)運行的時候不需要實例化,就已經(jīng)分配好類存空間; Java代碼編譯成.Class代碼jit機器代碼執(zhí)行類加載器ClassLoade......

        微機原理與接口技術(錢曉捷版)課后習題答案

        “微機原理與接口技術”習題解答 第1章 微型計算機系統(tǒng) 〔習題1.1〕簡答題 〔解答〕 ① 處理器每個單位時間可以處理的二進制數(shù)據(jù)位數(shù)稱計算機字長。 ② 總線信號分成三組,分......