微機原理與接口技術(shù)——基于8086和Proteus仿真第2版 習題參考答案
《微機原理與接口技術(shù)——基于8086和Proteus仿真第2版 習題參考答案》由會員分享,可在線閱讀,更多相關(guān)《微機原理與接口技術(shù)——基于8086和Proteus仿真第2版 習題參考答案(59頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 第1章 習題答案 1.答: 為了區(qū)別所使用的數(shù)制,一般用以下兩種書寫格式表示: ① 用括號將數(shù)字括起,后面加數(shù)制區(qū)分,數(shù)制用下標的形式給出; ② 用后綴區(qū)分,二進制數(shù)、十進制數(shù)、八進制數(shù)、十六進制數(shù)的后綴分別為字母B(或b)、D(或d)、O(或o)或Q(或q)、H(或h)。 例如:十六進制數(shù)56.78可以表示成(56.78)16或56.78H; 十進制數(shù)56.78可以表示成(56.78)10或56.78D。 2.答: 123D采用十進制,0AFH采用十六進制,77Q采用八進制,1001110B采用二進制。 3.答: 字長為8位的二進制數(shù)原碼表示的最大值:
2、127,最小值:-127;補碼表示的最大值:127,最小值:-128。 字長為16位的二進制數(shù)原碼表示的最大值:32767,最小值:-32767;補碼表示的最大值:32767,最小值:-32768。 4.答: (1)125D=0111 1101B=7DH (2) 255D=1111 1111B=FFH (3)72D=0100 1000B=48H (4)5090D=0001 0011 1110 0010B=13E2H 5.答: (1)1111 0000B=240D=F0H (2) 1000 0000 B =128D =80H (3)1111 1111 B =255 D
3、 =FFH (4)0101 0101B=85D=55H 6.答: (1)FFH=255D=1111 1111B (2) ABCDH=43947D=1010 1011 1100 1101B (3) 123H=291D=0000 0001 0010 0011B (4) FFFFH=65535D=1111 1111 1111 1111B 7.答: (1)8位時(16)原=0001 0000 ; (16)補=0001 0000; 16位時(16)原=0000 0000 0001 0000 ; (16)補=0000 0000 0001 0000; (2) 8位時(-16)原=
4、1001 0000 ; (-16)補=1111 0000; 16位時(-16)原=1000 0000 0001 0000 ; (-16)補=1111 1111 1111 0000; (3) 8位時(+0)原=0000 0000; (+0)補=0000 0000; 16位時(+0)原=0000 0000 0000 0000; (+0)補=0000 0000 0000 0000; (4) 8位時(-0)原=1000 0000 ; (-0)補=0000 0000; 16位時(-0)原=1000 0000 0000 0000; (-0)補=0000 0000 0000 0000; (5)
5、8位時(127)原=0111 1111; (127)補=0111 1111; 16位時(127)原=0000 0000 0111 1111; (127)補=0000 0000 0111 1111; (6) 8位時-128超過原碼表示的范圍; (-128)補=1000 0000; 16位時(-128)原=1000 0000 1000 0000; (-128)補=1111 1111 1000 0000; (7) 8位時(121)原=0111 1001 ; (121)補=0111 1001; 16位時(121)原=0000 0000 0111 1001; (121)補=0000 0000
6、0111 1001; (8) 8位時(-9)原=1000 1001 ; (-9)補=1111 0111; 16位時(-9)原=1000 0000 0000 1001; (-9)補=1111 1111 1111 0111; 8.答: (1) [x]補=1100 0010;(2)[-x]補=0000 1101;(3)[x]原=1100 0010;(4)[x]反=1011 1101。 9.答: (1)A>B;(2)A<B 10.答: (1)溢出;(2)13H;(3)溢出;(4)EDH;(5)EDH。 11.答: (1)1000 1000;(2)1110 1110;(3
7、)0110 0110;(4)1010 1100; (5)0000 0000;(6)1010 1100;(7)=0101 0011。 12.答: (1)30H=48,字符為‘0’;(2)39H=57,字符為‘9’;(3)42H=66,字符為‘B’; (4)62H=98,字符為‘b’;(5)20H=32,字符為空格;(6)7H=7,字符為報警符; 13、答: 十進制 49 123 7 62 壓縮BCD碼 0100 1001B 0001 0010 0011B 0000 0111B 0110 0010B 非壓縮BCD碼 0000 0100 0000 1001B
8、 0000 0001 0000 0010 0000 0011B 0000 0111B 0000 0110 0000 0010B ASCII碼 3439H 313233H 37H 3632H 第2章 習題答案 1.(1)答: 物理地址:物理地址(PA)是20位無符號二進制數(shù),是CPU訪問存儲器的實際地址。每個存儲單元對應(yīng)一個物理地址。8086存儲空間的物理地址范圍是:00000H~FFFFFH。 邏輯地址:采用分段結(jié)構(gòu)的存儲器中,把通過段地址和偏移地址來表示的存儲單元的地址稱為邏輯地址,記為:段地址:偏移地址。 段地址:8086規(guī)定各邏輯段從節(jié)的整數(shù)邊界開始,
9、即段首地址二進制值的低4位是0000,把段首地址的高16位稱為段基址或段地址。 偏移地址:把某一存儲單元相對于段地址的段內(nèi)偏移量稱為偏移地址(也稱有效地址EA)。段地址和偏移地址都是是16位無符號二進制數(shù)。 (2)答: 時鐘周期:計算機的“時鐘”是由振蕩源產(chǎn)生的、幅度和周期不變的節(jié)拍脈沖,每個脈沖周期稱為時鐘周期,又稱為T狀態(tài)或T周期,時鐘周期是微機系統(tǒng)工作的最小時間單元。 總線周期:當CPU訪問存儲器或輸入/輸出端口時,需要通過總線進行讀或?qū)懖僮鳎@個過程稱為總線周期(Bus Cycle)。總線周期是利用總線完成一次讀/寫所需要的時間。 指令周期:執(zhí)行一條指令所需要的時間稱為指令周
10、期(Instruction Cycle)。指令周期由1個或多個總線周期組成。 (3)答: 最小模式:也稱為單處理器模式,是指系統(tǒng)中只有一片8086微處理器,所連接的存儲器容量不大、片子不多,所要連接的I/O端口也不多,系統(tǒng)的控制總線就直接由CPU的控制線供給,從而使得系統(tǒng)中的總線控制電路減到最少。最小模式適用于較小規(guī)模的系統(tǒng)。 最大模式:相對于最小模式而言,適用于中、大型規(guī)模的系統(tǒng)。系統(tǒng)中有多個微處理器,其中一個是主處理器8086,其他的處理器稱為協(xié)處理器,承擔某方面專門的工作。需要增加一片8288來對8086CPU發(fā)出的控制信號進行變換和組合,以得到對存儲器或I/O端口的讀/寫信號和對
11、鎖存器、總線收發(fā)器的控制信號。 2.答: EU:負責指令的執(zhí)行,即從總線接口部件BIU的指令隊列取指令,指令執(zhí)行后向BIU送回運算結(jié)果,同時把運算結(jié)果的狀態(tài)特征保存到標志寄存器中。 BIU:負責CPU與存儲器、I/O設(shè)備之間的數(shù)據(jù)傳送。BIU完成以下操作:取指令送給指令隊列、配合執(zhí)行部件從指定的內(nèi)存單元或者外設(shè)端口中取數(shù)據(jù)、將數(shù)據(jù)傳送給執(zhí)行部件或者把執(zhí)行部件的操作結(jié)果傳送到指定的內(nèi)存單元或外設(shè)端口中。 8086的BIU和EU在很多時候可以并行工作,使得取指令、指令譯碼和執(zhí)行指令這些操作構(gòu)成操作流水線。 ① 當指令隊列中有兩個空字節(jié),且EU沒有訪問存儲器和I/O接口的要求時,BIU
12、會自動把指令取到指令隊列中。 ② 當EU準備執(zhí)行一條指令時,它會從指令隊列前部取出指令執(zhí)行。在執(zhí)行指令的過程中,如果需要訪問存儲器或者I/O設(shè)備,那么EU會向BIU發(fā)出訪問總線的請求,以完成訪問存儲器或者I/O接口的操作。如果此時BIU正好處于空閑狀態(tài),那么,會立即響應(yīng)EU的總線請求;但如果BIU正在將某個指令字節(jié)取到指令隊列中,那么,BIU將首先完成這個取指令操作,然后再去響應(yīng)EU發(fā)出的訪問總線的請求。 ③ 當指令隊列已滿,而且EU又沒有總線訪問時,BIU便進入空閑狀態(tài)。 ④ 在執(zhí)行轉(zhuǎn)移指令、調(diào)用指令和返回指令時,下面要執(zhí)行的指令就不是在程序中緊接著的那條指令了,而BIU往指令隊列裝入
13、指令時,總是按順序進行的。在這種情況下,指令隊列中已經(jīng)裝入的指令就沒有用了,會被自動消除。隨后,BIU會往指令隊列中裝入另一個程序段中的指令。 3.答: 地址信號是CPU發(fā)送給內(nèi)存或I/O設(shè)備的,所以地址線是單向的; 數(shù)據(jù)信號可以從CPU發(fā)送給內(nèi)存或I/O設(shè)備,也可以從內(nèi)存或I/O設(shè)備發(fā)送給CPU,故而數(shù)據(jù)線是雙向的。 4.答: 8086CPU中有14個寄存器。它們是:4個16位的通用寄存器:AX、BX、CX、DX和8個8位的通用寄存器:AH、AL、BH、BL、CH、CL、DH、DL;指針和變址寄存器SP、BP、 SI、DI;4個16位的段寄存器CS、DS、SS和ES;標志寄
14、存器FR;指令指針寄存器IP。 功能略。 5.答: (1)加法運算的結(jié)果為:CEACH;CF=0,PF=1,AF=0,ZF=0,SF=1,OF=1; (2)加法運算的結(jié)果為:68ACH;CF=0,PF=1,AF=0,ZF=0,SF=0,OF=0; (3)加法運算的結(jié)果為:DDDDH;CF=0,PF=1,AF=0,ZF=0,SF=1,OF=0。 6.答: 8086CPU可尋址的存儲器地址范圍是00000H~FFFFFH; 可尋址的I/O端口地址范圍是0000H~FFFFH。 7.答: 由于8086CPU提供20位地址,但8086中可用來存放地址的寄存器,如IP、S
15、P、BX、SI等都是16位的,只能直接尋址64KB。為了尋址1MB存儲空間,8086CPU采用了典型的存儲器分段技術(shù),即將整個存儲器空間分為許多邏輯段,每個邏輯段的容量小于或等于64KB。分段后,對存儲器的尋址操作不再直接用20位的物理地址,而是采用段地址加段內(nèi)偏移地址的二級尋址方式。 8.答: 將AH的內(nèi)容送存儲單元的操作過程中:; 將I/O端口的內(nèi)容送AL的操作過程中:。 9.答: A0 有效的數(shù)據(jù)引腳 操 作 0 0 AD15~AD0(一個總線周期同時訪問奇體和偶體,從奇地址單元讀/寫字數(shù)據(jù)的高8位,從偶地址單元讀/寫字數(shù)據(jù)的低8位) 從偶
16、地址讀/寫一個字 1 0 AD7~AD0 從偶地址讀/寫一個字節(jié) 0 1 AD15~AD8 從奇地址讀/寫一個字節(jié) 0 1 1 0 AD15~AD8(第一個總線周期從奇字數(shù)據(jù)的低8位) AD7~AD0(第二個總線周期從偶地址單元讀/寫字數(shù)據(jù)的高8位) 從奇地址讀/寫一個字 10.答: 8086系統(tǒng)復位后,指令指針(IP)為0000H;CS寄存器為FFFFH,其他寄存器為0000H;指令隊列清空。 11.答: 8086的A19/S6~A16/S3和AD15~AD0是復用信號,需要地址鎖存器將地址信息保存起來,為外接存儲器或外設(shè)提供地址
17、信息。 需要鎖存的信號是:地址信號及信號。 12.答: 8086CPU一個基本的總線周期包含4個時鐘周期:T1、T2、T3和T4 。 在T1狀態(tài),有效,指示CPU訪問的是存儲器還是外設(shè),之后CPU往多路復用總線上發(fā)出地址信息,以指出要尋址的存儲單元或外設(shè)端口的地址。在T1狀態(tài),CPU還必須在ALE引腳上輸出一個正脈沖作為地址鎖存信號。信號也在T1狀態(tài)送出,它用來表示數(shù)據(jù)傳送的字寬。 在T2狀態(tài),CPU從總線上撤銷地址,使總線的低16位浮空,置成高阻狀態(tài),為傳輸數(shù)據(jù)作準備。總線的最高4位(A19~A16)用來輸出本總線周期的狀態(tài)信息。讀信號或?qū)懶盘栐赥2狀態(tài)變?yōu)橛行В甘綜PU將
18、進行哪種操作(讀或?qū)懀? 在T3狀態(tài),多路總線的高4位繼續(xù)提供狀態(tài)信息,而多路總線的低16位上出現(xiàn)由CPU讀出的數(shù)據(jù)或者CPU從存儲器或端口寫入的數(shù)據(jù)。 在T4狀態(tài)和前一個狀態(tài)的交界處,CPU對數(shù)據(jù)總線進行采樣,獲得數(shù)據(jù),總線周期結(jié)束。 13.答: 在有些情況下,外設(shè)或存儲器速度較慢,不能及時地配合CPU傳送數(shù)據(jù)。這時,外設(shè)或存儲器會通過“READY”信號線在T3狀態(tài)啟動之前向CPU發(fā)一個“數(shù)據(jù)未準備好”信號,于是CPU會在T3之后插入1個或多個附加的時鐘周期TW。取決與外設(shè)或存儲器速度。 14.答: 兩種操作時序的不同之處發(fā)生在T1和T2狀態(tài)。 ① 在T1狀態(tài),讀周期:
19、應(yīng)輸出低電平;寫周期:應(yīng)輸出高電平。 ② 在T2狀態(tài),讀周期:有效,而無效,AD15~AD0為高阻態(tài);寫周期:變?yōu)闊o效,而寫信號變?yōu)橛行В珹D15~AD0在地址撤銷之后立即送出要寫入存儲器或外設(shè)端口的數(shù)據(jù)。 15.答: 在最小模式下,讀信號、ALE和、等信號直接由CPU給出; 在最大模式下,總線控制器8288根據(jù)和狀態(tài)信號產(chǎn)生讀信號和,ALE和、DEN也是由8288發(fā)出的,而且DEN信號的極性與CPU在最小模式下發(fā)出的信號正好相反。 第3章 習題答案 1.答: 指令中關(guān)于如何求出操作數(shù)有效地址的方法稱為尋址方式。 8086CPU支持多種尋址方式,根據(jù)操作數(shù)的類型及來源
20、大致分為3類:數(shù)據(jù)尋址、轉(zhuǎn)移地址尋址和I/O尋址。 2.答: 8086匯編指令可以采用7種基本的數(shù)據(jù)尋址方式:①立即尋址;②寄存器尋址;③直接尋址;④寄存器間接尋址;⑤寄存器相對尋址;⑥基址變址尋址;⑦相對基址變址尋址。 與存儲器尋址方式(后5種)相比,寄存器尋址方式最快。 3.答: 如果指令中沒有用前綴說明操作數(shù)存放在哪個段,則操作數(shù)默認存放在數(shù)據(jù)段。 8086系統(tǒng)允許操作數(shù)存放在代碼段、堆棧段或附加段。此時,就需要在指令中利用前綴指明段超越。例如: MOV ES:[1225H],AX 4.答: (1)寄存器尋址方式 (2)寄存器間接尋址方式,PA=10300H
21、(3)寄存器間接尋址方式,PA=20200H (4)直接尋址方式,PA=10060H (5)基址變址尋址方式,PA=10500H (6)相對基址變址尋址方式,PA=12300H (7)直接尋址方式,PA=11000H (8)寄存器相對尋址方式,PA=10306H (9)直接尋址方式,PA=10065H 5.答: (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) × × × √ × √ × × √ × × 6.答: (1)源操作數(shù)的尋址方式不同。MOV AX,3000H指令的源操作數(shù)采用
22、的是立即數(shù)尋址方式,MOV AX,[3000H]指令的源操作數(shù)采用的是直接尋址方式。 (2)指令執(zhí)行后,AX的值不同。MOV AX,MEM指令執(zhí)行后,AX得到的是MEM單元的內(nèi)容,而MOV AX,OFFSET MEM指令執(zhí)行后,AX得到的是MEM單元的地址。 (3)指令不同。MOV AX,MEMMOV AX,MEM指令執(zhí)行后,AX得到的是MEM單元的內(nèi)容,而LEA AX,MEM指令執(zhí)行后,AX得到的是MEM單元的地址。 (4)轉(zhuǎn)移的類型不同。JMP SHORT L1指令實現(xiàn)的是段內(nèi)轉(zhuǎn)移,而JMP NEAR PTR L1指令實現(xiàn)的是段間轉(zhuǎn)移。 (5)指令的執(zhí)行結(jié)果不同。C
23、MP DX,CX指令執(zhí)行后,DX的值不變,而SUB DX,CX指令執(zhí)行后,DX的值是兩寄存器值的差。 (6)操作數(shù)所在段不同。MOV [BP][SI],CL指令訪問的是堆棧段的存儲單元,而MOV DS:[BP][SI],CL指令訪問的是數(shù)據(jù)段的存儲單元。 7.答: (1)MOV BYTE PTR [BP],200指令執(zhí)行后,(58200H)=200H (2)MOV WORD PTR [BX],2000指令執(zhí)行后,(22400H)=2000H 8.答: 當前棧頂?shù)刂肥牵篎E00H:2010H; 執(zhí)行PUSH BX指令后,棧頂?shù)刂纷優(yōu)椋篎E00H:200EH,棧頂2
24、字節(jié)內(nèi)容是:3457H。 9.答: (1)(DX)=3C62H,CF=1 (2)(DX)=03C6H,CF=0 (3)(DX)=18A0H,CF=1 (4)(DX)=2BC6H,CF=0 (5)(DX)=18B7H,CF=1 (6)(DX)=BCC5H,CF=0 10.答: (AX) CF ZF OF SF PF (1) 134EH 0 0 0 0 1 (2) 0821H 0 0 0 0 1 (3) F142H 1 0 0 1 1 (4) 0A69 1 0 0 1 1 (5) F596 - -
25、 - - - (6) 0A69 0 0 0 0 1 11.答: (1) CMP CX,DX JA NEXT (2)CMP AX,BX JNA NEXT (3)CMP DX,0 JZ NEXT (4)CMP CX,DX JBE NEXT 12.答: (1) 程序轉(zhuǎn)向L1。 (2) 程序轉(zhuǎn)向L1。 (3) 程序轉(zhuǎn)向L2。 (4) 程序轉(zhuǎn)向L5。 (5) 程序轉(zhuǎn)向L5。 13.答: 因為普通運算指令執(zhí)行的是二進制數(shù)的運算,而BCD碼是十進制數(shù),所以,需要對運算結(jié)果進行十進制調(diào)整。 在做BCD碼的加、減和乘法運算時
26、,十進制調(diào)整指令放在運算指令之后;而作BCD碼的除法運算時,在運算指令之前用十進制調(diào)整指令對被除數(shù)進行調(diào)整。 14.答: MOV Cl,3 SHR bx,cl 15.答:(略) 16.答: DATA SEGMENT COUNT=100H ORG 1000H D_DATA DB COUNT DUP(?) ORG 2170H S_DATA DB COUNT/5 DUP(1,2,3,4,5) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START:
27、 MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,S_DATA LEA DI,D_DATA MOV CX,COUNT REP MOVSB MOV AL,1 MOV CX,COUNT LEA DI,D_DATA AGAIN: CMP BYTE PTR [DI],AL JNZ NEXT MOV BYTE PTR [DI],' ' NEXT: INC DI LOOP AGAIN EXIT: MOV AH,4CH INT 21H CODE ENDS END START
28、 17.答: CODE SEGMENT ASSUME CS:CODE START: MOV AX,5678H MOV DX,1234H NOT AX NOT DX ADD AX,1 ADC DX,0 EXIT: MOV AH,4CH INT 21H CODE ENDS END START 18. 答: ;本程序未考慮溢出的情況。 DATA SEGMENT A1 DW 5050H A2 DW ? ;存A1的反碼 A3 DW ? ;存A1的補碼 DATA ENDS COD
29、E SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,A1 NOT AX MOV A2,AX INC AX MOV A3,AX EXIT: MOV AH,4CH INT 21H CODE ENDS END START 19. 答: DATA SEGMENT ;AT 5000H ORG 3481H DAT DB 12H D
30、B ?,?,? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,DAT NEG AL MOV DAT+1,AL MOV AL,DAT XOR AL,00001111B MOV DAT+2,AL MOV AL,DAT OR AL,11110000B MOV DAT+3,AL EXIT: MOV AH,4CH INT 21H CODE ENDS END START
31、 20. 答: COUNT=1000 DATA SEGMENT ORG 1000H DAT DB 10 DUP (12H,-5,-3,0,-128,56H,98H,4,128,200) ORG 2000H MINDAT DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,DAT MOV CX,COUNT DEC CX MOV AL,[SI] NEXT:
32、 INC SI CMP AL,[SI] JLE ISMIN MOV AL,[SI] ISMIN: LOOP NEXT MOV MINDAT,AL EXIT: MOV AH,4CH INT 21H CODE ENDS END START 21. 答: DATA SEGMENT STRING1 DB 'hELLO!' COUNT1=$-STRING1 STRING2 DB 'hEL1O!' COUNT2=$-STRING2 IM
33、 DB 'MATCH$' NM DB 'NOT MATCH$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,STRING1 LEA DI,STRING2 MOV CX,COUNT1 MOV BX,COUNT2 CMP CX,BX JNZ DISPNOTMATCH NEXT: MOV AL,[SI] MOV AH,[DI] CMP AL,AH JNZ DISPNOTMATCH INC SI
34、 INC DI LOOP NEXT ISMATCH: MOV DX,OFFSET IM MOV AH,9 INT 21H JMP EXIT DISPNOTMATCH: MOV DX,OFFSET NM MOV AH,9 INT 21H EXIT: MOV AH,4CH INT 21H CODE ENDS END START 22. 答: DSEG
35、 SEGMENT DATA DB 5,6,7,8 DW ? DATA2 DB 1,10,100,20 DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX MOV DX,0 MOV CX,4 LEA SI,DATA LEA DI,DATA2 NEXT: MOV AL,[DI] MOV BL,[SI] CALL DOMUL ADD DX,AX INC DI INC SI LOOP NEXT MOV WO
36、RD PTR DATA+4,DX EXIT: MOV AH,4CH INT 21H DOMUL PROC MUL BL RET DOMUL ENDP CODE ENDS END START MOV CX,100 MOV AX,SEG LIST MOV DS,AX MOV AX,SEG BLK MOV ES,AX LEA SI,LIST ADD SI,CX LEA DI,BLK ADD DI
37、,CX STD REP MOVSB 23. 答: 24. 答: DSEG SEGMENT BUFFER DW 8 DB '12345678' DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX MOV CX,BUFFER SAR CX,1 LEA SI,BUFFER MOV DI,SI ADD DI,2 AGAIN: ADD SI,2 MOV AL,[SI] AND AL,
38、0FH SAL BYTE PTR [SI+1],1 SAL BYTE PTR [SI+1],1 SAL BYTE PTR [SI+1],1 SAL BYTE PTR [SI+1],1 OR AL,BYTE PTR [SI+1] MOV [DI],AL INC DI LOOP AGAIN EXIT: MOV AH,4CH INT 21H CODE ENDS END START 25. 答: JMP SHORT LAB指令是一條雙字節(jié)指
39、令。這條指令取出后,(IP)=0102H,轉(zhuǎn)移目標的偏移地址=(IP)+位移量。所以,轉(zhuǎn)移目標的物理地址=(CS)╳16+(IP)+位移量。 (1)轉(zhuǎn)移目標的物理地址=(CS)╳16+0158H (2)轉(zhuǎn)移目標的物理地址=(CS)╳16+0182H (3)轉(zhuǎn)移目標的物理地址=(CS)╳16+017AH (4)轉(zhuǎn)移目標的物理地址=(CS)╳16+01E2H DSEG SEGMENT ORG 10H DAT DB 10 DB ? DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,D
40、SEG MOV DS,AX MOV AL,DAT MOV BL,AL SAL BL,1 ADD AL,BL MOV CL,2 SAL BL,CL ADD AL,BL MOV DAT+1,AL EXIT: MOV AH,4CH INT 21H CODE ENDS END START 26. 答: 27. 答: DSEG SEGMENT ORG 10H DAT DB 10H,20H DB ?,? DSEG ENDS CODE SEGMENT ASSU
41、ME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX MOV AL,DAT MOV AH,DAT+1 MOV CL,3 SAR AX,CL MOV DAT+2,AL MOV DAT+3,AH EXIT: MOV AH,4CH INT 21H CODE ENDS END START 28. 答: DSEG SEGMENT BLOCK DW 8 DUP (10H,20H,-3,-9) DSEG ENDS CODE SEG
42、MENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX LEA SI,BLOCK MOV CX,32 AGAIN: MOV AX,[SI] CMP AX,0 JNS NEXT NEG AX MOV [SI],AX NEXT: INC SI INC SI LOOP AGAIN EXIT: MOV AH,4CH INT 21H CODE ENDS END START
43、 29. 答: DSEG SEGMENT ORG 3030H DAT DW 1234H,-1234H,?,? DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX MOV AX,DAT MOV BX,DAT+2 IMUL BX MOV DAT+4,AX MOV DAT+6,DX EXIT: MOV AH,4CH INT 21H CODE ENDS END START 第4章
44、習題答案 1. 答: 標號是指令的符號地址,可用作控制轉(zhuǎn)移指令的操作數(shù)。 標號具有3種屬性:段屬性、偏移屬性和類型屬性。 2. 答: 變量是存儲單元的符號地址。 變量具有3種屬性:段屬性、偏移屬性和類型屬性。 3. 答: 偽指令語句,也稱指示性語句,是不可執(zhí)行語句,匯編后不產(chǎn)生目標代碼,它僅僅在匯編過程中告訴匯編程序如何匯編源程序。 宏是一個以宏名定義的指令序列。一旦把某程序段定義成宏,則可以用宏名代替那段程序。在匯編時,要對宏進行宏展開,即把以宏名表示的地方替換為該宏對應(yīng)的指令序列的目標代碼。宏指令可以看成指令語句的擴展,相當于多條指令語句的集合。 4. 答: 匯編語言
45、表達式中有如下運算符:算術(shù)操作符、邏輯操作符、移位操作符、關(guān)系操作符、數(shù)值回送操作符和屬性操作符。 操作符所完成的運算在匯編階段進行。 5. 答: 略。 6. 答: (1)DB1 DB 10H DUP(1,2, 5 DUP(3),4) (2)DB2 DB 'STUDENT' (3)BD3 DW 12H,0ABCDH (4)COUNT EQU DB2-DB1 7. 答: 第一個OR表示該指令是OR指令,在程序運行時,該OR操作被執(zhí)行。 第二個OR是邏輯操作符OR,在匯編時,OR運算被執(zhí)行。 8. 答: (1)(AX)=1 (2)(AX)=2 (
46、3)(CX)=5 (4)(DX)=0AH (5)(CX)=1 (6)(DX)=4 9. 答:略。 10. 答: DSEG SEGMENT STRING DB 'NEXT123DF$' DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX LEA SI,STRING MOV CX,0 AGAIN: MOV AL,[SI] CMP AL,'$' JZ NEXT INC CX INC SI JMP
47、 AGAIN NEXT: MOV DX,CX MVDAT: MOV [SI]+2,AL DEC SI MOV AL,[SI] LOOP MVDAT MOV [SI]+2,AL MOV WORD PTR [SI],DX EXIT: MOV AH,4CH INT 21H CODE ENDS END START 11. 答: DSEG SEGMENT STRING DB 'It is FEB&03' COUNT=$-STRING DSEG
48、 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX LEA SI,STRING MOV CX,COUNT AGAIN: MOV AL,[SI] CMP AL,'&' JNZ NEXT MOV AL,' ' MOV [SI],AL NEXT: INC SI LOOP AGAIN EXIT: MOV AH,4CH INT 21H CODE ENDS END START
49、 12. 答: DSEG SEGMENT BLOCK DB 4,5,-2,7,8,9,2,1,0AH,1BH,87H,23H,44H,33H,45H,28H,0DH,8EH,66H,22H COUNT=$-BLOCK DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX LEA SI,BLOCK MOV CX,COUNT AGAIN: MOV AL,[SI] MOV DI,SI MOV DX,CX NEXT1: CMP AL
50、,[DI] JGE NEXT XCHG AL,[DI] NEXT: INC DI DEC DX JNZ NEXT1 MOV [SI],AL INC SI LOOP AGAIN EXIT: MOV AH,4CH INT 21H CODE ENDS END START 13. 答: (3) (4)(2) (5)(1) (6) 1B50H 1000H 1A70H 150BH 上表左側(cè)的序號,表示對應(yīng)操作完
51、成后SP指向的棧頂?shù)奈恢谩? 14. 答: SUB1 PROC MOV BX,AX MOV CL,4 ROL BX,CL MOV AX,BX AND AX,000FH MOV CX,1000 MUL CX ;千位在DX,AX,有效值在AX中 PUSH AX MOV CL,4 ROL BX,CL MOV AX,BX AND AL,0FH MOV CL,100 MUL CL ;百位在AX POP CX ADD AX,CX ;千百位在AX PUSH AX MOV CL,4
52、 ROL BX,CL MOV AX,BX AND AL,0FH MOV CL,10 MUL CL ;十位在AX POP CX ADD AX,CX ;千百十位在AX MOV CL,4 ROL BX,CL AND BX,0FH ADD AX,BX RET SUB1 ENDP SUB2 PROC MOV DX,0 MOV CX,1000 DIV CX ;千位數(shù)
53、字在AX中 MOV BX,AX MOV CL,4 ROR BX,CL ;千位數(shù)字移至BX的高4位 MOV AX,DX MOV CL,100 DIV CL ;百位數(shù)字在AL中 OR BH,AL ;千百位置BH MOV AL,AH MOV AH,0 MOV CL,10 DIV CL ;十位數(shù)字在AL中,個位在AH中 MOV CL,4 SAL AL,CL MOV BL,AL ;十位數(shù)字置BL高4位 OR BL,AH ;十位個位置BL MOV AX,BX RET SUB2 ENDP
54、 N5: MOV AL,AH MOV AH,0 MOV CL,10 DIV CL CMP BX,0 JNZ N6 CMP AL,0 JZ N7 MOV BX,2 N6: OR AL,30H INC DI MOV [DI],AL ;存十位 N7: OR AH,30H INC DI MOV [DI],AH CMP BX,0 JNZ SN MOV BX,1 SN: MOV CX,BX ; 存數(shù)位長度 INC CX ;串長=數(shù)位+1位符號位 L
55、EA DX,ASCNUM POP BX RET SUB3 ENDP SUB3 PROC PUSH BX MOV BX,0 LEA DI,ASCNUM CMP AX,0 JNS CHG NEG AX MOV BYTE PTR [DI],'-' JMP NEXT CHG: MOV BYTE PTR [DI],'+' NEXT: MOV DX,0 MOV CX,10000 DIV CX ;萬位數(shù)字在AX中 CMP AL,0 JZ N1 MOV BX,5 OR AL,30H INC DI
56、 MOV [DI],AL ;存萬位 N1: MOV AX,DX MOV DX,0 MOV CX,1000 DIV CX CMP BX,0 JNZ N2 CMP AL,0 JZ N3 MOV BX,4 N2: OR AL,30H INC DI MOV [DI],AL ;存千位 N3: MOV AX,DX MOV CL,100 DIV CL CMP BX,0 JNZ N4 CMP AL,0 JZ N5 MOV BX,3 N4: OR AL,30H INC DI
57、MOV [DI],AL ;存百位 15. 答: CODE SEGMENT ASSUME CS:CODE START: MOV AH,1 INT 21H CMP AL,'a' JB NOCHG CMP AL,'z' JA NOCHG SUB AL,20H NOCHG: MOV DL,AL MOV AH,2 INT 21H EXIT: MOV AH
58、,4CH INT 21H CODE ENDS END START 16. 答: ADDS9: INC S9 JMP TJNEXT ADDS8: INC S8 JMP TJNEXT ADDS7: INC S7 JMP TJNEXT ADDS6: INC S6 TJNEXT: INC DI DEC BH JNZ TJ1 EXIT: MOV AH,4CH INT 21H CODE ENDS END START ;鍵盤輸入的成績以逗
59、號分割 ;輸入完畢按回車結(jié)束 DSEG SEGMENT STRING DB 40,?,40 DUP(?) CJ DB 10 DUP(?) S6 DB ? S7 DB ? S8 DB ? S9 DB ? S10 DB ? DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX LEA DX,STRING MOV AH,10 INT 21H LEA DI,CJ LEA SI,STRING+2 MOV BH,0 M
60、OV AL,0 AGAIN: MOV BL,[SI] CMP BL,',' JZ NEXT CMP BL,0DH JZ NEXT SUB BL,30H MOV CL,10 MUL CL ADD AL,BL INC SI JMP AGAIN NEXT: MOV [DI],AL INC DI MOV AL,0 INC BH INC SI CMP BL,0DH JNZ AGAIN TJ: LEA DI,CJ TJ1: MOV AL,[DI] CMP AL,100
61、JZ ADDS10 CMP AL,90 JAE ADDS9 CMP AL,80 JAE ADDS8 CMP AL,70 JAE ADDS7 CMP AL,60 JAE ADDS6 ADDS10: INC S10 JMP TJNEXT 17.~21.答:略。 第5章 習題答案 略。 第6章 習題答案 1.半導體存儲器的分類如下: 2.隨機存取存儲器RAM,又稱為讀/寫存儲器,其每個存儲單元的內(nèi)容可以隨時按需要進行讀/寫操
62、作。RAM主要用來保存各種輸入/輸出數(shù)據(jù)、中間結(jié)果、與外存交換的信息,也可作堆棧使用。而ROM的內(nèi)容只能讀出,不能寫入或改寫,一般用來存放固定的程序和數(shù)據(jù)。 3.半導體存儲器的主要技術(shù)指標:存儲容量、讀/寫速度(存取時間和存儲周期)、可靠性。 4.8086CPU和存儲器連接時要考慮:存儲芯片數(shù),AB、DB和一些控制信號的連接,奇、偶片的設(shè)置,地址譯碼方式等。 5.常用的存儲器地址譯碼方式有:全地址譯碼、部分地址譯碼、線選法。 6. 需要(16k′8)/(1024′1)=128片,CPU地址線中片內(nèi)尋址10位,片外4位。 7. 8. 第7章 習題答案
63、 1.I/O接口的功能:對輸入/輸出數(shù)據(jù)進行緩沖和鎖存、對信號的形式和數(shù)據(jù)的格式進行變換、對I/O端口進行尋址、提供聯(lián)絡(luò)信號等。 2.CPU與外設(shè)之間的數(shù)據(jù)傳輸方式有程序控制方式(無條件傳輸方式和程序查詢方式)、中斷方式、DMA、通道控制和I/O處理器。 無條件傳輸方式:CPU不需要了解外設(shè)狀態(tài),直接與外設(shè)傳輸數(shù)據(jù),適用于按鈕開關(guān)、發(fā)光二極管等簡單外設(shè)與CPU的數(shù)據(jù)傳送過程。 程序查詢方式:CPU與外設(shè)傳輸數(shù)據(jù)之前,先檢查外設(shè)狀態(tài),如果外設(shè)處于“準備好”狀態(tài)(輸入設(shè)備)或“空閑”狀態(tài)(輸出設(shè)備),才可以傳輸數(shù)據(jù)。 中斷方式:外設(shè)在數(shù)據(jù)準備好之后再通知CPU,這樣,CPU在沒接到外
64、設(shè)通知前只管做自己的事情,只有接到通知時才執(zhí)行與外設(shè)的數(shù)據(jù)傳輸工作。 DMA:直接存儲器存取方式,將外設(shè)與內(nèi)存間建立起直接的通道,CPU不再直接參加外設(shè)與內(nèi)存間的數(shù)據(jù)傳輸,而是在系統(tǒng)需要進行DMA傳輸時,將CPU對地址總線、數(shù)據(jù)總線及控制總線的管理權(quán)交由DMA控制器進行控制。 通道控制和I/O處理器:主CPU啟動通道工作,通道控制器即從主存或通道存儲器中取出相應(yīng)的程序,控制數(shù)據(jù)的輸入/輸出。 3.每個I/O接口內(nèi)部一般由3類寄存器組成,CPU與外設(shè)進行數(shù)據(jù)傳輸時,各類信息在接口中進入不同的寄存器,一般稱這些寄存器為I/O端口。包括數(shù)據(jù)端口、狀態(tài)端口、控制端口。端口尋址方式有存儲器映像
65、的I/O尋址、I/O映像的I/O尋址。80X86系統(tǒng)采用后者。 4.M/:低電平,ALE:高電平,:低電平;輸入時DT/為低電平,為低電平有效;輸出時DT/為高電平,為低電平有效。 5.在外設(shè)接口電路中,經(jīng)常需要對傳輸過程中的信息進行鎖存或緩沖,所以需要鎖存器和緩沖器。 6. DATA SEGMENT AT 2000H ORG 2000H BUF DB 100 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR START: MOV AX,
66、DATA MOV DS,AX LEA SI,BUF MOV CX,100 INPUT: MOV DX,0FFE2H IN AL,DX ;讀狀態(tài)端口 TEST AL,01H ;測輸入狀態(tài)D0位 JZ INPUT ;未“準備好”轉(zhuǎn)INPUT MOV DX,0FFE0H ;讀取輸入字符 IN AL,DX MOV [SI],AL ;輸入字符存緩沖區(qū) INC SI LOOP INPUT MOV AH,4CH ;返回DOS INT 21H CODE ENDS END START 7. CODE SEGMENT ASSUME CS:CODE MAIN PROC FAR START: PUSH DS MOV AX,0 PUSH AX MOV DX,200H ;設(shè)I/O端口為
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。