第一篇:《微機原理及應(yīng)用》教材課后習題及答案
《微機原理及應(yīng)用》習題答案
第一章
?1.11 請完成下列數(shù)制轉(zhuǎn)換:
(1)將174.66D轉(zhuǎn)換為對應(yīng)的二進制和十六進制形式。
(2)將100011101011.01011B轉(zhuǎn)換為對應(yīng)的十進制和十六進制形式。(3)將F18A6.6H轉(zhuǎn)換為對應(yīng)的二進制和十進制形式。答:174.66D=10101110.1010B=AE.AH 100011101011.01011B=2283.34375D=8EB.58H F18A6.6H=989350.375D
?1.12 請寫出與數(shù)據(jù)+37和-37對應(yīng)的8位機器數(shù)原碼、反碼和補碼,并分別用二進制和十六進制表示出來。
答:-37D=(10100101B)原=(11011010B)反=(11011011B)補
?1.13 8位機器數(shù)46H,若作為無符號數(shù)和補碼有符號數(shù),其對應(yīng)的真值各是什么?若作為BCD碼和ASCII碼,其對應(yīng)的又是什么?
答:無符號數(shù)46H=70,補碼46H=+70
BCD碼46H=46,ASCII碼46H=“F”
第二章
?2.5什么是8088中的邏輯地址和物理地址?邏輯地址如何轉(zhuǎn)換成物理地址?1MB最多能分成多少個邏輯段?請將如下邏輯地址用物理地址表達:
(1)FFFFH:0H(2)40H:17H(3)2000H:4500H
(4)B821H:4567H 答:⑴ FFFFH:0H = FFFF0H
⑵ 40H:17H = 00417H
⑶ 2000H:4500H = 24500H
⑷ B821H:4567H = BC777H ?2.8已知DS=2000H,BX=0100H,SI=0002,存儲單元[20100H]~[20103H]依次存放12H,34H,56H,78H,[21200H]~[21203H]依次存放2AH,4CH,87H,65H,說明下列每條指令執(zhí)行完后AX寄存器的內(nèi)容以及源操作數(shù)的尋址方式? 答:⑴ AX=1200H,立即數(shù)尋址;
⑵ AX=0100H,寄存器尋址;
⑶ AX=4C2AH,直接尋址;
⑷ AX=3412H,寄存器間接尋址;
⑸ AX=4C2AH,寄存器相對尋址;
⑹ AX=7865H,基址變址尋址;
⑺ AX=65B7H,基址變址相對尋址。?2.9 說明下面各條指令的具體錯誤原因:
(1)mov cx,dl(2)mov ip,ax(3)mov es,1234h(4)mov es,ds
(5)mov al,300(6)mov [sp],ax(7)mov ax,bx+di(8)mov 20h,ah 答: ⑴操作數(shù)類型不同;
⑵不能手工修改IP;
⑶不能將立即數(shù)直接MOV到段寄存器;
⑷不能在段寄存器之間直接MOV數(shù)據(jù);
⑸300大于AL所能存放的數(shù)據(jù)的范圍;
⑹寄存器間接尋址只能用BX/BP/SI/DI之一;
⑺MOV AX,[BX+DI];
⑻目的操作數(shù)不能是立即數(shù)。
?2.10 已知數(shù)字0~9對應(yīng)的格雷碼依次為:18H,34H,05H,06H,09H,0AH,0CH,11H,12H,14H,它存在于以table為首地址(設(shè)為200H)的連續(xù)區(qū)域中。請為如下程序段的每條指令加上注釋,說明每條指令的功能和執(zhí)行結(jié)果。lea
bx,table mov al,8
xlat
答:
lea
bx,table ;bx=0200h mov al,8
;al=08h xlat
;al=12h ?2.11給出下列各條指令執(zhí)行后的AL值,以及CF,ZF,SF,OF和PF的狀態(tài): mov al,89h add al,al add al,9dh cmp al,0bch sub al,al dec al inc al 答:⑴ al=89h ⑵ al=12h,CF=1,ZF=0,SF=0,OF=1,PF=1,AF=1 ⑶ al=afh,CF=0,ZF=0,SF=1,OF=0,PF=1,AF=0 ⑷ al=afh,CF=1,ZF=0,SF=1,OF=1,PF=1,AF=0 ⑸ al=00h,CF=0,ZF=1,SF=0,OF=0,PF=1,AF=0 ⑹ al=ffh,CF=0,ZF=0,SF=1,OF=0,PF=1,AF=1 ⑺ al=00h,CF=0,ZF=1,SF=0,OF=0,PF=1,AF=1 ?2.12請分別用一條匯編語言指令完成如下功能:
(1)把BX寄存器和DX寄存器的內(nèi)容相加,結(jié)果存入DX寄存器。
(2)用寄存器BX和SI的基址變址尋址方式把存儲器的一個字節(jié)與AL寄存器的內(nèi)容相加并把結(jié)果送到AL中。用BX和位移量0B2H的寄存器相對尋址方式把存儲器中的一個字和CX寄存器的內(nèi)
容相加,并把結(jié)果送回存儲器中。
(4)用位移量為0520H的直接尋址方式把存儲器中的一個字與數(shù)3412H相加,并把結(jié)果
送回該存儲單元中。
(5)把數(shù)0A0H與AL寄存器的內(nèi)容相加,并把結(jié)果送回AL中。答:
⑴ add dx,bx;
⑵ add al,[bx+si]; ⑶ add [bx+00b2h],cx
⑷ add word ptr [0520h],3412h ⑸ add al,0a0h ?2.13設(shè)X,Y,Z,V均為16位帶符號數(shù),分別裝在X,Y,Z,V存儲器單元中,閱讀如下程序段,得出它的運算公式,并說明運算結(jié)果存于何處。mov ax,x imul y mov cx,ax mox bx,dx mov ax,z cwd add cx,ax adc bx,dx sub cx,540 abb bx,0 mov ax,v cwd sub ax,cx abb dx,bx idiv x 答:(V -(X * Y + Z - 540))/ X ?2.14給出下列各條指令執(zhí)行后的結(jié)果,以及狀態(tài)標志CF、OF、SF、ZF、PF的狀態(tài)。mov ax,1470h and ax,ax or ax,ax xor ax,ax not ax test ax,0f0f0h 答:⑴ ax=1470h ⑵ ax=1470h,CF=0,ZF=0,SF=0,OF=0,PF=0 ⑶ ax=1470h,CF=0,ZF=0,SF=0,OF=0,PF=0 ⑷ ax=0000h,CF=0,ZF=0,SF=0,OF=1,PF=1 ⑸ ax=0ffffh,CF=0,ZF=0,SF=0,OF=1,PF=1
⑹ ax=0ffffh,CF=0,ZF=0,SF=1,OF=0,PF=1?2.16假設(shè)DS=2000H,BX=1256H,TABLE的偏移地址是20A1H,物理地址232F7H處存放3280H,試問執(zhí)行下列段內(nèi)間接尋址的轉(zhuǎn)移指令后,轉(zhuǎn)移的有效地址是什么? 答:⑴ 1256h; ⑵ 3280h ?2.17判斷下列程序段跳轉(zhuǎn)的條件(1)xor ax,leleh je equal(2)test al,10000001b jnz there(3)cmp cx,64h jb there 答:⑴ ax=1e1eh; ⑵ al=1******1b; ⑶ cx<64h ?2.18如下是一段軟件延時程序,請問NOP指令執(zhí)行了多少次?
xor cx,cx delay: nop
loop delay 答:65536 ?2.19 有一個首地址為array的20個字的數(shù)組,說明下列程序段的功能。
mov cx,20 mov ax,0 mov si,ax sumlp: add ax,array[si]
add si,2
loop sumlp
mov total,ax 答:將array數(shù)組的20個字(無進位)累加,其和存入total單元。?2.20按照下列要求,編寫相應(yīng)的程序段:
(1)由string指示的起始地址的主存單元中存放一個字符串(長度大于6),把該字符串的第1個和第6個字符(字節(jié)量)傳送給DX寄存器。
(2)有兩個32位數(shù)值,按“小端方式”存放在兩個緩沖區(qū)buffer1和 buffer2中,編寫程序段完成DX.AX←buffer1-buffer2功能。
(3)編寫一個程序段,在DX高4位全為0時,使AX=0;否則,使AX=-1。(4)把DX.AX中的雙字右移4位。
(5)有一個100個字節(jié)元素的數(shù)組,其首地址為array,將每個元素減1(不考慮溢出或借位)存于原處。
答:
⑴ mov dl,string
mov dh,string+5 ⑵ mov ax,word ptr buffer1
sub ax,word ptr buffer2
mov dx,word ptr buffer1+2
sbb dx,buffer2+2 ⑶
test dx,0f0h
je
t1
mov ax,-1
jmp
done t1: mov ax,0 done: …..⑷ mov ax,1234h
mov dx,5678h
mov cx,4 lp1:
shr
dx,1
rcr
ax,1
loop lp1 ⑸ lea bx,array
mov cx,100 lp1:
sub [bx],1
inc
bx
loop lp1 ?2.25編寫一個程序段:先提示輸入數(shù)字“Input Number:0~9”,然后在下一行顯示輸入的數(shù)字,結(jié)束;如果不是鍵入了0~9數(shù)字,就提示錯誤“Error!”,繼續(xù)等待輸入數(shù)字。答:
.model
small.stack
100h.data
message
db “Input
Number : 0~9”,0dh,0ah,“$”
error
db “Error!”,0dh,0ah,“$”
.code.startup
mov
dx,offset message
mov
ah,09h
int
21h begin1:
mov
ah,01h
int
21h
cmp
al,“0”
jb
err1
cmp
al,“9”
ja
err1
mov
dl,al
mov
ah,02h
int
21h.exit err1:
mov
offset error
mov
ah,09h
int
21h
jmp
begin1 end
第三章
3.11請設(shè)置一個數(shù)據(jù)段,按照如下要求定義變量:
(1)my1b為字符串變量,表示字符串“Personal Computer”。(2)my2b為用十進制數(shù)表示的字節(jié)變量,這個數(shù)的大小為20。(3)my3b為用十六進制數(shù)表示的字節(jié)變量,這個數(shù)的大小為20。(4)my4b為用二進制數(shù)表示的字節(jié)變量,這個數(shù)的大小為20。(5)my5w為20個未賦值的字變量。(6)my6c為100的符號常量。
(7)my7c為字符串常量,代替字符串“Personal Computer”。答:
my1b
db “Personal Computer” my2b
db 20 my3b
db 14h my4b
db 00010100b my5w dw 20 dup(?)my6c
equ 100 my7c
equ < Personal Computer > 3.14設(shè)在某個程序中有如下片段,請寫出每條傳送指令執(zhí)行后寄存器AX的內(nèi)容:
;數(shù)據(jù)段
org 100h varw
dw 1234h,5678h varb
db 3,4 vard
dd 12345678h buff
db 10 dup(?)mess
db ?hello?
;代碼段
mov ax,offset mess
mov ax,type buff+type mess+type vard
mov ax,sizeof varw+sizeof buff+sizeof mess
mov ax,lengthof varw+lengthof vard 答:
offset varb = 0104h offset mess = 0114h type buff = 1;type mess = 1; type vard = 4 sizeof varw = 4;sizeof buff = 10; sizeof mess = 5 lengthof varw =2;lengthof vard = 1 3.15假設(shè)myword是一個字變量,mybyte1和mybyte2是兩個字節(jié)變量,指出下列語句中的具體錯誤原因。
⑴ mov byte ptr [bx],1000(2)mov bx,offset myword[si](3)cmp mybyte1, mybyte2(4)mov mybyte1,al+1(5)sub al,myword(6)jnz myword 答:
⑴1000大于字節(jié)變量所能表示的范圍
mov byte ptr [BX],5 表示的意思是把5以字節(jié)的形式傳送給DS:BX,1000超過了0ffh,也就是大于1個字節(jié),所以無法傳送會出現(xiàn) error A2050: Value out of range(值超出范圍)
數(shù)據(jù)類型不匹配,目的地址單元是字節(jié)單元,1000大于255。無法存放。⑵OFFSET只能用于簡單變量
OFFSET后只能跟標識符。
⑶雙操作數(shù)不能同時為存儲器操作數(shù)
CMP的兩個操作數(shù)不能同時在存儲器中。
⑷數(shù)值表達式應(yīng)為運算符加常量
運算符只能對常數(shù)進行操作,不能對變量進行操作。
⑸兩操作數(shù)類型不一致
數(shù)據(jù)類型不匹配,AL是8位的,MYWORD是16位變量。⑹條件跳轉(zhuǎn)只能是短跳轉(zhuǎn)
MYWORD是變量,其指的單元中存放的是操作數(shù),不能用做跳轉(zhuǎn)入口。
3.17已知用于LED數(shù)碼管的顯示代碼表為:
LEDtable
db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h
db 80h,90h,88h,83h,0c6h,0c1h,86h,8eh 它依次表示0~9,A~F這16個數(shù)碼的顯示代碼。現(xiàn)編寫一個程序?qū)崿F(xiàn)將lednum中的一個數(shù)字(0~
9、A~F)轉(zhuǎn)換成對應(yīng)的LED顯示代碼。答:
stack segment stack
db 100h dup(?)stack ends
data segment ledtable db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h
db 80h,90h,88h,83h,0c6h,0c1h,86h,8eh lednum
db 3 data ends
code segment 'code' assume cs:code,ss:stack,ds:data start: mov ax,data mov ds,ax
lea bx,ledtable mov al,lednum xlat
mov ax,4c00h int 21h code ends end start
解析:stack 段是缺省的堆棧段時寫成 stack segment para stack'stack' 比較簡單省事兒,因為這樣鏈接程序會自動設(shè)置 exe 可執(zhí)行文件里初始堆棧指針,程序里就不用自己進行設(shè)置了。如果沒有最后的那個 'stack' 說明項,就需要自己設(shè)置 ss:sp。'stack'是類別名。
把我定義的stack segment關(guān)聯(lián)到棧,省去了assume ss:stack對么,所以我可以寫成stack segment stack.3.18編制一個程序,把變量bufX和bufY中較大者存入bufZ;若兩者相等,則把其中之一存入bufZ中。假設(shè)變量存放的是8位有符號數(shù)。答:
data segment x
db 13 y
db-3 z
db ? data ends
stack segment stack
db 100 dup(?)stack ends
code segment 'code' assume cs:code, ds:data, ss:stack start: mov ax,data mov ds,ax
mov al,x mov ah,y cmp al,ah jbe change mov z,ah jmp done change: mov z,al done: mov ax,4c00h int 21h code ends end start 3.19設(shè)變量bufX為有符號數(shù)16位數(shù),請將它的符號狀態(tài)保存在signX,即:如果變量值大于等于0,保存0;如果X小于0,保存-1.編寫該程序。答:
data segment buffx dw 13 signx dw ? data ends
stack segment stack
db 100 dup(?)stack ends
code segment 'code' assume cs:code, ds:data, ss:stack start: mov ax,data mov ds,ax
mov ax,buffx;ax=13 cmp ax,0 jbe change mov signx,0 jmp done change: mov signx,-1 done: mov ax,4c00h int 21h code ends end start 3.20 bufX、bufY和bufZ是3個有符號十六進制數(shù),編寫一個比較相等關(guān)系的程序:(1)如果這3個數(shù)都不相等,則顯示0。
(2)如果這3個數(shù)中有兩個數(shù)相等,則顯示1。(3)如果這3個數(shù)都相等,則顯示2。答:
data segment bufx
db 13 bufy
db-3 bufz
db-3 data ends
stack segment stack
db 100 dup(?)stack ends
code segment 'code' assume cs:code, ds:data, ss:stack start: mov ax,data mov ds,ax
mov al,bufx mov bl,bufy mov cl,bufz
cmp al,bl je
cac cmp al,cl je
view1 cmp bl,cl je
view1 mov dl,'0' jmp view cac: cmp al,cl je
view2
view1: mov dl,'1' jmp view
view2: mov dl,'2'
view: mov ah,02h int 21h
mov ax,4c00h int 21h code ends end start 3.21例3.7中,如果要實現(xiàn)所有為1的位都順序執(zhí)行相應(yīng)的處理程序段(而不是例題中僅執(zhí)行最低為1位的處理程序段),請寫出修改后的代碼段? 答: data segment number db 78h addrs dw offset fun0, offset fun1, offset fun2, offset fun3,offset fun4, offset fun5, offset fun6, offset fun7 data ends
stack segment stack
db 100 dup(?)stack ends
code segment 'code' assume cs:code, ds:data, ss:stack start: mov ax, data mov ds, ax
mov dh, number mov cx, 8 mov bx, 0 lp1: shr dh, 1 jc
next
again: inc bx inc bx loop lp1 jmp done next: jmp addrs[bx]
fun0: mov dl, '0' jmp view fun1: mov dl, '1' jmp view fun2: mov dl, '2' jmp view fun3: mov dl, '3' jmp view fun4: mov dl, '4' jmp view fun5: mov dl, '5' jmp view fun6: mov dl, '6' jmp view fun7: mov dl, '7' jmp view
view: mov ah, 02h int 21h jmp again
done: mov ax, 4c00h int 21h
code ends end start 3.22編制程序完成12H, 45H, F3H, 6AH, 20H, FEH, 90H, C8H, 57H和34H共10個無符號字節(jié)數(shù)據(jù)之和,并將結(jié)果存入字節(jié)變量SUM中(不考慮進位)。答:
data segment num db 12h, 45h, 0f3h, 6ah, 20h, 0feh, 90h, 0c8h, 57h, 34h sum db ? data ends
stack segment stack
db 100 dup(?)stack ends
code segment 'code' assume cs:code, ds:data, ss:stack start: mov ax, data mov ds, ax
mov cx, 10 lea bx, num
again: mov al, [bx] add sum, al inc bx loop again
mov ax, 4c00h int 21h code ends end start 3.23 求主存0040H:0開始的一個64KB物理段中共有多少個空格? 答:
stack segment stack
db 100 dup(?)stack ends
code segment 'code' assume cs:code, ss:stack start: mov ax, 0040h mov es, ax mov di, 0 mov cx, 0 mov bx, 0 mov al, ' '
again: scasb jne next inc bx next: dec cx jne again
mov ax, 4c00h int 21h code ends end start 3.24編寫計算100個正整數(shù)之和的程序。如果和不超過16位字的范圍(65535),則保存其和到wordsum,如超過則顯示 ?overflow!?。答: data segment num dw 100 dup(800)sum dw ? msg db 'Overflow!', 13, 10, '$' data ends
stack segment stack
db 100 dup(?)stack ends
code segment 'code' assume cs:code, ds:data, ss:stack start: mov ax, data mov ds, ax
mov cx, 100 lea bx, num mov ax, 0
again: add ax, [bx] inc bx inc bx jc
err loop again
mov sum, ax jmp done err: mov dx, offset msg mov ah, 09h int 21h
done: mov ax, 4c00h int 21h code ends end start 3.25編制程序完成將一個16位無符號二進制數(shù)轉(zhuǎn)換成為用8421BCD碼表示的5位十進制數(shù)。轉(zhuǎn)換算法可以是:用二進制數(shù)除以10000,商為“萬位”,再用余數(shù)除以1000,得到“千位”;一次用余數(shù)除以100、10和1,得到“百位”、“十位”和“個位”。答: data segment bnum dw 19982 dnum db 5 dup(?), '$' data ends
stack segment stack
db 100 dup(?)stack ends
code segment 'code' assume cs:code, ds:data, ss:stack start: mov ax, data mov ds, ax
mov ax, bnum lea bx, dnum mov dl, 0 cwd mov cx, 10000 div cx add al, 30h mov [bx], al inc bx mov ax, dx cwd mov cx, 1000 div cx add al, 30h mov [bx], al inc bx mov ax, dx cwd mov cx, 100 div cx add al, 30h mov [bx], al inc bx mov ax, dx cwd mov cx, 10 div cx add al, 30h mov [bx], al inc bx
add dl, 30h mov [bx], dl
mov dx, offset dnum mov ah, 09h int 21h
mov ax, 4c00h int 21h
code ends end
start 3.27編寫一個源程序,在鍵盤上按一個鍵,將從AL返回的ASCII碼值顯示出來,如果按下ESC鍵則程序退出。答:
stack segment stack
db 100h dup(?)stack ends
code
segment 'code' assume cs:code, ss:stack start: mov ah, 07h int 21h
cmp al, 1bh je
done
push ax mov dl, al mov cl, 4 shr dl, cl call htoasc mov ah, 02h int 21h pop ax mov dl, al and dl, 0fh call htoasc mov ah, 02h int 21h
jmp start
done: mov ax, 4c00h int 21h
htoasc proc add dl, 30h cmp dl, 39h jbe htoend add dl, 7 htoend: ret htoasc endp
code
ends end
start 3.28請按如下說明編寫子程序:
;子程序功能:把用ASCII碼表示的兩位十進制數(shù)轉(zhuǎn)換位對應(yīng)二進制數(shù) ;入口參數(shù):DH=十位數(shù)的ASCII碼,DL=個位數(shù)的ASCII碼 ;出口參數(shù):AL=對應(yīng)的二進制數(shù) 答:
stack segment stack
db 100h dup(?)stack ends
code
segment 'code' assume cs:code, ss:stack start: mov dx, 3932h call asctoh
mov ax, 4c00h int 21h
asctoh proc push cx sub dx, 3030h mov cl, 10 mov al, dh mul cl add al, dl pop cx ret asctoh endp
code
ends end
start 3.29調(diào)用HTOASC子程序,編寫顯示一個字節(jié)的16進制數(shù)、后跟“H”的子程序。答:
stack segment stack
db 100h dup(?)stack ends
code
segment 'code' assume cs:code, ss:stack start: mov ah, 07h int 21h
cmp al, 1bh je
done
call htoah
jmp start
done: mov ax, 4c00h int 21h
htoah proc push ax push cx push dx push ax mov dl, al mov cl, 4 shr dl, cl call htoasc mov ah, 02h int 21h
pop ax mov dl, al and dl, 0fh call htoasc mov ah, 02h int 21h
mov dl, 'H' mov ah, 02h int 21h pop dx pop cx pop ax ret htoah endp
htoasc proc add dl, 30h cmp dl, 39h jbe htoend add dl, 7 htoend: ret htoasc endp
code
ends end
start 3.30寫一個子程序,根據(jù)入口參數(shù)AL=0、1、2,依次實現(xiàn)對大些字母轉(zhuǎn)換成小寫、小寫轉(zhuǎn)換成大寫或大小寫字母互換。欲轉(zhuǎn)換的字符串在string中,用0表示結(jié)束。答:
data segment string db 'abcDEfGh', '$' data ends
stack segment stack
db 100 dup(?)stack ends
code
segment 'code' assume cs:code, ds:data, ss:stack start: mov ax, data mov ds, ax
mov al, 2 call change
mov dx, offset string mov ah, 09h int 21h
mov al, 0 call change
mov dx, offset string mov ah, 09h int 21h
mov al, 1 call change
mov dx, offset string mov ah, 09h int 21h
mov ax, 4c00h int 21h
change proc lea bx, string cmp al, 0 je
cg1 cmp al, 1 je
cg2 cg3: cmp byte ptr [bx], '$' je
done cmp byte ptr [bx], 5ah ja
xtod add byte ptr [bx], 20h jmp cg33 xtod: sub byte ptr [bx], 20h cg33: inc bx jmp cg3 cg2: cmp byte ptr [bx], '$' je
done cmp byte ptr [bx], 61h jb
cg22 sub byte ptr [bx], 20h cg22: inc bx jmp cg2 cg1: cmp byte ptr [bx], '$' je
done cmp byte ptr [bx], 5ah ja
cg11 add byte ptr [bx], 20h cg11: inc bx jmp cg1
done: ret change endp
code
ends end
start 3.34編寫一個計算字節(jié)校驗和的子程序。所謂“校驗和”是指不記進位的累加,常用于檢查信息的正確性。主程序提供入口參數(shù),有數(shù)據(jù)個數(shù)和數(shù)據(jù)緩沖區(qū)的首地址。子程序回送求和結(jié)果這個出口參數(shù)。傳遞參數(shù)方法自定。答:
data segment count = 10 array db count dup(10h)check db ? data ends
stack segment stack
db 100 dup(?)stack ends
code segment 'code' assume cs:code, ds:data, ss:stack start: mov ax, data mov ds, ax
mov ax, count push ax mov ax, offset array push ax call sumcheck mov check, al
mov ax, 4c00h int 21h
sumcheck proc push bp mov bp, sp push bx push cx mov bx, [bp+4] mov cx, [bp+6] mov al, 0 sum1: add al, [bx] inc bx loop sum1 pop cx pop bx pop bp ret 4 sumcheck endp
code ends end
start
第二篇:微機原理及應(yīng)用習題答案
《微機原理及應(yīng)用》習題答案
第一章
?1.11 請完成下列數(shù)制轉(zhuǎn)換:
(1)將174.66D轉(zhuǎn)換為對應(yīng)的二進制和十六進制形式。
(2)將100011101011.01011B轉(zhuǎn)換為對應(yīng)的十進制和十六進制形式。(3)將F18A6.6H轉(zhuǎn)換為對應(yīng)的二進制和十進制形式。答:174.66D=10101110.1010B=AE.AH 100011101011.01011B=2283.34375D=8EB.58H F18A6.6H=989350.375D
?1.12 請寫出與數(shù)據(jù)+37和-37對應(yīng)的8位機器數(shù)原碼、反碼和補碼,并分別用二進制和十六進制表示出來。
答:-37D=(10100101B)原=(11011010B)反=(11011011B)補
?1.13 8位機器數(shù)46H,若作為無符號數(shù)和補碼有符號數(shù),其對應(yīng)的真值各是什么?若作為BCD碼和ASCII碼,其對應(yīng)的又是什么?
答:無符號數(shù)46H=70,補碼46H=+70
BCD碼46H=46,ASCII碼46H=“F”
第二章
?2.5什么是8088中的邏輯地址和物理地址?邏輯地址如何轉(zhuǎn)換成物理地址?1MB最多能分成多少個邏輯段?請將如下邏輯地址用物理地址表達:
(1)FFFFH:0H(2)40H:17H(3)2000H:4500H
(4)B821H:4567H 答:⑴ FFFFH:0H = FFFF0H
⑵ 40H:17H = 00417H
⑶ 2000H:4500H = 24500H
⑷ B821H:4567H = BC777H ?2.8已知DS=2000H,BX=0100H,SI=0002,存儲單元[20100H]~[20103H]依次存放12H,34H,56H,78H,[21200H]~[21203H]依次存放2AH,4CH,87H,65H,說明下列每條指令執(zhí)行完后AX寄存器的內(nèi)容以及源操作數(shù)的尋址方式? 答:⑴ AX=1200H,立即數(shù)尋址;
⑵ AX=0100H,寄存器尋址;
⑶ AX=4C2AH,直接尋址;
⑷ AX=3412H,寄存器間接尋址;
⑸ AX=4C2AH,寄存器相對尋址;
⑹ AX=7865H,基址變址尋址;
⑺ AX=65B7H,基址變址相對尋址。?2.9 說明下面各條指令的具體錯誤原因:
(1)mov cx,dl(2)mov ip,ax(3)mov es,1234h(4)mov es,ds
(5)mov al,300(6)mov [sp],ax(7)mov ax,bx+di(8)mov 20h,ah 答: ⑴操作數(shù)類型不同;
⑵不能手工修改IP;
⑶不能將立即數(shù)直接MOV到段寄存器;
⑷不能在段寄存器之間直接MOV數(shù)據(jù);
⑸300大于AL所能存放的數(shù)據(jù)的范圍;
⑹寄存器間接尋址只能用BX/BP/SI/DI之一;
⑺MOV AX,[BX+DI];
⑻目的操作數(shù)不能是立即數(shù)。
?2.10 已知數(shù)字0~9對應(yīng)的格雷碼依次為:18H,34H,05H,06H,09H,0AH,0CH,11H,12H,14H,它存在于以table為首地址(設(shè)為200H)的連續(xù)區(qū)域中。請為如下程序段的每條指令加上注釋,說明每條指令的功能和執(zhí)行結(jié)果。lea
bx,table mov al,8
xlat
答:
lea
bx,table ;bx=0200h mov al,8
;al=08h xlat
;al=12h ?2.11給出下列各條指令執(zhí)行后的AL值,以及CF,ZF,SF,OF和PF的狀態(tài): mov al,89h add al,al add al,9dh cmp al,0bch sub al,al dec al inc al 答:⑴ al=89h ⑵ al=12h,CF=1,ZF=0,SF=0,OF=1,PF=1,AF=1 ⑶ al=afh,CF=0,ZF=0,SF=1,OF=0,PF=1,AF=0 ⑷ al=afh,CF=1,ZF=0,SF=1,OF=1,PF=1,AF=0 ⑸ al=00h,CF=0,ZF=1,SF=0,OF=0,PF=1,AF=0 ⑹ al=ffh,CF=0,ZF=0,SF=1,OF=0,PF=1,AF=1
⑺ al=00h,CF=0,ZF=1,SF=0,OF=0,PF=1,AF=1 ?2.12請分別用一條匯編語言指令完成如下功能:
(1)把BX寄存器和DX寄存器的內(nèi)容相加,結(jié)果存入DX寄存器。
(2)用寄存器BX和SI的基址變址尋址方式把存儲器的一個字節(jié)與AL寄存器的內(nèi)容相加并把結(jié)果送到AL中。用BX和位移量0B2H的寄存器相對尋址方式把存儲器中的一個字和CX寄存器的內(nèi)
容相加,并把結(jié)果送回存儲器中。
(4)用位移量為0520H的直接尋址方式把存儲器中的一個字與數(shù)3412H相加,并把結(jié)果
送回該存儲單元中。
(5)把數(shù)0A0H與AL寄存器的內(nèi)容相加,并把結(jié)果送回AL中。答:
⑴ add dx,bx;
⑵ add al,[bx+si];
⑶ add [bx+00b2h],cx
⑷ add word ptr [0520h],3412h ⑸ add al,0a0h ?2.13設(shè)X,Y,Z,V均為16位帶符號數(shù),分別裝在X,Y,Z,V存儲器單元中,閱讀如下程序段,得出它的運算公式,并說明運算結(jié)果存于何處。mov ax,x imul y mov cx,ax mox bx,dx mov ax,z cwd add cx,ax adc bx,dx sub cx,540 abb bx,0 mov ax,v cwd sub ax,cx abb dx,bx idiv x 答:(V -(X * Y + Z - 540))/ X ?2.14給出下列各條指令執(zhí)行后的結(jié)果,以及狀態(tài)標志CF、OF、SF、ZF、PF的狀態(tài)。mov ax,1470h and ax,ax or ax,ax xor ax,ax not ax test ax,0f0f0h 答:⑴ ax=1470h ⑵ ax=1470h,CF=0,ZF=0,SF=0,OF=0,PF=0 ⑶ ax=1470h,CF=0,ZF=0,SF=0,OF=0,PF=0 ⑷ ax=0000h,CF=0,ZF=0,SF=0,OF=1,PF=1
⑸ ax=0ffffh,CF=0,ZF=0,SF=0,OF=1,PF=1 ⑹ ax=0ffffh,CF=0,ZF=0,SF=1,OF=0,PF=1?2.16假設(shè)DS=2000H,BX=1256H,TABLE的偏移地址是20A1H,物理地址232F7H處存放3280H,試問執(zhí)行下列段內(nèi)間接尋址的轉(zhuǎn)移指令后,轉(zhuǎn)移的有效地址是什么? 答:⑴ 1256h; ⑵ 3280h ?2.17判斷下列程序段跳轉(zhuǎn)的條件(1)xor ax,leleh je equal(2)test al,10000001b jnz there(3)cmp cx,64h jb there 答:⑴ ax=1e1eh; ⑵ al=1******1b; ⑶ cx<64h ?2.18如下是一段軟件延時程序,請問NOP指令執(zhí)行了多少次?
xor cx,cx delay: nop
loop delay 答:65536 ?2.19 有一個首地址為array的20個字的數(shù)組,說明下列程序段的功能。
mov cx,20 mov ax,0 mov si,ax sumlp: add ax,array[si]
add si,2
loop sumlp
mov total,ax 答:將array數(shù)組的20個字(無進位)累加,其和存入total單元。?2.20按照下列要求,編寫相應(yīng)的程序段:
(1)由string指示的起始地址的主存單元中存放一個字符串(長度大于6),把該字符串的第1個和第6個字符(字節(jié)量)傳送給DX寄存器。
(2)有兩個32位數(shù)值,按“小端方式”存放在兩個緩沖區(qū)buffer1和 buffer2中,編寫程序段完成DX.AX←buffer1-buffer2功能。
(3)編寫一個程序段,在DX高4位全為0時,使AX=0;否則,使AX=-1。
(4)把DX.AX中的雙字右移4位。
(5)有一個100個字節(jié)元素的數(shù)組,其首地址為array,將每個元素減1(不考慮溢出或借位)存于原處。答:
⑴ mov dl,string
mov dh,string+5 ⑵ mov ax,word ptr buffer1
sub ax,word ptr buffer2
mov dx,word ptr buffer1+2
sbb dx,buffer2+2 ⑶
test dx,0f0h
je
t1
mov ax,-1
jmp
done t1: mov ax,0 done: …..⑷ mov ax,1234h
mov dx,5678h
mov cx,4 lp1:
shr
dx,1
⑸
rcr
ax,1 loop lp1 lea bx,array mov cx,100 lp1:
sub [bx],1
inc
bx
loop lp1 ?2.25編寫一個程序段:先提示輸入數(shù)字“Input Number:0~9”,然后在下一行顯示輸入的數(shù)字,結(jié)束;如果不是鍵入了0~9數(shù)字,就提示錯誤“Error!”,繼續(xù)等待輸入數(shù)字。答:
.model
small.stack
100h.data
message
db “Input
Number : 0~9”,0dh,0ah,“$”
error
db “Error!”,0dh,0ah,“$”
.code.startup
mov
dx,offset message
mov
ah,09h
int
21h begin1:
mov
ah,01h
int
21h
cmp
al,“0”
jb
err1
cmp
al,“9”
ja
err1
mov
dl,al
mov
ah,02h
int
21h.exit err1:
mov
offset error
mov
ah,09h
int
21h
jmp
begin1 end
第三章
3.11請設(shè)置一個數(shù)據(jù)段,按照如下要求定義變量:
(1)my1b為字符串變量,表示字符串“Personal Computer”。(2)my2b為用十進制數(shù)表示的字節(jié)變量,這個數(shù)的大小為20。(3)my3b為用十六進制數(shù)表示的字節(jié)變量,這個數(shù)的大小為20。(4)my4b為用二進制數(shù)表示的字節(jié)變量,這個數(shù)的大小為20。(5)my5w為20個未賦值的字變量。(6)my6c為100的符號常量。
(7)my7c為字符串常量,代替字符串“Personal Computer”。答:
my1b
db “Personal Computer” my2b
db 20 my3b
db 14h my4b
db 00010100b my5w dw 20 dup(?)my6c
equ 100 my7c
equ < Personal Computer > 3.14設(shè)在某個程序中有如下片段,請寫出每條傳送指令執(zhí)行后寄存器AX的內(nèi)容:
;數(shù)據(jù)段
org 100h varw
dw 1234h,5678h varb
db 3,4 vard
dd 12345678h buff
db 10 dup(?)mess
db ?hello?
;代碼段
mov ax,offset mess
mov ax,type buff+type mess+type vard
mov ax,sizeof varw+sizeof buff+sizeof mess
mov ax,lengthof varw+lengthof vard 答:
offset varb = 0104h offset mess = 0114h type buff = 1;type mess = 1; type vard = 4 sizeof varw = 4;sizeof buff = 10; sizeof mess = 5 lengthof varw =2;lengthof vard = 1 3.15假設(shè)myword是一個字變量,mybyte1和mybyte2是兩個字節(jié)變量,指出下列語句中的具體錯誤原因。(1)mov byte ptr [bx],1000(2)mov bx,offset myword[si](3)cmp mybyte1, mybyte2(4)mov mybyte1,al+1(5)sub al,myword(6)jnz myword 答:
⑴1000大于字節(jié)變量所能表示的范圍 ⑵OFFSET只能用于簡單變量 ⑶雙操作數(shù)不能同時為存儲器操作數(shù) ⑷數(shù)值表達式應(yīng)為運算符加常量 ⑸兩操作數(shù)類型不一致 ⑹條件跳轉(zhuǎn)只能是短跳轉(zhuǎn)
3.17已知用于LED數(shù)碼管的顯示代碼表為: LEDtable
db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h
db 80h,90h,88h,83h,0c6h,0c1h,86h,8eh 它依次表示0~9,A~F這16個數(shù)碼的顯示代碼?,F(xiàn)編寫一個程序?qū)崿F(xiàn)將lednum中的一個數(shù)字(0~
9、A~F)轉(zhuǎn)換成對應(yīng)的LED顯示代碼。答:
stack segment stack
db 100h dup(?)stack ends
data segment ledtable db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h
db 80h,90h,88h,83h,0c6h,0c1h,86h,8eh lednum
db 3 data ends
code segment 'code' assume cs:code,ss:stack,ds:data start: mov ax,data mov ds,ax
lea bx,ledtable mov al,lednum xlat
mov ax,4c00h int 21h code ends end start 3.18編制一個程序,把變量bufX和bufY中較大者存入bufZ;若兩者相等,則把其中之一存入bufZ中。假設(shè)變量存放的是8位有符號數(shù)。答:
data segment x
db 13 y
db-3 z
db ? data ends
stack segment stack
db 100 dup(?)stack ends
code segment 'code' assume cs:code, ds:data, ss:stack start: mov ax,data mov ds,ax
mov al,x mov ah,y cmp al,ah jbe change mov z,ah jmp done change: mov z,al done: mov ax,4c00h int 21h code ends end start 3.19設(shè)變量bufX為有符號數(shù)16位數(shù),請將它的符號狀態(tài)保存在signX,即:如果變量值大于等于0,保存0;如果X小于0,保存-1.編寫該程序。答:
data segment buffx dw 13 signx dw ? data ends
stack segment stack
db 100 dup(?)stack ends
code segment 'code' assume cs:code, ds:data, ss:stack
start: mov ax,data mov ds,ax
mov ax,buffx cmp ax,0 jbe change mov signx,0 jmp done change: mov signx,-1 done: mov ax,4c00h int 21h code ends end start 3.20 bufX、bufY和bufZ是3個有符號十六進制數(shù),編寫一個比較相等關(guān)系的程序:(1)如果這3個數(shù)都不相等,則顯示0。(2)如果這3個數(shù)中有兩個數(shù)相等,則顯示1。(3)如果這3個數(shù)都相等,則顯示2。答:
data segment bufx
db bufy
db bufz
db data ends
stack segment stack
db 100 dup(?)stack ends
code segment 'code' assume cs:code, ds:data, ss:stack
start: mov ax,data mov ds,ax
mov al,bufx mov bl,bufy mov cl,bufz
cmp al,bl je
cac cmp al,cl je
view1 cmp bl,cl je
view1 mov dl,'0' jmp view 13-3-3
cac: cmp al,cl je
view2 view1: mov dl,'1' jmp view view2: mov dl,'2'
view: mov ah,02h int 21h
mov ax,4c00h int 21h code ends end start 3.21例3.7中,如果要實現(xiàn)所有為1的位都順序執(zhí)行相應(yīng)的處理程序段(而不是例題中僅執(zhí)行最低為1位的處理程序段),請寫出修改后的代碼段? 答:
data segment number db 78h addrs dw offset fun0, offset fun1, offset fun2, offset fun3,offset fun4, offset fun5, offset fun6, offset fun7 data ends
stack segment stack
db 100 dup(?)stack ends
code segment 'code' assume cs:code, ds:data, ss:stack start: mov ax, data mov ds, ax
mov dh, number mov cx, 8 mov bx, 0 lp1: shr dh, 1 jc
next
again: inc bx inc bx loop lp1 jmp done next: jmp addrs[bx]
fun0: mov dl, '0' jmp view fun1: mov dl, '1' jmp view fun2: mov dl, '2' jmp view fun3: mov dl, '3' jmp view fun4: mov dl, '4' jmp view fun5: mov dl, '5' jmp view fun6: mov dl, '6' jmp view fun7: mov dl, '7' jmp view
view: mov ah, 02h int 21h jmp again
done: mov ax, 4c00h int 21h
code ends end start 3.22編制程序完成12H, 45H, F3H, 6AH, 20H, FEH, 90H, C8H, 57H和34H共10個無符號字節(jié)數(shù)據(jù)之和,并將結(jié)果存入字節(jié)變量SUM中(不考慮進位)。答:
data segment num db 12h, 45h, 0f3h, 6ah, 20h, 0feh, 90h, 0c8h, 57h, 34h sum db ? data ends
stack segment stack
db 100 dup(?)stack ends
code segment 'code' assume cs:code, ds:data, ss:stack start: mov ax, data mov ds, ax
mov cx, 10 lea bx, num
again: mov al, [bx] add sum, al inc bx loop again
mov ax, 4c00h int 21h code ends end start 3.23 求主存0040H:0開始的一個64KB物理段中共有多少個空格? 答:
stack segment stack
db 100 dup(?)stack ends
code segment 'code' assume cs:code, ss:stack start: mov ax, 0040h mov es, ax mov di, 0 mov cx, 0 mov bx, 0 mov al, ' ' again: scasb jne next inc bx next: dec cx jne again
mov ax, 4c00h int 21h code ends end start 3.24編寫計算100個正整數(shù)之和的程序。如果和不超過16位字的范圍(65535),則保存其和到wordsum,如超過則顯示 ?overflow!?。答:
data segment num dw 100 dup(800)sum dw ? msg db 'Overflow!', 13, 10, '$' data ends
stack segment stack
db 100 dup(?)stack ends
code segment 'code' assume cs:code, ds:data, ss:stack start: mov ax, data mov ds, ax
mov cx, 100 lea bx, num mov ax, 0
again: add ax, [bx] inc bx inc bx jc
err loop again
mov sum, ax jmp done err: mov dx, offset msg mov ah, 09h int 21h
done: mov ax, 4c00h int 21h code ends end start 3.25編制程序完成將一個16位無符號二進制數(shù)轉(zhuǎn)換成為用8421BCD碼表示的5位十進制數(shù)。轉(zhuǎn)換算法可以是:用二進制數(shù)除以10000,商為“萬位”,再用余數(shù)除以1000,得到“千位”;一次用余數(shù)除以100、10和1,得到“百位”、“十位”和“個位”。答:
data segment bnum dw 19982 dnum db 5 dup(?), '$' data ends
stack segment stack
db 100 dup(?)stack ends
code segment 'code' assume cs:code, ds:data, ss:stack
start: mov ax, data mov ds, ax
mov ax, bnum lea bx, dnum mov dl, 0 cwd mov cx, 10000 div cx add al, 30h mov [bx], al inc bx mov ax, dx
cwd mov cx, 1000 div cx add al, 30h mov [bx], al inc bx mov ax, dx cwd mov cx, 100 div cx add al, 30h mov [bx], al inc bx mov ax, dx cwd mov cx, 10 div cx add al, 30h mov [bx], al inc bx
add dl, 30h mov [bx], dl
mov dx, offset dnum mov ah, 09h int 21h
mov ax, 4c00h int 21h
code ends end
start 3.27編寫一個源程序,在鍵盤上按一個鍵,將從AL返回的ASCII碼值顯示出來,如果按下ESC鍵則程序退出。答:
stack segment stack
db 100h dup(?)stack ends
code
segment
start: mov ah, 07h int 21h
cmp al, 1bh je
done
push ax mov dl, al mov cl, 4 shr dl, cl call htoasc mov ah, 02h int 21h
pop ax mov dl, al and dl, 0fh call htoasc mov ah, 02h int 21h
jmp start
done: mov ax, 4c00h int 21h htoasc proc add dl, 30h cmp dl, 39h jbe htoend add dl, 7 htoend: ret htoasc endp 'code' assume cs:code, ss:stack
code
ends end
start 3.28請按如下說明編寫子程序:
;子程序功能:把用ASCII碼表示的兩位十進制數(shù)轉(zhuǎn)換位對應(yīng)二進制數(shù) ;入口參數(shù):DH=十位數(shù)的ASCII碼,DL=個位數(shù)的ASCII碼 ;出口參數(shù):AL=對應(yīng)的二進制數(shù) 答:
stack segment stack ends
code
segment 'code' assume cs:code, ss:stack start: mov dx, 3932h call asctoh
mov ax, 4c00h int 21h
asctoh proc push cx sub dx, 3030h mov cl, 10 mov al, dh mul cl add al, dl pop cx ret asctoh endp stack
db 100h dup(?)code
ends end
start 3.29調(diào)用HTOASC子程序,編寫顯示一個字節(jié)的16進制數(shù)、后跟“H”的子程序。答:
stack segment stack
db 100h dup(?)stack ends
code
segment 'code' assume cs:code, ss:stack
start: mov ah, 07h int 21h
cmp al, 1bh je
done call htoah
jmp start
done: mov ax, 4c00h int 21h
htoah proc push ax push cx push dx push ax mov dl, al mov cl, 4 shr dl, cl call htoasc mov ah, 02h int 21h
pop ax mov dl, al and dl, 0fh call htoasc mov ah, 02h int 21h
mov dl, 'H' mov ah, 02h int 21h pop dx pop cx pop ax ret htoah endp
htoasc proc add dl, 30h cmp dl, 39h jbe htoend add dl, 7 htoend: ret htoasc
code
ends end
start 3.30寫一個子程序,根據(jù)入口參數(shù)AL=0、1、2,依次實現(xiàn)對大些字母轉(zhuǎn)換成小寫、小寫轉(zhuǎn)換成大寫或大小寫字母互換。欲轉(zhuǎn)換的字符串在string中,用0表示結(jié)束。答:
data segment string db 'abcDEfGh', '$' data ends
stack segment stack
db 100 dup(?)stack ends
code
segment 'code' assume cs:code, ds:data, ss:stack start: mov ax, data mov ds, ax
mov al, 2 call change
mov dx, offset string mov ah, 09h int 21h
mov al, 0 call change
mov dx, offset string mov ah, 09h int 21h
mov al, 1 call change
mov dx, offset string endp mov ah, 09h int 21h
mov ax, 4c00h int 21h
change proc lea bx, string cmp al, 0 je
cg1 cmp al, 1 je
cg2 cg3: cmp byte ptr [bx], '$' je
done cmp byte ptr [bx], 5ah ja
xtod add byte ptr [bx], 20h jmp cg33 xtod: sub byte ptr [bx], 20h cg33: inc bx jmp cg3 cg2: cmp byte ptr [bx], '$' je
done cmp byte ptr [bx], 61h jb
cg22 sub byte ptr [bx], 20h cg22: inc bx jmp cg2 cg1: cmp byte ptr [bx], '$' je
done cmp byte ptr [bx], 5ah ja
cg11 add byte ptr [bx], 20h cg11: inc bx jmp cg1
done: ret change endp
code
ends end
start 3.34編寫一個計算字節(jié)校驗和的子程序。所謂“校驗和”是指不記進位的累加,常用于檢查信息的正確性。主程序提供入口參數(shù),有數(shù)據(jù)個數(shù)和數(shù)據(jù)緩沖區(qū)的首地址。子程序回送求和結(jié)果這個出口參數(shù)。傳遞參數(shù)方法自定。答:
data segment count = 10 array db count dup(10h)check db ? data ends
stack segment stack ends
code segment 'code' assume cs:code, ds:data, ss:stack start: mov ax, data mov ds, ax
mov ax, count push ax mov ax, offset array push ax call sumcheck mov check, al
mov ax, 4c00h int 21h
sumcheck proc push bp mov bp, sp push bx push cx mov bx, [bp+4] stack
db 100 dup(?)mov cx, [bp+6] mov al, 0 sum1: add al, [bx] inc bx loop sum1 pop cx pop bx pop bp ret 4 sumcheck endp
code ends end
start
第三篇:《微機原理及應(yīng)用》試卷及其答案
《微機原理及應(yīng)用》試卷A
一、填空題(每空1分,共15分)
1、在計算機中,對帶符號數(shù)的運算均采用補碼。帶符號負數(shù)1100 0011的補碼為__________。
2、單片機通常采用“三總線”的應(yīng)用模式,芯片內(nèi)部設(shè)有單獨的、_____ 和控制總線。
3、當使用80C51單片機時,需要擴展外部程序存儲器,此時EA應(yīng)為__________。
4、若(A)=B3H,(R0)=A8H,執(zhí)行指令XRL A,R0之后,(A)=_______。
5、在80C51單片機中,帶借位減法SUBB指令中,差的D7需借位時,______=1,差的D3需借位時,______=1。6、80C51單片機中,在調(diào)用子程序前,用_________指令將子程序中所需數(shù)據(jù)壓入堆棧,進入執(zhí)行子程序時,再用___________指令從堆棧中彈出數(shù)據(jù)。
7、在十六進制數(shù)與ASCII碼值的轉(zhuǎn)換過程中,當十六進制數(shù)在0~9之間時,其對應(yīng)的ASCII碼值為該十六進制數(shù)加_________。
8、外部中斷和有兩種觸發(fā)方式:__________________和________________。
9、在單片機串行通信中,依發(fā)送與接收設(shè)備時鐘的配置情況,串行通信可以分為 _________________和_________________。
10、若累加器A中的數(shù)據(jù)為0111 0010B,則PSW中的P=____________。
二、選擇題(每題1分,共15分)
1、單片機是在一片集成電路芯片上集成了以下部分,除了()A、微處理器
B、存儲器
C、I/O接口電路
D、串口通信接口
2、一個機器周期包含多少個晶振周期()
A、2
B、6
C、8
D、12 3、80C51單片機有21個特殊功能寄存器,其中與串行口相關(guān)的有以下幾個,除了()A、SBUF
B、TCON
C、SCON
D、PCON 4、80C51系列單片機具有4個8位的并行I/O口,其中哪個口工作時需要外接上拉電阻()A、P0
B、P1
C、P2
D、P3
5、寄存器中的內(nèi)容為地址,從該地址去取操作數(shù)的尋址方式稱為()
A、寄存器尋址
B、直接尋址
C、寄存器間接尋址
D、變址尋址
6、源地址為1005H。目的地址為0F87H。當執(zhí)行指令“JC rel”時,rel為()。A、7EH
B、80H
C、82H
D、84H
7、若(R0)=30H,(30H)=75H,(75H)=90H,執(zhí)行指令MOV A,@R0后,(A)=______。A、30H
B、75H
C、90H
D、00H
8、下列哪個語句是起始地址設(shè)置偽指令()。
A、ORG
B、END
C、DW
D、EQU
9、在80C51單片機中,各中斷優(yōu)先級最低的是()。
A、外部中斷0
B、外部中斷1
C、定時器0
D、計數(shù)器1 10、80C51單片機的中斷響應(yīng)時間至少需要()個完整的機器周期。A、1
B、2
C、3
D、5
11、在80C51單片機中,在不帶進位加法ADD指令中,當_________時,溢出標志位OV=1。A、D7、D6都向前進位
B、只有D7向前進位 C、D7、D6都沒有向前進位
D、只有D3向前進位
12、當累加器A中的低4位(高4位),出現(xiàn)了非BCD碼時,需要用十進制調(diào)整指令DA A,即在相應(yīng)的低4位(高4位)加______,以產(chǎn)生正確的BCD結(jié)果。A、2
B、4
C、6
D、8
13、若(P0)=1011 1100B。執(zhí)行指令SETB P0.1后,(P0)=_______。
A、1011 1101
B、1011 1110
C、1111 1100
D、0011 1100 14、80C51復(fù)位后,PC與SP的值分別為()。
A、0000H,00H
B、0000H,07H C、0030H,07H
D、0030H,00H
15、下列哪條指令是正確的()。
A、PUSH R2
B、ADD R0,A C、MOVX A,@DPTR
D、MOV @R0,A
三、問答題(每題10分,共20分)
1、簡述什么是堆棧?堆棧中入棧、出棧的過程?(10分)
2、列舉出80C51單片機的5種尋址方式,寫出每一種方式相應(yīng)的一條指令?(10分)
四、程序閱讀題(15分)
設(shè)(A)=38H,R0=28H,(28H)=18H,執(zhí)行下列程序后,((A))=________。(5分)ORL
A,#27H ANL
A,28H XCHD A,@R0 CPL
A
2、閱讀下列程序段,寫出每條指令執(zhí)行后的結(jié)果,并說明此程序段完成什么功能?(10分)
MOV R1,#30H;(R1)=________,MOV A,#64H;((A))=_______,ADD A,#47H;((A))=_______,(CY)=________,(AC)=________,DA
A;((A))=_______,(CY)=________,(AC)=________,MOV @R1,A;(R1)=_______,(30H)=________。
五、計算題(10分)
若要求定時器T0工作方式1,定時時間為1ms,當晶振為6MHz時,求送入TH0和TL0的計數(shù)器初值各為多少?
六、編程題(25分)
1、若單片機的晶振頻率為12MHz,試用循環(huán)轉(zhuǎn)移指令編寫延時100ms的延時子程序。(10分)
有一變量存放在片內(nèi)RAM的30H單元,其取值范圍為00H~04H。要求編制一段程序,根據(jù)變量值求其平方值,并存入片內(nèi)RAM的31H單元。(15分)《單片機原理及應(yīng)用》試卷A 答案
一、填空題(每空1分,共15分)1、1011 1101
2、地址總線數(shù)據(jù)總線
3、低電平(或者0)4、1BH
5、CY AC
6、PUSH
POP 7、30H
8、電平觸發(fā)方式邊沿觸發(fā)方式
9、異步通信同步通信10、0
二、選擇題(每題1分,共15分)1-5題
D D B A C
6-10題
B B A
D
C 11-15題 B C B B
D
三、問答題(20分)
1、簡述什么是堆棧?堆棧中入棧、出棧的過程?(10分)
堆棧是在內(nèi)部RAM中按“后進先出”的規(guī)則組織的一片存儲區(qū)。入棧操作時,先將SP的內(nèi)容加1,然后將指令指定的直接地址單元的內(nèi)容存入SP指向的單元;出棧操作時,先將SP指向的單元內(nèi)容傳送到指令指定的直接地址單元,然后SP的內(nèi)容減1
2、列舉出80C51單片機的5種尋址方式,寫出每一種方式相應(yīng)的一條指令?(10分)第一、寄存器尋址,MOV A,R0 第二、直接尋址,MOV
A,50H 第三、寄存器間接尋址,MOV A,@R0 第四、立即尋址,MOV A,#50H 第五、變址尋址,MOV A,@A+DPTR 第六、相對尋址,JC 50H 第七、位尋址,CLR ACC.0
四、程序閱讀題(15分)
設(shè)(A)=38H,R0=28H,(28H)=18H,執(zhí)行下列程序后,((A))=__E7H______。(5分)ORL
A,#27H ANL
A,28H XCHD A,@R0 CPL
A
2、閱讀下列程序段,寫出每條指令執(zhí)行后的結(jié)果,并說明此程序段完成什么功能?(10分)
MOV R1,#30H;(R1)=___30H_____,MOV A,#64H;((A))=___64H____,ADD A,#47H;((A))=___ABH____,(CY)=____0____,(AC)=____0____,DA
A;((A))=___11H____,(CY)=_____1___,(AC)=___1_____,MOV @R1,A;(R1)=____30H___,(30H)=___11H_____。
五、計算題(10分)
若要求定時器T0工作方式1,定時時間為1ms,當晶振為6MHz時,求送入TH0和TL0的計數(shù)器初值各為多少?
解:由于晶振為6MHz,所以機器周期Tcy==2。N=t/Tcy=110-3/210-6=500 X=216-N=65536-500=65036=FE0CH 即應(yīng)將FEH送入TH0中,0CH送入TL0中。
所以,TH0和TL0的計數(shù)器初值各為FEH和0CH。
六、編程題(25分)
1、若單片機的晶振頻率為12MHz,試用循環(huán)轉(zhuǎn)移指令編寫延時100ms的延時子程序。(10分)
答:分析:一個機器周期=12個晶振周期=1,執(zhí)行一條DJNZ指令需要2個機器周期,即2。采用循環(huán)計數(shù)法實現(xiàn)延時,循環(huán)次數(shù)可以通過計算獲得,并選擇先執(zhí)行后判斷的循環(huán)程序。匯編程序如下:
DEL:
MOV R7,#400
;1
DEL1: MOV R6,#123
;1
NOP
;1
DEL2: DJNZ R6,DEL2
;2,共(2*123)
DJNZ R7,DEL1
;2,共((2*123+2+2)*400+1),即100.01ms
2、有一變量存放在片內(nèi)RAM的30H單元,其取值范圍為00H~04H。要求編制一段程序,根據(jù)變量值求其平方值,并存入片內(nèi)RAM的31H單元。(15分)程序如下: ORG
1000H START: MOV
DPTR,#2000H
MOV
A,30H
MOVC A,@A+DPTR
MOV
31H,A
SJMP
$
ORG
2000H TABLE: DB
00,01,04,09,16
END
第四篇:微機原理考試習題與答案
微機原理及接口技術(shù)
習題及練習冊
微機原理課程組 2009年12月
中北大學微機原理及接口技術(shù)習題及練習冊---目錄
目錄
第1章 計算機基礎(chǔ)知識.............................................................................................................................1 1.1 基本練習題....................................................................................................................................1 1.2 課后練習題....................................................................................................................................2 第2章 8086/8088微處理器.......................................................................................................................3 2.1 基本練習題....................................................................................................................................3 2.2 課后練習題....................................................................................................................................4 第3章 指令系統(tǒng).........................................................................................................................................5 3.1 基本練習題....................................................................................................................................5 3.2 課后練習題....................................................................................................................................7 第4章 匯編語言程序設(shè)計.........................................................................................................................9 4.1 基本練習題....................................................................................................................................9 4.2 課后練習題..................................................................................................................................10 第5章 半導(dǎo)體存儲器................................................................................................................................11 5.1 基本練習題...................................................................................................................................11 5.2 課后練習題..................................................................................................................................13 第6章 輸入輸出接口技術(shù).......................................................................................................................14 6.1 基本練習題..................................................................................................................................14 6.2課后練習題...................................................................................................................................15 第7章 并行接口及8255A應(yīng)用..............................................................................................................16 7.1 基本練習題..................................................................................................................................16 7.2 課后練習題..................................................................................................................................18 第8章 串行接口及8251A應(yīng)用..............................................................................................................20 8.1 基本練習題..................................................................................................................................20 8.2 課后練習題..................................................................................................................................20 第9章 中斷及8259A...............................................................................................................................21 9.1 基本練習題..................................................................................................................................22 9.2 課后練習題..................................................................................................................................23 第10章 定時器/計數(shù)器............................................................................................................................24
I 中北大學微機原理及接口技術(shù)習題及練習冊---目錄
10.1 基本練習題................................................................................................................................24 10.2 課后練習題................................................................................................................................25 第11章 模擬量通道.................................................................................................................................26 11.1 基本練習題................................................................................................................................26 11.2 課后練習題................................................................................................................................26 第12章 與實驗相關(guān)的問題.....................................................................................................................28 12.1 基本練習題................................................................................................................................28 12.2 課后練習題................................................................................................................................28 基本練習題參考答案.................................................................................................................................29 第1章 計算機基礎(chǔ)知識參考答案...................................................................................................29 第2章 8086/8088微處理器參考答案.............................................................................................29 第3章 指令系統(tǒng)參考答案...............................................................................................................30 第4章 匯編語言程序設(shè)計參考答案...............................................................................................31 第5章 半導(dǎo)體存儲器參考答案.......................................................................................................33 第6章 輸入輸出接口技術(shù)參考答案...............................................................................................36 第7章 并行接口及8255A應(yīng)用參考答案.......................................................................................36 第8章 串行接口及8251A應(yīng)用參考答案.......................................................................................38 第9章 中斷及8259A參考答案.......................................................................................................39 第10章 定時器/計數(shù)器參考答案....................................................................................................39 第11章 模擬量通道參考答案..........................................................................................................40 第12章 與實驗相關(guān)的問題參考答案.............................................................................................41
I I
中北大學微機原理及接口技術(shù)習題及練習冊
第1章 計算機基礎(chǔ)知識
基本要求:了解微型機的特點、發(fā)展、分類及應(yīng)用;理解微型計算機系統(tǒng)的硬件組成和基本工作方式;掌握軟件的作用及其與硬件的相依關(guān)系,掌握微處理器、微型計算機和微型計算機系統(tǒng)。掌握原碼、反碼、和補碼的定義、求法,掌握補碼運算的特點和基本法則,會用補碼加、減法;熟練掌握有符號數(shù)的表示方法,了解定點數(shù)、浮點數(shù)的表示方法;理解溢出的概念,了解溢出的判別方法;掌握BCD碼的表示方法;掌握字符的表示方法—ASCII碼;了解漢字編碼的方法。本章重點:熟練掌握原碼、反碼、和補碼的定義運算法則。
1.1 基本練習題
一、填空題
1.系統(tǒng)總線由___________、___________、___________三類傳輸線組成。
2.微型計算機由_______________、_______________、_______________和系統(tǒng)總線組成。
3.計算機的硬件結(jié)構(gòu)通常由五大部分組成。即運算器,____________,__________,輸入設(shè)備和輸出設(shè)備組成。
4.8位二進制整數(shù),其補碼所能表示的范圍為____________,-1的補碼為__________H。5.一帶符號數(shù)的8位補碼為11110111B,它所表示的真值為________D。6.將二進制數(shù)101101.101轉(zhuǎn)換為十進制數(shù)為_______________。7.將壓縮BCD碼01111001轉(zhuǎn)換成二進制數(shù)為_______________。
8.一個完整的微機系統(tǒng)應(yīng)包括_______________和_______________兩大功能部分。
9.X、Y的字長均為12位,已知[X]反=A3CH,原碼為_______________H,[Y]反=03CH,則X-Y的補碼為_______________H。
10.微處理器由_______________、_______________和少量寄存器組成。
11.帶符號數(shù)在機器中以_________碼表示,十進制數(shù)-78表示為_______________。12.將壓縮BCD碼01111001轉(zhuǎn)換成十進制數(shù)為_______________。13.8位二進制補碼10110110代表的十進制負數(shù)是_______________。
14.已知X的補碼是11101011B,Y的補碼是01001010B,則X-Y的補碼是_______________。15.ASCII碼由_________位二進制數(shù)碼構(gòu)成,可為_______個字符編碼。
16.在計算機中,用二進制表示實數(shù)的方法有兩種,分別是______和________。
二、選擇題
1.計算機內(nèi)部數(shù)值7FH,當分別為某個數(shù)的原碼、反碼和補碼時,其真值是_________。A)原碼時大 B)反碼時大 C)補碼時大 D)一樣大 2.十進制數(shù)-38的八位二進制補碼是________。
A)01011011 B)11011010 C)11011011 D)01011010 3.微型計算機的發(fā)展特點是__________。
A)體積越來越小 B)容量越來越大 C)精度越來越高 D)以上都對 4.在下列不同進制的數(shù)據(jù)中,最小的數(shù)是___________。
A)101001B B)101001BCD C)52D D)23H 5.標準的ASCII碼由______位二進制代碼組成。
A)4 B)7 C)8 D)9 6.長度相同但格式不同的的兩種浮點數(shù),假設(shè)前者階碼長,尾數(shù)短,后者階碼短,尾數(shù)長,其他規(guī)則相同,則他們可表示數(shù)的范圍和精度_________。
A)兩者可表示的數(shù)的范圍和精度相同 B)前者可表示的數(shù)的范圍大但精度低 中北大學微機原理及接口技術(shù)習題及練習冊
C)后者可表示的數(shù)的范圍大且精度高 D)前者可表示的數(shù)的范圍大且精度高 7.漢字編碼的首要原則是,要給每個漢字分配唯一一個____位的二進制數(shù)。A)4 B)8 C)16 D)32
三、簡答題
1.寫出下列真值對應(yīng)的機器數(shù)的原碼、補碼形式。
(1)X=-1100100(2)X=+1000000(3)X=-1111111(4)X=-0000000 2.微型計算機由那些基本功能部件組成? 3.什么是總線?
4.簡述微型計算機主要特點。5.BCD碼運算修正規(guī)則是什么? 6.簡述微處理器的基本功能。
7.什么是機器數(shù)?什么是機器數(shù)的真值?
1.2 課后練習題
一、填空題
1.將二進制數(shù)1011011.1轉(zhuǎn)換為十六進制數(shù)為_______________。2.將十進制數(shù)199轉(zhuǎn)換為二進制數(shù)為_______________B。
3.BCD碼表示的數(shù),加減時逢______進一,ASCII碼用來表示數(shù)值時,是一種_______________(壓縮或非壓縮)的BCD碼。
4.十進制數(shù)36.875轉(zhuǎn)換成二進制是_______________。
5.以_________為主體,配上系統(tǒng)軟件和外設(shè)之后,就構(gòu)成了______________。
6.十進制數(shù)98.45轉(zhuǎn)換成二進制為___________B、八進制__________Q、十六進制__________H。(精確到小數(shù)點后4位)
二、選擇題
1.堆棧的工作方式是___________。
A)先進先出 B)后進先出 C)隨機讀寫 D)只能讀出不能寫入 2.八位定點補碼整數(shù)的范圍是_____________。
A)-128-+128 B)-127-+127 C)-127-+128 D)-128-+127 3.字長為16位的數(shù)可表示有符號數(shù)的范圍是______。
A)-32767-+32768 B)-32768-+32767 C)0-65535 D)-32768-+32768
三、簡答題
1.微型計算機系統(tǒng)的基本組成?
2.簡述馮.諾依曼型計算機基本思想?
中北大學微機原理及接口技術(shù)習題及練習冊
3.什么是微型計算機?
4.什么是溢出?
第2章 8086/8088微處理器
基本要求:理解微處理器的內(nèi)、外部邏輯結(jié)構(gòu),了解8086/8088的功能結(jié)構(gòu),理解8086/8088的引腳定義和功能‘理解各個寄存器組織方式和I/O組織方式,理解存儲器的地址空間與尋址的概念;理解存儲器分段的概念;熟練掌握物理地址的形成方法,掌握信息的分段存儲與段寄存器之間的關(guān)系。重點和難點:微處理器的內(nèi)、外部邏輯結(jié)構(gòu)和8086/8088的引腳功能
2.1 基本練習題
一、填空題
1.8088的內(nèi)存單元3017H:010BH的物理地址為_______________。2.8088 CPU的外部數(shù)據(jù)線有_______條,內(nèi)部數(shù)據(jù)線有_______條。3.8086中,RESET的作用是:_______________。
4.在8088系統(tǒng)中,從偶地址讀寫兩個字時,需要______個總線周期。5.8086CPU 內(nèi)部設(shè)置有一個_________字節(jié)的指令隊列寄存器。6.8086上電復(fù)位后,其內(nèi)部(CS)=___________,(IP)=________。7.8086 CPU在內(nèi)部結(jié)構(gòu)上由___________和_________組成。
8.在用8086 CPU組成的計算機系統(tǒng)中,當訪問偶地址字節(jié)時,CPU和存儲器通過____________數(shù)據(jù)線交換信息;訪問奇地址字節(jié)時通過_____________數(shù)據(jù)線交換信息。
9.8086 CPU對存儲器的最大尋址空間為_______________;在獨立編址時對接口的最大尋址空間是_______________。
10.8086狀態(tài)寄存器中,作為控制用的標志位有______個,其中,不可用指令操作的是______。11.在8086系統(tǒng)中,堆棧是按___________方式工作的存儲區(qū)域,操作地址由________和_______提供。
二、選擇題
1.指令的指針寄存器是_______。
A)BX B)IP C)BP D)SP 2.中央處理器(微處理器)一般主要包括________。
A)運算器 B)控制器 C)運算器和控制器 D)運算器、控制器和存儲器 3.下面的說法中,___________是正確的。
A)指令周期等于總線周期 B)指令周期大于等于總線周期
C)指令周期是總線周期的兩倍 D)指令周期與總線周期之間的關(guān)系不確定 4.在8086系統(tǒng)中,在以下地址中可作為段起始地址的為:()A)20100H B)20102H C)20104H D)20108H 5.8086執(zhí)行一個總線周期最多可傳送()字節(jié)。中北大學微機原理及接口技術(shù)習題及練習冊
A)1個 B)2個 C)3個 D)4個
6.在8086CPU的標志寄存器中,屬于控制標志位的是__________。A)DF B)SF C)OF D)CF 7.8088 CPU中斷請求線有()。
A)1條 B)2條 C)4條 D)8條
8.某個8088存儲單元的邏輯地址為A400:3400,其物理地址是_____。A)0D8000H B)0A7400H C)3E400H D)0A740H 9.在8086CPU中,對時鐘周期、指令周期和總線周期的長短排序,正確的是________。
A)總線周期≥指令周期≥時鐘周期 B)時鐘周期≥指令周期≥總線周期 C)指令周期≥總線周期≥時鐘周期
10.在8086/8088中,一個最基本的總線周期由4個時鐘周期(T狀態(tài))組成,在T1狀態(tài),CPU在總線上發(fā)出__________信息。
A)數(shù)據(jù) B)狀態(tài) C)地址 D)其他
三、簡答題
1.若在4002H段中有8個字節(jié)的數(shù)據(jù)為34H,45H,56H,67H,78H,89H,9AH,0ABH,假定它們在存儲器中的物理地址為400A5H-400ACH,試求各存儲單元的有效地址;若從存儲器中讀出這些數(shù)據(jù),試問最少要幾個總線周期?
2.8086CPU內(nèi)部由哪兩部分組成?各完成什么工作?
3.簡述8086內(nèi)部EU和BIU兩大功能單元各自的功能和這樣組織的意義。4.什么是微處理器?
2.2 課后練習題
一、填空題
1.8086/8088的基本總線周期由_______個時鐘周期組成,若CPU主頻為10MHz,則一個時鐘周期的時間為_______________。
2.在8086CPU的時序中,為滿足慢速外圍芯片的需要,CPU采樣_____________信號,若未準備好,插入_____________時鐘周期。
3.8086系統(tǒng)總線形成時,須要用_______________信號鎖定地址信號。4.對于8086微處理器,可屏蔽中斷請求輸入信號加在_______________引腳。
5.在8086系統(tǒng)中,若某一存貯單元的邏輯地址為7FFFH:5020H,則其物理地址為_______________。6.8086的輸入信號 Ready 為低電平的作用是說明_______________。7.8088 CPU的 NMI 引腳提出的中斷請求稱為:_______________。8.CPU從主存取出一條指令并執(zhí)行該指令的時間稱為_______________。9.在8086系統(tǒng)中,從奇地址讀寫兩個字時,需要_________個總線周期。
二、簡答題
1.在內(nèi)部結(jié)構(gòu)上,微處理器主要有那些功能部件組成?
中北大學微機原理及接口技術(shù)習題及練習冊
2.微處理器一般應(yīng)具有那些基本功能?
3.什么是總線周期?
三、判斷題
1.在8086系統(tǒng)中,20位地址是在執(zhí)行部件中形成的。()2.8086 CPU的最小方式是為實現(xiàn)多處理器系統(tǒng)而設(shè)計的。()3.在加減運算時,OF=1就表示結(jié)果有錯。()4.兩數(shù)相加,結(jié)果有偶數(shù)個“1”,則PF=1。()5.當8086CPU復(fù)位后,(CS)=0000H,(IP)=0FFFFH,所以復(fù)位后系統(tǒng)從物理地址0FFFF0H開始執(zhí)行程序。()6.8086的每個存儲單元地址既是字節(jié)地址又是字地址。()7.同一個物理地址可以由不同的段地址和偏移量組合得到。()
第3章 指令系統(tǒng)
基本要求:掌握8086/8088的尋址方式,了解8086/8088指令系統(tǒng)概況,掌握常用指令的匯編格式、功能及用法。了解機器語言、匯編語言與高級語言的區(qū)別和聯(lián)系。本章重點:掌握8086CPU的尋址方式、指令系統(tǒng)中指令的分類及其常用指令的格式和功能。本章難點:靈活運用指令解決實際問題。
3.1 基本練習題
一、填空題
1.條件轉(zhuǎn)移指令轉(zhuǎn)移的范圍是______________。
2.設(shè)當前的(SP)=0100H,執(zhí)行PUSH AX指令后,(SP)=_______________H,若改為執(zhí)行INT 21H指令后,則(SP)=_______________H。
3.若當前(SP)=6000H,CPU執(zhí)行一條IRET指令后,(SP)=_______________H;而當CPU執(zhí)行一條段內(nèi)返回指令RET 6后,(SP)=_______________H。
4.8086的I/O指令有__________和__________兩種尋址方式。5.程序控制類指令的功能是_______________。
6.已知(BX)=2000H,(DI)=3000H,(SS)=4000H,(DS)=6000H,(SS)=5000H,66000H單元的內(nèi)容為28H,則指令MOV AL,[BX+DI+1000H]的執(zhí)行結(jié)果是_______________。7.在尋址方式中,可作基址寄存器的有___________、_________。8.若(AL)=95H,執(zhí)行SAR AL,1 后(AL)=________。
9.MOV AX,[BX][DI] 指令中源操作數(shù)的尋址方式為_______________。
10.若(CS)=1000H,(DS)=2000H,(SS)=3000H,(ES)=4000H,(SI)=1000H,(BP)=2000H,則指令MOV AX,[BP]的功能是將____________單元的內(nèi)容傳送給AL,將__________單元的內(nèi)容傳送給AH(填寫物理地址)。
11.指令MOV DX,OFFSET BUFFER 的源操作數(shù)的尋址方式是:_______________。中北大學微機原理及接口技術(shù)習題及練習冊
12.若(AL)=35H,執(zhí)行ROL AL,1 后,(AL)=_______________。
13.指令MOV AX,[DI-4]中源操作數(shù)的尋址方式是______________。
14.累加器專用傳送指令I(lǐng)N間接訪問I/O端口,端口號地址范圍為_______________。15.若(DS)=2000H,(ES)=2100H,(CS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,則執(zhí)行指令LEA AX,[BX][SI] 之后,(AX)=___________H,源操作數(shù)是____________尋址方式。
二、選擇題
1.完成將BX清零,并使標志位CF清零,下面錯誤的指令是_________。
A)SUB BX,BX B)XOR BX,BX C)MOV BX,00H D)AND BX,00H 2.已知(DS)=1000H,(BP)=0010H,(BX)=0100H,(DI)=0100H,(010110H)=ABH,(010111H)=BAH,執(zhí)行指令LEA CX,[BP][DI]后,(BX)=_________。
A)0ABBAH B)0100H C)0BAABH D)0110H 3.下面的指令不合法的是________。
A)INT 21H B)ADC AX,[SI] C)IN AX,03H D)PUSH AL 4.設(shè)SP=50H,執(zhí)行段間返回指令RET 后,寄存器SP的內(nèi)容是()。
A)44H B)54H C)5AH D)5CH 5.在指令MOV ES:[SI],AX 中,目的操作數(shù)為_______尋址方式。
A)寄存器 B)直接 C)基址變址 D)寄存器間接 6.下列四條指令中,有幾條指令需要使用DX寄存器_________? MUL BX DIV BL IN AX,20H OUT 20H,AL A)1條 B)2條 C)3條 D)4條 7.設(shè)(CL)=05H,要獲得(CL)=0AH,可選用的指令是()。
A)NOT CL B)AND CL,0FH C)XOR CL,0FH D)OR CL,0AH 8.用MOV指令將十進制數(shù)89以壓縮BCD碼格式送入AX,正確使用的指令是_________。
A)MOV AX,0089 B)MOV AX,0809 C)MOV AX,0089H D)MOV AX,0809H 9.若(AL)=0FH,(BL)=04H,則執(zhí)行CMP AL,BL后,AL、BL的內(nèi)容__________。
A)0FH,04H B)0BH,04H C)0FH,0BH D)04H,0FH 10.在子程序的最后一定要有一條__________指令。
A)HLT B)RET C)IRET D)POP 11.下列指令中,有語法錯誤的是__________________。
A)MOV [SI],[DI] B)IN AL,DX C)JMP WORD PTR[BX+8] D)PUSH WORD PTR 20[BX+SI-2] 12.下面指令序列執(zhí)行后完成的運算,正確的算術(shù)表達式應(yīng)是________________。
MOV AL,BYTE PTR X SHL AL,1 DEC AL MOV BYTE PTR Y,AL A)Y=2X+1 B)X=2Y+1 C)Y=2X-1 D)X=2Y-1 13.若已知(SP)=2000H,(AX)=0020H,則執(zhí)行指令,PUSH AX 后,(SP)和((SS):(SP))的值分別為_________。
A)2002H,00H B)2000H,20H C)1FFFH,00H D)1FFEH,20H 14.8086執(zhí)行POP AX指令時,正確的操作是___________________。
A)AX<--[SP+1][SP],SP<--SP+2 B)AX<--[SP+1][SP],SP<--SP-2 C)SP<--SP+2,AX<--[SP+1][SP] D)SP<--SP-2,AX<--[SP+1][SP] 15.若累加器AL的內(nèi)容為13H,執(zhí)行NEG AL指令后,AL內(nèi)容為________。
A)OOH B)13H C)0ECH D)0EDH 6
中北大學微機原理及接口技術(shù)習題及練習冊
16.8086中8位算術(shù)運算指令執(zhí)行后,結(jié)果為10010001B,則ZF和SF標志位的值為______。
A)ZF=0 SF=1 B)ZF=0 SF=0 C)ZF=1 SF=1 D)ZF=0 SF不確定 17.在執(zhí)行MUL BL指令執(zhí)行后,CF=OF=1,(AL)=82H,則表示________。
A)(BL)>0 B)(AH)=FFH C)被乘數(shù)小于零 D)乘積大于255
三、簡答題
1.什么是尋址方式,寫出五種與數(shù)據(jù)有關(guān)的尋址方式? 2.在IBM PC中有專用的輸入輸出指令,請問I/O端口的地址范圍是多少?地址范圍的不同,應(yīng)采用的指令格式不同,請寫出在具體的范圍和采用的指令格式。3.指出以下三條指令的區(qū)別(NUM為數(shù)據(jù)段一個變量名)。
(1)MOV SI,NUM(2)LEA SI,NUM(3)MOV SI,OFFSET NUM 4.根據(jù)給定的條件寫出指令或指令序列。
(1)將AX寄存器及CF標志位同時清零。(2)BX內(nèi)容乘以2再加上進位位。(3)將AL中的位二進制數(shù)高4位和低4位交換。
(4)將首地址為BCD1存儲單元中的兩個壓縮BCD碼相加,和送到第三個存儲單元中。5.子程序調(diào)用的操作過程包含哪幾個步驟?
6.在0624H單元內(nèi)有一條二字節(jié)指令JNE OBJ,如其中位移量分別為
(1)27H(2)6BH(3)0C6H 試問:轉(zhuǎn)向地址OBJ的值是多少?
7.如BUFFER為數(shù)據(jù)段中0032單元的符號地址其中存放的內(nèi)容為2345H,試問以下兩條指令有什么區(qū)別?指令執(zhí)行完成后AX寄存器的內(nèi)容是什么?(1)MOV AX,BUFFER(2)LEA AX,BUFFER 8.在無超越說明時,通用數(shù)據(jù)讀寫、目的數(shù)據(jù)串、源數(shù)據(jù)串、堆棧操作和取指令操作分別自動選擇哪些段寄存器搭配產(chǎn)生物理地址?
9.設(shè)(DS)=1000H,(AX)=1C5AH,(BX)=2400H,(SI)=1354H,(13774H)=30H,(13775H)=20H,(13754H)=40H,(13755H)=10H 指令在此環(huán)境下執(zhí)行,在各空中填入相應(yīng)的執(zhí)行結(jié)果。
SUB AX,20H[BX][SI](AX)=_____,SF=______,ZF=______,CF=_____,OF=______ 3.2 課后練習題
一、簡答題
1.若(AX)=9C5AH,(BX)=9754H,執(zhí)行下列指令序列后,程序轉(zhuǎn)向何處執(zhí)行。
ADD AX,BX
JNC L3 JNO L1
JNO L4 JNC L2
JMP L5 SUB AX,BX 2.中斷服務(wù)程序結(jié)束時,用RET指令代替IRET指令能否返回主程序?這樣做存在什么問題?
3.寫出把首地址為BLOCK字數(shù)組中的第6個字,送到DX寄存的指令(或指令組),要求使用以下幾種尋址方式:
(1)寄存間接尋址(2)寄存相對尋址(3)基址變址尋址 中北大學微機原理及接口技術(shù)習題及練習冊
4.設(shè)BX=134AH,BP=1580H,DI=0528H,SI=0234H,DS=3200H,SS=5100H,求在各種尋址方式下源操作數(shù)的物理地址。
1)MOV AX, [2400H] 2)MOV AX, [BX] 3)MOV AX, [SI] 4)MOV AX, [BX+2400H] 5)MOV AX, [BP+2400H] 6)MOV AX, [BX+DI] 7)MOV AX, [BP+SI+2400H]
二、閱讀下面的程序段,寫出運行結(jié)果 1.CLC MOV AX,248BH MOV CL,3 RCL AX,CL 執(zhí)行以上程序序列后,AX=____________________。
2.MOV BX,6D16H MOV CL,7 SHR BX,CL 執(zhí)行后BX寄存器中的內(nèi)容________________________。
3.MOV DX,01H MOV AX,42H MOV CL,4 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL 執(zhí)行后(DX)=__________,(AX)=____________ 4.mov ax,693ah mov al,ah not al add al,ah inc al 程序段執(zhí)行后,AL= _____________、ZF= ______________。
5.根據(jù)程序填空(程序段順序執(zhí)行)MOV CL, 58;CL= MOV AL, 79;AL= ADD AL, CL;AL= H, AF= , CF= DAA;AL= , AF= , CF=
三、判斷題
1.執(zhí)行下列指令可以將00H送到端口地址為1A0H的外設(shè)上。()MOV AL,00H MOV 1A0H,AL 2.執(zhí)行下列指令可以將其00H送到端口地址為2F8H的外設(shè)上:()MOV AL,00H MOV DX,2F8H OUT DX,AL 3.8088的MOV指令不能進行兩個存儲器單元之間的數(shù)據(jù)直接傳送。()4.8088系統(tǒng)中,堆棧的存取可以以字或字節(jié)為單位。()5.IN和OUT指令可尋址的口地址為64K個,端口地址只能用立即數(shù)。()8
中北大學微機原理及接口技術(shù)習題及練習冊
6.判斷下列指令是否正確(1)JMP(2)IN(3)MOV(4)SHL BX AL,DX DS,AX AX,2
(((((((())))))))
(9)PUSH SS(10)POP
CS
(((((((())))))))
(11)XCHG BX,IP(12)MOV(13)IN(14)MOV(15)IN(16)MOV
[BX],[1000] AL,N;(N>255)[BX][DI],10 BX,DX CS,AX(5)PUSH AL(6)MOV(7)MOV(8)MOV ES,3F00H [BX],[SI] AL,[BX+10H]
第4章 匯編語言程序設(shè)計
基本要求:掌握匯編語言程序設(shè)計的基本步驟,熟悉匯編語言程序設(shè)計的基本方法,掌握匯編語言程序的建立及匯編過程。本章的難點:依據(jù)所要解決的問題,選擇正確的程序設(shè)計方法,正確地運用指令編寫實用的匯編源程序
4.1 基本練習題
一、填空題
1.標號和變量都是存貯單元的符號地址,但其內(nèi)容不同,標號是_______________的符號地址,而變量是_______________的符號地址。
2.匯編語言源程序結(jié)束偽指令是_______________。3.一個程序中,有下列偽指令:
ARY DB 25 DUP(3,4,4 DUP(?,1,0))LEN DW $-ARY LEN單元存儲的值是。4.有一個程序片段如下
MSG DW 3 DUP(?, 2 DUP(5,4),3)
MEN DW $-MSG
┇
┇
MOV AX, SEG MEN
MOV DS, AX
MOV AX, MEN AX的值最后是。
二、簡答題
1.簡述8086匯編語言中,指令語句和偽指令語句的區(qū)別和作用。2.什么是變量,變量有哪些屬性,如何使用這些屬性? 3.試說明為什么有時候必須使用PTR屬性操作符? 4.什么是匯編語言,什么是匯編? 5.簡述DOS系統(tǒng)功能調(diào)用的使用方法?
三、程序設(shè)計題
1.從BUFF單元起有一個字符串(長度小于65535),以'*'結(jié)束,編寫一個完整程序求該字符串長度存入LENT單元,并統(tǒng)計字符串中含有大寫英文字符的個數(shù)并存入COUNT單元。要求源程序具備必要的偽指令和段說明。中北大學微機原理及接口技術(shù)習題及練習冊
2.有一帶符號8位數(shù)X存于DAT單元.編一個程序段判斷該數(shù),若x小于0則將0FFH送MARK單元;若X等于0則將MARK+1單元置0FFH;若X大于0則置MARK+2單元為0FFH。3.已知有X、Y、Z三個字變量,存放無符號整數(shù),請編一個完整的程序?qū)崿F(xiàn)公式Z=(X+Y)/(X-Y+600)(不考慮溢出情況)。
4.AX寄存器中存放著4位十六進制數(shù)。試編寫一個匯編語言程序,將這4位十六進制數(shù)分別轉(zhuǎn)換為相應(yīng)的ASCII碼,并依次存放到RESULT數(shù)組的4個字節(jié)中去,要求用調(diào)用子程序的方法實現(xiàn)。5.寫出對存放在DX和AX中的雙字長數(shù)求補的指令序列。
6.設(shè)有兩個等長字符串。試編寫一個匯編語言程序,比較它們是否完全相同;若相同,則將字符“Y”送入AL中,否則,將字符“N”送入AL中。7.寫出程序段,把DX,AX中的雙字右移四位。
8.編寫一個完整的8086匯編語言程序,從附加段中首地址為ADR1(變量名)連續(xù)存放的100個字型無符號整數(shù)中找出最大數(shù),并將此數(shù)及其偏移地址分別放入變量MAX和MAXM中
9.已知(AX)=4BD5H,統(tǒng)計AX中1的個數(shù)和0的個數(shù),并分別放在BL和DL中。編寫程序段實現(xiàn)該功能。
10.有一個首地址為ARRAY的N個字的數(shù)組,請編程序使該數(shù)組中的數(shù)按照從大到小的次序排序。(采用冒泡排序算法)
4.2 課后練習題
一、填空題
1.定義段結(jié)束的偽指令是___________;定義子程序結(jié)束的偽指令是________。
2.偽指令X DB 4 DUP(6,2 DUP(6,8)); Y DW 6800H; 設(shè)X的偏移地址為2000H,則Y的偏移地址為_________H,若執(zhí)行指令MOV BL,BYTE PTR Y后,則(BL)=________。3.偽指令VR1 DB 2 DUP(?,3 DUP(1,2),5)在存貯器中被分配了_______________字節(jié)。
二、選擇題
1.下面表示段定義結(jié)束的偽指令是__________。
A)END B)ENDP C)ENDS D)ENDM 2.變量的類型屬性如下,下面錯誤的類型是__________。
A)字節(jié)型 B)字符型 C)字型 D)雙字型 3.設(shè)有一程序定義如下: ORG 0024H AR1 DW 4,5,$+4 ?
MOV AX,AR1+4 執(zhí)行以上指令后,AX中的內(nèi)容正確的是_______________。
A)0028H B)0032H C)002AH D)002CH 4.現(xiàn)用數(shù)據(jù)定義偽指令定義數(shù)據(jù):BUF DB 4 DUP(0,2 DUP(1,0));問定義后,存儲單元中有數(shù)據(jù)0100H的字單元個數(shù)是____________。A)4 B)3 C)8 D)12 5.下列偽指令中定義字節(jié)變量的是________。A)DB B)DW C)DD D)DT 6.使用DOS功能調(diào)用時,子功能號應(yīng)放在()寄存器中。A)AL B)AH C)DL D)DH 1 0
中北大學微機原理及接口技術(shù)習題及練習冊
三、程序設(shè)計題
1.統(tǒng)計從01000H內(nèi)存單元開始的100個字(WORD)型帶符號數(shù)中的正數(shù)、負數(shù)和零的字(WORD)個數(shù)。
2.實現(xiàn)兩個十六位二進制數(shù)的加法。要求加數(shù)放在FIRST開始單元,被加數(shù)放在SECOND開始單元,和數(shù)放在SUM單元。
第5章 半導(dǎo)體存儲器
基本要求:掌握存儲器的分類、作用及性能指標;了解半導(dǎo)體讀寫存儲器(RAM)的基本原理,掌握靜態(tài)RAM、動態(tài)RAM的特點,了解動態(tài)RAM的刷新方法;了解半導(dǎo)體只讀存儲器(掩膜ROM、PROM、EPROM、EEPROM)的基本原理,掌握其特點;掌握常用存儲器芯片的用法;掌握存儲器容量的擴充方法,以及存儲器與微處理器(8位、16位數(shù)據(jù)總線)的連接方法;掌握片選信號的產(chǎn)生方法。本章重點:掌握各種存儲器的工作原理及其CPU的存儲器的擴展。本章難點:理解存儲器的工作原理及其地址空間的確定。
5.1 基本練習題
一、填空 1.在微機系統(tǒng)中用高位地址線產(chǎn)生存儲器片選(CS)的方法有__________、_________、__________。2.某機器中有8KB的ROM,其末地址為0FFFFFH,則其首地址為______________。3.DRAM靠_______________存儲信息,所以需要定期_______________。
4.掉電后信息丟失的存儲器是_______________,掉電后信息不丟失的存儲器是_______________。5.半導(dǎo)體存儲器分為___________、__________兩大類。前者的特點是_______________,后者的特點是_______________。
6.從內(nèi)存地址40000H到0BBFFFH,共_________KB。
7.用512×4的RAM芯片組成12K×8的芯片組,需片內(nèi)地址線_______________條,片組選擇線至少_______________條。中北大學微機原理及接口技術(shù)習題及練習冊
二、選擇
1.某CPU有地址線20根,它可連接內(nèi)存的最大存儲容量是________。A)64KB B)640KB C)1MB D)4MB 2.以下四種半導(dǎo)體存儲器中,以傳輸同樣多的字為比較條件,則數(shù)據(jù)傳輸率最高的是_______。A)DRAM B)SRAM C)閃速存儲器 D)EPROM 3.沒有外部存貯器的計算機,其監(jiān)控程序可以存放在____________。A)RAM B)ROM C)CPU D)RAM和ROM 4.用16M×1的DRAM芯片組成128MB×8存儲容量,要使用______________。A)128片 B)64片 C)32片 D)16片
5.27128的存儲容量為16K×8,其片內(nèi)地址線和數(shù)據(jù)線數(shù)分別為________。A)8,8 B)8,14 C)14,8 D)14,14 6.2864是一種__________芯片。
A)RAM B)PROM C)EPROM D)EEPROM 7.下列幾種半導(dǎo)體存儲器中,哪一種需要刷新操作______________? A)SRAM B)DRAM C)EPROM D)EEPROM 8.某SRAM芯片,其存儲容量為512K×8位,該芯片的地址線和數(shù)據(jù)線數(shù)目為________。A)8,512 B)512,8 C)18,8 D)19,8 9.EPROM是指__________。
A)可編程的只讀存儲器 B)只讀存儲器
C)紫外線可擦除可編程的只讀存儲器 D)電可改寫只讀存儲器
10.以下四種類型的半導(dǎo)體存儲器中,以傳輸同樣多的字為條件,則讀出數(shù)據(jù)最快的是_________。A)FLASH B)DRAM C)SRAM D)EPROM 11.存儲器是計算機系統(tǒng)的記憶設(shè)備,它主要用來___________。
A)存放數(shù)據(jù) B)存放程序 C)存放數(shù)據(jù)和程序 D)存放微程序 12.和外存相比,內(nèi)存的特點是________。
A)容量小、速度快、成本高 B)容量小、速度快、成本低
C)容量大、速度快、成本高 D)容量大、速度快、成本低
三、簡答題
1.什么是RAM?什么是ROM、EPROM?各有什么用途? 2.試說明線選法和全譯碼法二種片選控制方法的優(yōu)缺點。
3.半導(dǎo)體隨機存儲器RAM與只讀存儲器ROM有何區(qū)別?它們各有哪幾種類型? 4.常用的存儲器片選控制方法有哪幾種?它們各有什么優(yōu)缺點? 5.簡述存儲器芯片的組成。
6.設(shè)有一個具有14位地址和8位字長的存儲器,問:
(1)該存儲器能存儲多少字節(jié)的信息
(2)如果存儲器由1K*1位SRAM芯片組成,需要多少芯片?
(3)最少需要多少位地址作芯片選擇 7.詳細寫出半導(dǎo)體存儲器的分類。
8.計算機的內(nèi)存有什么特點?內(nèi)存由哪兩部分組成?外存一般是指哪些設(shè)備?外存有什么特點? 9.在存儲器器件內(nèi)部,為什么總是采用矩陣形式組成存儲結(jié)構(gòu)?請用一個具體的例子進行說明。10.為了節(jié)省存儲器的地址譯碼電路,通常采用哪些方法?
四、存儲器設(shè)計應(yīng)用題
1.已知有SRAM芯片62256(32K×8)及EPROM芯片27256(32K×8),現(xiàn)用這兩種芯片構(gòu)成8088最小系統(tǒng)內(nèi)存的一部分,其中SRAM所占的地址空間為40000H--47FFFH,EPROM所占的地址空間為1 2
中北大學微機原理及接口技術(shù)習題及練習冊
F8000H--FFFFFH,試設(shè)計出其原理圖。
2.給8088CPU系統(tǒng)擴展32K的ROM,且所選用的存儲器芯片為8K×8,地址譯碼器為74LS138,ROM的地址范圍從60000H~67FFFH,要求寫出每一個存儲器芯片的地址范圍,畫出邏輯連線圖。
3.設(shè)某系統(tǒng)的CPU有16根地址線A15-A0、8根數(shù)據(jù)線D7-D0?,F(xiàn)需擴展6KB的ROM,地址范圍為:0000H-17FFH,采用2716芯片。
(1)請寫出存儲器器件2716的數(shù)據(jù)線和地址線的條數(shù);
(2)計算ROM的芯片數(shù)量;
(3)設(shè)計存儲器擴展原理圖,并寫出每片ROM的地址范圍。4.已知RAM芯片結(jié)構(gòu)如圖所示,回答下列問題:
1)該芯片容量為多少?若要求構(gòu)成一個2K×8的RAM陣列,需幾個這樣的芯片?
2)若RAM陣列組的起始地址為E1000H,畫出存儲器系統(tǒng)與8086的電路連接圖(8086工作在最小模式),并寫出每組RAM芯片的地址空間。
3)編程:將緩沖區(qū)中的10個數(shù)據(jù)寫進E1000開始的10個單元中,并說明如何查看結(jié)果?
五、判斷題
1.只讀存儲器ROM只有一種類型。
()2.動態(tài)RAM的一個重要問題是必須對它所存的信息定期進行刷新。
()
3.用紫外線照射一片EPROM的窗口后,若讀出其存儲單元的內(nèi)容均為0FFH,則表明該EPROM已被擦除干凈。
()4.讀寫存儲器RAM,有SRAM和DRAM二種類型。
()
5.2 課后練習題
一、填空題
1.在Intel80x86系統(tǒng)中,若一個32位(4字節(jié))字11223344H,存儲在地址為10000H的存儲單元中,則10000H字節(jié)單元內(nèi)容為____________,10003H字節(jié)單元內(nèi)容為___________。2.若芯片SRAM的容量為4K×4bit,現(xiàn)欲用這樣的芯片構(gòu)成0A0000H到0C3FFFH的內(nèi)存,需要___片這樣的芯片。
3.如果某存儲器芯片的容量為4K×8位,則存儲器片內(nèi)尋址地址線是_______根,如果它在系統(tǒng)中起始地址為0F0000H,則它的末地址是_______________。
二、簡答題
1.試述動態(tài)RAM的工作特點,與靜態(tài)RAM相比,動態(tài)RAM有什么長處和不足之處。說明它的使用場合。
2.用下列RAM芯片構(gòu)成32K×8的存儲器模塊,各需要多少芯片?多少個片選線?(1)1K×8(2)4K×8(3)1K×4(4)16K×4 中北大學微機原理及接口技術(shù)習題及練習冊
3.什么是字擴展?什么是位擴展?用戶自己購買內(nèi)存條進行內(nèi)存擴充,是在進行何種存儲器擴展?
三、存儲器應(yīng)用
1.設(shè)某微機系統(tǒng)需要擴展內(nèi)存RAM 32KB,擴充的存儲器空間為10000H開始的連續(xù)存儲區(qū)域。存儲器芯片采用16K×8的RAM芯片,CPU使用8088。1)選用芯片,畫出邏輯連接圖; 2)寫出各片RAM的所在地址區(qū)域。
2.用4K×4的EPROM存儲器芯片組成一個16K×8的只讀存儲器。試問:(1)該只讀存儲器的數(shù)據(jù)線和地址線的位數(shù)。(2)根據(jù)題意需要多少個4K×4的EPROM芯片?(3)畫出此存儲器的組成框圖。
第6章 輸入輸出接口技術(shù)
基本要求:理解I/O接口的作用和一般結(jié)構(gòu);掌握I/O編址方式和I/O傳送方式,理解中斷的概念、分類。本章重點:一些基本概念,I/O接口的構(gòu)成以及I/O傳送方式
6.1 基本練習題
一、填空題
1.CPU與內(nèi)存及I/O裝置間傳送數(shù)據(jù)的硬件線路通道稱為_______________。
2.CPU和外設(shè)之間的數(shù)據(jù)傳送方式有__________、__________、____________和___________。3.I/O接口的編址方式可分為_______________、_______________兩種方式。4
中北大學微機原理及接口技術(shù)習題及練習冊
4.CPU與I/O之間接口信息通常有三類,它們是____________、___________、____________信息。5.CPU從I/O接口的_______________中獲取外部設(shè)備的“準備好”、“忙”或“閑”等狀態(tài)信息。6.一個典型的接口是由____________、______________和______________三種不同的寄存器構(gòu)成。7.主機與外設(shè)之間的數(shù)據(jù)傳送控制方式通常有三種,它們是程序控制方式,DMA方式及_______________,其中________方式的數(shù)據(jù)傳輸率最高。
二、選擇題
1.中斷與DMA()A)程序中斷可以完全代替DMA B)DMA可以完全代替程序中斷 C)二者各有使用范圍和特點,不能互相代替
2.I/O與主機信息的交換采用中斷方式的特點是_________。
A)CPU與設(shè)備串行工作,傳送與主程序串行工作 B)CPU與設(shè)備并行工作,傳送與主程序串行工作 C)CPU與設(shè)備并行工作,傳送與主程序并行工作
3.有關(guān)外設(shè)的連接,下面哪個說法是正確的__________________? A)輸入輸出設(shè)備可以直接和CPU連接
B)輸入設(shè)備的數(shù)據(jù)線必須經(jīng)過三態(tài)緩沖器才能和CPU的數(shù)據(jù)總線連接 C)CPU的數(shù)據(jù)總線,必須經(jīng)三態(tài)緩沖器才能和輸出設(shè)備連接 4.一般的接口電路中,不包含下面的哪個端口__________。A)數(shù)據(jù)口 B)地址口 C)控制口 D)狀態(tài)口 5.CPU與外設(shè)間數(shù)據(jù)傳送的控制方式有________________。
A)中斷方式 B)程序控制方式 C)DMA方式 D)以上三種都是
三、簡答題
1.什么情況下兩個端口可以用一個地址?
2.計算機與外部設(shè)備數(shù)據(jù)交換的方式有幾種,分別是什么?
3.如果利用中斷方式傳送數(shù)據(jù),數(shù)據(jù)是如何傳輸?shù)??中斷機構(gòu)起什么作用? 4.什么是I/O接口?
5.簡述CPU以中斷方式如何與外設(shè)交換數(shù)據(jù)。
6.2課后練習題
一、選擇題
1.下列有關(guān)I/O端口的描述中,不正確的是_______________。
A)I/O端口從邏輯上講是被CPU訪問的I/O接口電路中的寄存器 B)8086系統(tǒng)對I/O端口的訪問只能通過專用的指令 C)從連接形式上講,I/O端口總是直接與數(shù)據(jù)總線連接 D)I/O端口可以看作是CPU與外設(shè)交換數(shù)據(jù)的中轉(zhuǎn)站
2.在DMA傳送方式中,對數(shù)據(jù)傳遞過程進行控制的硬件稱為()。
A)數(shù)據(jù)傳遞控制器 B)直接存儲器 C)DMAC D)DMAT 3.CPU響應(yīng)中斷請求和響應(yīng)DMA請求的本質(zhì)區(qū)別是()A)中斷響應(yīng)靠軟件實現(xiàn) B)速度慢 C)控制簡單 D)響應(yīng)中斷時CPU仍然仍控制總線,而響應(yīng)DMA請求時,CPU要讓出總線 4.在中斷方式下,外設(shè)數(shù)據(jù)輸入到內(nèi)存的路徑是()A)外設(shè)→數(shù)據(jù)總線→內(nèi)存 B)外設(shè)→數(shù)據(jù)總線→CPU→內(nèi)存 C)外設(shè)→CPU→DMAC→內(nèi)存 D)外設(shè)→I∕O接口→CPU→內(nèi)存 5.CPU與I∕O設(shè)備間傳送的信號有()中北大學微機原理及接口技術(shù)習題及練習冊
A)數(shù)據(jù)信息 B)控制信息 C)狀態(tài)信息 D)以上三種都是 6.CPU與外設(shè)之間的數(shù)據(jù)傳輸方式有_______________。
A)查詢方式 B)中斷方式 C)DMA方式 D)以上都是 7.主機、外設(shè)不能并行工作的輸入/輸出方式是____________。A)程序查詢方式 B)中斷方式 C)DMA方式
二、簡答題
1.說明I/O接口的基本功能。
2.相對于查詢方式,中斷方式有什么優(yōu)點?和DMA方式比較,中斷方式有什么不足之處?
三、填空題
I/O端口的編址方式有統(tǒng)一編址和_______________兩種。其中,在PC機中,I/O端口編址方式為_______________。
第7章 并行接口及8255A應(yīng)用
基本要求:要求學生掌握并行接口的原理及擴展方法,掌握并行接口器件8255A的內(nèi)部結(jié)構(gòu)、外部引腳、內(nèi)部寄存器以及各種工作方式(方式0、方式1)特點和使用,了解方式2的特點;要求學生掌握8255A初始化編程的方法,并能進行應(yīng)用程序的軟硬件設(shè)計;要求學生掌握鍵盤、LED顯示器的作用和工作原理,掌握接口的設(shè)計方法。重點:8255A的內(nèi)部結(jié)構(gòu)和引腳功能、與CPU的連接;8255A的工作方式0;控制字的格式及作用、各種工作方式的組合,初始化編程方法,應(yīng)用設(shè)計;鍵盤、LED的工作原理。難點:8255A的工作方式;行掃描法、行反轉(zhuǎn)法,鍵識別與處理、多位LED的多位顯示問題。
7.1 基本練習題
一、填空題
1.一片8255A端口A有3種工作方式,端口B有_______種工作方式。
2.8255A的三個端口工作在方式0輸入方式時,三個端口均_________(有/無)鎖存能力。3.當從8255A的端口C讀出數(shù)據(jù)時,8255A的幾個控制信號*CS,A1,A0,*RD,*WR分別是_________,_________,_________,_________,_________(*代表低電平有效)。
4.8255A的端口A可用程序設(shè)置為__________、__________、_________三種工作方式,對C口還有一種特殊使用方式為____________。
5.當8255A的輸入信號 *CS=0、*RD=0、*WR=1且A1=A0=0時,此8255A執(zhí)行的操作是_______________。(*表示低電平有效)
6.當8255A的輸入信號 *CS=0、*RD=
1、*WR=0且A1=A0=0時,此8255A執(zhí)行的操作是_______________。(*表示低電平有效)
7.8255A芯片中的端口B可以有_______種工作方式。
8.一片8255A芯片內(nèi)含_________個傳輸數(shù)據(jù)的8位I/O端口,其中PA口有_________種工作方式。6
中北大學微機原理及接口技術(shù)習題及練習冊
二、選擇題
1.8255A芯片具有三個獨立數(shù)據(jù)端口,只有_______端口具有雙向傳輸方式。A)A口 B)B口 C)C口 D)以上均可
2.當8255A的PC4-PC7全部為輸出時,表明8255A的A端口工作方式為__________。A)方式0 B)方式1 C)方式2 D)不能確定 3.8255A的A口工作在方式2時,B口可工作__________________。A)方式0或方式1 B)方式1或方式2 C)只能工作在方式1 D)任何方式都不行,只能空著
4.已知某系統(tǒng)中8255芯片所占用的I/O地址為340H--343H,則該8255芯片內(nèi)控制字寄存器口地址為_________。
A)340H B)341H C)342H D)343H 5.某系統(tǒng)采用8255A并行I/O接口,初始化時CPU所訪問的端口地址為0CBH,并設(shè)定A口的工作方式為方式1輸出,則A口的地址最可能為__________。A)0CBH B)0CAH C)0C9H D)0C8H 6.8255A的方式選擇控制字應(yīng)寫入__________。
A)A口 B)B口 C)C口 D)控制口
7.在通用可編程并行電路8255A中,用于傳輸數(shù)據(jù)的8位I/O端口共有_________。A)1個 B)2個 C)3個 D)4個
三、簡答題
1.8255A是什么芯片?一片8255占用幾個口地址?它有幾種工作方式?
2.8255A的方式0一般使用在什么場合?在方式0時,如果使用應(yīng)答信號進行聯(lián)絡(luò),應(yīng)該怎么辦? 3.當8255A工作在中斷方式2時,CPU是如何來區(qū)分輸入或輸出的? 4.現(xiàn)欲從8255A芯片PC口的PC0輸出高電平“1”,試問有哪幾種辦法實現(xiàn)此操作? 5.以4×4的鍵盤為例,簡述非編碼鍵盤中行反轉(zhuǎn)法掃描鍵盤的工作原理。
四、硬件編程題
1.一個8088系統(tǒng)中有一8255A,8255A各口設(shè)置如下:A組與B組均工作于方式0,A口為數(shù)輸入,B口為輸出,C口高位部分為輸出,低位部分為輸入,A口地址設(shè)為40H。1)寫出工作方式控制字 2)對8255A初始化
3)從A口輸入數(shù)據(jù),將其取反后從B口送出
2.設(shè)8255A的4個尋址地址號為0060H~0063H,試編寫下列各種情況下的初始化程序。1)將A組和B組設(shè)置成方式0,A口,B口為輸入,C口為輸出。2)將A組工作方式設(shè)置成方式2,B組為方式1,B口作為輸出。3)將A口,B口均設(shè)置成方式1,均為輸入,PC6和PC1為輸出.4)A口工作在方式1,輸入;B口工作在方式0,輸出;C口高4位配合A口工作,低4位為輸入。
3.8255A控制字如下,8255A端口地址為:160H、162H、164H、166H,端口A方式0輸出,端口B方式0輸入,端口C方式0輸出。編寫程序?qū)崿F(xiàn)初始化,并將端口B內(nèi)容的2倍與端口C的內(nèi)容求和后將結(jié)果取反送到端口A。
五、硬件設(shè)計題
1.用一片8255 A芯片設(shè)計一基于PC系統(tǒng)總線的I/O接口板,要求: 1)8255A占用的端口地址為300H--306H,畫出原理圖。
2)設(shè)8255A的PA、PB、PC口均工作在方式0,PA口為輸入,PB、PC口均為輸出,編寫8255的初始化程序片段(已知8255A控制字為10010000B)。
中北大學微機原理及接口技術(shù)習題及練習冊
3)編寫程序片段,將從PA口讀入的狀態(tài)送至PB口輸出。
2.已知8255的控制口地址為236H,開關(guān)信息接在PB口,發(fā)光二極管接在PA口,使用8255作為接口芯片,讀開關(guān)量的狀態(tài),并用發(fā)光二極管顯示輸出。在將開關(guān)的信息存放在FIRST單元的同時,發(fā)光二極管完成其信息的顯示。要求畫出完整的線路連接圖并設(shè)計相應(yīng)的程序。(8086工作在最小模式,8255A相應(yīng)的控制字為82H)。
7.2 課后練習題
一、填空題
1.8255A控制字可以分為 和 兩類。2.8255A各個端口的工作方式是由 決定的。
二、選擇題
1.某系統(tǒng)采用8255A并行I/O接口,初始化時CPU所訪問的端口地址為0CBH,并設(shè)定為方式1輸出,則了B口的口地址應(yīng)為___________。
A)0CAH B)0C9H C)0C8H D)0CCH 2.某系統(tǒng)采用8255A并行I/O接口,初始化時CPU所訪問的端口地址為0BBH,并設(shè)定為方式1輸出,則了B口的口地址應(yīng)為__________。
A)0BAH B)0B9H C)0B8H D)0BCH
三、簡答題
常用的鍵盤掃描有幾種方式?試述各自的特點及原理。
四、硬件編程題
8255A的工作方式控制字和C口的按位置位/復(fù)位控制字有何差別?若將C口的PC2引腳輸出高電平(置位),假設(shè)8255A控制口地址是303H,程序段應(yīng)是怎樣的?
五、硬件設(shè)計題
1.已知8255A的控制口地址為236H,LED采用共陽級接法。字型信息接在PB口,字位信息接在PA口,使用8255A作為接口芯片,在兩塊LED上顯示自己的學號。要求畫出完整的線路連接圖并設(shè)計相應(yīng)的程序(8086工作在最小模式,8255A相應(yīng)控制字為80H)。8
中北大學微機原理及接口技術(shù)習題及練習冊
2.若打印機及其工作時序如圖所示,當打印機不忙時(BUSY=0),向它送數(shù)據(jù)(設(shè)每次只傳送1個字節(jié))并在數(shù)據(jù)穩(wěn)定時用 負脈沖將數(shù)據(jù)存于打印機內(nèi)部,同時設(shè)置打印機忙信號,即BUSY =1。
1)用可編程接口芯片8255A將打印機與總線相連接起來。若規(guī)定8255A的地址為0320H~032FH任選,試畫出連接電路圖。2)數(shù)據(jù)段中首地址為BUFFER的區(qū)域中存放著100字節(jié)要打印的字符,試編寫包括8255A初始化的打印程序,并將100個字符打印出來。
3.在一個系統(tǒng)中,8255A的四個端口地址分別為:420H、422H、424H和426H。要求:
1)初始化8255A,使端口A、B、C均工作于方式0,端口A作為輸入端口,端口B和C作為輸出端口。
2)將端口A輸入的信息取反后直接輸出到端口B。
3)檢測端口A輸入的信息的PA7位。當PA7=1時,端口C輸出FFH,否則,輸出00H。請編寫程序段,完成上述功能(程序要加注解)。
中北大學微機原理及接口技術(shù)習題及練習冊
第8章 串行接口及8251A應(yīng)用
基本要求:掌握異步通信的原理、方法、規(guī)程,理解字符傳送格式和波特率的含義,理解掌握8251A的功能、結(jié)構(gòu),掌握其外部接線、編程和使用方法,了解RS—232C串行通信接口標準,掌握其用法。教學重點:串行通信的基本原理以及8251A的使用。
8.1 基本練習題
一、填空題
1.常用來實現(xiàn)RS-232C電平與TTL電平相互轉(zhuǎn)換的電路是_______________。
2.串行通訊按照時鐘同步方式不同,可分為_______________通訊和_______________通訊。3串行接口標準RS-232C最簡化型的三根線為_______________;其電氣特性邏輯0和1的電平分別為_______________伏。
二、選擇題
1.IEEE488 總線是__________________。
A)工業(yè)控制總線 B)串行通信總線 C)計測總線 D)PC擴展總線 2.在數(shù)據(jù)傳輸率相同的情況下,同步傳輸?shù)乃俣纫哂诋惒絺鬏敚湓蚴?)A)字符間無間隔 B)雙方通信同步 C)發(fā)生錯誤概率少 D)附加信息總量少
3.設(shè)串行異步通信的數(shù)據(jù)格式是:1個起始位,7個數(shù)據(jù)位,1個校驗位,1個停止位,若傳輸率為1200,則每秒鐘傳輸?shù)淖畲笞址麛?shù)為()A)10個 B)110個 C)120個 D)240個
4若傳輸率為2400,收、發(fā)時鐘(RxC∕TxC)頻率為38.4KHz,則波特率因子為()A)1 B)16 C)32 D)64
三、簡答題
1.8251A的狀態(tài)字哪幾位和引腳信號有關(guān)?狀態(tài)位TxRDY和引腳標號TxRDY有什么區(qū)別?它們在系統(tǒng)設(shè)計中有什么用處?
2.8251A內(nèi)部有哪些功能模塊?其中讀/寫控制邏輯電路的主要功能是什么?
3.試問:從8251A的編程結(jié)構(gòu)中,可以看到8251A有幾個寄存器和外部電路有關(guān)?一共要幾個端口地址?為什么?
四、編程題
1.一片8251占用80H,82H兩個端口地址,試說明該8251的C/D引腳如何與系統(tǒng)地址線連接,其控制端口地址為什么?數(shù)據(jù)端口為多少?并編程序初始化該8251,使其工作于同步方式,且波特率因子為16,允許發(fā)送和接收,8個數(shù)據(jù)位,2位停止位,不允許校驗。
2.用程序段對8251A進行同步方式設(shè)置。地址端口地址為66H,規(guī)定用內(nèi)同步方式,同步字符為2個,用奇校驗,7個數(shù)據(jù)位。
8.2 課后練習題
一、簡答題
1.串行通訊的數(shù)據(jù)傳送方式有哪三種?0
中北大學微機原理及接口技術(shù)習題及練習冊
2.在8251內(nèi)部有多個寄存器,其中有模式寄存器、同步字符寄存器
1、同步字符寄存器
2、控制寄存器、狀態(tài)寄存器、數(shù)據(jù)接收寄存器和數(shù)據(jù)發(fā)送寄存器,但是8251芯片只有一條引腳C/D用來區(qū)分內(nèi)部寄存器,請問它是如何區(qū)分這些寄存器的?
二、編程題
1.設(shè)8251A為異步工作方式,波特率因數(shù)為16,7位/每字符,奇校驗,兩位停止位。CPU對8251A輸入80個字符。試對其進行初始化編程。設(shè)8251A的地址為0F2H。
2.若8251A的收發(fā)時鐘(RxC,TxC)頻率為38.4KHz,它的RTS和CTS引腳相連,試編寫出以半雙工異步通訊,每幀字符的數(shù)據(jù)位數(shù)為7,停止位數(shù)為1,偶校驗,波特率為600 b/s,處于發(fā)送狀態(tài)的初始化程序(設(shè)8251A的地址為02C0H和02C1H)。
第9章 中斷及8259A 基本要求:對于非電類同學,理解中斷的概念和分類,熟練掌握中斷的處理過程,會編寫中斷處理程序;掌握中斷優(yōu)先權(quán)的排隊方法;了解中斷嵌套的概念。對于電類同學,在非電類基礎(chǔ)上,了解8259A的功能、結(jié)構(gòu)和工作原理。而對于計算機專業(yè)的同學,在電類基礎(chǔ)上,掌握8259A的初始化方法和一般編程方法。教學重點:中斷、中斷源、中斷向量、中斷過程,8086中斷系統(tǒng)結(jié)構(gòu)、中斷類型編碼、中斷過程,掌握中斷的處理過程,會編寫中斷處理程序,8259A 的功能、編程及使用方法。教學難點:8086中斷系統(tǒng)結(jié)構(gòu)、中斷類型編碼、中斷過程;編寫中斷處理程序,8259A 的功能、編程及使用方法; 中北大學微機原理及接口技術(shù)習題及練習冊
9.1 基本練習題
一、填空題
1.中斷類型碼若為58H,它在中斷矢量表中的矢量地址為_______________H,從該地址開始連續(xù)四個單元存放的是_______________。
2.一個中斷類型號為01CH的中斷處理程序存放在0100H:3800H開始的內(nèi)存中,中斷向量存儲在地址為_________至________的______個字節(jié)中。
3.8088的外部中斷分為________和__________兩大類。4.若用兩片斷8259A芯片構(gòu)成主從級聯(lián)形式,則這兩片8259A芯片最多可直接管理_________級外部中斷源。
5.若8259A的兩個端口地址為20H和21H,則在初始化時,應(yīng)在寫入ICW1_之后,以______地址寫入ICW2和ICW4。
6.8259A有兩類命令字,分別是_______________和_______________。
7.8086系統(tǒng)中,中斷服務(wù)子程序的入口地址通過__________獲取,它們之間的關(guān)系為________,如果1CH的中斷處理子程序從5110:2030H開始,則中斷向量被存放在_________單元,各單元的內(nèi)容為___________。
8.8259A可采用級聯(lián)方式工作,在微機系統(tǒng)中最多可接_______(具體數(shù)字)個從屬的8259A。9.8088 CPU的非屏蔽中斷的類型碼為_________。
10.中斷優(yōu)先級控制主要解決兩種問題:_______________、_______________。11.中斷向量可以提供_______________。
12.硬件中斷可分為_______________、_______________兩種。
二、簡答題 1.8259A的中斷屏蔽寄存器IMR和8086/8088的中斷允許標志IF有什么差別?在中斷響應(yīng)過程中,它們怎樣配合起來工作?
2.外設(shè)向CPU申請可屏蔽中斷,但CPU不響應(yīng)該中斷,其原因有哪些? 3.8259A的初始化命令字和操作命令字有什么差別?它們分別對應(yīng)于編程結(jié)構(gòu)中哪些內(nèi)部寄存器?
4.在8086/8088的中斷系統(tǒng)中,響應(yīng)可屏蔽中斷過程,是如何進入中斷服務(wù)程務(wù)程序的? 5.8086中,可屏蔽中斷與非屏蔽中斷的主要區(qū)別是什么? 6.8086中斷系統(tǒng)響應(yīng)中斷時如何找到中斷入口地址?
三、選擇題
1.8086 CPU 響應(yīng)可屏蔽中斷的必要條件除中斷允許標志IF=1外,只需滿足_________。A)訪內(nèi)操作結(jié)束 B)當前指令執(zhí)行完 C)無軟中斷請求 D)無內(nèi)部中斷請求
2.PC機采用向量中斷方式處理8級外中斷,中斷號依次為08H-0FH。在RAM 0000H:002CH單元開始依次存放23H、FFH、00H、F0H四個字節(jié),問該向量對應(yīng)的中斷號和中斷程序入口是_______________。
A)0CH,23FFH:00F0H B)0BH,0F000H:0FF23H C)0BH,00F0H:23FFH D)0CH,0F000H:0FF23H E)0CH,00F0H:23FFH F)0BH,0F000H:23FFH 3.8086系統(tǒng)中的中斷向量表的作用是____________。
A)存放中斷服務(wù)程序 B)存放系統(tǒng)引導(dǎo)程序
C)存放中斷響應(yīng)標志 D)存放中斷服務(wù)程序的入口地址 4.8259A內(nèi)中斷類型號的數(shù)據(jù)長度為_________。
A)3位 B)8位 C)16位 D)8位或16位 5.8086對硬件中斷請求響應(yīng)優(yōu)先級最高的請求_____________。2
中北大學微機原理及接口技術(shù)習題及練習冊
A)NMI B)INTR C)內(nèi)部硬件中斷 D)單步中斷
6.8086中斷向量表的大小為()字節(jié),其中斷系統(tǒng)可以管理()種中斷。A)1K,256 B)1K,128 C)256,64 D)2K,512 7.8086系統(tǒng)可管理的中斷(軟件及硬件中斷)的個數(shù)最多為__________。A)8個 B)16個 C)64個 D)256個
8.當8088 CPU響應(yīng)中斷時,CPU把斷點處的有關(guān)內(nèi)容壓入堆棧保護,并清除()。A)TF B)IF C)OF D)TF和IF 9.除法出錯是屬于()中斷。
A)線路故障 B)內(nèi)部中斷 C)外部中斷 D)單步中斷 10.3片8259A級聯(lián),最多可管理的中斷級數(shù)為()級。A)20 B)21 C)22 D)24 9.2 課后練習題
一、選擇題
1.PC機中確定可屏蔽中斷服務(wù)程序的入口地址是___________。A)主程序中的調(diào)用指令 B)主程序中的轉(zhuǎn)移指令
C)中斷控制器發(fā)出的類型碼 D)中斷控制器中的中斷服務(wù)寄存器(ISR)
2.已知某8259A與8086 CPU相連,其對應(yīng)的中斷類型碼為40--47H,那么在初始化時,CPU 送給8259A 的ICW2值和IR3中斷源被響應(yīng)時8259A送給CPU的中斷類型碼可能的是_______。A)40H和47H B)40H和40H C)47H和43H D)43H和47H 3.對8086 CPU而言,中斷優(yōu)先級別最高的是_______________。
A)單步中斷 B)除法錯,溢出中斷,軟中斷 C)INTR D)NMI 4.在8086環(huán)境下,對單片方式使用的8259A進行初始化時,必須放置的初始化命令字為()A)ICW1,ICW2,ICW3 B)ICW1,ICW2,ICW4 C)ICW1,ICW3,ICW4 D)ICW2,ICW3,ICW4 5.非屏蔽中斷的中斷類型號是____________。A)1 B)2 C)3 D)4 6.在中斷響應(yīng)周期內(nèi),將IF置0是由_________。
A)硬件自動完成的 B)用戶在編制中斷服務(wù)程序時設(shè)置的 C)關(guān)中斷指令完成的 7.中斷向量是__________。
A)子程序入口地址 B)中斷服務(wù)程序入口地址 C)中斷服務(wù)程序入口地址的地址 8.通過中斷向量表中的中斷向量,可以提供_________。
A)被選中設(shè)備的起始地址 B)傳送數(shù)據(jù)的起始地址 C)中斷服務(wù)程序入口地址 D)主程序的斷點地址 9.CPU響應(yīng)中斷的時間是__________。
A)外設(shè)提出中斷 B)一條指令結(jié)束 C)取指周期結(jié)束 10.所有中斷處理(服務(wù))過程的最后一條可執(zhí)行指令必須是()。A)RET B)IRET C)HALT D)NOP
二、簡答題
1.8086中斷系統(tǒng)有哪幾類?8259A管理的是哪一類中斷?
2.CPU響應(yīng)可屏蔽中斷有哪些基本條件。中北大學微機原理及接口技術(shù)習題及練習冊
3.已知8259A某可屏蔽中斷的類型號為20H,服務(wù)程序的入口地址標號為NMITS,編程將入口地址填寫到中斷向量表中。
三、判斷題
1.非屏蔽中斷信號是一個由高到低的下降沿,這類中斷不受中斷允許標志位的影響,也不能用軟件進行屏蔽。()2.在由8086組成的微機系統(tǒng)中,對應(yīng)中斷類型碼為255的外設(shè),其中斷服務(wù)程序的入口地址為0000:03FFH。()
3.實現(xiàn)中斷嵌套需用堆棧來保護斷點,由于所保護內(nèi)容不多,不必考慮棧溢出。()4.中斷嵌套可以在多級上進行,形成多級嵌套,在應(yīng)用時,其嵌套級數(shù)不受任何限制。()
第10章 定時器/計數(shù)器
基本要求:理解可編程定時器/計數(shù)器的功能及典型結(jié)構(gòu);掌握可編程定時計數(shù)芯片8253的初始化編程,8253芯片的硬件連接和應(yīng)用程序的編程,以及8253的應(yīng)用。本章重點:8253的初始化編程:方式控制字和計數(shù)初值設(shè)置;8253的6種工作方式;8253應(yīng)用。本章難點:8253的初始化編程,計數(shù)值回讀。
10.1 基本練習題
一、填空題
1.8253A工作于“模式0”,設(shè)置計數(shù)器0的計數(shù)常數(shù)為0FFEH,進行二進制計數(shù)。假設(shè)8253A的端口地址為50H—56H。
MOV AL,;8253A初始化 OUT , AL MOV AL,;設(shè)8253A計數(shù)初值 OUT , AL MOV AL,;OUT , AL 2.某一測控系統(tǒng)要使用一個連續(xù)的方波信號,如果使用8253A可編程定時/計數(shù)器來實現(xiàn)此功能,則8253A應(yīng)工作在方式。
3.利用8253A芯片每20ms產(chǎn)生一個脈沖輸出,若輸入的時鐘頻率為2MHz,8253A的計數(shù)初值應(yīng)取,工作方式選。
二、選擇題
1.當8253A可編程定時/計數(shù)器工作在 下時,需要由外部脈沖觸發(fā)開始計數(shù)。A)方式0 B)方式1 C)方式2 D)方式3 E)方式4 F)方式5 2.若8253A處于計數(shù)過程中,當CPU對它裝入新的計數(shù)初值時,其結(jié)果將是。A)8253A禁止編程
B)8253A允許編程,并改變當前的計數(shù)初值 4
中北大學微機原理及接口技術(shù)習題及練習冊
C)8253A允許編程,但不改變當前的計數(shù)初值
D)8253A允許編程,是否影響當前計數(shù)過程隨工作方式而變
3.當8253A工作在方式0,在初始化編程時,一旦寫入控制字后。A)輸出信號端OUT變?yōu)楦唠娖紹)輸出信號端OUT變?yōu)榈碗娖紺)輸出信號端保持電平值不變 D)立即開始計數(shù)
4.當8253A工作在方式0,控制信號變?yōu)榈碗娖?,對計?shù)器的影響是。A)結(jié)束本次循環(huán),等待下一次計數(shù)的開始 B)暫時停止現(xiàn)行計數(shù)工作 C)不影響本次計數(shù) D)終止本次計數(shù)過程,立即開始新的計數(shù)循環(huán)
5.利用8253A每20ms產(chǎn)生一次中斷,若CLK為20MHz,則8253A可采取的工作方式及計數(shù)初值為。
A)方式0;65535 B)方式3;40000H C)方式5;40000 D)方式2;40000 6.8253A。
A)只能實現(xiàn)計數(shù) B)只能實現(xiàn)定時 C)即可實現(xiàn)計數(shù),又可實現(xiàn)定時 D)都不能
三、簡答題
1.定時和計數(shù)有哪幾種實現(xiàn)方法?各有什么特點?
2.試說明定時器/計數(shù)器芯片Intel 8253A的內(nèi)部結(jié)構(gòu)。
四、綜合題
設(shè)8253A三個計數(shù)器的端口地址為100H、101H、102H,控制寄存器端口地址103H。輸入時鐘為2MHz,讓1號通道周期性的發(fā)出方波,其周期為1ms,試編寫初化程序段。
10.2 課后練習題
一、選擇題
1.CPU可以對8253計數(shù)器執(zhí)行讀操作,其讀到的是()
A)工作方式 B)計數(shù)初值 C)計數(shù)執(zhí)行部件CE(減法計數(shù)器)的當前值 D)0 2.在 8253 的6種工作方式中,能夠自動重復(fù)工作的兩種方式是()。
A)方式1,方式 2 B)方式 2,方式3 C)方式2,方式 4 D)方式 3,方式5 3.INTEL8253每個通道都有一個()位的預(yù)置初值減1計數(shù)器。A)4 B)8 C)16 D)32 4.在下列8253的四種工作方式中,即使GATE保持為高電平,處于()的8253在寫入初值后也不開始定時或計數(shù)。
A)方式0(計數(shù)結(jié)束中斷)B)方式1(硬件可重觸發(fā)單穩(wěn)態(tài))C)方式2(速率發(fā)生器)D)方式3(方波)
二、綜合題
1.某系統(tǒng)中8253芯片的通道0至通道2和控制端口的地址分別為0FFF0H~0FFF6H,定義通道0工作在方式2,CLK0=2MHz,要求輸出OUT0為1KHz的速率波;定義通道1工作方式0,其CLK1輸入外部計數(shù)事件,每計滿1000個向CPU發(fā)出中斷請求。試寫出8253通道0和通道1的初始化程序。中北大學微機原理及接口技術(shù)習題及練習冊
2.若要采用一片8253產(chǎn)生近似為1Hz的對稱方波,已知時鐘頻率為2MHz,8253地址為350-353H,試編寫8253初始化程序,并說明通道引腳的連接方法。
第11章 模擬量通道
基本要求:掌握模擬量通道意義,了解A/D,D/A轉(zhuǎn)換原理,掌握0809、0832的使用和編程方法,掌握實際檢測模擬量的一般方法和過程。重點難點:A/D,D/A轉(zhuǎn)換原理及使用和編程方法
11.1 基本練習題
一、填空、選擇題
1.A/D轉(zhuǎn)換器的功能是將_______________轉(zhuǎn)換成數(shù)字量信息,便于計算機運算、處理。
2.某10位的A/D芯片,模擬輸入信號的量程為0~+5伏,則數(shù)字量12對應(yīng)的電壓為()伏。
A)-0.0293 B)0.0586 C)0.0293 D)-0.0586
二、簡答題
1.使用DAC0832進行數(shù)/模轉(zhuǎn)換時,有哪兩種方法可對數(shù)據(jù)進行鎖存?
2.當用帶兩級數(shù)據(jù)緩沖器的D/A轉(zhuǎn)換時,為什么有時要用3條輸出指令才完成16位或12位數(shù)據(jù)轉(zhuǎn)換?
3.什么叫采樣保持電路的采樣狀態(tài)和保持狀態(tài)?
三、編程題
1.利用DAC0832芯片 ,實現(xiàn)輸出三角波。DAC端口的地址為328H,DAC0832芯片采用一級緩沖方式。請寫出主要程序段。
2.在一個計算機系統(tǒng)中連接有一個8位 D/A 轉(zhuǎn)換器,D/A轉(zhuǎn)換器的數(shù)據(jù)端口地址為180H,請編程從此 D/A 轉(zhuǎn)換器的模擬量輸出端輸出一個如圖所示的鋸齒波(頻率不限制)。
11.2 課后練習題
一、簡答題
1.比較計數(shù)式,雙積分式和逐次逼近式A/D轉(zhuǎn)換的優(yōu)缺點。6
中北大學微機原理及接口技術(shù)習題及練習冊
2.在數(shù)字量和模擬量并存的系統(tǒng)中,地線連接時要注意什么問題?
二、編程題
1.一個8位D/A轉(zhuǎn)換器連接于8086系統(tǒng)中,其端口地址為3FH,請編程實現(xiàn)在D/A轉(zhuǎn)換器的輸出端輸出一個鋸齒波。
2.一個8086系統(tǒng)中連接有一A/D轉(zhuǎn)換器,如圖所示,請完成下列問題 1)圖中0809通道5(IN5)的端口地址是多少?
2)圖中0809轉(zhuǎn)換完成信號(EOC)的端口地址是多少?
3)編程將通道7(IN7)的模擬信號連續(xù)采集16次,存放到內(nèi)存BUF1開始的單元中。中北大學微機原理及接口技術(shù)習題及練習冊
第12章 與實驗相關(guān)的問題
12.1 基本練習題
一、填空題
1.匯編語言源程序的擴展名是_______________。
2.匯編語言程序的上機操作的步驟是___________、__________、_________、__________。
二、選擇題
1.實驗時,在DEBUG下如果要運行0100:4360段開始的一段程序用的命令為________。A)D=0100:4360 B)A=0100:4360 C)G=0100:4360 D)Q=0100:4360 2.匯編實驗時要顯示2100H:45B6H段開始的一段程序的反匯編命令用_________。
A)E 2100:45B6 B)F 2100:45B6 C)U 2100:45B6 D)N 2100:45B6 3.在做匯編語言實驗時,有時需要使用調(diào)試工具DEBUG,在DEBUG中,如果要修改AL寄存器中的內(nèi)容,需要使用的命令是__________________。
A)R AX B)R AL C)E AX D)E AL
三、問答題
1.請你設(shè)計一個實驗項目,在實驗箱上完成,具體要求是:在某個鍵按下時,發(fā)光二極管閃爍(亮一段時間,熄滅一段時間),而該鍵抬起來時,發(fā)光二極管一直點亮。寫出實驗步驟和具體使用的實驗箱資源等。
2.在我們做硬件中斷實驗時,經(jīng)常在中斷服務(wù)程序中使用這樣兩條指令 MOV AL,20H OUT 20H,AL 請問這兩條指令的功能是什么?
3.在我們做硬件中斷實驗時,在主程序中經(jīng)常使用如下三條指令
IN AL,21H AND AL,7FH OUT 21H,AL 請問這三條指令的功能是什么?
4.在做硬件實驗時,有一個同學在用F5裝載程序時,CS輸入0000,IP輸入0000,請問該實驗?zāi)芊裢瓿桑瑸槭裁矗?/p>
5.寫出做微機原理硬件實驗的具體步驟。6.簡述DEBUG中A、R、D、Q、G命令的功能。
12.2 課后練習題
一、判斷題
1.我們做軟件實驗時用MASM對編好的程序進行匯編。()2.在我們做微機原理硬件實驗時,實驗程序是由實驗箱上的CPU執(zhí)行的。()3.在做微機原理硬件實驗時,實驗程序是由通用計算機PC的CPU運行的。()
二、簡答題
簡述DEBUG中A、R、D、Q、G命令的功能。8
中北大學微機原理及接口技術(shù)習題及練習冊-----參考答案
基本練習題參考答案
第1章 計算機基礎(chǔ)知識參考答案
一、填空題
1.地址總線,數(shù)據(jù)總線,控制總線(次序可以是任意的)2.中央處理器,存儲器,輸入/輸出接口(次序無關(guān))
3.控制器,存儲器 4.-128--127,0FFH 5.-9 6. 45.625(45.625D)7. 01001111B(01001111或 1001111)8. 硬件系統(tǒng),軟件系統(tǒng) 9. 0DC3H,0A01H 10. 運算器,控制器 11.補碼,F(xiàn)FB2H(0FFB2H或0B2H或其他表示方式)12. 79D(79)
13.-74(-74D)14. 10100001(10100001B)15.7,128 16.定點法 浮點法
二、選擇題
1.D 2.B 3.D 4.B 5.B 6.B 7.C
三、簡答題
1.(1)原碼=11100100 補碼=10011100(2)原碼=01000000 補碼=01000000
(3)原碼=11111111 補碼=10000001(4)原碼=10000000 補碼=00000000 2. 1)微處理器,2)主存儲器,3)系統(tǒng)總線,4)輔助存儲器,5)輸入/輸出(I/O)接口和輸入/輸出設(shè)備
3.在計算機中,連接CPU與各個功能部件之間的一組公共線路,稱為總線,在計算機中一般有三組功能不同的總線,傳輸?shù)刂沸畔⒌姆Q為地址總線,傳輸數(shù)據(jù)信息的稱為數(shù)據(jù)總線,傳輸控制信息的稱為控制總線。(只要答出總線定義,即可)
4.電子計算機是一種能自動,高速,精確地完成各式各樣的數(shù)據(jù)存儲,數(shù)值計算,邏輯推理,過程控制和數(shù)據(jù)處理功能的電子機器。計算機的主要特點有四個方面,即:高速性,準確性,邏輯性,通用性。(只要意思相近即可得分)5. BCD碼運算修正規(guī)則:
(1)凡是對應(yīng)位運算結(jié)果為冗余碼時,加(減)6修正。
(2)如該位和數(shù)有向高位進(借)位時,也在該位加(減)6修正。(3)如低位修正結(jié)果使高位大于9時,高位進行加(減)6修正。(只要意思相近即可)6.CPU是組成微機系統(tǒng)的核心部件,其功能如下:(1)算術(shù)和邏輯運算,執(zhí)行數(shù)據(jù)處理。(2)暫存數(shù)據(jù)。(3)實現(xiàn)程序控制,即可取指令,對指令寄存,譯碼分析并執(zhí)行指令所規(guī)定的操作,還能提供整個系統(tǒng)所需的定時和控制信號。7.數(shù)在機器內(nèi)的表示形式為機器數(shù)。而機器數(shù)對應(yīng)的數(shù)值稱為機器數(shù)的真值。
第2章 8086/8088微處理器參考答案
一、填空題
1.3027BH 2.8,16 3.使8086進行初始化 4.4 5.6 6.0FFFFH,0000H 7.執(zhí)行部件EU,總線接口部件BIU(次序無關(guān))8.CPU的低8位數(shù)據(jù)線(AD0--AD7),CPU的高8位數(shù)據(jù)線(AD8--AD15)9.1MB(1兆字節(jié)),64K(65536)10.3,TF 11.先進后出(后進先出),SP,SS(SS,SP)29 中北大學微機原理及接口技術(shù)習題及練習冊-----參考答案
二、選擇題
1.B 2.C 3.B 4.A 5.B 6.A 7.B 8.B 9.C 10.C
三、簡答題
1.各字節(jié)的有效地址分別為0085H,0086H,0087H,0088H,0089H,008AH,008BH和008CH,8個總線周期
2.在8086內(nèi)部由BIU和EU兩大部分組成,BIU主要負責和總線打交道,用于CPU與存儲器和I/O接口之間進行數(shù)據(jù)交換;EU主要是將從指令隊列中取得的指令加以執(zhí)行。
3.在8086內(nèi)部,按功能劃分可以分為BIU和EU兩大部分,BIU主要負責總線接口,與存儲器和I/O接口進行數(shù)據(jù)傳遞;而EU則是執(zhí)行部件,主要是執(zhí)行指令;這兩部分分開可以在執(zhí)行指令的同時,從存儲器中將將要執(zhí)行的指令取到指令隊列,使兩部分并行工作,提高CPU的速度。(只要意思為提高CPU的效率即可)
4.一般稱為CPU,它是將運算器、控制器集成在一塊芯片上,本身具有運算能力和控制功能,是微型計算機的核心。(只要答出將運算器、控制器集成在一塊即可)
第3章 指令系統(tǒng)參考答案
一、填空題
1.-128~+127 2.00FE,00FA 3.6006H,6008H 4.直接尋址,寄存器間接尋址(次序可以顛倒)5.改變程序執(zhí)行的順序 6.(AL)=28H(28H送到AL寄存器)7.BX,BP(次序無關(guān))8.0CAH 9.基址加變址尋址方式(基址址尋址方式)10.32000H單元的內(nèi)容,32001H單元的內(nèi)容 11.立即尋址方式 12.6AH 13.寄存器相對尋址方式(相對寄存器尋址方式)14.0-65535(其他數(shù)值表示也可以)15.01A0H,基址變址尋址
二、選擇題
1.C 2.B 3.D 4.B 5.D 6.A 7.C 8.C 9.A 10.B 11.A 12.C 13.D 14.A 15.D 16.A 17.D
三、簡答題
1.址方式就是尋找操作數(shù)或操作數(shù)地址的方法。立即數(shù)尋址、寄存器尋址、直接尋址、寄存器間接尋址、寄存器相對尋址、基址變址尋址、相對基址變址尋址
2.I/O端口的地址范圍是0000H--0FFFFH(64K),當?shù)刂贩秶?000H-00FFH 時可以使用直接端口地址訪問和間接訪問,格式如下(以8位為例):
IN AL,PORT IN AL,DX OUT PORT,AL OUT DX,AL 而當?shù)刂贩秶诖笥?0FFH 時只能使用間接訪問指令,格式如下(以8位為例):
IN AL,DX OUT DX,AL 3.(1)指令執(zhí)行后SI取得的是內(nèi)存變量NUM的值。
(2)指令執(zhí)行后SI取得的是內(nèi)存變量NUM的偏移地址。(3)指令執(zhí)行后SI取得的是內(nèi)存變量NUM的偏移地址。4.(1)XOR AX,AX或AND AX,0(2)ADC BX,BX(3)MOV CL,4
(4)MOV AL,BCD1 ROR AL,CL ADD AL,BCD1+1 5.(1)保護現(xiàn)場,即將主程序轉(zhuǎn)移前的程序狀態(tài)保存起來,保存內(nèi)容主要是程序計數(shù)器PC的內(nèi)容。保護現(xiàn)場通常采用堆棧完成,將程序計數(shù)器PC的內(nèi)容(斷點地址)壓入堆棧。(2)將子程序入口地址3 0
中北大學微機原理及接口技術(shù)習題及練習冊-----參考答案
送入程序計數(shù)器PC,那么,下一條要執(zhí)行的指令就是子程序的第一條指令。6.取出NE OBJ指令后,(IP)=0626H,OBJ的值是:(IP)+D->IP 0626H+27H=064DH 0626H+6BH=0691H 0626H-3AH=05ECH 7.第一條指令是將BUFFER字單元的內(nèi)容送到AX寄存器,而第二條指令是將BUFFER的段內(nèi)偏移地址送到AX寄存器。(1)(AX)=2345H(2)(AX)=0032H 8.通用數(shù)據(jù)讀寫自動選擇數(shù)據(jù)段寄存器(DS)目的數(shù)據(jù)串自動選擇附加數(shù)據(jù)段寄存器(ES)源數(shù)據(jù)串自動選擇數(shù)據(jù)段寄存器(DS)堆棧操作自動選擇堆棧段寄存器(SS)取指令操作自動選擇代碼段寄存器(CS)
9、(AX)=0FC2AH,SF=1,ZF=0,CF=1,OF=0 第4章 匯編語言程序設(shè)計參考答案
一、填空題
1.指令(程序),操作數(shù) 2.END 3.350 4.36(或24H)
二、簡答題
1.指令是真正讓計算機進行某種具體操作的命令,它在程序運行時執(zhí)行。偽指令是通知匯編程序在翻譯程序時執(zhí)行的命令。
2.變量是在程序運行過程中,其值可以改變的量,通常給其命名一個符號,稱為變量名。變量有三種屬性:變量的類型、變量的段地址、變量的段內(nèi)偏移地址;類型屬性使用SIZE獲取,段地址屬性用SEG獲取,偏移地址屬性用OFFSET獲取。
3.PTR優(yōu)先于隱含的類型屬性,指定操作數(shù)的類型的類型屬性。因為在許多情況下,所使用的操作符類型與原指定的類型不同,又不希望改變原有的設(shè)定,只暫時改變操作符類型,則必須使用PTR屬性操作符作為臨時設(shè)定,這個臨時設(shè)定類型只在本條指令中有效。
4.匯編語言是用指令助記符、符號地址編寫程序的一種語言,每條指令對應(yīng)一種機器指令。匯編就是將匯編語言源程序翻譯成機器指令的過程
5.1)在AH寄存器中設(shè)定所需調(diào)用的功能號;2)根據(jù)功能的規(guī)定設(shè)定入口參數(shù);3)用INT 21H進入子程序;4)根據(jù)規(guī)定,從相應(yīng)的寄存器取得返回值。
三、程序設(shè)計
1. DATA SEGMENT INC CX BUFF DB 'ABCD??.*'
CMP AL,'A' LENT DW ?
JC NEXT COUNT DW ? CMP AL,'Z' DATA ENDS JNC NEXT CODE SEGMENT INC DX ASSUME CS:CODE,DS:DATA NEXT: INC BX START:MOV AX,DATA JMP LP MOV DS,AX DONE: INC CX LEA BX,BUFF MOV LENT,CX MOV CX,0 MOV COUNT,DX MOV DX,0 MOV AH,4CH LP: MOV AL,[BX] INT 21H CMP AL,'*' CODE ENDS JZ DONE END START
2. MOV AL,DAT AND AL,AL JS LP1 JZ LP2 MOV MARK+2,0FFH
LPl:
LP2: DONE: JMP DONE
MOV MARK,0FFH JMP DONE
MOV MARK+1,0FFH HLT
中北大學微機原理及接口技術(shù)習題及練習冊-----參考答案
3、DSEG SEGMENT
SUB BX,Y X DW ?
ADD BX,600 Y DW ?
MOV AX,X Z DW ?
ADD AX,Y DSEG ENDS
MOV DX,0 CSEG SEGMENT
DIV BX ASSUME CS:CSEG,DS:DSEG
MOV Z,AX MAIN PROC FAR
MOV AH,4CH BEGIN: MOV AX,DSEG
INT 21H MOV DS,AX
MAIN ENDP MOV BX,X
CSEG ENDS END BEGIN
4、CODE SEGMENT
ASSUME CS:CODE,DS:CODE
START: MOV BX,CODE
MOV DS,BX
MOV CL,4
MOV BL,4
MOV SI,OFFSET RESULT
LP: CALL HASC
MOV [SI],DL
INC SI
SHR AX,CL
DEC BL
JNZ LP
EXIT: MOV AH,4CH INT 21H
5、方法1 方法2 MOV CX,0 NOT AX SUB CX,AX NOT DX MOV AX,CX ADD AX,1 MOV CX, 0 ADC DX,0 SBB CX, DX MOV DX, CX
6. CODE SEGMENT
ASSUME CS:CODE,DS:CODE
START: MOV AX,CODE
MOV DS,AX
MOV ES,AX CLD
LEA SI,STRING1
LEA DI,STRING2
MOV CX,DI
SUB CX,SI
XOR AX,AX
7、MOV CL,4 SHR DX,CL SHR AX,CL SHL BL,CL MOV BL,DL OR AH,BL
8. DATA SEGMENT
ADR1 DW 100 DUP(?)
MAX DW ?
MAXM DW ? DATA ENDS 3 2
HASC PROC NEAR MOV DL,AL AND DL,0FH CMP DL,9 JA L2
ADD DL,30H L1: RET
L2: ADD DL,37H JMP L1 HASC ENDP
RESULT DB 4 DUP(?)CODE ENDS END START 方法3 NEG DX NEG AX SBB DX,0 REPE CMPSB JNZ NE MOV AL,'Y' JMP EXIT NE: MOV AL,'N' EXIT: MOV AH,4CH INT 21H STRING1 DB'?'
STRING2 DB'?' CODE ENDS END START MOV AX,ES:[SI] LOP1: CMP AX,ES:[SI] JAE LOP3 MOV AX,ES:[SI] MOV ES:[MAXM],SI
中北大學微機原理及接口技術(shù)習題及練習冊-----參考答案
CODE SEGMENT LOP3: ADD SI,2 ASSUME CS:CODE,DS:DATA,ES:DATA LOOP LOP1 MAIN PROC FAR MOV ES:[MAX],AX
MOV AX,DATA MOV AH,4CH MOV ES,AX INT 21H MOV SI,OFFSET ADR1 MAIN ENDP MOV CX,100 CODE ENDS MOV ES:[MAXM],SI END MAIN
9、MOV AX,4BD5H
INC DL MOV BL,0 JMP L3 MOV DL,0 L2: INC BL MOV CX,16 L3: LOOP L1 L1: SHL AX,1
HLT JC L2
10. DATA SEGMENT MOV BX,0
ARRAY DW A1,A2,A3,?,AN LOOP2: MOV AX,ARRAY[BX] DATA ENDS CMP AX,ARRAY[BX+2] PROG SEGMENT JGE CONTINUE ASSUME DS:PROG,DS:DATA XCHG AX,ARRAY[BX+2] MAIN PROC FAR MOV ARRAY[BX],AX START: PUSH DS CONTINUE: ADD BX,2 SUB AX,AX LOOP LOOP2 PUSH AX MOV CX,DI MOV AX,DATA LOOP LOOP1 MOV DS,AX RET MOV CX,N MAIN ENDP DEC CX PROG ENDS LOOP1: MOV DI,CX END START
第5章 半導(dǎo)體存儲器參考答案
一、填空題
1.線選,部分譯碼,全譯碼 2.0FE000H(FE000H)3.電容,刷新 4.隨機讀寫存儲器(RAM),只讀存儲器(ROM)
5.只讀存儲器,隨機讀寫存儲器,速度慢但掉電后信息不丟失,速度快但掉電后數(shù)據(jù)丟失 6.496 7.9,24
二、選擇題
1.C 2.B 3.B 4.B 5.C 6.D 7.B 8.D 9.C 10.B 11.C 12.A
三、簡答題
1. RAM:隨機讀寫存儲器,可以隨時改寫其中存儲的信息。
ROM:只讀存儲器,其中的內(nèi)容在正常情況下只可以讀出,而不能改寫。
EPROM:可以由用戶編程的只讀存儲器,但在正常情況下只可以讀出其內(nèi)容,而不能改寫。RAM一般用于計算機中需要經(jīng)常改變其內(nèi)容的存儲器,如計算機內(nèi)存。
ROM一般用于計算機中不需要經(jīng)常改變其內(nèi)容的存儲器,如計算機的ROMBIOS。EPROM一般用于在設(shè)計過程中需要經(jīng)常改變其內(nèi)容,而在設(shè)計完成后其內(nèi)容一般不改變的場合。2.線選法除將低位地址線直接接片內(nèi)地址外,剩下的高位地址線,分別作為各個存儲器芯片的片選控制信號,尋址時只允許一位有效,否則不能保證每次只選中一個芯片。線選法的優(yōu)點是連接簡單,無需專門譯碼電路,缺點是地址不連續(xù),有重疊區(qū),浪費地址空間,適于簡單存儲系統(tǒng)構(gòu)造。
全譯碼法除了將低位地址總線直接連至各芯片的地址線外,將余下的高位地址總線全部譯碼,33 中北大學微機原理及接口技術(shù)習題及練習冊-----參考答案
譯碼輸出作為各芯片的片選信號。這種方法可以提供對全部存儲空間的尋址能力,且每一存儲單元有唯一地址對應(yīng)。即使不需要全部存儲空間,多余的譯碼輸出可閑空,便于需要時擴充。
3.隨機存儲器RAM中的任何存儲單元都能隨時讀寫,即存取操作與時間、存儲單元物理位置順序無關(guān),一旦掉電,所存信息丟失。常見類型有靜態(tài)RAM(SRAM)和動態(tài)RAM(DRAM)等。
ROM是一種只讀存儲器,其內(nèi)容一經(jīng)寫入,在工作過程中就只能讀出不能重寫,即使掉電,信息也不會丟失。常見類型有掩模ROM、PROM、EPROM、EEPROM等。
4.常用存儲器片選控制方法有3種,分別是線選法,全譯碼法,局部譯碼法。
線選法的優(yōu)點是連線簡單,缺點是地址空間利用率低;全譯碼法不浪費地址空間,但需譯碼電路;局部譯碼介于前二者之間,當存儲容量要求大于系統(tǒng)地址線所能尋址的最大范圍,或者幾個微處理器需要共享某一存儲區(qū)域時,則采用擴充尋址法。
5.存儲體、地址譯碼器、控制邏輯電路、數(shù)據(jù)緩沖器。(每個1分)6.(1)16384(2)128(3)4 7.半導(dǎo)體存儲器主要有:ROM(只讀存儲器)和RAM(隨機存取存儲器)兩類,RAM隨機存儲器又可以分為:動態(tài)RAM,靜態(tài)RAM;ROM只讀存取存儲器又可以分為:掩膜型ROM;可編程ROM(PROM);可擦除可編程ROM(EPROM);電擦除可編程ROM(EEROM)。
8.計算機的內(nèi)存一般存儲容量小,存取速度快,目前多采用半導(dǎo)體器件組成。通常有動態(tài)RAM和靜態(tài)RAM兩部分組成。常把軟磁盤和硬磁盤、磁帶等作為外存設(shè)備,最近光存儲器的應(yīng)用也越來越廣泛。儲存容量大、速度低,必須配備專門的讀/寫控制設(shè)備。
9.采用矩陣形式存儲信息主要是為了節(jié)省地址譯碼電路,提高半導(dǎo)體器件的集成度。例如要組成1KB的內(nèi)存,若不采用矩陣形式來組織這些單元,就需要1024條譯碼線才能實現(xiàn)對1KB的尋址。但若用32*32矩陣來排列,則只要有32條行選線和32條列選線就可以了。存儲容量越大,矩陣形式的優(yōu)越性就越明顯。
10.常采用存儲器的模塊結(jié)構(gòu)及在一個存儲模塊內(nèi)再將存儲器分組,這樣可用地址的高位對模塊選擇,其余位對存儲器組進行選擇。
四、存儲器設(shè)計應(yīng)用題 1.系統(tǒng)連接如圖:
2.存儲器芯片為8K×8,可知芯片容量為8K,地址線為13條,數(shù)據(jù)線為8條,而系統(tǒng)要求容量為32K,位數(shù)是8,因此為字擴展。需要的芯片為4個
存儲器芯片的地址為:
1)、地址譯碼器:3個輸入端的信號中必須有:A13,A14,其對應(yīng)的位置不同,輸出的引腳也不同。只要輸入信號與輸出信號一致,且連接到相應(yīng)的存儲器芯片上。2)、數(shù)據(jù)線連接正確
3)、地址線連接正確 4
中北大學微機原理及接口技術(shù)習題及練習冊-----參考答案
3.1)存儲器2716的數(shù)據(jù)線有8條,地址線有11條。
2)因為2716的容量為2KB,要擴展6KB,所以需要三片。3)原理圖如下:
4. 1)4片
2)連接如圖
中北大學微機原理及接口技術(shù)習題及練習冊-----參考答案
3)MOV AX,0E100H MOV CX,10 MOV ES,AX CLD MOV SI,OFFSET BUF REP MOVSB MOV DI,O 查看結(jié)果 D E100:0
五、判斷題
1.× 2.√ 3.√ 4.√
第6章 輸入輸出接口技術(shù)參考答案
一、填空題
1.總線 2.無條件傳送方式,程序查詢傳送方式,中斷傳送方式,DMA傳送方式 3.I/O接口單獨編址,與存儲器統(tǒng)一編址 4.數(shù)據(jù)信息,控制信息,狀態(tài)信息 5.狀態(tài)寄存器 6.數(shù)據(jù)寄存器,狀態(tài)寄存器,命令寄存器 7.中斷方式,DMA
二、選擇題
1.C 2.B 3.B 4.B 5.D
三、簡答題
1.一個端口作輸入,一個端口作輸出時,這兩個端口可共用一個地址。
2.計算機與外部設(shè)備數(shù)據(jù)交換的方式有三種:程序控制數(shù)據(jù)傳輸方式、中斷方式、DMA方式;其中在程序控制數(shù)據(jù)傳輸方式中,又分為直接數(shù)據(jù)傳輸方式和程序查詢數(shù)據(jù)傳輸方式。
3.利用中斷方式傳送數(shù)據(jù),一般是首先向CPU發(fā)出中斷請求,CPU響應(yīng)中斷后在中斷處理程序中進行數(shù)據(jù)傳輸,傳輸完畢返回。中斷機構(gòu)起控制作用,實時性較強。
4.在CPU和外部設(shè)備之間,需要一些進行數(shù)據(jù)轉(zhuǎn)換、電平匹配和相互聯(lián)絡(luò)的功能電路,稱為I/O接口,在接口電路中,一般包含功能不同的寄存器,稱為端口寄存器。通過對這些寄存器的編程,可以改變接口的功能和輸入/輸出關(guān)系。
5.當外設(shè)在某個時候準備就緒,向CPU提出中斷申請,當CPU接收到此中斷請求后,如果可以響應(yīng)此中斷,則會暫停現(xiàn)在正在進行的工作,響應(yīng)此請求,得到此中斷的中斷類型碼,根據(jù)此類型碼,在中斷向量表中取得中斷服務(wù)程序的入口地址,執(zhí)行此中斷服務(wù)程序,進行數(shù)據(jù)的交換,完成后,返回到被打斷的程序繼續(xù)原來的工作。
第7章 并行接口及8255A應(yīng)用參考答案
一、填空題
1.2 2.無 3.0,1,0,0,1 4.基本輸入輸出方式(方式0),選通輸入輸出方式(方式1),雙向方式(方式2),按位置0置1 5.將端口A的數(shù)據(jù)送到數(shù)據(jù)線上(意思相近即可)
6.接收CPU送來的端口A的數(shù)據(jù)(意思相近即可)7.2 8.3,3
二、選擇題
1.A 2.A 3.A 4.D 5.D 6.D 7.C
三、簡答題
1.8255A是通用可編程并行接口芯片。一片8255占用4個口地址。方式0:基本輸入/輸出方式方式1:選通輸入/輸出方式方式2:雙向傳輸方式
2.方式0的特點是只要WR,RD信號有效,就有數(shù)據(jù)傳送,一般使用在可隨時傳送數(shù)據(jù)的場合。若使用應(yīng)答信號進行聯(lián)絡(luò),可用C口作為聯(lián)絡(luò),對C口位操作,一般上C口用作選通(STB)線,下C3 6
中北大學微機原理及接口技術(shù)習題及練習冊-----參考答案
口作狀態(tài)輸入(RDY)線。3.在輸入,輸出均允許中斷的情況下,可在中斷服務(wù)程序中查詢狀態(tài)字,判斷OBF和IBF位的狀態(tài),來區(qū)分是輸入中斷還是輸出中斷,并采取相應(yīng)操作。
4.兩種方法:1)使用字節(jié)型輸出方式,向PC口輸出最低位為“1”的值;2)使用按位操作,將PC0置為“1” 5.1)首先規(guī)定行線為輸出,列線為輸入。2)從行線上輸出全“0”的數(shù)據(jù),從列線讀取數(shù)據(jù),如果讀取數(shù)據(jù)為全“1”,則說明沒有鍵按下,否則,有鍵按下。3)當有鍵按下時,將列線規(guī)定為輸出、行線為輸入。4)將第二步從列線上讀取的數(shù)據(jù)輸出到列線上,從行線上讀取數(shù)據(jù),若讀取的數(shù)據(jù)為全“1”,則認為是一個干擾,否則,根據(jù)當前行、列線的數(shù)據(jù)值,可以唯一確定哪一個鍵按下。6.8255 A是可編程的并行接口芯片,設(shè)有三個8位的數(shù)據(jù)輸入/輸出端口,共有三種工作方式:方式0為基本的輸入/輸出方式;方式1為選通式輸入/輸出方式;方式2為雙向數(shù)據(jù)傳送方式。
四、硬件編程題
1.1)10010001B 即91H 2)MOV AL,91H; OUT 43H,AL 3)IN AL,40H; NOT AL; OUT 41H,AL 2.1)MOV AL,92H 2)MOV AL,0C4H 3)MOV AL,0B6H 4)MOV AL,0B1H
OUT 63H,AL OUT 63H,AL OUT 63H,AL OUT 63H,AL
3.根據(jù)端口地址知,端口A地址為:160H,端口B地址為:162H,端口C地址為:164H,控制端口地址為:166H。端口A方式0輸出,端口B方式0輸入,端口C方式0輸入知:控制字8BH。
MOV AL, 8BH MOV DX, 164H MOV DX, 0166H IN AL, DX OUT DX, AL ADD AL, BL MOV DX, 0162H NOT AL IN AL, DX MOV DX, 0160H MOV BL, AL OUT DX, AL
ADD BL, AL
五、硬件設(shè)計題 1.1)參見圖
2)MOV DX, 306H MOV AL, 90H OUT DX, AL
3)MOV DX, 300H
IN AL, DX MOV DX, 302H OUT DX, AL 中北大學微機原理及接口技術(shù)習題及練習冊-----參考答案
2.MOV DX, 236H MOV AL, 82H OUT DX, AL MOV AX, SEG FIRST MOV DS, AX MOV SI, OFFSET FIRST LOP: MOV DX, 232H IN AL, DX MOV [SI], AL MOV DX, 230H OUT DX, AL JMP LOP
第8章 串行接口及8251A應(yīng)用參考答案
一、填空題
1.1488、1489(MAX232)2.異步,同步(次序無關(guān))
3.數(shù)據(jù)發(fā)送線Txd,數(shù)據(jù)接收線Rxd,和地線,邏輯“0” +5V~+15V,邏輯“1”-5V~15V 二 選擇題
1.B 2.D 3.C 4.B 三 簡答題
1.狀態(tài)字中D6位SY/BR與SYNDET,D2位TxEPTY與TxE,D1位RxRDY與RxRDY,D0位TxRDY與TxRDY引腳有關(guān)。狀態(tài)位TxRDY與引信號TxRDY區(qū)別在于,TxRDY位為1的條件是:8251A內(nèi)部數(shù)據(jù)輸出寄存器內(nèi)容為空或即將發(fā)送完畢,TxRDY端輸出變高條件是TxRDY=1,CTS輸入為低電平且命令字設(shè)置TxEN發(fā)送允許位為1。它們在系統(tǒng)設(shè)計中可用于中斷請求或中斷查詢。
2.具有5個功能模塊:I/O緩沖器,讀/寫控制邏輯,接收器,發(fā)送器,調(diào)制/解調(diào)器。讀/寫控制邏輯主要功能是接收來自CPU控制總線的控制信號,對數(shù)據(jù)在內(nèi)部總線的傳送方向進行控制。3.有7個寄存器和外部電路有關(guān),方式寄存器,同步字符寄存器1和2,控制寄存器,數(shù)據(jù)輸入寄存器,數(shù)據(jù)輸出寄存器,狀態(tài)寄存器。只占用兩個端口地址,因為寄存器的區(qū)分是依靠讀/寫的固定順序。
四、編程題
1.系統(tǒng)總線A1與C/D引腳相連,控制端口地址為82H,數(shù)據(jù)端口地址為80H MOV AL,0 MOV AL,0CEH OUT 82H,AL OUT 82H,AL OUT 82H,AL MOV AL,05H OUT 82H,AL OUT 82H,AL
2.XOR AX,AX MOV AL,18H MOV DX,66H OUT DX,AL OUT DX,AL MOV AL,SYNC OUT DX,AL OUT DX,AL OUT DX,AL OUT DX,AL MOV AL,40H MOV AL,0BFH OUT DX,AL OUT DX,AL 8
中北大學微機原理及接口技術(shù)習題及練習冊-----參考答案
第9章 中斷及8259A參考答案
一、填空題
1.160H--163H,中斷服務(wù)程序的偏移地址和段地址 2.00070H,00073H,4 3.非屏蔽中斷,可屏蔽中斷(次序無關(guān))4.15 5.奇地址(21H)6.初始化命令字(ICW),操作命令字(OCW)7.中斷向量表,(中斷類型號*4)-->IP,(中斷類型號*4+2)-->CS,70H,72H字單元,(00070H)=2030H,(00072H)=5110H 8.8 9.2 10.多個中斷同時發(fā)生,中斷處理過程中另一更高優(yōu)先級的中斷源提出中斷請求 11.中斷服務(wù)程序入口地址 12.可屏蔽中斷,非屏蔽中斷
二、簡答題
1.IMR的8位對應(yīng)8個中斷級,其中置為1的位所對應(yīng)的中斷級的輸入線IR處于被屏蔽方式,被屏蔽的中斷級請求不能使8259A的INT輸出端產(chǎn)生有效的請求信號。所以即使當中斷允許IF=1時也無法響應(yīng)。IF是CPU的中斷允許標志,當IF=0時所有可屏蔽中斷被禁止。在中斷響應(yīng)過程中,通過設(shè)置IF,IMR可靈活控制中斷的優(yōu)先次序。
2.其原因可能有四個:(1)CPU處于關(guān)中斷狀態(tài),IF=0。(2)該中斷請求已被屏蔽;(3)該中斷請求的時間太短,未能保持到指令周期結(jié)束;(4)CPU已釋放總線(即已響應(yīng)了DMA請求),而未收回總線控制權(quán)。
3.初始化命令字通常在系統(tǒng)初始化階段設(shè)置,從ICW1開始,按照固定次序的設(shè)置,一經(jīng)設(shè)置完成,則在以后的操作中基本保持不變,操作命令字是在程序執(zhí)行階段向8259A發(fā)出的命令字,實現(xiàn)以8259A的狀態(tài),中斷方式和過程的控制。操作命令字可以一個程序中多次設(shè)置,從而改變中斷的方式。初始化命令字有4個,分別為ICW1,ICW2,ICW3,ICW4,操作命令字有3個,分別為OCW1,OCW2,OCW3。
4.中斷控制器提供中斷類型碼,從中斷向量表中相應(yīng)位置取出中斷服務(wù)程序首址置入IP和CS中,程序轉(zhuǎn)至中斷服務(wù)程序。
5.可屏蔽中斷能否響應(yīng)受到CPU標志寄存器FLAG的限制,如果IF=0,則所有可屏蔽中斷都不能響應(yīng),只有IF=1時,CPU才能響應(yīng)可屏蔽中斷,另外,可屏蔽中斷是從CPU的INTR引腳引入的。非屏蔽中斷是從CPU的NMI引腳引入CPU的,它不受標志寄存器中IF的限制,只要有請求,而在請求時沒有總線請求,就可以響應(yīng)。
6.在響應(yīng)中斷時,根據(jù)中斷類型號,從中斷類型號*4開始的連續(xù)的4個單元中保存有中斷服務(wù)程序的入口地址(段內(nèi)偏移地址和段地址),取出來,直接送給PC和CS即可。
三、選擇題
1.B 2.B 3.D 4.B 5.A 6.A 7.D 8.D 9.B 10.C
第10章 定時器/計數(shù)器參考答案
一、填空題 1.30H,56H,0FEH,50H,0FH,50H 2.3 3.40000,2
二、選擇題
1.BF 2.D 3.B 4.B 5.D 6.C
三、簡答題 1.軟件定時:利用CPU執(zhí)行某一指令需要一定機器周期的原理,在軟件編程時循環(huán)執(zhí)行一段指令,39 中北大學微機原理及接口技術(shù)習題及練習冊-----參考答案
從而產(chǎn)生累積的定時。優(yōu)點是不需要增加硬件。缺點是耗費CPU資源,故軟件定時只適用于短時定時。而且,不同CPU的時鐘頻率不同,同一段軟件延時程序在不同的機器上運行,可能結(jié)果不同,即兼容性不強。
硬件定時和計數(shù):以硬件計數(shù)器構(gòu)成,計數(shù)脈沖觸發(fā)硬件計數(shù)器計數(shù),如果計數(shù)脈沖的周期固定,則計數(shù)同時產(chǎn)生定時。優(yōu)點是不占用CPU資源,定時精確,定時范圍大。缺點是增加一些硬件開銷。
2.它由與CPU的接口、一個控制寄存器以及三個16位計數(shù)器所組成。每個計數(shù)器通過3個引腿和外部聯(lián)系,1個為時鐘輸入端CLK,1個為門控信號輸入端GATE,別1個為輸出端OUT。
四、綜合題
要輸出脈沖周期為1ms,輸出脈沖的頻率是
13?1?10,當輸入時鐘頻率為2MHz時,?31?102?103?2000。計數(shù)器初值是31??10使用計數(shù)器1,先加載低8位,后加載高8位,設(shè)為方式3,二進制計數(shù),控制字是76H。設(shè)控制口的地址是103H,計數(shù)器1的地址是101H。程序段如下:
MOV DX,103H MOV AX,2000 MOV AL,76H OUT DX,AL OUT DX,AL MOV AL,AH MOV DX,101H OUT DX,AL
第11章 模擬量通道參考答案
一、填空、選擇題
1.模擬量信號 2.B
二、簡答題
1.DAC0832中具有兩級鎖存器,第一級鎖存器為輸入寄存器,鎖存信號為ILE和CS;第二級鎖存器為DAC寄存器,鎖存信號為XFER。
為了DAC0832進行數(shù)/模轉(zhuǎn)換,可使用兩種方法對數(shù)據(jù)進行鎖存。第一種方法是使輸入寄存器工在鎖存狀態(tài),而DAC寄存器工作在不鎖存狀態(tài)。即使WR2和XFER均為低電平,DAC寄存器的鎖存端為無效狀態(tài),而使輸入寄存器的有關(guān)控制信號,ILE為高電平,CS為低電平。當WR1來一個負脈沖時,就可完成一次轉(zhuǎn)換。
第二種方法是輸入寄存器工作在不鎖存狀態(tài),DAC寄存器工作在鎖存狀態(tài),即使WR1為低電平,CS為低電平
而ILE為高電平。這樣輸入寄存器的鎖存信號處于無效狀態(tài),而WR2和XFER輸入一個負脈沖,使DAC寄存器為鎖存狀態(tài)。
2.如果有一個D/A轉(zhuǎn)換器超過8位,CPU則通過兩條輸出指令向兩個鎖存器對應(yīng)的端口地址輸出數(shù)據(jù),但是第一次執(zhí)行輸出指令后,D/A轉(zhuǎn)換器會得到一個局部的輸入,由此,輸出端得到一個局部的,實際上不需要的模擬量輸出。因此用兩級緩沖結(jié)構(gòu)來解決,CPU先用兩條輸出指令把數(shù)據(jù)送到第一級數(shù)據(jù)緩沖器,通過第三條輸出指令使數(shù)據(jù)送到第二級數(shù)據(jù)緩沖器,從而使D/A轉(zhuǎn)換器一次得到所有位待轉(zhuǎn)換的數(shù)據(jù)。這就是用帶兩級緩沖器的D/A轉(zhuǎn)換器必須要用3條輸出指令才能完成16位或12位數(shù)據(jù)轉(zhuǎn)換的理由。
3.采樣保持電路有兩種工作狀態(tài),一種是采樣狀態(tài),一種是保持狀態(tài)。在采樣狀態(tài),輸出隨輸入而變化,增益為1,在保持狀態(tài),輸出保持為某個值。0
中北大學微機原理及接口技術(shù)習題及練習冊-----參考答案
三、編程題 1. MOV DX,328H
MOV AL,0 LOP: OUT DX,AL
INC AL
JNZ LOP
2. COD SEGMENT
ASSUME CS:COD MAIN PROC FAR MOV AL,0 MOV DX,180H LOP: OUT DX,AL
MOV
LLL: OUT
DEC JNZ JMP
DEC JMP
MAIN ENDP COD ENDS
END
AL,0FEH DX,AL AL LLL LOP AL LOP
MAIN
第12章 與實驗相關(guān)的問題參考答案
一、填空題
1..ASM 2.編輯源程序,匯編,連接,調(diào)試
二、選擇題
1.C 2.C 3.A
三、問答題
1.采用8255做輸入輸出接口,將PB0連接按鍵,PA0連接發(fā)光二極管。編寫程序?qū)崿F(xiàn)上述功能。8255初始化為方式0,A口做輸出,B口做輸入,從B口讀入數(shù)據(jù)判斷按鍵是否按下,進而控制發(fā)光二極管的狀態(tài)。
2.發(fā)出中斷結(jié)束命令,通知中斷控制器8259將中斷服務(wù)寄存器ISR中的相應(yīng)位清除。3.設(shè)置中斷屏蔽字,在不改變其他引腳的中斷屏蔽狀態(tài)的情況下,將8259的中斷請求引腳IR7允許中斷。
4.不能完成,因為0000:0000H是中斷向量表,而實驗系統(tǒng)本身有許多工作是用中斷完成的,如果你改變了中斷向量表,則實驗箱的監(jiān)控程序?qū)o法工作,更不用說調(diào)試軟硬件了,所以實驗也就無法完成了。
5.硬件實驗:取出實驗箱,連接好串行通信電纜和實驗箱電源,根據(jù)實驗內(nèi)容,在實驗箱中連接好設(shè)計用的電路,將實驗箱電源打開,打開計算機電源啟動計算機,啟動實驗集成環(huán)境,編制輸入實驗用程序,匯編程序、連接程序、將程序裝載如實驗箱,調(diào)試程序的運行并記錄實驗箱內(nèi)實驗指示部件的狀態(tài)。
按與啟動實驗相反的次序,關(guān)閉各個實驗部件,將實驗室內(nèi)實驗所使用的物品放歸原處,清潔、整理實驗室。對實驗結(jié)果進行分析,寫出實驗報告。
第五篇:數(shù)據(jù)庫原理及應(yīng)用第7章課后習題答案
習題7
1、試述事務(wù)的概念及事務(wù)的四個特性。
事務(wù)(Transaction)是用戶定義的一個數(shù)據(jù)庫操作序列,這些操作是一個完整的工作單元,一個事務(wù)內(nèi)的所有語句被作為一個整體,這些操作要么全做,要么全不做。事務(wù)是數(shù)據(jù)庫環(huán)境的中的邏輯單元,相當于操作系統(tǒng)中的進程。
為了保證數(shù)據(jù)庫中數(shù)據(jù)的正確性,一個事務(wù)具有四個特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持續(xù)性(Durability)。這四個特性簡稱ACID特性。
2、試述事務(wù)的狀態(tài)及轉(zhuǎn)換。
3、在數(shù)據(jù)庫中為什么要并發(fā)控制?并發(fā)控制能保證事務(wù)的哪些特性?
數(shù)據(jù)庫的一個明顯的特點是多個用戶共享數(shù)據(jù)庫資源,尤其是多用戶可以同時存取相同的數(shù)據(jù)。在這樣的系統(tǒng)中,在同一時刻并發(fā)運行的事務(wù)數(shù)可達數(shù)百個。若對事務(wù)的并發(fā)操作不加以控制,就會造成數(shù)據(jù)存、取的錯誤,破壞了數(shù)據(jù)的一致性和完整性。
并發(fā)控制可以防止數(shù)據(jù)不一致性出現(xiàn)。
4、并發(fā)操作可能會產(chǎn)生哪幾類數(shù)據(jù)不一致?用什么方法可以避免不一致性的情況?
并發(fā)操作帶來的數(shù)據(jù)不一致性分為四種情況:丟失數(shù)修改、讀“臟”數(shù)據(jù)、不可重復(fù)讀和產(chǎn)生“幽靈”數(shù)據(jù)。
在數(shù)據(jù)庫環(huán)境下,進行并發(fā)控制的主要技術(shù)有封鎖(Locking)、時間戳(Timestamp)和樂觀控制法。商用的DBMS一般都采用封鎖方法。
5、什么是封鎖?基本的封鎖類型有哪些?試述它們的含義。
封鎖機制,即加鎖(Locking),是一種并發(fā)控制機制,是用來調(diào)整對共享目標的并行存取的技術(shù)。事務(wù)通過向封鎖管理程序的系統(tǒng)組成部分發(fā)出請求而對事務(wù)加鎖。
基本封鎖類型有兩種:共享鎖(Share Locks,簡記為S鎖或讀鎖)和排它鎖(Exclusive Locks,簡記為X鎖或?qū)戞i)。
6、如何用封鎖機制保證數(shù)據(jù)的一致性?
在運用X鎖和S鎖對數(shù)據(jù)對象加鎖時,還需要約定一些規(guī)則,這些規(guī)則為封鎖協(xié)議或加鎖協(xié)議(Locking Protocol)。對封鎖方式加不同的規(guī)則,就形成了各種不同級別的封鎖協(xié)議。不同級別的封鎖協(xié)議所能達到的一致性級別是不同的。
7、什么樣的并發(fā)調(diào)度是正確的調(diào)度?
可串行性(Serializability)是并發(fā)事務(wù)正確調(diào)度的準則。按照這個準則規(guī)定,一個給定的并發(fā)調(diào)度,當且僅當它是可串行化的,才認為是正確調(diào)度。
8、理解并解釋下列術(shù)語的含義:
封鎖、活鎖、死鎖、排他鎖、共享鎖、可串行化的調(diào)度、兩段鎖協(xié)議。
1)加鎖就是事務(wù)T在對某個數(shù)據(jù)對象(例如表、記錄等)操作之前,先向系統(tǒng)發(fā)出請求,封鎖其要使用的數(shù)據(jù)。加鎖后事務(wù)T就對該數(shù)據(jù)對象有了一定的控制,在事務(wù)T釋放它的鎖之前,其它的事務(wù)不能更新此數(shù)據(jù)對象。
2)活鎖:如果事務(wù)T1封鎖了數(shù)據(jù)R,事務(wù)T2又請求封鎖R,于是T2等待。T3也請求封鎖R,當T1釋放了R上的封鎖之后系統(tǒng)首先批準了T3的請求,T2仍然等待。然后T4又請求封鎖R,當T3釋放了R上的封鎖之后系統(tǒng)又批準了T4的請求……,T2有可能永遠等待,這就是活鎖。
3)死鎖:如果事務(wù)T1封鎖了數(shù)據(jù)R1,T2封鎖了數(shù)據(jù)R2,然后T1又請求封鎖R2,因T2已封鎖了R2,于是T1等待T2釋放R2上的鎖,接著T2又申請封鎖R1,因T1已封鎖了R1,T2也只能等待T1釋放R1上的鎖。這樣T1在等待T2,而T2又在等待T1,T1和T2兩個事務(wù)永遠不能結(jié)束,形成死鎖。4)共享鎖:
若事務(wù)T對數(shù)據(jù)對象A加上S鎖,則事務(wù)T可以讀A,但不能修改A。其它事務(wù)只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。這就保證其他事務(wù)可以讀A,但在T釋放A上的S鎖之前不能對A做任何修改。5)排他鎖:
若事務(wù)T對數(shù)據(jù)對象A加上X鎖,則只允許T讀取和修改A,但不允許其它事務(wù)再對A加任何類型的鎖和進行任何操作,直到T釋放A上的鎖。這就保證其他事務(wù)在T釋放A上的鎖之前不能再讀取和修改A。6)多個事務(wù)的并發(fā)執(zhí)行是正確的,當且僅當其結(jié)果與按某一次序串行地執(zhí)行這些事務(wù)時的結(jié)果相同,稱這種調(diào)度策略為可串行化(Serializable)調(diào)度。
7)所謂兩段鎖協(xié)議是指所有事務(wù)必須分兩個階段對數(shù)據(jù)項加鎖和解鎖。具體內(nèi)容如下: ①在對任何數(shù)據(jù)進行讀、寫操作之前,事務(wù)首先要獲得對該數(shù)據(jù)的封鎖;
②在釋放一個封鎖之后,事務(wù)不再申請和獲得任何其他封鎖。
9、數(shù)據(jù)庫中為什么要有恢復(fù)子系統(tǒng)?它的功能是什么?
系統(tǒng)故障會丟失這些事務(wù)對數(shù)據(jù)的修改,使數(shù)據(jù)庫處于不一致狀態(tài)。
恢復(fù)子系統(tǒng)在系統(tǒng)重啟時,撤銷所有未完成的事務(wù),并重做已經(jīng)提交的事務(wù),以保證將數(shù)據(jù)庫真正恢復(fù)到一致狀態(tài)。
10、數(shù)據(jù)庫運行過程中可能產(chǎn)生的故障有幾類?哪些故障影響事務(wù)的正常執(zhí)行?哪些
故障破壞數(shù)據(jù)庫數(shù)據(jù)? 1)事務(wù)內(nèi)部的故障
事務(wù)內(nèi)部的故障有的是可以通過事務(wù)程序本身發(fā)現(xiàn)的,有的是非預(yù)期的,不能由事務(wù)程序處理的。
事務(wù)故障意味著事務(wù)沒有達到預(yù)期的終點,因此,數(shù)據(jù)庫可能處于不正確的狀態(tài)?;謴?fù)程序要在不影響其他事務(wù)運行的情況下,強行回滾該事務(wù),即撤銷該事務(wù)已經(jīng)作出的任何對數(shù)據(jù)庫的修改,使得該事務(wù)好像根本沒有啟動一樣。這類恢復(fù)操作稱為事務(wù)撤銷(UNDO)。
2)系統(tǒng)故障
系統(tǒng)故障又稱為軟故障,是指造成系統(tǒng)停止運轉(zhuǎn),要使得系統(tǒng)重新啟動的故障。例如,硬件錯誤(如CPU故障)、操作系統(tǒng)故障、DBMS代碼錯誤、系統(tǒng)斷電等都是系統(tǒng)故障。這樣的故障會影響正在運行的所有事務(wù),但不破壞數(shù)據(jù)庫。
3)其他故障
介質(zhì)故障或由計算機病毒引起的故障或破壞可歸為其他故障。
介質(zhì)故障常稱為硬故障,指外存故障,如磁盤損壞、磁頭碰撞等。這類故障會對數(shù)據(jù)庫造成破壞,并影響正在操作數(shù)據(jù)庫的所有事務(wù)。這類故障發(fā)生的可能性小得多,但破壞性最大。
各種故障對數(shù)據(jù)庫的影響有兩種可能性:一是數(shù)據(jù)庫本身被破壞;二是數(shù)據(jù)庫沒有被破壞,但數(shù)據(jù)可能不正確,這是由于事務(wù)的運行被非正常終止造成的。
11、數(shù)據(jù)庫恢復(fù)技術(shù)有哪些?
1)利用備份技術(shù) 2)利用事務(wù)日志 3)利用鏡像技術(shù)
12、什么是數(shù)據(jù)庫的備份?
數(shù)據(jù)備份是指定期或不定期地對數(shù)據(jù)庫數(shù)據(jù)進行復(fù)制,可以將數(shù)據(jù)復(fù)制到本地機器上,也可以復(fù)制到其他機器上,也稱為數(shù)據(jù)轉(zhuǎn)儲。
13、什么是日志文件?為什么要設(shè)日志文件?
日志文件(log)是用來記錄事務(wù)對數(shù)據(jù)庫的更新操作的文件。具體的作用是:
a)事務(wù)故障恢復(fù)和系統(tǒng)故障恢復(fù)必須用日志文件。b)在動態(tài)備份方式中必須建立日志文件,后備副本和日志文件結(jié)合起來才能有效地恢復(fù)數(shù)據(jù)庫。
14、登記日志文件時為什么必須先寫日志文件,后寫數(shù)據(jù)庫?
如果先寫了數(shù)據(jù)庫修改,而在日志文件中沒有登記下這個修改,則以后就無法恢復(fù)這個修改了。如果先寫日志,但沒有修改數(shù)據(jù)庫,按日志文件恢復(fù)時只不過是多執(zhí)行一次不必要的UNDO操作,并不會影響數(shù)據(jù)庫的正確性。所以為了安全,一定要先寫日志文件,即首先把日志記錄寫到日志文件中,然后寫數(shù)據(jù)庫的修改,這就是“先寫日志文件”的原則。
15、什么是數(shù)據(jù)庫鏡像?它有什么用途?
所謂鏡像就是在不同的設(shè)備上同時存有兩份數(shù)據(jù)庫,把一個設(shè)備稱為主設(shè)備,另一個稱為鏡像設(shè)備。主設(shè)備和鏡像設(shè)備互為鏡像關(guān)系,每當主數(shù)據(jù)庫更新時,DBMS自動把整個數(shù)據(jù)庫或其中的關(guān)鍵數(shù)據(jù)復(fù)制到另一個鏡像設(shè)備上。保證鏡像數(shù)據(jù)與主數(shù)據(jù)庫的一致。
這樣,一旦出現(xiàn)介質(zhì)故障,可由鏡像磁盤繼續(xù)提供使用,同時DBMS自動利用鏡像磁盤數(shù)據(jù)進行數(shù)據(jù)庫的恢復(fù),不需要關(guān)閉系統(tǒng)和重裝數(shù)據(jù)庫副本。
由于數(shù)據(jù)庫鏡像是通過復(fù)制數(shù)據(jù)實現(xiàn)的,頻繁地復(fù)制數(shù)據(jù)自然會降低系統(tǒng)運行效率,因此在實際應(yīng)用中用戶往往只選擇對關(guān)鍵數(shù)據(jù)和日志文件鏡像,而不是對整個數(shù)據(jù)庫進行鏡像。