日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

微型計(jì)算機(jī)原理與接口技術(shù) 第三版(張榮標(biāo))答案

 行者花雕 2020-01-14

微型計(jì)算機(jī)原理與接口技術(shù)第三版答案
第1章 練習(xí)題
1.選擇題
(1)B C A (2) A (3) D A (4) C
2.填空
(1) 10, 12
(2) 取出指令, 執(zhí)行指令
(3)
(4) 內(nèi)部碼
3.簡答題
(1)微處理器,微型計(jì)算機(jī)和微型計(jì)算機(jī)系統(tǒng)三者有何聯(lián)系與區(qū)別?
答:微處理器是把原來的中央處理單元 CPU 的復(fù)雜電路(包括運(yùn)算器和控制器)做在一片或幾片大規(guī)模集成電路的芯片上。把這種微縮的 CPU 大規(guī)模集成電路稱為微處理器。
微型計(jì)算機(jī)是以微處理器為核心,再配備上用大規(guī)模集成電路工藝制成的存儲器和 I/O 接口就構(gòu)成了微型計(jì)算機(jī)。
以微計(jì)算機(jī)為核心,再配備上系統(tǒng)軟件、I/O 設(shè)備、輔助電路和電源就構(gòu)成了微機(jī)系統(tǒng)。微型計(jì)算機(jī)系統(tǒng)包括硬件和軟件了兩大部分。
(2)計(jì)算機(jī)中為什么采用二進(jìn)制數(shù)表示?
答:計(jì)算機(jī)是一種電器設(shè)備,內(nèi)部采用的都是電子元件,用電子元件表示兩種狀態(tài)是最容易實(shí)現(xiàn)的,比如電路的通和斷、電壓高低等等,而且也穩(wěn)定和容易控制。把兩種狀態(tài)用0,1來表示,就是用二進(jìn)制數(shù)表示計(jì)算機(jī)內(nèi)部的數(shù)據(jù)。
(3)簡述程序的運(yùn)行過程。
答:即取指令—分析指令—執(zhí)行指令。根據(jù)程序計(jì)數(shù)器PC中的值從程序存儲器讀出現(xiàn)行指令,送到指令寄存器。將指令寄存器中的指令操作碼取出后進(jìn)行譯碼,分析其指令性質(zhì),然后執(zhí)行指令。
(4)設(shè)兩個(gè)正的浮點(diǎn)數(shù)如下。

1)若是否一定有?
2)若S1和S2均為規(guī)格化的數(shù),且,是否一定有?
答:1)若 不一定有。
若S1 =11100101B,S2 =00100101B
當(dāng)P1 =01B時(shí),P2 =10B時(shí),


2)若S1和S2均為規(guī)格化的數(shù),且,一定有。
浮點(diǎn)規(guī)格表示要求對浮點(diǎn)二進(jìn)制正數(shù),其尾數(shù)數(shù)字S部分的最高位必須是1,故不會出現(xiàn)上述情況,當(dāng)時(shí),一定有 。
4.計(jì)算題
(1)計(jì)算十進(jìn)制數(shù)-47的原碼、反碼、補(bǔ)碼(8位二進(jìn)制的形式表示),并說明8位二進(jìn)制原碼、反碼、補(bǔ)碼所能表示的數(shù)值范圍(用十進(jìn)制表示)。
解:[-47]原 =10101111
[-47]反 =11010000
[-47]補(bǔ) =11010001
8位二進(jìn)制原碼表示的范圍為-127~+127,反碼表示的范圍為-127~+127,補(bǔ)碼表示的范圍為-128~+127。
(2)將十進(jìn)制數(shù)658.125轉(zhuǎn)換成二進(jìn)制、八進(jìn)制、十六進(jìn)制和BCD碼。
解: 658/16=41…余數(shù)為2
41/16=2…余數(shù)為9
2/16=0…余數(shù)為2
0.125×16=2 小數(shù)部分為0,整數(shù)部分為2
658.125D = 292.2H = 001010010010.0010B = 1222.1Q = 011001011000.000100100101(BCD數(shù))
(3)設(shè)浮點(diǎn)數(shù)的表示格式為階碼4位(包括階符1位)、尾數(shù)8位(包括尾符1位)。階碼和尾數(shù)均用補(bǔ)碼表示。寫出二進(jìn)制數(shù)X=-0.0010110011B的規(guī)格化浮點(diǎn)數(shù)表示。
解: X = -0.0010110011B = -0.10110011 ×
S = 0100110
Sf = 1
J = 110
Jf = 1
規(guī)格化浮點(diǎn)數(shù)為1 110 1 0100110
(4)若X=-79,Y=+97,求[-X]補(bǔ),[Y]補(bǔ),[X-Y]補(bǔ),[-X+Y]補(bǔ),[-X-Y]補(bǔ),要求給出求解過程,并指明運(yùn)算后的溢出情況。
解:[-X]補(bǔ)=01001111
[X]補(bǔ)=10110001
[Y]補(bǔ)=01100001
[-Y]補(bǔ)=10011111
[X-Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)=01010000
10110001
+10011111
1 01010000
CS=1,CP=0,負(fù)溢出
[-X+Y]補(bǔ)= [-X]補(bǔ)+[Y]補(bǔ)=10110000
01001111
+01100001
10110000
CS=0,CP=1,正溢出
[-X-Y]補(bǔ)=[-X]補(bǔ)+ [-Y]補(bǔ)=11101110
01001111
+10011111
11101110
CS=0,CP=0,無溢出

第2章 練習(xí)題
1.選擇題
(1)D (2)A (3)B (4)C (5)C (6)B (7)A (8)A
2 填空題
(1) 地址總線的寬度,00000H~0FFFFFH
(2)SS,DS,CS,ES
(3)第33 ()引腳
(4) SS,DS
(5) 奇地址區(qū),偶地址區(qū),高 8 位,低 8 位
3.簡答題
(1) 什么是指令周期?什么是總線周期?一個(gè)總線周期至少包括幾個(gè)時(shí)鐘周期?
答:指令周期是一條指令執(zhí)行所需的時(shí)鐘周期,CPU在執(zhí)行指令過程中,凡需執(zhí)行訪問存儲器或訪問 I/O 端口的操作都統(tǒng)一交給 BIU 的外部總線完成,進(jìn)行一次訪問所需的時(shí)間稱為一個(gè)總線周期。一般一個(gè)基本的總線周期由 4 個(gè)時(shí)鐘周期組成。

(2) 8086CPU 中,標(biāo)志寄存器包含哪些標(biāo)志位?各標(biāo)志位為‘0’ , ‘1’分別表示什么含義?
答:標(biāo)志寄存器包含狀態(tài)標(biāo)志和控制標(biāo)志,狀態(tài)標(biāo)志包括符號標(biāo)志、零標(biāo)志、奇/偶標(biāo)志、進(jìn)位標(biāo)志、輔助進(jìn)位標(biāo)志、溢出標(biāo)志,控制標(biāo)志包括方向標(biāo)志、中斷標(biāo)志、跟蹤標(biāo)志。
符號標(biāo)志(SF)用來指出前面運(yùn)算執(zhí)行后的結(jié)果是正還是負(fù),結(jié)果為負(fù),則SF=1;結(jié)果為正,則SF=0。零標(biāo)志(ZF)用來指出前面運(yùn)算執(zhí)行后的結(jié)果是否為零,結(jié)果為零,則ZF=1;結(jié)果為非零,則ZF=0。奇/偶標(biāo)志(PF)用來指出前面運(yùn)算結(jié)果的低8位中所含的1 的個(gè)數(shù)為偶數(shù)還是奇數(shù),結(jié)果為偶,PF=1;結(jié)果為奇,PF=0。進(jìn)位標(biāo)志(CF),當(dāng)執(zhí)行加法運(yùn)算使最高位產(chǎn)生進(jìn)位或執(zhí)行減法運(yùn)算引起最高位產(chǎn)生借位時(shí),CF=1,否則CF=0。輔助進(jìn)位標(biāo)志(AF),當(dāng)執(zhí)行加法運(yùn)算使第3位往第4位上有進(jìn)位或減法運(yùn)算使第3位從第4位有借位時(shí),則AF=1,否則AF=0。溢出標(biāo)志(OF),當(dāng)運(yùn)算的結(jié)果超出了范圍是就會產(chǎn)生溢出,OF=1,否則OF=0。方向標(biāo)志(DF)在串操作指令中用來控制串操作過程中地址的增減,當(dāng)DF=0,則地址不斷遞增;當(dāng)DF=1,則地址會不斷遞減。中斷標(biāo)志(IF)在中斷過程中控制是否響應(yīng)可屏蔽中斷的請求,當(dāng)IF=0,則CPU不能響應(yīng)可屏蔽中斷請求;當(dāng)IF=1,則CPU可以接受可屏蔽中斷請求。跟蹤標(biāo)志(TF)在中斷過程中控制是否響應(yīng)單步中斷的請求,當(dāng)TF=1,則CPU按跟蹤你方式執(zhí)行指令;當(dāng)TF=0,則CPU不會響應(yīng)單步中斷。
(3) 8086CPU 中有哪些通用寄存器和專用寄存器?說明他們的作用。
答:4個(gè)通用寄存器,AX:16位的累加器;BX:16位的基數(shù)寄存器,可用于寄存器間接尋址;CX:16位的計(jì)數(shù)寄存器,可作為程序循環(huán)計(jì)數(shù)寄存器;DX:16位的數(shù)據(jù)寄存器,可作為I/O指令專用間接尋址寄存器。
4個(gè)專用寄存器,BP:16位的基數(shù)指針寄存器,用來存放位于堆棧段中的一個(gè)數(shù)據(jù)區(qū)基址的偏移地址;SP:16位的堆棧指針寄存器,存放棧頂?shù)钠频刂?;SI:16位的源變址寄存器,用于存放當(dāng)前數(shù)據(jù)段的偏移地址;DI:16位的目的變址寄存器,也用來存放當(dāng)前數(shù)據(jù)段的偏移地址。
(4) 在 8086CPU 中,已知 CS 寄存器和 IP 寄存器的內(nèi)容分別如下所示,請確定其物
理地址。

  1. CS=1000H ,IP=2000H
    答:物理地址: CS*16+IP=10000H+2000H=12000H
  2. CS=1234H ,IP=0C00H
    答:物理地址: CS*16+IP=12340H+0C00H=12F40H
    (5)設(shè)(AX)=2345H,(DX)=5219H,請指出兩個(gè)數(shù)據(jù)相加或相減后,FLAG 中狀態(tài)標(biāo)志位的狀態(tài)。
    答:相加 : 0010 0011 0100 0101
    + 0101 0010 0001 1001
    0111 0101 0101 1110
    CF=0,SF=0,ZF=0,AF=0,OF=0,PF=0
    相減: 0010 0011 0100 0101
  • 0101 0010 0001 1001
    1101 0001 0010 1100
    CF=1,SF=1,ZF=0,AF=1,OF=1,PF=0

(6) 8086CPU 在最小模式下構(gòu)成計(jì)算機(jī)系統(tǒng)至少應(yīng)該包括哪幾個(gè)基本的部分?
答:一片8284A時(shí)鐘發(fā)生器,三片8282或74LS373地址鎖存器,兩片8286總線接收器。

(7)簡述堆棧指示器SP有什么功能?堆棧的操作過程是怎樣的?試舉例說明。
答:堆棧指示器(SP )存放棧頂?shù)钠频刂罚员愦嫒∥挥诋?dāng)前堆棧段中的數(shù)據(jù)。
舉例:PUSH BX ;將寄存器BX的內(nèi)容壓入堆棧。
操作過程分析:執(zhí)行PUSH指令時(shí),SP先自動(dòng)減2,BX的低8位放入SP所指單元中,高8位放入SP+1所指單元中。

第3章 練習(xí)題
1.選擇題
(1)D (2)C (3)A (4)A
2.填空題
(1)字節(jié)遞增 8DH,5CH,3BH,1AH
(2)遞增
(3)60H 0
(4)1F02C
3. 問答題
(1)試分別說明換碼指令和串操作指令所用的隱含寄存器及標(biāo)志位,并說明各自的工作過程。
答:換碼指令XLAT所用的隱含寄存器為BX和AL。指令“XLAT”的工作過程:將BX和AL中的值相加,把得到的值作為地址,然后將此地址所對應(yīng)的單元中的值取到AL中。
串操作指令所用的隱含寄存器和標(biāo)志位為CX、SI、DI和DF。字符串傳送指令“REP MOVSB”的工作過程:將DS:SI邏輯地址所指存儲單元的字節(jié)傳送到ES:DI邏輯地址所指的內(nèi)存單元中,當(dāng)DF=0時(shí),SI和DI均增1,CX減1;當(dāng)DF=1時(shí),SI和DI均減1,CX減1。重復(fù)執(zhí)行上述操作,直到CX=0時(shí)停止。

(2)RET與IRET兩條指令有何區(qū)別?并說明各自的應(yīng)用場合。
答:RET是從堆棧中彈出斷點(diǎn)地址,裝入IP或IP與CS中,從而段內(nèi)返回的目的。主要用于子程序的返回。IRET是中斷返回指令,是專門為中斷服務(wù)程序返回設(shè)計(jì)的。

(3)試分別舉例說明8086CPU乘法與除法指令所用的隱含寄存器。
答:乘法指令有無符號數(shù)乘法指令MUL和有符號數(shù)乘法指令I(lǐng)MUL。MUL隱含寄存器AX,IMUL隱含寄存器AX和DX。如指令“MUL DL”的功能是將DL中的內(nèi)容與AL中的內(nèi)容相乘,結(jié)果放在AX中。
除法指令也有無符號數(shù)除法指令DIV和有符號數(shù)除法指令I(lǐng)DIV。DIV隱含寄存器AX,IDIV隱含寄存器AX和DX。如指令“IDIV BX”的功能是將DX和AX中的32位有符號數(shù)除以BX中的16位有符號數(shù),商在AX中,余數(shù)在DX中。
(4)簡述堆棧指示器SP有什么功能?堆棧的操作過程是怎樣的?試舉例說明。(教材P85)
(5)8086CPU有哪些操作數(shù)的尋址方式?請分別舉例說明。
答:8086CPU中操作數(shù)尋址可分為4種:立即尋址、寄存器尋址、存儲器尋址和I/O端口尋址。立即尋址如MOV AX,3412H。寄存器尋址如MOV AX,BX。存儲器尋址可分為五類:直接尋址如MOV AX,[7834H];寄存器間接尋址如MOV AX,[BX];寄存器相對尋址如MOV AX,[BX+12H];基址加變址尋址方式如MOV AX,[BX+SI];相對的基址和變址尋址如MOV AH,[BX+SI+2468H]。I/O端口尋址包括兩類:直接端口尋址如IN AL,27H;間接端口尋址如OUT DX,AL。
4.請指出下列指令中源操作數(shù)和目的操作數(shù)的尋址方式。
(1)MOV SI,120 ;目的操作數(shù)為寄存器尋址,源操作數(shù)為立即尋址;
(2)MOV BP,[BX] ;目的操作數(shù)為寄存器尋址,源操作數(shù)為寄存器間接尋址;
(3)MOV BX,[200] ;目的操作數(shù)為寄存器尋址,源操作數(shù)為直接尋址;
(4)PUSH DS ;源操作數(shù)為寄存器尋址;
(5)POP BX ;目的操作數(shù)為寄存器尋址;
(6)AND DL,[BX+SI+30H] ;目的操作數(shù)為寄存器尋址,源操作數(shù)為相對的基址和變址尋址;
5.請寫出如下程序片段中每條邏輯運(yùn)算指令執(zhí)行后標(biāo)志 ZF、SF、和 PF 的狀態(tài):
MOV AL,4CH ; ZF不變,SF不變,PF不變
AND AL,0F0H ; ZF=0 ,SF= 0 ,PF=0
OR BL,4CH ; ZF=0 ,SF= 0 ,PF=0
XOR AL,AL ; ZF=1, SF= 0 ,PF=1
6.請寫出如下程序片段中每條算術(shù)運(yùn)算指令執(zhí)行后標(biāo)志 CF、ZF、SF、OF、PF 和 AF 的狀態(tài):
MOV BL, 54H ; 各標(biāo)志位保持不變
ADD BL, 4BH ; CF=0, ZF=0 ,SF= 1 ,OF=1 ,AF=1,PF=0
CMP BL, 0B6H ; CF=1, ZF=0 ,SF=1, OF=0 ,AF=0 ,PF=0
SUB BL, BL ; CF=0 ,ZF=1 ,SF= 0 ,OF=0, AF=1,PF=0
INC BL ; CF=0 ,ZF=0 ,SF=0, OF=0 ,AF=0, PF=0
7.(DS)=1000H,(SS)=2500H,(SI)=0100H,(BX)=0800H,(BP)=0600H,指出下列指令的目的操作數(shù)字段尋址方式,并計(jì)算目的操作數(shù)字段的物理地址。
(1) MOV [BX], CX
目的操作數(shù)為寄存器間接尋址
目的操作數(shù)的物理地址為:DS×16+0800H=10800H
(2) MOV [2000H], BX
目的操作數(shù)為直接尋址
目的操作數(shù)的物理地址為:DS×16+2000H=12000H
(3) MOV [BP], BX
目的操作數(shù)為寄存器間接尋址
目的操作數(shù)的物理地址為:SS×16+0600H=25600H
(4) MOV [BP+200], BX
目的操作數(shù)為寄存器相對尋址
目的操作數(shù)的物理地址為:SS×16+0600H+C8H=256C8H
(5) MOV [BX+300][SI], AX
目的操作數(shù)為相對基址加變址尋址
目的操作數(shù)的物理地址為:DS×16+0800H+12CH+0100H=10A2CH
8.已知(SS)=800H,(SP)=0040H,(CX)=0AF0H,(DX)=201H。下列指令連續(xù)執(zhí)行,請指出每條指令執(zhí)行后SS、SP、AX、BX寄存器中的內(nèi)容是多少?
PUSH CX ;SS=0800H,SP=003EH,AX不變,BX不變
PUSH DX ;SS=0800H,SP=003CH,AX不變,BX不變
POP AX ;SS=0800H,SP=003EH,AX=0201H,BX不變
POP BX ;SS=0800H,SP=0040H,AX=0201H,BX=0AF0H
9.閱讀下列各小題的指令序列,在后面空格中填入該指令序列的執(zhí)行結(jié)果。
(1) MOV DL,37H
MOV AL,85H
ADD AL,DL
DAA
AL= 22H , BL= 37H ,CF= 1
(2) MOV DX,1F45H
STC
MOV CX,95
XOR CH,0FFH
SBB DX,CX
DX= 1FB0H ,CF= 1
10.已知程序段如下。
CMP CX,BX
JNC L1
JNC L2
JMP L3
假設(shè)有以下三組CX,BX值,那么在程序執(zhí)行后,分別轉(zhuǎn)向哪里?
(1)(CX)=D301H,(BX)=D301H
答:轉(zhuǎn)向 L1
(2)(CX)=2E50H,(BX)=8301H
答:轉(zhuǎn)向 L2
(3)(CX)=477BH,(BX)=10DCH
答:轉(zhuǎn)向 L1
11.設(shè)4個(gè)BCD碼DT1、DT2、DT3、DT4分別放在AL、AH、CL、CH的低4位,請編寫程序段,將這4個(gè)數(shù)按如下要求合并存放到BX寄存器中。
BX DT1 DT2 DT3 DT4
解:程序段如下:
MOV BX,00H
AND AX,0F0FH
AND CX,0F0FH
MOV BL,CL
MOV CL,4
SHL BL,CL
ADD BL,CH
MOV BH,AL
SHL BH,CL
ADD BH,AH
12.請用串操作指令實(shí)現(xiàn)將10~99這90個(gè)數(shù)從2100H開始的內(nèi)存單元搬到3100H開始的內(nèi)存單元處。
解:程序段如下:
MOV DS,2000H
MOV ES,3000H
CLD
MOV CX,90
MOV SI,100H
MOV DI,100H
REP MOVSB

第4章 練習(xí)題
1.選擇題
(1)BC (2)A (3)C (4)D
2. 問答題
(1)變量和標(biāo)號有什么異同之處?
答:變量和標(biāo)號都有三種屬性:段地址、偏移地址及類型。變量是存放在存儲器單元中的操作數(shù),其值可以改變,變量的類型可以是BYTE(字節(jié))、WORD(字)、DWORD(雙字)等;標(biāo)號是可執(zhí)行指令語句地址的符號表示,即用標(biāo)志符來表示地址,標(biāo)號的類型可以是NEAR(近)或FAR(遠(yuǎn))。
(2)簡述匯編語言中偽指令的基本作用和特點(diǎn),與機(jī)器指令相比有何區(qū)別?
答:偽指令語句沒有對應(yīng)的機(jī)器代碼,經(jīng)匯編程序匯編后并不產(chǎn)生目標(biāo)代碼,由匯編程序?qū)υ闯绦騾R編期間進(jìn)行處理,主要作用是完成變量的定義、存儲器的分配、段結(jié)構(gòu)的定義,段的分配、過程的定義、程序開始和結(jié)束的指示等。而機(jī)器指令由CPU來執(zhí)行,它的每一條指令語句在源程序匯編時(shí)都要產(chǎn)生可供計(jì)算機(jī)執(zhí)行的指令代碼(即目標(biāo)代碼)。
(3)試簡述宏調(diào)用與子程序調(diào)用各自的作用和相互之間的區(qū)別。
答:宏調(diào)用的作用是在定義宏指令后,通過宏指令來表示對應(yīng)的程序片段。子程序調(diào)用的作用是定義一個(gè)由主程序可以用CALL指令調(diào)用的程序。兩者的區(qū)別:宏調(diào)用比子程序調(diào)用執(zhí)行速度快;子程序調(diào)用使用CALL語句實(shí)現(xiàn),在CPU執(zhí)行時(shí)進(jìn)行處理,而宏調(diào)用由宏匯編軟件MASM中的宏處理程序來處理;子程序調(diào)用比宏調(diào)用節(jié)省內(nèi)存空間;宏調(diào)用比子程序調(diào)用靈活。
(4)8086匯編語言程序中段的類型有幾種?段定義語句中定位類型、組合類型和類別各起什么作用?
答:段類型有四類:數(shù)據(jù)段、代碼段、堆棧段、附加段。定位類型用于規(guī)定20位的段起始地址。組合類型規(guī)定該段與其他段的位置關(guān)系。類別名的主要作用是將所有分類名相同的邏輯段組成一個(gè)段組。

3.根據(jù)題意定義變量
(1) 將字節(jié)數(shù)據(jù)12H,567H存放在變量DATA1的存儲單元中。
DATA1 DW 12H,567H
(2) 將字節(jié)數(shù)據(jù)56H,0BCH存放在變量DATA2的存儲單元中。
DATA2 DB 56H,0BCH
(3)在DATA3為首地址的存儲單元中連續(xù)存放字節(jié)數(shù)據(jù)5個(gè)‘A’,6個(gè)(1,2,3),20個(gè)空單元。
DATA3 DB 5DUP(‘A’),6DUP(1,2,3), 20DUP(?)
(4) 在STR1為首地址的存儲單元中存放字符串‘HOW ARE YOU’。
STR1 DB ‘HOW ARE YOU’
4.已知某數(shù)據(jù)段經(jīng)匯編后數(shù)據(jù)在存儲器中存放格式如下圖,試寫出數(shù)據(jù)段定義。

DATA1 00H
(字節(jié)數(shù)據(jù)) 0AH
10H
DATA2 04H

復(fù)
15

(字節(jié)數(shù)據(jù)) 08H
08H
08H
09H
DATA3 77H
(字?jǐn)?shù)據(jù)) 65H
6CH
63H
6FH
6DH

解:DATA1 DB 00H,0AH,10H
DATA2 DB 15 DUP(04H,3DUP(08H),09H)
DATA3 DW 6577H,636CH,6D6FH
5.設(shè)數(shù)據(jù)段數(shù)據(jù)定義如下。
DATA SEGMENT
STR DB ‘GOOD MORNING!’,’$’
ADR DW 3 DUP(0,2,5)
DISP DW 3
DATA ENDS
(1)畫出內(nèi)存分配圖。
STR 47H
(字節(jié)數(shù)據(jù)) 4FH
4FH
44H
20H
4DH
4FH
52H
4EH
49H
4EH
47H
21H
24H
ADR 00H

復(fù)
3

(字?jǐn)?shù)據(jù)) 00H
02H
00H
05H
00H
DISP 03H
(字?jǐn)?shù)據(jù)) 00H
(2)分別用兩種求偏移量的指令將STR的偏移地址送BX.
解:①LEA BX,STR
②MOV BX,OFFSET STR
6.寫出以下指令在匯編后目標(biāo)程序中對應(yīng)的指令。
7.同時(shí)對于兩條指令中分別出現(xiàn)的兩個(gè)AND和兩個(gè)OR是不是同一種含義?為什么?
(1)MOV BX,1234H GT 1000H對應(yīng)MOV BX,0FFFFH
(2)SBB DX,1024 SHR 3對應(yīng)SBB DX,0080H
(3)AND AL,7 AND 47H對應(yīng)AND AL,07
(4)OR DL,NOT(7 OR 54H)對應(yīng)OR DL,A8
(5)MOV AX,HIGH(1000H+5)對應(yīng)MOV AX,0010
(6)ADD AX,HIGH 1000H+5對應(yīng)ADD AX,0015
注意:匯編后顯示的立即數(shù)均為16進(jìn)制數(shù)
第(3)、(4)條指令中出現(xiàn)的兩個(gè)AND和OR中,前面的AND和OR是指令系統(tǒng)中的指令助記符,是在程序執(zhí)行時(shí)進(jìn)行運(yùn)算的;后面的AND和OR是邏輯運(yùn)算符,是在編程過程中進(jìn)行運(yùn)算的,邏輯運(yùn)算對象只能是常數(shù),其結(jié)果也是常數(shù)。
8.程序在數(shù)據(jù)段中定義的數(shù)據(jù)如下。
DATA SEGMENT
VAR1 DB 4,6
VAR2 DD 200 DUP(?)
DATA ENDS
以下三條指令分別匯編成什么?(可立即數(shù)方式表示)
(1)MOV CL,LENGTH VAR2匯編成MOV CL,C8
(2)MOV BL,TYPE VAR1匯編成MOV BL,01
(3)MOV BX,SIZE VAR2匯編成MOV BX,0320
注意:匯編后顯示的立即數(shù)均為16進(jìn)制數(shù)

9.給定宏定義如下。
DIF MACRO X,Y
MOV AX,X
SUB AX,Y
ENDM
ABSDIF MACRO V1,V2,V3
LOCAL NEXT
PUSH AX
DIF V1,V2
CMP AX,0
JGE NEXT
NEG AX
NEXT: MOV V3,AX
POP AX
ENDM
試展開以下調(diào)用,并判定調(diào)用是否有效(展開后的指令必須符合8086CPU指令系統(tǒng)要求)。
(1)ABSDIF DX,AX,CX
+PUSH AX
+MOV AX,DX
+SUB AX,AX
+CMP AX,0
+JGE NEXT
+NEG AX
+NEXT:MOV CX,AX
+POP AX
(2)ABSDIF [100],[DI],BX
+PUSH AX
+MOV AX,[100]
+SUB AX,[DI]
+CMP AX,0
+JGE NEXT
+NEG AX
+NEXT:MOV BX,AX
+POP AX
(3)ABSDIF [BX+SI],[BP],100H;調(diào)用無效。語法錯(cuò)誤(立即數(shù)的使用)。

10.寫一個(gè)宏定義,要求能把任意一個(gè)寄存器的最低位移至另一個(gè)寄存器的最高位中。
解:宏定義如下:
SMOV MACRO X1,X2
AND X1,0001H
ROR X1,1
AND X2,7FFFH
OR X2,X1
ENDM
11.利用DOS功能調(diào)用從鍵盤輸入60個(gè)字符到緩沖區(qū)BUF中,在按下ENTER鍵后在屏幕上顯示這些字符。請寫出程序段。
解:程序段如下:
DATA SEGMENT
BUF DB 60 ;用戶定義存放60個(gè)字節(jié)的緩沖區(qū)
NUMB DB ? ;系統(tǒng)填入實(shí)際輸入字符字節(jié)數(shù)
CHARS DB 60 DUP(?) ;存放輸入字符的ASCII碼值
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET BUF
MOV AH,0AH
INT 21H
XOR BX,BX
MOV BL,NUMB
MOV CHARS[BX],’$’ ;字符串后加一個(gè)結(jié)束符
MOV DL,0DH ;回車
MOV AH,2
INT 21H
MOV DL,0AH ;換行
MOV AH,2
INT 21H
MOV DX,OFFSET CHARS
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START

第5章 練習(xí)題
2.讀程序
(1)欲把AX寄存器的內(nèi)容倒序,即D15→D0,D14→D1,…,D0→D15,請?jiān)诳崭裉幪钌险_的指令。
MOV BX,AX
MOV CX,16
AGAIN: RCL BX,1
RCR AX,1
LOOP AGAIN
(2)若要完成50-(1+2+3+4+5)的運(yùn)算,并把最終運(yùn)算結(jié)果轉(zhuǎn)換成分離8421BCD碼,高位->AH,低位->AL,請?jiān)诳崭裉幪钌险_的指令。
MOV CX,5
MOV AX,50
NEXT: SUB AX,CX
LOOP NEXT
AAM
(3)有一輸出設(shè)備,8位狀態(tài)端口地址為62H,最高位為時(shí),CPU可以向該設(shè)備的8位數(shù)據(jù)端口(地址61H)發(fā)送數(shù)據(jù);否則,等待。根據(jù)題意,請?jiān)诳崭裉幪钌险_的指令。
WAIT: IN AL,62H
TEST AL,80H
JNZ WAIT
OUT 61H,AL
(4) 要求把源串AREA1中的100個(gè)字傳送給目的串AREA2,指針按地址增量方向修改,請?jiān)诳崭裉幪顚懻_的指令。
MOV SI,OFFSET AREA1
MOV DI,OFFSET AREA2
MOV CX,100
CLD
REP MOVSW
2.編程題
(1)試編寫一程序,把數(shù)組STRING中存放的20個(gè)8位二進(jìn)制數(shù)分成正數(shù)數(shù)組和負(fù)數(shù)數(shù)組,并統(tǒng)計(jì)正數(shù)、負(fù)數(shù)和零的個(gè)數(shù),結(jié)果分別存放在P、M、Z三個(gè)單元。
DATA SEGMENT
STRING DB 20 DUP(?)
POSI DB 20 DUP(?)
NEGA DB 20 DUP(?)
P DB 00H
M DB 00H
Z DB 00H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
XOR BX,BX
MOV SI,BX
MOV DI,BX
MOV CX,20
LP: MOV AL,STRING[BX]
CMP AL,0
JGE P1
MOV NEGA[DI],AL
INC DI
INC M
JMP NEXT
P1: JNE P2
INC Z
JMP NEXT
P2: MOV POSI[SI],AL
INC SI
INC P
NEXT: INC BX
LOOP LP
MOV AH,4CH
INT 21H
CODE ENDS
END START
(2)試編寫一程序,完成10個(gè)一位十進(jìn)制數(shù)累加,累加結(jié)果以分離式BCD碼形式存放于AH(高位),AL(低位)寄存器。
DATA SEGMENT
STRING DB ‘1112220004’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV CX,10
XOR BX,BX
MOV AX,0
LP: ADD AL,STRING[BX]
AAA
INC BX
LOOP LP
MOV AH,4CH
INT 21H
CODE ENDS
END START
(3)試編寫一程序,將2個(gè)字節(jié)的二進(jìn)制數(shù),變換成用ASCII碼表示的四位十六進(jìn)制數(shù)(用四字節(jié)表示)。
DATA SEGMENT
NUM DW 12345 ;0~65535
ASC DB 4 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV BX,NUM
LEA DI,ASC
MOV CX,0404H
LP1: ROL BX,CL
MOV DL,BL
AND DL,0FH
CMP DL,10
JB LP2
ADD DL,7
LP2: ADD DL,‘0’
MOV [DI],DL
INC DI
DEC CH
JNZ LP1
MOV AH,4CH
INT 21H
CODE ENDS
END START
(4)試用串操作指令SCAS,在10個(gè)字節(jié)的數(shù)據(jù)塊BLOCK中,搜索與2EH相等的數(shù),若找到,則將該數(shù)地址存放于ADR中,并在SIGNAL單元中作標(biāo)記0FFH;否則,SIGNAL為00H。
DATA SEGMENT
BLOCK DB 26H,27H,28H,29H,2AH,2BH,2CH,2DH,2EH,2FH
ADR DW ?
SIGNAL DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV DI,OFFSET BLOCK
CLD
MOV CX,10
MOV AL,2EH
REPNZ SCASB
JNZ AA
MOV SIGNAL,0FFH
DEC DI
MOV ADR,DI
JMP NEXT
AA: MOV SIGNAL,00H
NEXT: MOV AH,4CH
INT 21H
CODE ENDS
END START
(5)請按如下說明編寫子程序。
子程序功能:把用ASCII碼表示的兩位十進(jìn)制數(shù)轉(zhuǎn)換為壓縮BCD碼。
入口參數(shù):DH:十位數(shù)的ASCII碼,DL:個(gè)位數(shù)的ASCII碼。
出口參數(shù):AL:對應(yīng)壓縮BCD碼。
TRANS PROC NEAR
PUSH CX
PUSH DX
MOV CL,4
SUB DH,‘0’
SUB DL,‘0’
SHL DH,CL
ADC DL,DH
MOV AL,DL
POP CX
POP DX
RET
TRANS ENDP
(6)編寫一程序,計(jì)算100個(gè)16位正整數(shù)之和,如果和不超過16位字的范圍(0~65535),則保存其和到SUM,如超過則顯示“Overflow!”。
DATA SEGMENT
DAT1 DW 25 DUP(0034H,0345H,0000H,0000H)
SUM DW ?
STRING DB ‘Overflow!’,0DH,0AH,’$’
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET DAT1
MOV BX,OFFSET SUM
MOV CX,100
XOR AX,AX
L1: ADC AX,[SI]
JC OVER
INC SI
INC SI
LOOP L1
MOV [BX],AX
JMP NEXT
OVER: MOV DX,OFFSET STRING
MOV AH,9
INT 21H
NEXT: MOV AH,4CH
INT 21H
CODE ENDS
END START

3.問答題
(1)匯編語言程序的開發(fā)有哪些步驟,其工作過程需哪些軟件來實(shí)現(xiàn)?可產(chǎn)生哪些輸出文件?
答:步驟如下:1)明確任務(wù),確確算法 2)繪制流程圖 3)編寫匯編語言程序 4)上機(jī)調(diào)試程序。
編寫匯編語言程序時(shí):1)需要EDIT.COM軟件建立源程序文件,并保存為.ASM文件。2)需MASM.EXE軟件匯編源程序文件,可產(chǎn)生擴(kuò)展名為OBJ的目標(biāo)文件、擴(kuò)展名為LST的列表文件和擴(kuò)展名為CRF的對照文件。3)需要LINK.EXE軟件與目標(biāo)文件連接,可產(chǎn)生擴(kuò)展名為EXE的可執(zhí)行文件、擴(kuò)展名為MAP的列表文件和擴(kuò)展名為LIB的庫文件。
上機(jī)調(diào)試時(shí),需要DEBUG.EXE調(diào)試軟件。
(2)程序結(jié)束軟中斷有哪幾種實(shí)現(xiàn)方法?有什么區(qū)別?
答:程序結(jié)束軟中斷有三種實(shí)現(xiàn)方法:INT 20H、INT 21H、INT 27H。
INT 20H的功能是終止當(dāng)前進(jìn)程,關(guān)閉所有打開的文件,清除磁盤緩沖區(qū),返回控制臺的命令接收狀態(tài),實(shí)現(xiàn)程序退出時(shí),不需要任何入口參數(shù)。INT 21H用于系統(tǒng)功能調(diào)用,該軟中斷包括3種情況:無返回程序結(jié)束(入口參數(shù)AH=0,無返回號)、程序結(jié)束并駐留(入口參數(shù)AH=31H,返回號AL=1)、帶返回程序結(jié)束(入口參數(shù)AH=4CH,返回號AL=1)。INT 27H用于駐留退出,入口參數(shù)DX=XX設(shè)置駐留程序的長度。
(3)用匯編語言編程序有哪幾種結(jié)構(gòu)?
答:順序結(jié)構(gòu);分支結(jié)構(gòu);循環(huán)結(jié)構(gòu);子程序結(jié)構(gòu)。
(4)子程序結(jié)構(gòu)中,主程序和子程序之間參數(shù)傳遞有哪幾種方法?
答:參數(shù)傳遞的實(shí)現(xiàn)方案可分為:寄存器傳送、固定緩沖區(qū)傳送、地址表傳送、堆棧傳送。

第6章 練習(xí)題
1.選擇題
(1)C ,(2)B,(3)C

2.填空題
(1)隨機(jī)存取存儲器,丟失,只讀存儲器,不會丟失
(2)電荷,電荷泄露,刷新
(3)128,10
(4)48000H,4FFFFH,32K
3.簡答題
(1)半導(dǎo)體存儲器的主要性能指標(biāo)有哪些?
答:半導(dǎo)體存儲器的主要性能指標(biāo)有:存儲容量、存取速度、功耗、可靠性、價(jià)格。
(2)存儲器芯片由哪幾部分組成?各部分功能是什么?
答:存儲芯片由存儲矩陣、地址譯碼器、存儲器控制電路、三態(tài)雙向緩沖器組成。存儲矩陣的功能是把能夠寄存二進(jìn)制信息的基本電路的集合體的這些基本存儲電路按陣列形式排列和編址;地址譯碼器的功能是將CPU發(fā)送來的地址信號進(jìn)行譯碼后產(chǎn)生地址編碼,以便選中存儲矩陣中的某一個(gè)或某幾個(gè)基本存儲電路,使其在存儲器控制邏輯的控制下進(jìn)行讀/寫操作;存儲器控制電路通過相應(yīng)的信號引腳,接收來自CPU或外部電路的控制信號,經(jīng)組合變換,產(chǎn)生芯片內(nèi)部各部分的控制信號;三態(tài)雙向緩沖器的作用是使組成半導(dǎo)體RAM的各個(gè)存儲芯片很方便地與系統(tǒng)數(shù)據(jù)總線相連接。
(3)簡述SRAM和DRAM的各自特點(diǎn)。
答:SRAM的特點(diǎn)為速度快,不必配合內(nèi)存刷新電路,可提高整體的工作效率,但集成度低,功耗較大,相同的容量體積較大。DRAM的特點(diǎn)是需要刷新來補(bǔ)充電荷。
(4)DRAM為什么要刷新?存儲系統(tǒng)如何進(jìn)行刷新?
答:DRAM由電容組成,通過高低電平表示存儲的狀態(tài),由于是電容器作為載體,產(chǎn)生電荷泄露,故需要刷新來補(bǔ)充電荷。刷新按行進(jìn)行,即每當(dāng)CPU或外部電路對動(dòng)態(tài)存儲器提供一個(gè)行地址信號,使存儲體中的某一行被選中,同時(shí)令列地址無效,即關(guān)閉所有的列選通道,這樣,該行中所有基本存儲電路的數(shù)據(jù)將在內(nèi)部讀出,并在相應(yīng)列刷新放大器作用下被放大和刷新。
(5)什么是高速緩沖器?與主體有什么關(guān)系?基本工作原理是什么?
答:高速緩沖器為緩存,位于CPU與內(nèi)存之間的臨時(shí)存儲器,以提高CPU數(shù)據(jù)輸入輸出速率。高速緩沖器的原理是根據(jù)局部性原理,把主存儲器中訪問概率高的內(nèi)容存放在緩沖器中,當(dāng)CPU需要讀取數(shù)據(jù)時(shí)就首先在緩沖器中查找是否有所需內(nèi)容,如果有則直接從緩沖器中讀??;若沒有則再主存中讀取該數(shù)據(jù),然后同時(shí)送往CPU的高速緩沖器。
3.一個(gè)5124的RAM芯片需要多少根地址線?多少根數(shù)據(jù)線?若要組成一個(gè)64K8的存儲器,需要多少個(gè)RAM芯片?多少芯片組?多少根芯片組選擇地址線?
答:一個(gè)5124的RAM芯片需要9根地址線,4根數(shù)據(jù)線。組成一個(gè)64K8的存儲器需要256個(gè)RAM芯片,128個(gè)芯片組,7根芯片組選擇地址線。
4.由Intel2164DRAM芯片組成一個(gè)64K8的存儲器,共需多少個(gè)DRAM芯片?若進(jìn)行刷新操作,需要幾次才能刷新完畢?
答:組成一個(gè)64K
8的存儲器,共需8個(gè)DRAM芯片。需要128次才能刷新完畢,7個(gè)觸發(fā)器。

第7章 練習(xí)題
1.選擇題
(1)B (2)A、B (3) C
2.填空題
(1)01B0H,01B3H,4
(2)8 ,36
(3)中斷請求、中斷判優(yōu)、中斷響應(yīng)、中斷服務(wù)、中斷返回
3.問答題
(1)試說明8086CPU對INTR的響應(yīng)過程。若某外部中斷源通過8259A的IR4接入8086CPU系統(tǒng),試說明應(yīng)做哪幾個(gè)方面的工作才能使該中斷正常工作。
答:響應(yīng)過程:1)CPU在每執(zhí)行完一條指令后,自動(dòng)檢測是否有INTR中斷請求;2)判斷是否響應(yīng)INTR線上的中斷請求;3)確定中斷向量地址;4)保存斷點(diǎn);5)執(zhí)行中斷服務(wù)程序;6)中斷返回。
若外部中斷源通過IR4接入8086系統(tǒng),應(yīng)做:1)設(shè)置8259A的初始化命令字和相關(guān)操作命令字;2)系統(tǒng)開中斷。
(2)說明軟中斷與子程序調(diào)用在使用時(shí)有何區(qū)別。
答:軟中斷是由CPU根據(jù)程序的某條指令或者程序員對標(biāo)志寄存器中某個(gè)標(biāo)志位的設(shè)置而產(chǎn)生的;子程序調(diào)用是由CALL指令引起的。
(3)采用DMA方式為什么能進(jìn)行高速數(shù)據(jù)傳送?
答:DMA是一種直接存儲器存取方式,利用這種方式,可以在沒有CPU干預(yù)的情況下,存儲器與外設(shè)之間或存儲器與存儲器之間進(jìn)行直接數(shù)據(jù)傳輸,這樣可以大大提高數(shù)據(jù)傳輸?shù)乃俣取?br> (4)簡述DMA控制器8237A的工作周期。
答:8237A在系統(tǒng)中的工作狀態(tài)可分為兩種工作周期:DMA空閑周期和DMA有效周期。
當(dāng)8237A的所有通道均沒有DMA請求時(shí),芯片即處于空閑周期,此時(shí)8237A作為普通接口芯片受CPU控制,處于從屬狀態(tài)。當(dāng)8237A采樣到某通道有DMA請求,即向CPU發(fā)總線請求信號,一旦獲得總線控制權(quán)則由空閑周期進(jìn)入有效周期,此時(shí)8237A作為系統(tǒng)的主控芯片,處于主控狀態(tài).
(5)8237A在進(jìn)行單字節(jié)方式DMA傳送和塊傳送時(shí),有什么區(qū)別?
答:1)單字節(jié)傳送方式:每次DMA操作僅傳送一個(gè)字節(jié)數(shù)據(jù),傳送后當(dāng)前地址寄存器加1或減1,并將當(dāng)前字節(jié)計(jì)數(shù)器減1,保持請求信號HQR無效,交出總線控制權(quán),隨后再次請求DMA傳送下一個(gè)字節(jié)數(shù)據(jù),如此往復(fù)直到當(dāng)前字節(jié)計(jì)數(shù)器減為0FFFFH時(shí)終止。
2)數(shù)據(jù)塊傳送方式:8237A一旦獲得總線控制權(quán),便開始連續(xù)傳送數(shù)據(jù),每傳送一個(gè)字節(jié)就自動(dòng)修改地址,并使要傳送的字節(jié)數(shù)減1,直到當(dāng)前字節(jié)計(jì)數(shù)器減為0FFFFH時(shí)產(chǎn)生終止信號,或者受到外部的信號時(shí)結(jié)束傳送,交出總線權(quán)。
4.下面是一個(gè)對8259A進(jìn)行初始化的程序,請加上注釋,并具體說明各初始化命令字的含義。
MOV AL,13H ;設(shè)置 ICW1 命令字 邊沿觸發(fā)方式,單片8259A需要設(shè)置 ICW4
MOV DX,40H
OUT DX,AL
INC DX ;DX 增 1,為設(shè)置下面的命令字做準(zhǔn)備
MOV AL,08H ;設(shè)置 ICW2中斷類型號為從 08H ~0FH
OUT DX,AL
MOV AL,09H ;設(shè)置 ICW4為8088模式,一般 EOI 緩沖方式,全嵌套方式
OUT DX,AL
系統(tǒng)分配給8259A的I/O地址為40H和41H
5.設(shè)8259A的偶地址是1000H,試編寫屏蔽8259A中的IR3,IR4和IR6中斷請求的程序。
MOV DX,1000H ;指向8259A的偶地址
MOV AL,01011000B ;使IMR的D3、D4、D6位為1
0UT DX,AL
8259A的OCW1可以實(shí)現(xiàn)中斷源的屏蔽與開放。
6.某8086CPU系統(tǒng)的中斷系統(tǒng)由兩片8259A級聯(lián)組成,從片聯(lián)在主片的IR3上,主、從8259A的IR5上各接有一個(gè)外部中斷源,其中斷類型碼分別為0DH,95H。假設(shè)它們的中斷入口地址均在同一段中,段基址為1000H,偏移地址分別是200H,300H;所有中斷都采用邊沿觸發(fā)方式、全嵌套方式、正常EOI結(jié)束方式。
(1)寫出主、從8259A中斷向量地址的范圍;
(2)試編寫全部初始化程序。
解:(1)主8259A的中斷類型碼的范圍為:08H0FH,中斷向量地址的范圍為:20H3CH。從8258A的中斷類型碼的范圍:90H97H,中斷向量地址范圍為:240H25CH。
(2)主8259A初始化程序段
MOV AX,00H
MOV DS,AX ;中斷向量表的段地址為0000H
MOV BX,0DH4 ;取中斷向量地址
MOV AX,200H ;取中斷向量并送入中斷向量表
MOV [BX],AX
MOV AX,1000H
MOV [BX+2],AX
MOV AL,00010001B ;ICW1邊沿觸發(fā),級聯(lián)方式,寫入ICW4
OUT 30H,AL
MOV AL,08H ;ICW2中斷類型號范圍
OUT 31H,AL
MOV AL,00000100B ;ICW3從片聯(lián)在主片的IR3上
OUT 31H,AL
MOV AL,00011101B ;ICW4全嵌套方式,正常EOI結(jié)束方式
OUT 31H,AL
從8259A初始化程序段
MOV AX,00H
MOV DS,AX ;中斷向量表的段地址為0000H
MOV BX,95H
4 ;取中斷向量地址
MOV AX,300H ;取中斷向量并送入中斷向量表
MOV [BX],AX
MOV AX,1000H
MOV [BX+2],AX
MOV AL,00010001B
OUT 36H,AL
MOV AL,90H
OUT 37H,AL
MOV AL,00000011
OUT 37H,AL
MOV AL,0001
7.設(shè)計(jì)8237A的初始化程序。要求:通道0工作于快傳送寫模式,地址加1變化,允許自動(dòng)預(yù)置功能;通道1工作于單字節(jié)傳送,地址減1變化,禁止自動(dòng)預(yù)置功能;通道2、通道3和通道1工作于相同的方式。8237A的DACK為高電平有效,DREQ為低電平有效,采用循環(huán)優(yōu)先級方式啟動(dòng)8237A工作。
MOV DX,DMA+0DH ;DMA+0DH為復(fù)位命令端口地址
MOV AL,0 ;發(fā)復(fù)位命令
OUT DX,AL
MOV AL,10110100B ;設(shè)置通道0方式字
MOV DX,DMA+0BH
OUT DX,AL
MOV AL,01001001B ;設(shè)置通道1方式字
MOV DX,DMA+0BH
OUT DX,AL
MOV AL,01001010B ;設(shè)置通道2方式字
MOV DX,DMA+0BH
OUT DX,AL
MOV AL,01001011B ;設(shè)置通道3方式字
M0V DX,DMA+0BH
OUT DX,AL
MOV AL,10010000B ;設(shè)置控制字
MOV DX,DMA+08H
OUT DX,AL
8.試編寫程序段,要求利用8237A在存儲區(qū)的兩個(gè)區(qū)域BUF1和BUF2之間直接傳送數(shù)據(jù),傳送的數(shù)據(jù)長度為64KB
MOV AL,04H
MOV DX,DMA+08H ;控制寄存器端口
OUT DX,AL ;設(shè)控制字,禁止8237A工作
MOV DX,DMA+0DH ;復(fù)位命令端口
OUT DX,AL ;發(fā)復(fù)位命令
MOV DX,DMA+00H ;通道0地址寄存器端口
MOV AX,BUF1 ;源數(shù)據(jù)區(qū)首址
OUT DX,AL ;寫入地址低8位
MOV AL,AH
OUT DX,AL ;寫入地址高8位
MOV DX,DMA+02H ;通道1基地址與當(dāng)前地址
MOV AX,BUF2 ;目的數(shù)據(jù)區(qū)首址
OUT DX,AL ;寫入地址低8位
MOV AL,AH
OUT DX,AL ;寫入地址高8位
MOV DX,DMA+03H ;通道1基計(jì)數(shù)與當(dāng)前字節(jié)計(jì)數(shù)
MOV AX,0FFFFH
OUT DX,AL ;寫入初始值低8位
MOV AL,AH
OUT DX,AL ;寫入初始值高8位
MOV DX,DMA+0CH ;先/后觸發(fā)器端口
OUT DX,AL ; 清先/后觸發(fā)器端口
MOV DX,DMA+0BH ;方式寄存器端口
MOV AL,88H
OUT DX,AL ;設(shè)通道0方式字,數(shù)據(jù)塊讀 增量
MOV DX,DMA+0CH
OUT DX,AL ; 清先/后觸發(fā)器端口
MOV DX,DMA+0BH ;方式寄存器端口
MOV AL,85H
OUT DX,AL ;設(shè)通道1方式字,數(shù)據(jù)塊寫 增量
MOV DX,DMA+0CH
OUT DX,AL ; 清先/后觸發(fā)器端口
MOV DX,DMA+0FH ;主屏蔽字端口
MOV AL,0CH
OUT DX,AL ;屏蔽通道2、3
MOV DX,DMA+0CH
OUT DX,AL ; 清先/后觸發(fā)器端口
MOV DX,DMA+08H ; 控制寄存器端口
MOV AL,01H
OUT DX,AL ;設(shè)控制字,允許存儲器到存儲器,啟動(dòng)8237A工作
MOV DX,DMA+0CH
OUT DX,AL ; 清先/后觸發(fā)器端口
MOV DX,DMA+09H ;請求寄存器端口
MOV AL,04H
OUT DX,AL ;向通道0發(fā)出DMA請求
MOV DX,DMA+08H ; 讀狀態(tài)寄存器端口
AA1:IN AL,DX
JZ AA1
MOV DX,DMA+0CH
OUT DX,AL ; 清先/后觸發(fā)器端口
MOV DX,DMA+09H ;請求寄存器端口
MOV AL,00H
OUT DX,AL ;通道0撤銷DMA請求
MOV DX,DMA+0CH
OUT DX,AL ; 清先/后觸發(fā)器端口
MOV DX,DMA+08H ; 設(shè)控制字
MOV AL,04H
OUT DX,AL ;禁止8237A工作
HLT

第8章 練習(xí)題
1.選擇題
(1)C (2)B
2.填空題
設(shè)某接口的狀態(tài)端口地址為100H,狀態(tài)位從D7位輸入,數(shù)據(jù)端口的地址為200H,輸入數(shù)據(jù)的總字節(jié)數(shù)為200,輸入數(shù)據(jù)段放在內(nèi)存單元的首地址為300,查詢式輸入數(shù)據(jù)的程序段如下。
MOV SI,300
MOV CX,200
INPUT: IN AL,100H
TEST AL,80H
JZ INPUT
IN AL,200H
MOV [SI],AL
INC SI
LOOP INPUT
3.問答題
(1)當(dāng)接口電路與系統(tǒng)總線相連接時(shí),為什么要遵循“輸入要經(jīng)過三態(tài),輸出要鎖存”的原則?
答:接口電路是介于主機(jī)和外設(shè)之間的一種緩沖電路,它使外設(shè)與總線隔離,起緩沖、暫存數(shù)據(jù)的作用。因?yàn)閿?shù)據(jù)總線是各種設(shè)備以及存儲器傳送數(shù)據(jù)的公共總線,任何設(shè)備都不允許長期占用數(shù)據(jù)總線,而僅允許被選中的設(shè)備在讀/寫周期中享用數(shù)據(jù)總線,這就需要接口電路為輸入設(shè)備提供三態(tài)緩沖作用,只在讀/寫周期中為被選中的設(shè)備開放與系統(tǒng)數(shù)據(jù)總線的連接,即輸入要經(jīng)三態(tài);另外,對于輸出接口,當(dāng)快速的CPU要將數(shù)據(jù)傳送到慢速的外設(shè)時(shí),事先需要把數(shù)據(jù)送到鎖存器中,等外設(shè)做好接收數(shù)據(jù)的準(zhǔn)備工作后再把數(shù)據(jù)取走。
(2)I/O 接口的主要功能有哪些? 一般有哪兩種編址方式?兩種編址方式各自有什么特點(diǎn)?
答:I/O 接口的主要功能有:l)解決 CPU 與外設(shè)之間速度不匹配問題;2)實(shí)現(xiàn)信號電平的轉(zhuǎn)換;3)實(shí)現(xiàn)信號格式的轉(zhuǎn)換;
I/O 端口的編址方式有兩種:統(tǒng)一編址方式和獨(dú)立編址方式。
統(tǒng)一編址方式:優(yōu)點(diǎn)是簡化了指令系統(tǒng)的設(shè)計(jì),訪問 I/O 設(shè)備的指令類型多、功能強(qiáng), I/O 地址空間可大可小。缺點(diǎn)是I/O 端口占用了存儲單元的地址空間,且 I/O 譯碼電路變得較復(fù)雜。訪問存儲器的指令一般要比較長,這樣延長了輸入輸出操作時(shí)間。獨(dú)立編址方式:優(yōu)點(diǎn)是可讀性好,I/O 指令長度短,執(zhí)行的速度快,占用內(nèi)存空間少,I/O 地址譯碼電路較簡單。缺點(diǎn)是CPU 指令系統(tǒng)中必須有專門的 IN 和 OUT 指令,而且這些指令的功能沒有訪問存儲器的指令強(qiáng)。
(3)按照與CPU之間數(shù)據(jù)傳輸?shù)姆较蚍?,可以將外部設(shè)備分為哪幾類?外設(shè)與CPU之間傳輸?shù)男盘柨梢苑譃槟娜N?
答:按照與CPU之間數(shù)據(jù)傳輸?shù)姆较蚍?,可以將外部設(shè)備分為三類:輸入設(shè)備、輸出設(shè)備及I/O復(fù)合設(shè)備。
外設(shè)與CPU之間傳輸?shù)男盘柨梢苑譃槿悾簲?shù)據(jù)信號、狀態(tài)信號、控制信號。
(4)何為總線?系統(tǒng)總線實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)牟僮鬟^程是如何在主控模塊的控制下進(jìn)行的?
答:用于各部件之間傳送信息的公共信號線稱為總線。
若系統(tǒng)總線上只有一個(gè)主控模塊,就沒有總線請求階段,但當(dāng)系統(tǒng)總線上有多個(gè)主控模塊時(shí),則需提出申請,由總線仲裁部分確定總線使用權(quán)。主控模塊取得總線使用權(quán)后,通過地址總線發(fā)出本次打算訪問的從屬模塊的地址,通過數(shù)據(jù)總線發(fā)出相關(guān)命令。當(dāng)主控模塊和從屬模塊之間聯(lián)系成功后,就可以進(jìn)行數(shù)據(jù)傳輸,數(shù)據(jù)由源模塊發(fā)出經(jīng)數(shù)據(jù)總線送入目的模塊。當(dāng)數(shù)據(jù)傳輸完成后,當(dāng)前主控模塊的有關(guān)信息均從系統(tǒng)總線上撤除,讓出總線的控制權(quán)。
(5)根據(jù)總線中信息傳送的類型可分為哪幾種?若按總線的規(guī)模、用途和應(yīng)用場合又可分成哪幾類?一般總線完成一次數(shù)據(jù)傳輸?shù)牟僮鬟^程可分為哪4個(gè)階段?
答:根據(jù)總線中信息傳送的類型可分為三種:地址總線、數(shù)據(jù)總線和控制總線。
按總線的規(guī)模、用途和應(yīng)用場合又可分成四類:芯片內(nèi)部總線、元件級總線、系統(tǒng)總線和外部總線。
一般總線完成一次數(shù)據(jù)傳輸?shù)牟僮鬟^程可分為4個(gè)階段:總線請求階段、尋址階段、傳輸階段、結(jié)束階段。
4.在8086微型計(jì)算機(jī)系統(tǒng)中,有一外設(shè)的接口地址為2A8H~2AFH,請用74LS138譯碼器設(shè)計(jì)符合要求的地址譯碼電路。
解:該接口共有8個(gè)端口地址,取地址碼最低3位A2、A1、A0作為接口內(nèi)不同端口的選擇。高13位地址碼譯出本接口的選擇地址2A8H
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
0 0 0 0 0 0 1 0 1 0 1 0 1 X X X
在最小模式下,譯碼電路如下。

5.某系統(tǒng)分別用74LS244和74LS273作為輸入輸出接口。其輸入口的地址為1000H,輸出口的地址為2000H,試編寫程序,當(dāng)輸入口的bit1,bit3和bit5位同時(shí)為1時(shí),把以DATA為首地址的50個(gè)單元的數(shù)據(jù)從輸出口輸出;如果不滿足上述條件則等待。
MOV SI,OFFSET DATA
MOV CX,50
LP1: MOV DX,1000H
IN AL,DX
AND AL,2AH
CMP AL,2AH
JNZ LP1
OUTPUT:MOV AL,[SI]
MOV DX,2000H
OUT DX,AL
INC SI
LOOP OUTPUT
6.一個(gè)采用查詢式數(shù)據(jù)傳送的輸出接口,其數(shù)據(jù)端口地址為 300H,狀態(tài)端口地址為 301H,外設(shè)狀態(tài)位用 D7 位表示,并約定低電平有效。如果要將存儲器緩沖區(qū) DATA 中的 200 個(gè)字節(jié)數(shù)據(jù)通過該輸出口輸出,畫出流程圖,編寫控制程序段。

程序段為:
LEA SI,DATA
MOV CX,200
LP1: MOV DX,301H
IN AL,DX
TEST AL,80H
JNZ LP1
DEC DX
MOV AL,[SI]
OUT DX,AL
INC SI
LOOP LP1

第 9 章
1、 (1)D (2)C (3)A (4)D (5)C (6)D (7)C (8)A
2、填空題
(1)3,基本輸入/輸出方式,選通輸入/輸出方式,雙向總線 I/O 方式
(2)外設(shè)響應(yīng)信號
(3)方式選擇控制字,置位/復(fù)位控制字
(4)中斷允許信號,PC的某些位
(5)移位,移位
(6)低電平,8
(7)5.36s
(8)發(fā)送線、接收線、信號地線
3.問答題
(1)并行接口和串行接口各有哪些特點(diǎn)?
答:并行接口的特點(diǎn):1)通過多根信號線同時(shí)傳送多位數(shù)據(jù);2)多用于傳輸距離短,數(shù)據(jù)量大,速度高的實(shí)時(shí)傳輸場合;3)傳送時(shí)一般不需要特定的數(shù)據(jù)傳送格式。
串行接口特點(diǎn):所需傳送線少,成本低,而且能實(shí)現(xiàn)遠(yuǎn)距離通信。但傳送速度較慢。
(2)8255A的三種工作方式有何不同?三個(gè)8位的數(shù)據(jù)端口功能有何異同?
答:8255A的三種工作方式為:基本輸入/輸出方式(方式0)、選通輸入/輸出方式(方式1)、雙向總線 I/O 方式(方式2)。方式0沒有專門的聯(lián)絡(luò)信號,一般只能用于簡單的、無條件的傳輸場合,端口A、B、C均可工作于該方式下。方式1端口A、B的輸入輸出受端口C相應(yīng)位控制。方式2時(shí)可實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,只有端口A可以工作在方式2。
三個(gè)8位的數(shù)據(jù)端口:端口A、端口B和端口C。端口A可以設(shè)置為輸入端口,也可以設(shè)置為輸出端口,還可以設(shè)置為雙向的8位數(shù)據(jù)端口,輸入/輸出時(shí)端口都具有鎖存器、緩沖器,具有三種工作方式,是功能最齊全的數(shù)據(jù)端口。端口B可以設(shè)置為輸入端口,也可以設(shè)置為輸出端口,但不能設(shè)置為雙向數(shù)據(jù)端口,端口B輸入不能鎖存,而輸出可以鎖存,具有兩種工作方式。端口C有位尋址功能,能作為聯(lián)絡(luò)線配合端口A和B工作,端口C還能作為兩個(gè)4位的端口使用,可以設(shè)置為輸入端口,也可以設(shè)置為輸出端口,但不能設(shè)置為雙向數(shù)據(jù)端口。
(3)8251A同步和異步串行通信的初始化過程有何區(qū)別?
答:異步方式字格式
S2 S1 EP PEN L2 L1 B2 B1
同步方式字格式
SCS ESD EP PEN L2 L1 0 0
可見由方式字的最低兩位確定8251A的工作方式,當(dāng)全為0時(shí),工作于同步方式,否則工作于異步方式。8251A工作于異步方式時(shí),采用方式字的S2、S1兩位來確定異步格式中的停止位的位數(shù);當(dāng)工作于同步方式時(shí),SCS、ESD用于確定時(shí)內(nèi)同步還是外同步,以及同步字符的個(gè)數(shù)。
(4)若8251A的工作方式寄存器內(nèi)容為11111010,為使接收的波特率和發(fā)送的波特率分別為1200bit/s和4800bit/s,則此時(shí)RxC和TxC上分別接何種時(shí)鐘信號頻率?
答:RxC上接收時(shí)鐘頻率=120016Hz=19.2kHz
TxC上接發(fā)時(shí)鐘頻率=4800
16Hz=76.8kHz
4.設(shè) 8255A 的端口 A 和 B 均工作與方式 1,端口 A 輸出,端口 B 和 C 為輸入,端口 A 地址為 0060H(接口連續(xù)編址)。
(1)寫出工作方式控制字。
0AFH
(2)編寫 8255A 的初始化程序。
MOV DX,0063 H
MOV AL,0AFH
OUT DX,AL
(3)若要用置位/復(fù)位方式將 PC2 置為 1,PC7 清 0,試寫出相應(yīng)程序。
MOV DX,0063H
MOV AL,05H
OUT DX,AL
MOV AL,0EH
OUT DX,AL
5.用8255A作為打印機(jī)接口,如圖9-33所示。當(dāng)8255A向打印機(jī)送出一個(gè)負(fù)脈沖作為選通信號() 時(shí),端口A的字符數(shù)據(jù)就送往打印機(jī)。當(dāng)打印機(jī)的應(yīng)答信號BUSY為0時(shí),表示打印機(jī)不忙,可以發(fā)送數(shù)據(jù)到打印機(jī)。若8255A的端口地址為60H~63H,需打印的數(shù)據(jù)存放在以1000H數(shù)據(jù)為首地址的內(nèi)存RAM中,數(shù)據(jù)長度為200,試編寫向打印機(jī)發(fā)送數(shù)據(jù)的程序。

	MOV BX,1000H
	MOV CX,200
	MOV AL,10000001B
	OUT 63H,AL

LOP: IN AL,62H
TEST AL,80H
JNZ LOP
MOV AL,[BX]
OUT 60H,AL
MOV AL,01H
OUT 63H,AL
MOV AL,00H
OUT 63H,AL
MOV AL,01H
OUT 63H,AL
INC BX
LOOP LOP
6.設(shè)8251A的控制口地址為0C2H,數(shù)據(jù)口地址為0C0H,按下列要求對8251A進(jìn)行初始化。
(1)要求工作于異步方式,波特率系數(shù)為16,奇校驗(yàn),8位數(shù)據(jù)位,1位停止位。
(2)允許接收、允許發(fā)送、全部錯(cuò)誤標(biāo)志復(fù)位。
(3)查詢8251A的狀態(tài)字,當(dāng)接收準(zhǔn)備就緒時(shí),則從8251A輸入數(shù)據(jù),否則等待。
解:初始化程序如下
MOV DX,0C2H ;控制口地址
MOV AL,01011110B ;要求(1)
OUT DX,AL
MOV AL,00010101B ;要求(2)
OUT DX,AL
WAIT: IN AL,DX ;判斷接收是否準(zhǔn)備就緒
TEST AL,02H
JZ WAIT
MOV DX,0C0H
IN AL,DX
7.若8251A的地址為30H和31H,收發(fā)時(shí)鐘(RxC,TxC)頻率為38.4kHz,與引腳相連,要求波特率為2400,每幀字符的數(shù)據(jù)位數(shù)為7,停止位數(shù)為1,試編寫出偶校驗(yàn)的半雙工異步通訊的處于發(fā)送狀態(tài)的初始化程序。
解:收發(fā)時(shí)鐘頻率為38.4kHz,波特率為2400bit/s,故波特率因子為38400/2400=16。
XOR AX,AX
MOV DX,31H
OUT DX,AL
OUT DX,AL
OUT DX,AL
MOV AL,40H
OUT DX,AL
MOV AL,01111010B
OUT DX,AL
MOV AL,00110101B
OUT DX,AL

第10章 練習(xí)題
1.選擇題
(1)B (2)B (3)B (4)C
2.填空題
MOV AL,30H
OUT 43H,AL
MOV AL,34H
OUT 40H,AL
MOV AL,12H
OUT 40H,AL
3.問答題
(1)A/D和D/A轉(zhuǎn)換器在微型計(jì)算機(jī)應(yīng)用中起到什么作用?各有哪些性能指標(biāo)?
答:D/A轉(zhuǎn)換器是將數(shù)字量轉(zhuǎn)換成模擬量的器件。主要性能指標(biāo):分辨率、轉(zhuǎn)換精度、建立時(shí)間、線性誤差、溫度系數(shù)。
A/D轉(zhuǎn)換器是將模擬量轉(zhuǎn)換為數(shù)字量的器件。主要性能指標(biāo):分辨率、轉(zhuǎn)換精度、轉(zhuǎn)換時(shí)間、量程、溫度參數(shù)。
(2)A/D和D/A轉(zhuǎn)換器與CPU連接時(shí)應(yīng)考慮哪幾個(gè)方面?
答:D/A轉(zhuǎn)換器與CPU接口時(shí),應(yīng)考慮兩個(gè)方面:1)數(shù)字量的輸入;2)輸出電路。
A/D轉(zhuǎn)換器與CPU接口時(shí),應(yīng)考慮四個(gè)方面:1)啟動(dòng)轉(zhuǎn)換;2)多通道模擬量選擇;3)數(shù)字量輸出線的連接;4)轉(zhuǎn)換結(jié)果的讀取。
(3)DAC0832轉(zhuǎn)換器有哪幾種工作方式?每種工作方式如何實(shí)現(xiàn)?
答:DAC0832提供三種工作方式:直通工作方式、單緩沖工作方式、雙緩沖工作方式。
直通工作方式的實(shí)現(xiàn):、、和引腳直接接數(shù)字地,ILE引腳為高電平。
單緩沖工作方式的實(shí)現(xiàn):使輸入寄存器或DAC寄存器中的任意一個(gè)工作在直通狀態(tài),另一個(gè)工作在受控鎖存狀態(tài),只執(zhí)行一次寫操作。
雙緩沖工作方式的實(shí)現(xiàn):CPU對DAC0832進(jìn)行兩次寫操作。
(4)ADC的轉(zhuǎn)換結(jié)果信號起什么作用?如何使用該信號讀取轉(zhuǎn)換結(jié)果?
答:ADC的轉(zhuǎn)換結(jié)果信號用于判斷轉(zhuǎn)換是否結(jié)束,如果轉(zhuǎn)換結(jié)束,則可讀取轉(zhuǎn)換結(jié)果。
判斷轉(zhuǎn)換結(jié)束并讀取轉(zhuǎn)換結(jié)果的方式有三種:定時(shí)讀取、程序查詢、中斷方式。
4.設(shè)一個(gè)8253控制端口的地址為143H,三個(gè)計(jì)數(shù)器的端口地址分別為140H、141H和142H,要求將8253計(jì)數(shù)器0設(shè)置為方式0,計(jì)數(shù)初值為3000H;計(jì)數(shù)器1設(shè)置為方式2,計(jì)數(shù)初值為2010H;計(jì)數(shù)器2設(shè)置為方式4,計(jì)數(shù)初值為4030H。試編出相應(yīng)的初始化程序。
解:MOV DX,143H
MOV AL,00110000B
OUT DX,AL
MOV DX,140H
MOV AL,0
OUT DX,AL
MOV AL,30H
OUT DX,AL
MOV DX,143H
MOV AL,01110100B
OUT DX,AL
MOV DX,141H
MOV AL,10H
OUT DX,AL
MOV AL,20H
OUT DX,AL
MOV DX,143H
MOV AL,10111001B
OUT DX,AL
MOV DX,142H
MOV AL,30H
OUT DX,AL
MOV AL,40H
OUT DX,AL
5.設(shè)8253時(shí)鐘頻率CLK為1MHz,其端口地址同題4,利用8253計(jì)數(shù)器0軟件產(chǎn)生一次性中斷,要求在送完計(jì)數(shù)初值后經(jīng)過20ms產(chǎn)生一次中斷,試編寫初始化程序。
解:計(jì)數(shù)器0工作在方式0,按二進(jìn)制計(jì)數(shù),計(jì)數(shù)初值=20000/1=20000=4E20H。
MOV DX,143H
MOV AL,00110000B
OUT DX,AL
MOV DX,140H
MOV AL,20H
OUT DX,AL
MOV AL,4EH
OUT DX,AL
6.在某微機(jī)控制系統(tǒng)中。8251A作為CPU的全雙工異步串行通信接口,采用中斷方式工作,波特率因子為64,字符長度為7,偶校驗(yàn),1位停止位,發(fā)送和接收數(shù)據(jù)的波特率均為2400bit/s。8253的計(jì)數(shù)器2為8251A提供發(fā)送、接收時(shí)鐘TxC和RxC,CLK輸入信號為8MHz。已知8251A的端口地址為0C0H和0C1H,8253的端口地址為330H~333H。請編寫8251A和8253的初始化程序段。
解:波特率為2400bit/s,波特率因子為64,故收發(fā)時(shí)鐘頻率=2400*64=153.6kHz,即周期為6.5μs。時(shí)鐘為8MHz,即周期為0.125μs,故計(jì)數(shù)初值=6.5/0.125=52,采用方式3。
8251A的初始化程序段。
XOR AX,AX
MOV DX,0C1H
OUT DX,AL
OUT DX,AL
OUT DX,AL
MOV AL,40H
OUT DX,AL
MOV AL,01111011B
OUT DX,AL
MOV AL,00010101B
OUT DX,AL
8253的初始化程序段
MOV AL,00010110B
MOV DX,333H
OUT DX,AL
MOV AL,52
MOV DX,330H
OUT DX,AL
7.應(yīng)用8255A和AD574設(shè)計(jì)一個(gè)A/D轉(zhuǎn)換的接口電路,設(shè)8255A的端口地址為060H和063H,要求采用查詢方式連續(xù)采樣100次,并將12位采樣結(jié)果保存到BUFF開始的內(nèi)存緩沖區(qū),請畫出硬件連線示意圖并編程實(shí)現(xiàn)。
解:AD574進(jìn)行12位轉(zhuǎn)換時(shí),可以通過并行接口電路8255A與CPU進(jìn)行連接,如下圖所示。12位數(shù)字輸出端分別與8255A的PA口和PB口的低4位相連。CE、、信號與8255A的PC7~PC5相連,STS信號與8255A的PC0相連,當(dāng)轉(zhuǎn)換結(jié)束時(shí)發(fā)出低電平信號。

XOR		SI,SI
MOV 	CX,100
MOV		AL,10010011B   ;設(shè)定8255A的A、B口工作于方式0輸入
OUT		63H,AL         ;C口高4位輸入,低4位輸出

NEXT:MOV AL,00001010B ;使為低電平
OUT 63H,AL
MOV AL,00001100B ;使為低電平
OUT 63H,AL
MOV AL,00001111B ;使CE為高電平,啟動(dòng)A/D轉(zhuǎn)換
OUT 63H,AL
LOP:IN AL,62H
TEST AL,01H
JNZ LOP
MOV AL,00001011B ;使為高電平,準(zhǔn)備讀A/D轉(zhuǎn)換結(jié)果
OUT 63H,AL
NOP
NOP
IN AL,61H
AND AL,0FH
MOV BX,AL
IN AL,60H
MOV BL,AL
MOV BUFF[SI],BX
INC SI
INC SI
LOOP NEXT
MOV AL,00001110B
OUT 63H,AL
MOV AL,0000110DB
OUT 63H,AL

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多