第6章?存儲(chǔ)器?習(xí)題答案(部分)
6.1 試說明半導(dǎo)體存儲(chǔ)器的分類。
答:半導(dǎo)體分為:RAM 和ROM。RAM 分為靜態(tài)RAM 和動(dòng)態(tài)RAM。ROM 分為:掩膜ROM、
PROM、EPROM、E2PROM。
6.2 試說明CMOS 靜態(tài)存儲(chǔ)器基本存儲(chǔ)電路數(shù)據(jù)讀、寫的原理。
第7章?基本輸入/輸出接口?習(xí)題答案(部分)
7.1 簡(jiǎn)述I/O 接口的主要功能。
答:(1)對(duì)輸入輸出數(shù)據(jù)進(jìn)行緩沖和鎖存
(2)對(duì)信號(hào)的形式和數(shù)據(jù)的格式進(jìn)行變換
(3)對(duì)I/O 端口進(jìn)行尋址
(4)提供聯(lián)絡(luò)信號(hào)
7.2 CPU 與外設(shè)之間的數(shù)據(jù)傳輸方式有哪些?簡(jiǎn)要說明各自含義。
答:(1)程序方式:微機(jī)系統(tǒng)與外設(shè)之間的數(shù)據(jù)傳輸過程在程序的控制下進(jìn)行
(2)中斷方式:在中斷傳輸方式下,當(dāng)輸入設(shè)備將數(shù)據(jù)準(zhǔn)備好或輸出設(shè)備可以接收數(shù)
據(jù)時(shí),便向CPU 發(fā)出中斷請(qǐng)求,使CPU 暫時(shí)停止執(zhí)行當(dāng)前程序,而去執(zhí)行數(shù)據(jù)輸入/輸出
的中斷服務(wù)程序,與外設(shè)進(jìn)行數(shù)據(jù)傳輸操作,中斷服務(wù)程序執(zhí)行完后,CPU 又返回繼續(xù)執(zhí)
行原來的程序。
(3)直接存儲(chǔ)器存?。?/span>DMA)方式:DMA 方式是指不經(jīng)過CPU 的干預(yù),直接在外設(shè)
和內(nèi)存之間進(jìn)行數(shù)據(jù)傳輸?shù)姆绞健?/span>
7.3 什么是端口?通常有哪幾類端口?計(jì)算機(jī)對(duì)I/O 端口編址時(shí)通常采用哪?在80x86
系統(tǒng)中,采用哪一種方法?
每個(gè)I/O 接口內(nèi)部一般由三類寄存器組成。CPU 與外設(shè)進(jìn)行數(shù)據(jù)傳輸時(shí),各類信息在
接口中進(jìn)入不同的寄存器,一般稱這些寄存器為I/O 端口。
I/O 端口通常有數(shù)據(jù)端口、狀態(tài)端口、控制端口。
計(jì)算機(jī)對(duì)I/O 端口編址時(shí)通常采用:I/O 端口與內(nèi)存統(tǒng)一編址、I/O 端口獨(dú)立編址兩種
方法。
在80x86 系統(tǒng)中,采用I/O 端口獨(dú)立編址方法。
7.4 現(xiàn)有一輸入設(shè)備,其數(shù)據(jù)端口地址為FFE0H,狀態(tài)端口地址為FFE2H,當(dāng)其D0
為1 時(shí)表明輸入數(shù)據(jù)準(zhǔn)備好。試采用查詢方式,編程實(shí)現(xiàn)從該設(shè)備讀取100 個(gè)字節(jié)數(shù)據(jù)并保
存到2000H:2000H 開始的內(nèi)存中。
程序?yàn)椋?/span>
CODE SEGMENT
ASSUME CS:CODE
START: MOV AX,2000H
MOV DS,AX
MOV SI,2000H
MOV CX,100
CONT:?MOV DX,0FFE2H
CONT1:IN AL,DX
TEST AL,01
JZ CONT1
MOV DX,0FFE0H
IN AL,DX
MOV [SI],AL
INC SI
LOOP CONT
MOV AH,4CH
INT 21H
CODE ENDS
END START
7.5 硬件如圖7.5 所示,試編程實(shí)現(xiàn):S0 控制8 個(gè)發(fā)光二極管1 亮7 暗,S1 控制8
個(gè)?8 個(gè)發(fā)光二極管7 亮1 暗,S2 控制某一亮點(diǎn)(或暗點(diǎn))以一定時(shí)間間隔循環(huán)向左移動(dòng),
S3 控制某一亮點(diǎn)(或暗點(diǎn))以一定時(shí)間間隔循環(huán)向右移動(dòng),兩個(gè)或兩個(gè)以上開關(guān)閉合,則
結(jié)束程序。
CODE SEGMENT
ASSUME CS:CODE
MAIN PROC FAR
START: PUSH DS
MOV AX,0
PUSH AX
NEXT1: MOV AH,1
INT 16H
CMP AL 1BH
JZ EXIT1
MOV DX 200H
IN AL,DX
TEST AL,0FEH
JZ NEXT2
TEST AL 0FDH
IN AL,0BFH
MOV CX,8
JPM NEXT3
NEXT2:MOV CX,8
NOT AL
NEXT3:ROR AL,1
MOV DX,200H
OUT DX,AL
LOOP NEXT3
EXIT: RET
MAIN ENDP
CODE ENDPS
END START
程序段為:(省略偽指令)
DATA SEGMENT
BUF1 DB 01H
BUF2 DB 80H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
MOV DX,200H
AGAIN:?IN AL,DX
XOR BL,BL
MOV CX,8
CONT:?ROR AL,1
JNC NEXT
INC BL
NEXT:?LOOP CONT
CMP BL,2
JAE EXIT
CMP AL,0FEH
JZ 1L7A
CMP AL,0FDH
JZ 1A7L
CMP AL,0FBH
JZ ZSHL
CMP AL,0F7H
JZ YSHR
1L7A: MOV AL,80H
OUT DX,AL
JMP AGAIN
7A7L: MOV AL,7F
OUT DX,AL
JMP AGAIN
ZSHL: MOV AL,BUF1
ROL AL,1
MOV BUF1,AL
OUT DX,AL
CALL D500MS
JMP AGAIN
YSHR: MOV AL,BUF2
ROR AL,1
MOV BUF1,AL
OUT DX,AL
CALL D500MS
JMP AGAIN
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END
第8 章?中斷習(xí)題
8.1 80x86 的中斷系統(tǒng)有哪幾種類型中斷?其優(yōu)先次序如何?
80x86 的中斷系統(tǒng)可處理256 種個(gè)中斷源。這些中斷源可分為兩大類:外部中斷(硬件
中斷)、內(nèi)部中斷(軟件中斷)。軟件中斷包括:除法中斷、單步中斷、指令中斷、溢出中斷。
硬件中斷包括:INTR 和NMI。
中斷優(yōu)先級(jí)的次序是:內(nèi)部中斷(高)_非屏蔽中斷_可屏蔽中斷_單步中斷(低)
8.3 已知中斷向量表表中地址0020H ~ 0023H 的單元中依次是40H,00H,00H,01H,
并知INT 08H 指令本身所在的地址為9000H:00A0H。若SP=0100H,SS=0300H,標(biāo)志寄
存器內(nèi)容為0240H,試指出在執(zhí)行INT 08H 指令,剛進(jìn)入它的中斷服務(wù)程序時(shí),SP,SS,
IP,CS 和堆棧頂上三個(gè)字的內(nèi)容(用圖表示)。
執(zhí)行后?SS=0300H SP=00FAH
CS=0100H IP=0040H ,堆棧頂上三個(gè)字的內(nèi)容如下所示:
0 0 F AH
0 0 F CH
執(zhí)行后:0300H:00FEH
初始:?0300H:01000H
8.4 某一用戶中斷源的中斷類型號(hào)為40H,其中斷服務(wù)程序名為INTR40,請(qǐng)用兩種不
同的方法設(shè)置它的中斷向量。
法一:MOV AX,0000H
MOV DS,AX
MOV SI,0100H
MOV AX,OFFSET INTR40
MOV [SI],AX
MOV AX,SEG INTR40
MOV [SI+2],AX
法二:MOV BX,SEG INTR40
MOV DS,BX
MOV DX,OFFSET INTR40
MOV AH,25H
INT 21H
8.5 試編寫一段將8259A 中IRR、ISR、IMR 的內(nèi)容讀出,存入到BUFFER 開始的數(shù)
據(jù)緩沖區(qū)去的程序。8259A 的端口地址為30H、31H。
START: MOV AX,DATA ;取BUFFER 所在數(shù)據(jù)段的段基址DS
MOV DS,AX
LEA SI,BUFFER ;取BUFFER 所在數(shù)據(jù)段的偏移地址SI
MOV AL,0AH ;讀出命令字OCW,P=0,RR=1,RIS=0,選IRR
棧區(qū)
A2H
00H
00H
90H
40H
02H
XX
OUT 30H,AL
IN AL,30H ;讀出IRR 的內(nèi)容
MOV [SI],AL ;IRR 內(nèi)容送內(nèi)存
MOV AL,0BH ;讀出命令字OCW,P=0,RR=1,RIS=1,選ISR
OUT 30H,AL
IN AL,30H ;讀出ISR 的內(nèi)容
MOV [SI+1],AL ;ISR 內(nèi)容送內(nèi)存
IN AL,31H ;讀IMR 的內(nèi)容
MOV [SI+2],AL ;IMR 的內(nèi)容送內(nèi)存
8.6 某一8086CPU 系統(tǒng)中,采用一片8259A 進(jìn)行中斷管理。設(shè)8259A 工作在全嵌套
方式,發(fā)送EIO 命令結(jié)束中斷,邊沿觸發(fā)方式,IR0 對(duì)應(yīng)的中斷向量號(hào)為90H,8259A 在系
統(tǒng)中的端口地址為FFDCH(A0=0)和FFDDH(A0=1),試編寫8259A 的初始化程序段。
初試化程序段為:
MOV AX,0FFDCH ;取8259A 的偶地址端口
MOV DX,AX
MOV AL,13H ;控制初始化命令字ICW1 設(shè)為13H,中斷請(qǐng)求為邊沿觸
;發(fā)方式,單片8259A,需寫入ICW4
OUT DX,AL ;設(shè)置ICW1
MOV AX,0FFDDH ;取8259A 的奇地址端口
MOV DX,AX
MOV AL,90H ;中斷類型碼初始化命令字ICW2 設(shè)為90H,對(duì)應(yīng)于
;IR0 ~IR7 的中斷類型碼為90H~97H
OUT DX,AL ;設(shè)置ICW2
MOV AL,01H ;方式控制初始化命令字ICW4 設(shè)為01H,全嵌套方式,
;非緩沖方式,非自動(dòng)中斷結(jié)束方式,工作于8086 系統(tǒng)中
OUT DX,AL ;設(shè)置ICW4
第九章?可編程接口芯片及應(yīng)用習(xí)題
9.1 試按如下要求分別編寫初始化程序,已知計(jì)數(shù)器0 ~ 2 和控制字寄存器的端口地址
依次為204H ~ 207H。
(1)使計(jì)數(shù)器1 工作在方式0,僅用8 位二進(jìn)制計(jì)數(shù),計(jì)數(shù)初值為128。
(2)使計(jì)數(shù)器0 工作在方式1,按BCD 碼計(jì)數(shù),計(jì)數(shù)值為3000。
(3)使計(jì)數(shù)器2 工作在方式2,按二進(jìn)制計(jì)數(shù),計(jì)數(shù)值為02F0H。
初始化程序?yàn)椋?/span>
(1)?MOV DX,207H
MOV AL,50H
OUT DX,AL
MOV DX,205H
MOV AL,80H
OUT DX,AL
(2)?MOV DX,207H
MOV AL,33H
OUT DX,AL
MOV DX,204H
MOV AX,3000H ;注意,不是3000
OUT DX,AL
MOV AL,AH
OUT DX,AL
(3)?MOV DX,207H
MOV AL,0B4H
OUT DX,AL
MOV DX,206H
MOV AL,0F0H
OUT DX,AL
MOV AL,02
OUT DX,AL
9.2 硬件如題9.2 圖,利用PC 內(nèi)部8253 定時(shí)器0,并用中斷方式實(shí)現(xiàn)每隔1s 使發(fā)光
二極管亮暗交替顯示。(PC 內(nèi)部8253 輸入時(shí)鐘頻率為1.1932MHz,8253 定時(shí)器0 端口地址
為40H,控制寄存器端口地址為43H。Y0 為350H)。
定時(shí)器計(jì)數(shù)值=1.1932MHz÷5=32864=83D5H
軟件計(jì)數(shù)值:50
程序?yàn)椋海ㄓ布D見教材P345 題9.2 圖)
MOV AL,34H
OUT 43H,AL
MOV AL,0D5H
OUT 40H,AL
MOV AL,83H
OUT 40H,AL
MOV BL,50
┇
T0 中斷服務(wù)程序?yàn)椋?/span>
DEC BL
JNZ EXIT1
MOV BL,50
MOV AL,BUF
NOT AL
MOV BUF,AL
MOV DX,350H
OUT DX,AL
EXIT1:MOV AL,20H
OUT 20H,AL;(設(shè)8259A 的端口地址為20H,21H)
IRET
9.3 硬件如題9.3 圖,8253 采用方式0,BCD 碼計(jì)數(shù)方式,初始值為1000,每按一次
按鈕S,計(jì)數(shù)器值減1。試編程實(shí)現(xiàn)顯示8253 當(dāng)前計(jì)數(shù)值,直至計(jì)數(shù)值為0。8253 端口地
址范圍為80H ~ 83H。
(略。在何處顯示---屏幕/LED/液晶?)
9.4 圖9.4 為一簡(jiǎn)化的鍵盤/數(shù)碼管顯示接口電路,假設(shè)端口線a’ ~ h’及1、2 腳送“1”
電平,可使顯示點(diǎn)亮并能實(shí)現(xiàn)掃描,試問U1、U2 及數(shù)碼顯示器的選用。
(1)U1 為?(同相驅(qū)動(dòng)器?/ 反相驅(qū)動(dòng)器)。
(2)U2 為?(同相驅(qū)動(dòng)器?/ 反相驅(qū)動(dòng)器)。
(3)數(shù)碼顯示器為?(共陰?/ 共陽)數(shù)碼管。
(4)若A 鍵閉合,則端口線3,4 的電平為?。
圖9.4 見教材P295
選用同相驅(qū)動(dòng)器
選用反相驅(qū)動(dòng)器
選用共陰數(shù)碼管
若A 鍵閉合,則端口線3,4 的電平為0,1
9.5 硬件如題?9.5 圖,試編程實(shí)現(xiàn)循環(huán)檢測(cè)S0、S1,當(dāng)S0 按下,數(shù)碼管顯示0,當(dāng)
S1 按下,數(shù)碼管顯示1,S0、S1 同時(shí)按下,則結(jié)束程序。8255 的端口地址范圍為80H83H。
程序?yàn)椋?/span>
MOV AL,82H
OUT 83H,AL
AGAIN:?IN AL,81H
TEST AL,03
JZ EXIT
TEST AL,01
JZ NEXT
MOV AL,3FH
OUT 80H,AL
JMP AGAIN
NEXT:?TEST AL,02
JZ NEXT1
MOV AL,06
OUT 80H,AL
JMP AGAIN
NEXT1:?MOV AL,00
OUT 80H,AL
JMP AGAIN
EXIT:?MOV AH,4CH
INT 21H__