第一篇:《微機原理及應用》教材課后習題及答案
《微機原理及應用》習題答案
第一章
?1.11 請完成下列數制轉換:
(1)將174.66D轉換為對應的二進制和十六進制形式。
(2)將100011101011.01011B轉換為對應的十進制和十六進制形式。(3)將F18A6.6H轉換為對應的二進制和十進制形式。答:174.66D=10101110.1010B=AE.AH 100011101011.01011B=2283.34375D=8EB.58H F18A6.6H=989350.375D
?1.12 請寫出與數據+37和-37對應的8位機器數原碼、反碼和補碼,并分別用二進制和十六進制表示出來。
答:-37D=(10100101B)原=(11011010B)反=(11011011B)補
?1.13 8位機器數46H,若作為無符號數和補碼有符號數,其對應的真值各是什么?若作為BCD碼和ASCII碼,其對應的又是什么?
答:無符號數46H=70,補碼46H=+70
BCD碼46H=46,ASCII碼46H=“F”
第二章
?2.5什么是8088中的邏輯地址和物理地址?邏輯地址如何轉換成物理地址?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,說明下列每條指令執行完后AX寄存器的內容以及源操作數的尋址方式? 答:⑴ AX=1200H,立即數尋址;
⑵ 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 答: ⑴操作數類型不同;
⑵不能手工修改IP;
⑶不能將立即數直接MOV到段寄存器;
⑷不能在段寄存器之間直接MOV數據;
⑸300大于AL所能存放的數據的范圍;
⑹寄存器間接尋址只能用BX/BP/SI/DI之一;
⑺MOV AX,[BX+DI];
⑻目的操作數不能是立即數。
?2.10 已知數字0~9對應的格雷碼依次為:18H,34H,05H,06H,09H,0AH,0CH,11H,12H,14H,它存在于以table為首地址(設為200H)的連續區域中。請為如下程序段的每條指令加上注釋,說明每條指令的功能和執行結果。lea
bx,table mov al,8
xlat
答:
lea
bx,table ;bx=0200h mov al,8
;al=08h xlat
;al=12h ?2.11給出下列各條指令執行后的AL值,以及CF,ZF,SF,OF和PF的狀態: 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寄存器的內容相加,結果存入DX寄存器。
(2)用寄存器BX和SI的基址變址尋址方式把存儲器的一個字節與AL寄存器的內容相加并把結果送到AL中。用BX和位移量0B2H的寄存器相對尋址方式把存儲器中的一個字和CX寄存器的內
容相加,并把結果送回存儲器中。
(4)用位移量為0520H的直接尋址方式把存儲器中的一個字與數3412H相加,并把結果
送回該存儲單元中。
(5)把數0A0H與AL寄存器的內容相加,并把結果送回AL中。答:
⑴ add dx,bx;
⑵ add al,[bx+si]; ⑶ add [bx+00b2h],cx
⑷ add word ptr [0520h],3412h ⑸ add al,0a0h ?2.13設X,Y,Z,V均為16位帶符號數,分別裝在X,Y,Z,V存儲器單元中,閱讀如下程序段,得出它的運算公式,并說明運算結果存于何處。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給出下列各條指令執行后的結果,以及狀態標志CF、OF、SF、ZF、PF的狀態。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假設DS=2000H,BX=1256H,TABLE的偏移地址是20A1H,物理地址232F7H處存放3280H,試問執行下列段內間接尋址的轉移指令后,轉移的有效地址是什么? 答:⑴ 1256h; ⑵ 3280h ?2.17判斷下列程序段跳轉的條件(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指令執行了多少次?
xor cx,cx delay: nop
loop delay 答:65536 ?2.19 有一個首地址為array的20個字的數組,說明下列程序段的功能。
mov cx,20 mov ax,0 mov si,ax sumlp: add ax,array[si]
add si,2
loop sumlp
mov total,ax 答:將array數組的20個字(無進位)累加,其和存入total單元。?2.20按照下列要求,編寫相應的程序段:
(1)由string指示的起始地址的主存單元中存放一個字符串(長度大于6),把該字符串的第1個和第6個字符(字節量)傳送給DX寄存器。
(2)有兩個32位數值,按“小端方式”存放在兩個緩沖區buffer1和 buffer2中,編寫程序段完成DX.AX←buffer1-buffer2功能。
(3)編寫一個程序段,在DX高4位全為0時,使AX=0;否則,使AX=-1。(4)把DX.AX中的雙字右移4位。
(5)有一個100個字節元素的數組,其首地址為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編寫一個程序段:先提示輸入數字“Input Number:0~9”,然后在下一行顯示輸入的數字,結束;如果不是鍵入了0~9數字,就提示錯誤“Error!”,繼續等待輸入數字。答:
.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請設置一個數據段,按照如下要求定義變量:
(1)my1b為字符串變量,表示字符串“Personal Computer”。(2)my2b為用十進制數表示的字節變量,這個數的大小為20。(3)my3b為用十六進制數表示的字節變量,這個數的大小為20。(4)my4b為用二進制數表示的字節變量,這個數的大小為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設在某個程序中有如下片段,請寫出每條傳送指令執行后寄存器AX的內容:
;數據段
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假設myword是一個字變量,mybyte1和mybyte2是兩個字節變量,指出下列語句中的具體錯誤原因。
⑴ 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大于字節變量所能表示的范圍
mov byte ptr [BX],5 表示的意思是把5以字節的形式傳送給DS:BX,1000超過了0ffh,也就是大于1個字節,所以無法傳送會出現 error A2050: Value out of range(值超出范圍)
數據類型不匹配,目的地址單元是字節單元,1000大于255。無法存放。⑵OFFSET只能用于簡單變量
OFFSET后只能跟標識符。
⑶雙操作數不能同時為存儲器操作數
CMP的兩個操作數不能同時在存儲器中。
⑷數值表達式應為運算符加常量
運算符只能對常數進行操作,不能對變量進行操作。
⑸兩操作數類型不一致
數據類型不匹配,AL是8位的,MYWORD是16位變量。⑹條件跳轉只能是短跳轉
MYWORD是變量,其指的單元中存放的是操作數,不能用做跳轉入口。
3.17已知用于LED數碼管的顯示代碼表為:
LEDtable
db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h
db 80h,90h,88h,83h,0c6h,0c1h,86h,8eh 它依次表示0~9,A~F這16個數碼的顯示代碼。現編寫一個程序實現將lednum中的一個數字(0~
9、A~F)轉換成對應的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' 比較簡單省事兒,因為這樣鏈接程序會自動設置 exe 可執行文件里初始堆棧指針,程序里就不用自己進行設置了。如果沒有最后的那個 'stack' 說明項,就需要自己設置 ss:sp。'stack'是類別名。
把我定義的stack segment關聯到棧,省去了assume ss:stack對么,所以我可以寫成stack segment stack.3.18編制一個程序,把變量bufX和bufY中較大者存入bufZ;若兩者相等,則把其中之一存入bufZ中。假設變量存放的是8位有符號數。答:
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設變量bufX為有符號數16位數,請將它的符號狀態保存在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個有符號十六進制數,編寫一個比較相等關系的程序:(1)如果這3個數都不相等,則顯示0。
(2)如果這3個數中有兩個數相等,則顯示1。(3)如果這3個數都相等,則顯示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中,如果要實現所有為1的位都順序執行相應的處理程序段(而不是例題中僅執行最低為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個無符號字節數據之和,并將結果存入字節變量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個正整數之和的程序。如果和不超過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位無符號二進制數轉換成為用8421BCD碼表示的5位十進制數。轉換算法可以是:用二進制數除以10000,商為“萬位”,再用余數除以1000,得到“千位”;一次用余數除以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碼表示的兩位十進制數轉換位對應二進制數 ;入口參數:DH=十位數的ASCII碼,DL=個位數的ASCII碼 ;出口參數:AL=對應的二進制數 答:
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調用HTOASC子程序,編寫顯示一個字節的16進制數、后跟“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寫一個子程序,根據入口參數AL=0、1、2,依次實現對大些字母轉換成小寫、小寫轉換成大寫或大小寫字母互換。欲轉換的字符串在string中,用0表示結束。答:
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編寫一個計算字節校驗和的子程序。所謂“校驗和”是指不記進位的累加,常用于檢查信息的正確性。主程序提供入口參數,有數據個數和數據緩沖區的首地址。子程序回送求和結果這個出口參數。傳遞參數方法自定。答:
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
第二篇:微機原理及應用習題答案
《微機原理及應用》習題答案
第一章
?1.11 請完成下列數制轉換:
(1)將174.66D轉換為對應的二進制和十六進制形式。
(2)將100011101011.01011B轉換為對應的十進制和十六進制形式。(3)將F18A6.6H轉換為對應的二進制和十進制形式。答:174.66D=10101110.1010B=AE.AH 100011101011.01011B=2283.34375D=8EB.58H F18A6.6H=989350.375D
?1.12 請寫出與數據+37和-37對應的8位機器數原碼、反碼和補碼,并分別用二進制和十六進制表示出來。
答:-37D=(10100101B)原=(11011010B)反=(11011011B)補
?1.13 8位機器數46H,若作為無符號數和補碼有符號數,其對應的真值各是什么?若作為BCD碼和ASCII碼,其對應的又是什么?
答:無符號數46H=70,補碼46H=+70
BCD碼46H=46,ASCII碼46H=“F”
第二章
?2.5什么是8088中的邏輯地址和物理地址?邏輯地址如何轉換成物理地址?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,說明下列每條指令執行完后AX寄存器的內容以及源操作數的尋址方式? 答:⑴ AX=1200H,立即數尋址;
⑵ 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 答: ⑴操作數類型不同;
⑵不能手工修改IP;
⑶不能將立即數直接MOV到段寄存器;
⑷不能在段寄存器之間直接MOV數據;
⑸300大于AL所能存放的數據的范圍;
⑹寄存器間接尋址只能用BX/BP/SI/DI之一;
⑺MOV AX,[BX+DI];
⑻目的操作數不能是立即數。
?2.10 已知數字0~9對應的格雷碼依次為:18H,34H,05H,06H,09H,0AH,0CH,11H,12H,14H,它存在于以table為首地址(設為200H)的連續區域中。請為如下程序段的每條指令加上注釋,說明每條指令的功能和執行結果。lea
bx,table mov al,8
xlat
答:
lea
bx,table ;bx=0200h mov al,8
;al=08h xlat
;al=12h ?2.11給出下列各條指令執行后的AL值,以及CF,ZF,SF,OF和PF的狀態: 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寄存器的內容相加,結果存入DX寄存器。
(2)用寄存器BX和SI的基址變址尋址方式把存儲器的一個字節與AL寄存器的內容相加并把結果送到AL中。用BX和位移量0B2H的寄存器相對尋址方式把存儲器中的一個字和CX寄存器的內
容相加,并把結果送回存儲器中。
(4)用位移量為0520H的直接尋址方式把存儲器中的一個字與數3412H相加,并把結果
送回該存儲單元中。
(5)把數0A0H與AL寄存器的內容相加,并把結果送回AL中。答:
⑴ add dx,bx;
⑵ add al,[bx+si];
⑶ add [bx+00b2h],cx
⑷ add word ptr [0520h],3412h ⑸ add al,0a0h ?2.13設X,Y,Z,V均為16位帶符號數,分別裝在X,Y,Z,V存儲器單元中,閱讀如下程序段,得出它的運算公式,并說明運算結果存于何處。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給出下列各條指令執行后的結果,以及狀態標志CF、OF、SF、ZF、PF的狀態。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假設DS=2000H,BX=1256H,TABLE的偏移地址是20A1H,物理地址232F7H處存放3280H,試問執行下列段內間接尋址的轉移指令后,轉移的有效地址是什么? 答:⑴ 1256h; ⑵ 3280h ?2.17判斷下列程序段跳轉的條件(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指令執行了多少次?
xor cx,cx delay: nop
loop delay 答:65536 ?2.19 有一個首地址為array的20個字的數組,說明下列程序段的功能。
mov cx,20 mov ax,0 mov si,ax sumlp: add ax,array[si]
add si,2
loop sumlp
mov total,ax 答:將array數組的20個字(無進位)累加,其和存入total單元。?2.20按照下列要求,編寫相應的程序段:
(1)由string指示的起始地址的主存單元中存放一個字符串(長度大于6),把該字符串的第1個和第6個字符(字節量)傳送給DX寄存器。
(2)有兩個32位數值,按“小端方式”存放在兩個緩沖區buffer1和 buffer2中,編寫程序段完成DX.AX←buffer1-buffer2功能。
(3)編寫一個程序段,在DX高4位全為0時,使AX=0;否則,使AX=-1。
(4)把DX.AX中的雙字右移4位。
(5)有一個100個字節元素的數組,其首地址為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編寫一個程序段:先提示輸入數字“Input Number:0~9”,然后在下一行顯示輸入的數字,結束;如果不是鍵入了0~9數字,就提示錯誤“Error!”,繼續等待輸入數字。答:
.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請設置一個數據段,按照如下要求定義變量:
(1)my1b為字符串變量,表示字符串“Personal Computer”。(2)my2b為用十進制數表示的字節變量,這個數的大小為20。(3)my3b為用十六進制數表示的字節變量,這個數的大小為20。(4)my4b為用二進制數表示的字節變量,這個數的大小為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設在某個程序中有如下片段,請寫出每條傳送指令執行后寄存器AX的內容:
;數據段
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假設myword是一個字變量,mybyte1和mybyte2是兩個字節變量,指出下列語句中的具體錯誤原因。(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大于字節變量所能表示的范圍 ⑵OFFSET只能用于簡單變量 ⑶雙操作數不能同時為存儲器操作數 ⑷數值表達式應為運算符加常量 ⑸兩操作數類型不一致 ⑹條件跳轉只能是短跳轉
3.17已知用于LED數碼管的顯示代碼表為: LEDtable
db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h
db 80h,90h,88h,83h,0c6h,0c1h,86h,8eh 它依次表示0~9,A~F這16個數碼的顯示代碼。現編寫一個程序實現將lednum中的一個數字(0~
9、A~F)轉換成對應的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中。假設變量存放的是8位有符號數。答:
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設變量bufX為有符號數16位數,請將它的符號狀態保存在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個有符號十六進制數,編寫一個比較相等關系的程序:(1)如果這3個數都不相等,則顯示0。(2)如果這3個數中有兩個數相等,則顯示1。(3)如果這3個數都相等,則顯示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中,如果要實現所有為1的位都順序執行相應的處理程序段(而不是例題中僅執行最低為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個無符號字節數據之和,并將結果存入字節變量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個正整數之和的程序。如果和不超過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位無符號二進制數轉換成為用8421BCD碼表示的5位十進制數。轉換算法可以是:用二進制數除以10000,商為“萬位”,再用余數除以1000,得到“千位”;一次用余數除以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碼表示的兩位十進制數轉換位對應二進制數 ;入口參數:DH=十位數的ASCII碼,DL=個位數的ASCII碼 ;出口參數:AL=對應的二進制數 答:
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調用HTOASC子程序,編寫顯示一個字節的16進制數、后跟“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寫一個子程序,根據入口參數AL=0、1、2,依次實現對大些字母轉換成小寫、小寫轉換成大寫或大小寫字母互換。欲轉換的字符串在string中,用0表示結束。答:
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編寫一個計算字節校驗和的子程序。所謂“校驗和”是指不記進位的累加,常用于檢查信息的正確性。主程序提供入口參數,有數據個數和數據緩沖區的首地址。子程序回送求和結果這個出口參數。傳遞參數方法自定。答:
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
第三篇:《微機原理及應用》試卷及其答案
《微機原理及應用》試卷A
一、填空題(每空1分,共15分)
1、在計算機中,對帶符號數的運算均采用補碼。帶符號負數1100 0011的補碼為__________。
2、單片機通常采用“三總線”的應用模式,芯片內部設有單獨的、_____ 和控制總線。
3、當使用80C51單片機時,需要擴展外部程序存儲器,此時EA應為__________。
4、若(A)=B3H,(R0)=A8H,執行指令XRL A,R0之后,(A)=_______。
5、在80C51單片機中,帶借位減法SUBB指令中,差的D7需借位時,______=1,差的D3需借位時,______=1。6、80C51單片機中,在調用子程序前,用_________指令將子程序中所需數據壓入堆棧,進入執行子程序時,再用___________指令從堆棧中彈出數據。
7、在十六進制數與ASCII碼值的轉換過程中,當十六進制數在0~9之間時,其對應的ASCII碼值為該十六進制數加_________。
8、外部中斷和有兩種觸發方式:__________________和________________。
9、在單片機串行通信中,依發送與接收設備時鐘的配置情況,串行通信可以分為 _________________和_________________。
10、若累加器A中的數據為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個特殊功能寄存器,其中與串行口相關的有以下幾個,除了()A、SBUF
B、TCON
C、SCON
D、PCON 4、80C51系列單片機具有4個8位的并行I/O口,其中哪個口工作時需要外接上拉電阻()A、P0
B、P1
C、P2
D、P3
5、寄存器中的內容為地址,從該地址去取操作數的尋址方式稱為()
A、寄存器尋址
B、直接尋址
C、寄存器間接尋址
D、變址尋址
6、源地址為1005H。目的地址為0F87H。當執行指令“JC rel”時,rel為()。A、7EH
B、80H
C、82H
D、84H
7、若(R0)=30H,(30H)=75H,(75H)=90H,執行指令MOV A,@R0后,(A)=______。A、30H
B、75H
C、90H
D、00H
8、下列哪個語句是起始地址設置偽指令()。
A、ORG
B、END
C、DW
D、EQU
9、在80C51單片機中,各中斷優先級最低的是()。
A、外部中斷0
B、外部中斷1
C、定時器0
D、計數器1 10、80C51單片機的中斷響應時間至少需要()個完整的機器周期。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位),出現了非BCD碼時,需要用十進制調整指令DA A,即在相應的低4位(高4位)加______,以產生正確的BCD結果。A、2
B、4
C、6
D、8
13、若(P0)=1011 1100B。執行指令SETB P0.1后,(P0)=_______。
A、1011 1101
B、1011 1110
C、1111 1100
D、0011 1100 14、80C51復位后,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種尋址方式,寫出每一種方式相應的一條指令?(10分)
四、程序閱讀題(15分)
設(A)=38H,R0=28H,(28H)=18H,執行下列程序后,((A))=________。(5分)ORL
A,#27H ANL
A,28H XCHD A,@R0 CPL
A
2、閱讀下列程序段,寫出每條指令執行后的結果,并說明此程序段完成什么功能?(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的計數器初值各為多少?
六、編程題(25分)
1、若單片機的晶振頻率為12MHz,試用循環轉移指令編寫延時100ms的延時子程序。(10分)
有一變量存放在片內RAM的30H單元,其取值范圍為00H~04H。要求編制一段程序,根據變量值求其平方值,并存入片內RAM的31H單元。(15分)《單片機原理及應用》試卷A 答案
一、填空題(每空1分,共15分)1、1011 1101
2、地址總線數據總線
3、低電平(或者0)4、1BH
5、CY AC
6、PUSH
POP 7、30H
8、電平觸發方式邊沿觸發方式
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分)
堆棧是在內部RAM中按“后進先出”的規則組織的一片存儲區。入棧操作時,先將SP的內容加1,然后將指令指定的直接地址單元的內容存入SP指向的單元;出棧操作時,先將SP指向的單元內容傳送到指令指定的直接地址單元,然后SP的內容減1
2、列舉出80C51單片機的5種尋址方式,寫出每一種方式相應的一條指令?(10分)第一、寄存器尋址,MOV A,R0 第二、直接尋址,MOV
A,50H 第三、寄存器間接尋址,MOV A,@R0 第四、立即尋址,MOV A,#50H 第五、變址尋址,MOV A,@A+DPTR 第六、相對尋址,JC 50H 第七、位尋址,CLR ACC.0
四、程序閱讀題(15分)
設(A)=38H,R0=28H,(28H)=18H,執行下列程序后,((A))=__E7H______。(5分)ORL
A,#27H ANL
A,28H XCHD A,@R0 CPL
A
2、閱讀下列程序段,寫出每條指令執行后的結果,并說明此程序段完成什么功能?(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的計數器初值各為多少?
解:由于晶振為6MHz,所以機器周期Tcy==2。N=t/Tcy=110-3/210-6=500 X=216-N=65536-500=65036=FE0CH 即應將FEH送入TH0中,0CH送入TL0中。
所以,TH0和TL0的計數器初值各為FEH和0CH。
六、編程題(25分)
1、若單片機的晶振頻率為12MHz,試用循環轉移指令編寫延時100ms的延時子程序。(10分)
答:分析:一個機器周期=12個晶振周期=1,執行一條DJNZ指令需要2個機器周期,即2。采用循環計數法實現延時,循環次數可以通過計算獲得,并選擇先執行后判斷的循環程序。匯編程序如下:
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、有一變量存放在片內RAM的30H單元,其取值范圍為00H~04H。要求編制一段程序,根據變量值求其平方值,并存入片內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
第四篇:微機原理考試習題與答案
微機原理及接口技術
習題及練習冊
微機原理課程組 2009年12月
中北大學微機原理及接口技術習題及練習冊---目錄
目錄
第1章 計算機基礎知識.............................................................................................................................1 1.1 基本練習題....................................................................................................................................1 1.2 課后練習題....................................................................................................................................2 第2章 8086/8088微處理器.......................................................................................................................3 2.1 基本練習題....................................................................................................................................3 2.2 課后練習題....................................................................................................................................4 第3章 指令系統.........................................................................................................................................5 3.1 基本練習題....................................................................................................................................5 3.2 課后練習題....................................................................................................................................7 第4章 匯編語言程序設計.........................................................................................................................9 4.1 基本練習題....................................................................................................................................9 4.2 課后練習題..................................................................................................................................10 第5章 半導體存儲器................................................................................................................................11 5.1 基本練習題...................................................................................................................................11 5.2 課后練習題..................................................................................................................................13 第6章 輸入輸出接口技術.......................................................................................................................14 6.1 基本練習題..................................................................................................................................14 6.2課后練習題...................................................................................................................................15 第7章 并行接口及8255A應用..............................................................................................................16 7.1 基本練習題..................................................................................................................................16 7.2 課后練習題..................................................................................................................................18 第8章 串行接口及8251A應用..............................................................................................................20 8.1 基本練習題..................................................................................................................................20 8.2 課后練習題..................................................................................................................................20 第9章 中斷及8259A...............................................................................................................................21 9.1 基本練習題..................................................................................................................................22 9.2 課后練習題..................................................................................................................................23 第10章 定時器/計數器............................................................................................................................24
I 中北大學微機原理及接口技術習題及練習冊---目錄
10.1 基本練習題................................................................................................................................24 10.2 課后練習題................................................................................................................................25 第11章 模擬量通道.................................................................................................................................26 11.1 基本練習題................................................................................................................................26 11.2 課后練習題................................................................................................................................26 第12章 與實驗相關的問題.....................................................................................................................28 12.1 基本練習題................................................................................................................................28 12.2 課后練習題................................................................................................................................28 基本練習題參考答案.................................................................................................................................29 第1章 計算機基礎知識參考答案...................................................................................................29 第2章 8086/8088微處理器參考答案.............................................................................................29 第3章 指令系統參考答案...............................................................................................................30 第4章 匯編語言程序設計參考答案...............................................................................................31 第5章 半導體存儲器參考答案.......................................................................................................33 第6章 輸入輸出接口技術參考答案...............................................................................................36 第7章 并行接口及8255A應用參考答案.......................................................................................36 第8章 串行接口及8251A應用參考答案.......................................................................................38 第9章 中斷及8259A參考答案.......................................................................................................39 第10章 定時器/計數器參考答案....................................................................................................39 第11章 模擬量通道參考答案..........................................................................................................40 第12章 與實驗相關的問題參考答案.............................................................................................41
I I
中北大學微機原理及接口技術習題及練習冊
第1章 計算機基礎知識
基本要求:了解微型機的特點、發展、分類及應用;理解微型計算機系統的硬件組成和基本工作方式;掌握軟件的作用及其與硬件的相依關系,掌握微處理器、微型計算機和微型計算機系統。掌握原碼、反碼、和補碼的定義、求法,掌握補碼運算的特點和基本法則,會用補碼加、減法;熟練掌握有符號數的表示方法,了解定點數、浮點數的表示方法;理解溢出的概念,了解溢出的判別方法;掌握BCD碼的表示方法;掌握字符的表示方法—ASCII碼;了解漢字編碼的方法。本章重點:熟練掌握原碼、反碼、和補碼的定義運算法則。
1.1 基本練習題
一、填空題
1.系統總線由___________、___________、___________三類傳輸線組成。
2.微型計算機由_______________、_______________、_______________和系統總線組成。
3.計算機的硬件結構通常由五大部分組成。即運算器,____________,__________,輸入設備和輸出設備組成。
4.8位二進制整數,其補碼所能表示的范圍為____________,-1的補碼為__________H。5.一帶符號數的8位補碼為11110111B,它所表示的真值為________D。6.將二進制數101101.101轉換為十進制數為_______________。7.將壓縮BCD碼01111001轉換成二進制數為_______________。
8.一個完整的微機系統應包括_______________和_______________兩大功能部分。
9.X、Y的字長均為12位,已知[X]反=A3CH,原碼為_______________H,[Y]反=03CH,則X-Y的補碼為_______________H。
10.微處理器由_______________、_______________和少量寄存器組成。
11.帶符號數在機器中以_________碼表示,十進制數-78表示為_______________。12.將壓縮BCD碼01111001轉換成十進制數為_______________。13.8位二進制補碼10110110代表的十進制負數是_______________。
14.已知X的補碼是11101011B,Y的補碼是01001010B,則X-Y的補碼是_______________。15.ASCII碼由_________位二進制數碼構成,可為_______個字符編碼。
16.在計算機中,用二進制表示實數的方法有兩種,分別是______和________。
二、選擇題
1.計算機內部數值7FH,當分別為某個數的原碼、反碼和補碼時,其真值是_________。A)原碼時大 B)反碼時大 C)補碼時大 D)一樣大 2.十進制數-38的八位二進制補碼是________。
A)01011011 B)11011010 C)11011011 D)01011010 3.微型計算機的發展特點是__________。
A)體積越來越小 B)容量越來越大 C)精度越來越高 D)以上都對 4.在下列不同進制的數據中,最小的數是___________。
A)101001B B)101001BCD C)52D D)23H 5.標準的ASCII碼由______位二進制代碼組成。
A)4 B)7 C)8 D)9 6.長度相同但格式不同的的兩種浮點數,假設前者階碼長,尾數短,后者階碼短,尾數長,其他規則相同,則他們可表示數的范圍和精度_________。
A)兩者可表示的數的范圍和精度相同 B)前者可表示的數的范圍大但精度低 中北大學微機原理及接口技術習題及練習冊
C)后者可表示的數的范圍大且精度高 D)前者可表示的數的范圍大且精度高 7.漢字編碼的首要原則是,要給每個漢字分配唯一一個____位的二進制數。A)4 B)8 C)16 D)32
三、簡答題
1.寫出下列真值對應的機器數的原碼、補碼形式。
(1)X=-1100100(2)X=+1000000(3)X=-1111111(4)X=-0000000 2.微型計算機由那些基本功能部件組成? 3.什么是總線?
4.簡述微型計算機主要特點。5.BCD碼運算修正規則是什么? 6.簡述微處理器的基本功能。
7.什么是機器數?什么是機器數的真值?
1.2 課后練習題
一、填空題
1.將二進制數1011011.1轉換為十六進制數為_______________。2.將十進制數199轉換為二進制數為_______________B。
3.BCD碼表示的數,加減時逢______進一,ASCII碼用來表示數值時,是一種_______________(壓縮或非壓縮)的BCD碼。
4.十進制數36.875轉換成二進制是_______________。
5.以_________為主體,配上系統軟件和外設之后,就構成了______________。
6.十進制數98.45轉換成二進制為___________B、八進制__________Q、十六進制__________H。(精確到小數點后4位)
二、選擇題
1.堆棧的工作方式是___________。
A)先進先出 B)后進先出 C)隨機讀寫 D)只能讀出不能寫入 2.八位定點補碼整數的范圍是_____________。
A)-128-+128 B)-127-+127 C)-127-+128 D)-128-+127 3.字長為16位的數可表示有符號數的范圍是______。
A)-32767-+32768 B)-32768-+32767 C)0-65535 D)-32768-+32768
三、簡答題
1.微型計算機系統的基本組成?
2.簡述馮.諾依曼型計算機基本思想?
中北大學微機原理及接口技術習題及練習冊
3.什么是微型計算機?
4.什么是溢出?
第2章 8086/8088微處理器
基本要求:理解微處理器的內、外部邏輯結構,了解8086/8088的功能結構,理解8086/8088的引腳定義和功能‘理解各個寄存器組織方式和I/O組織方式,理解存儲器的地址空間與尋址的概念;理解存儲器分段的概念;熟練掌握物理地址的形成方法,掌握信息的分段存儲與段寄存器之間的關系。重點和難點:微處理器的內、外部邏輯結構和8086/8088的引腳功能
2.1 基本練習題
一、填空題
1.8088的內存單元3017H:010BH的物理地址為_______________。2.8088 CPU的外部數據線有_______條,內部數據線有_______條。3.8086中,RESET的作用是:_______________。
4.在8088系統中,從偶地址讀寫兩個字時,需要______個總線周期。5.8086CPU 內部設置有一個_________字節的指令隊列寄存器。6.8086上電復位后,其內部(CS)=___________,(IP)=________。7.8086 CPU在內部結構上由___________和_________組成。
8.在用8086 CPU組成的計算機系統中,當訪問偶地址字節時,CPU和存儲器通過____________數據線交換信息;訪問奇地址字節時通過_____________數據線交換信息。
9.8086 CPU對存儲器的最大尋址空間為_______________;在獨立編址時對接口的最大尋址空間是_______________。
10.8086狀態寄存器中,作為控制用的標志位有______個,其中,不可用指令操作的是______。11.在8086系統中,堆棧是按___________方式工作的存儲區域,操作地址由________和_______提供。
二、選擇題
1.指令的指針寄存器是_______。
A)BX B)IP C)BP D)SP 2.中央處理器(微處理器)一般主要包括________。
A)運算器 B)控制器 C)運算器和控制器 D)運算器、控制器和存儲器 3.下面的說法中,___________是正確的。
A)指令周期等于總線周期 B)指令周期大于等于總線周期
C)指令周期是總線周期的兩倍 D)指令周期與總線周期之間的關系不確定 4.在8086系統中,在以下地址中可作為段起始地址的為:()A)20100H B)20102H C)20104H D)20108H 5.8086執行一個總線周期最多可傳送()字節。中北大學微機原理及接口技術習題及練習冊
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狀態)組成,在T1狀態,CPU在總線上發出__________信息。
A)數據 B)狀態 C)地址 D)其他
三、簡答題
1.若在4002H段中有8個字節的數據為34H,45H,56H,67H,78H,89H,9AH,0ABH,假定它們在存儲器中的物理地址為400A5H-400ACH,試求各存儲單元的有效地址;若從存儲器中讀出這些數據,試問最少要幾個總線周期?
2.8086CPU內部由哪兩部分組成?各完成什么工作?
3.簡述8086內部EU和BIU兩大功能單元各自的功能和這樣組織的意義。4.什么是微處理器?
2.2 課后練習題
一、填空題
1.8086/8088的基本總線周期由_______個時鐘周期組成,若CPU主頻為10MHz,則一個時鐘周期的時間為_______________。
2.在8086CPU的時序中,為滿足慢速外圍芯片的需要,CPU采樣_____________信號,若未準備好,插入_____________時鐘周期。
3.8086系統總線形成時,須要用_______________信號鎖定地址信號。4.對于8086微處理器,可屏蔽中斷請求輸入信號加在_______________引腳。
5.在8086系統中,若某一存貯單元的邏輯地址為7FFFH:5020H,則其物理地址為_______________。6.8086的輸入信號 Ready 為低電平的作用是說明_______________。7.8088 CPU的 NMI 引腳提出的中斷請求稱為:_______________。8.CPU從主存取出一條指令并執行該指令的時間稱為_______________。9.在8086系統中,從奇地址讀寫兩個字時,需要_________個總線周期。
二、簡答題
1.在內部結構上,微處理器主要有那些功能部件組成?
中北大學微機原理及接口技術習題及練習冊
2.微處理器一般應具有那些基本功能?
3.什么是總線周期?
三、判斷題
1.在8086系統中,20位地址是在執行部件中形成的。()2.8086 CPU的最小方式是為實現多處理器系統而設計的。()3.在加減運算時,OF=1就表示結果有錯。()4.兩數相加,結果有偶數個“1”,則PF=1。()5.當8086CPU復位后,(CS)=0000H,(IP)=0FFFFH,所以復位后系統從物理地址0FFFF0H開始執行程序。()6.8086的每個存儲單元地址既是字節地址又是字地址。()7.同一個物理地址可以由不同的段地址和偏移量組合得到。()
第3章 指令系統
基本要求:掌握8086/8088的尋址方式,了解8086/8088指令系統概況,掌握常用指令的匯編格式、功能及用法。了解機器語言、匯編語言與高級語言的區別和聯系。本章重點:掌握8086CPU的尋址方式、指令系統中指令的分類及其常用指令的格式和功能。本章難點:靈活運用指令解決實際問題。
3.1 基本練習題
一、填空題
1.條件轉移指令轉移的范圍是______________。
2.設當前的(SP)=0100H,執行PUSH AX指令后,(SP)=_______________H,若改為執行INT 21H指令后,則(SP)=_______________H。
3.若當前(SP)=6000H,CPU執行一條IRET指令后,(SP)=_______________H;而當CPU執行一條段內返回指令RET 6后,(SP)=_______________H。
4.8086的I/O指令有__________和__________兩種尋址方式。5.程序控制類指令的功能是_______________。
6.已知(BX)=2000H,(DI)=3000H,(SS)=4000H,(DS)=6000H,(SS)=5000H,66000H單元的內容為28H,則指令MOV AL,[BX+DI+1000H]的執行結果是_______________。7.在尋址方式中,可作基址寄存器的有___________、_________。8.若(AL)=95H,執行SAR AL,1 后(AL)=________。
9.MOV AX,[BX][DI] 指令中源操作數的尋址方式為_______________。
10.若(CS)=1000H,(DS)=2000H,(SS)=3000H,(ES)=4000H,(SI)=1000H,(BP)=2000H,則指令MOV AX,[BP]的功能是將____________單元的內容傳送給AL,將__________單元的內容傳送給AH(填寫物理地址)。
11.指令MOV DX,OFFSET BUFFER 的源操作數的尋址方式是:_______________。中北大學微機原理及接口技術習題及練習冊
12.若(AL)=35H,執行ROL AL,1 后,(AL)=_______________。
13.指令MOV AX,[DI-4]中源操作數的尋址方式是______________。
14.累加器專用傳送指令IN間接訪問I/O端口,端口號地址范圍為_______________。15.若(DS)=2000H,(ES)=2100H,(CS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,則執行指令LEA AX,[BX][SI] 之后,(AX)=___________H,源操作數是____________尋址方式。
二、選擇題
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,執行指令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.設SP=50H,執行段間返回指令RET 后,寄存器SP的內容是()。
A)44H B)54H C)5AH D)5CH 5.在指令MOV ES:[SI],AX 中,目的操作數為_______尋址方式。
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.設(CL)=05H,要獲得(CL)=0AH,可選用的指令是()。
A)NOT CL B)AND CL,0FH C)XOR CL,0FH D)OR CL,0AH 8.用MOV指令將十進制數89以壓縮BCD碼格式送入AX,正確使用的指令是_________。
A)MOV AX,0089 B)MOV AX,0809 C)MOV AX,0089H D)MOV AX,0809H 9.若(AL)=0FH,(BL)=04H,則執行CMP AL,BL后,AL、BL的內容__________。
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.下面指令序列執行后完成的運算,正確的算術表達式應是________________。
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,則執行指令,PUSH AX 后,(SP)和((SS):(SP))的值分別為_________。
A)2002H,00H B)2000H,20H C)1FFFH,00H D)1FFEH,20H 14.8086執行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的內容為13H,執行NEG AL指令后,AL內容為________。
A)OOH B)13H C)0ECH D)0EDH 6
中北大學微機原理及接口技術習題及練習冊
16.8086中8位算術運算指令執行后,結果為10010001B,則ZF和SF標志位的值為______。
A)ZF=0 SF=1 B)ZF=0 SF=0 C)ZF=1 SF=1 D)ZF=0 SF不確定 17.在執行MUL BL指令執行后,CF=OF=1,(AL)=82H,則表示________。
A)(BL)>0 B)(AH)=FFH C)被乘數小于零 D)乘積大于255
三、簡答題
1.什么是尋址方式,寫出五種與數據有關的尋址方式? 2.在IBM PC中有專用的輸入輸出指令,請問I/O端口的地址范圍是多少?地址范圍的不同,應采用的指令格式不同,請寫出在具體的范圍和采用的指令格式。3.指出以下三條指令的區別(NUM為數據段一個變量名)。
(1)MOV SI,NUM(2)LEA SI,NUM(3)MOV SI,OFFSET NUM 4.根據給定的條件寫出指令或指令序列。
(1)將AX寄存器及CF標志位同時清零。(2)BX內容乘以2再加上進位位。(3)將AL中的位二進制數高4位和低4位交換。
(4)將首地址為BCD1存儲單元中的兩個壓縮BCD碼相加,和送到第三個存儲單元中。5.子程序調用的操作過程包含哪幾個步驟?
6.在0624H單元內有一條二字節指令JNE OBJ,如其中位移量分別為
(1)27H(2)6BH(3)0C6H 試問:轉向地址OBJ的值是多少?
7.如BUFFER為數據段中0032單元的符號地址其中存放的內容為2345H,試問以下兩條指令有什么區別?指令執行完成后AX寄存器的內容是什么?(1)MOV AX,BUFFER(2)LEA AX,BUFFER 8.在無超越說明時,通用數據讀寫、目的數據串、源數據串、堆棧操作和取指令操作分別自動選擇哪些段寄存器搭配產生物理地址?
9.設(DS)=1000H,(AX)=1C5AH,(BX)=2400H,(SI)=1354H,(13774H)=30H,(13775H)=20H,(13754H)=40H,(13755H)=10H 指令在此環境下執行,在各空中填入相應的執行結果。
SUB AX,20H[BX][SI](AX)=_____,SF=______,ZF=______,CF=_____,OF=______ 3.2 課后練習題
一、簡答題
1.若(AX)=9C5AH,(BX)=9754H,執行下列指令序列后,程序轉向何處執行。
ADD AX,BX
JNC L3 JNO L1
JNO L4 JNC L2
JMP L5 SUB AX,BX 2.中斷服務程序結束時,用RET指令代替IRET指令能否返回主程序?這樣做存在什么問題?
3.寫出把首地址為BLOCK字數組中的第6個字,送到DX寄存的指令(或指令組),要求使用以下幾種尋址方式:
(1)寄存間接尋址(2)寄存相對尋址(3)基址變址尋址 中北大學微機原理及接口技術習題及練習冊
4.設BX=134AH,BP=1580H,DI=0528H,SI=0234H,DS=3200H,SS=5100H,求在各種尋址方式下源操作數的物理地址。
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]
二、閱讀下面的程序段,寫出運行結果 1.CLC MOV AX,248BH MOV CL,3 RCL AX,CL 執行以上程序序列后,AX=____________________。
2.MOV BX,6D16H MOV CL,7 SHR BX,CL 執行后BX寄存器中的內容________________________。
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 執行后(DX)=__________,(AX)=____________ 4.mov ax,693ah mov al,ah not al add al,ah inc al 程序段執行后,AL= _____________、ZF= ______________。
5.根據程序填空(程序段順序執行)MOV CL, 58;CL= MOV AL, 79;AL= ADD AL, CL;AL= H, AF= , CF= DAA;AL= , AF= , CF=
三、判斷題
1.執行下列指令可以將00H送到端口地址為1A0H的外設上。()MOV AL,00H MOV 1A0H,AL 2.執行下列指令可以將其00H送到端口地址為2F8H的外設上:()MOV AL,00H MOV DX,2F8H OUT DX,AL 3.8088的MOV指令不能進行兩個存儲器單元之間的數據直接傳送。()4.8088系統中,堆棧的存取可以以字或字節為單位。()5.IN和OUT指令可尋址的口地址為64K個,端口地址只能用立即數。()8
中北大學微機原理及接口技術習題及練習冊
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章 匯編語言程序設計
基本要求:掌握匯編語言程序設計的基本步驟,熟悉匯編語言程序設計的基本方法,掌握匯編語言程序的建立及匯編過程。本章的難點:依據所要解決的問題,選擇正確的程序設計方法,正確地運用指令編寫實用的匯編源程序
4.1 基本練習題
一、填空題
1.標號和變量都是存貯單元的符號地址,但其內容不同,標號是_______________的符號地址,而變量是_______________的符號地址。
2.匯編語言源程序結束偽指令是_______________。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匯編語言中,指令語句和偽指令語句的區別和作用。2.什么是變量,變量有哪些屬性,如何使用這些屬性? 3.試說明為什么有時候必須使用PTR屬性操作符? 4.什么是匯編語言,什么是匯編? 5.簡述DOS系統功能調用的使用方法?
三、程序設計題
1.從BUFF單元起有一個字符串(長度小于65535),以'*'結束,編寫一個完整程序求該字符串長度存入LENT單元,并統計字符串中含有大寫英文字符的個數并存入COUNT單元。要求源程序具備必要的偽指令和段說明。中北大學微機原理及接口技術習題及練習冊
2.有一帶符號8位數X存于DAT單元.編一個程序段判斷該數,若x小于0則將0FFH送MARK單元;若X等于0則將MARK+1單元置0FFH;若X大于0則置MARK+2單元為0FFH。3.已知有X、Y、Z三個字變量,存放無符號整數,請編一個完整的程序實現公式Z=(X+Y)/(X-Y+600)(不考慮溢出情況)。
4.AX寄存器中存放著4位十六進制數。試編寫一個匯編語言程序,將這4位十六進制數分別轉換為相應的ASCII碼,并依次存放到RESULT數組的4個字節中去,要求用調用子程序的方法實現。5.寫出對存放在DX和AX中的雙字長數求補的指令序列。
6.設有兩個等長字符串。試編寫一個匯編語言程序,比較它們是否完全相同;若相同,則將字符“Y”送入AL中,否則,將字符“N”送入AL中。7.寫出程序段,把DX,AX中的雙字右移四位。
8.編寫一個完整的8086匯編語言程序,從附加段中首地址為ADR1(變量名)連續存放的100個字型無符號整數中找出最大數,并將此數及其偏移地址分別放入變量MAX和MAXM中
9.已知(AX)=4BD5H,統計AX中1的個數和0的個數,并分別放在BL和DL中。編寫程序段實現該功能。
10.有一個首地址為ARRAY的N個字的數組,請編程序使該數組中的數按照從大到小的次序排序。(采用冒泡排序算法)
4.2 課后練習題
一、填空題
1.定義段結束的偽指令是___________;定義子程序結束的偽指令是________。
2.偽指令X DB 4 DUP(6,2 DUP(6,8)); Y DW 6800H; 設X的偏移地址為2000H,則Y的偏移地址為_________H,若執行指令MOV BL,BYTE PTR Y后,則(BL)=________。3.偽指令VR1 DB 2 DUP(?,3 DUP(1,2),5)在存貯器中被分配了_______________字節。
二、選擇題
1.下面表示段定義結束的偽指令是__________。
A)END B)ENDP C)ENDS D)ENDM 2.變量的類型屬性如下,下面錯誤的類型是__________。
A)字節型 B)字符型 C)字型 D)雙字型 3.設有一程序定義如下: ORG 0024H AR1 DW 4,5,$+4 ?
MOV AX,AR1+4 執行以上指令后,AX中的內容正確的是_______________。
A)0028H B)0032H C)002AH D)002CH 4.現用數據定義偽指令定義數據:BUF DB 4 DUP(0,2 DUP(1,0));問定義后,存儲單元中有數據0100H的字單元個數是____________。A)4 B)3 C)8 D)12 5.下列偽指令中定義字節變量的是________。A)DB B)DW C)DD D)DT 6.使用DOS功能調用時,子功能號應放在()寄存器中。A)AL B)AH C)DL D)DH 1 0
中北大學微機原理及接口技術習題及練習冊
三、程序設計題
1.統計從01000H內存單元開始的100個字(WORD)型帶符號數中的正數、負數和零的字(WORD)個數。
2.實現兩個十六位二進制數的加法。要求加數放在FIRST開始單元,被加數放在SECOND開始單元,和數放在SUM單元。
第5章 半導體存儲器
基本要求:掌握存儲器的分類、作用及性能指標;了解半導體讀寫存儲器(RAM)的基本原理,掌握靜態RAM、動態RAM的特點,了解動態RAM的刷新方法;了解半導體只讀存儲器(掩膜ROM、PROM、EPROM、EEPROM)的基本原理,掌握其特點;掌握常用存儲器芯片的用法;掌握存儲器容量的擴充方法,以及存儲器與微處理器(8位、16位數據總線)的連接方法;掌握片選信號的產生方法。本章重點:掌握各種存儲器的工作原理及其CPU的存儲器的擴展。本章難點:理解存儲器的工作原理及其地址空間的確定。
5.1 基本練習題
一、填空 1.在微機系統中用高位地址線產生存儲器片選(CS)的方法有__________、_________、__________。2.某機器中有8KB的ROM,其末地址為0FFFFFH,則其首地址為______________。3.DRAM靠_______________存儲信息,所以需要定期_______________。
4.掉電后信息丟失的存儲器是_______________,掉電后信息不丟失的存儲器是_______________。5.半導體存儲器分為___________、__________兩大類。前者的特點是_______________,后者的特點是_______________。
6.從內存地址40000H到0BBFFFH,共_________KB。
7.用512×4的RAM芯片組成12K×8的芯片組,需片內地址線_______________條,片組選擇線至少_______________條。中北大學微機原理及接口技術習題及練習冊
二、選擇
1.某CPU有地址線20根,它可連接內存的最大存儲容量是________。A)64KB B)640KB C)1MB D)4MB 2.以下四種半導體存儲器中,以傳輸同樣多的字為比較條件,則數據傳輸率最高的是_______。A)DRAM B)SRAM C)閃速存儲器 D)EPROM 3.沒有外部存貯器的計算機,其監控程序可以存放在____________。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,其片內地址線和數據線數分別為________。A)8,8 B)8,14 C)14,8 D)14,14 6.2864是一種__________芯片。
A)RAM B)PROM C)EPROM D)EEPROM 7.下列幾種半導體存儲器中,哪一種需要刷新操作______________? A)SRAM B)DRAM C)EPROM D)EEPROM 8.某SRAM芯片,其存儲容量為512K×8位,該芯片的地址線和數據線數目為________。A)8,512 B)512,8 C)18,8 D)19,8 9.EPROM是指__________。
A)可編程的只讀存儲器 B)只讀存儲器
C)紫外線可擦除可編程的只讀存儲器 D)電可改寫只讀存儲器
10.以下四種類型的半導體存儲器中,以傳輸同樣多的字為條件,則讀出數據最快的是_________。A)FLASH B)DRAM C)SRAM D)EPROM 11.存儲器是計算機系統的記憶設備,它主要用來___________。
A)存放數據 B)存放程序 C)存放數據和程序 D)存放微程序 12.和外存相比,內存的特點是________。
A)容量小、速度快、成本高 B)容量小、速度快、成本低
C)容量大、速度快、成本高 D)容量大、速度快、成本低
三、簡答題
1.什么是RAM?什么是ROM、EPROM?各有什么用途? 2.試說明線選法和全譯碼法二種片選控制方法的優缺點。
3.半導體隨機存儲器RAM與只讀存儲器ROM有何區別?它們各有哪幾種類型? 4.常用的存儲器片選控制方法有哪幾種?它們各有什么優缺點? 5.簡述存儲器芯片的組成。
6.設有一個具有14位地址和8位字長的存儲器,問:
(1)該存儲器能存儲多少字節的信息
(2)如果存儲器由1K*1位SRAM芯片組成,需要多少芯片?
(3)最少需要多少位地址作芯片選擇 7.詳細寫出半導體存儲器的分類。
8.計算機的內存有什么特點?內存由哪兩部分組成?外存一般是指哪些設備?外存有什么特點? 9.在存儲器器件內部,為什么總是采用矩陣形式組成存儲結構?請用一個具體的例子進行說明。10.為了節省存儲器的地址譯碼電路,通常采用哪些方法?
四、存儲器設計應用題
1.已知有SRAM芯片62256(32K×8)及EPROM芯片27256(32K×8),現用這兩種芯片構成8088最小系統內存的一部分,其中SRAM所占的地址空間為40000H--47FFFH,EPROM所占的地址空間為1 2
中北大學微機原理及接口技術習題及練習冊
F8000H--FFFFFH,試設計出其原理圖。
2.給8088CPU系統擴展32K的ROM,且所選用的存儲器芯片為8K×8,地址譯碼器為74LS138,ROM的地址范圍從60000H~67FFFH,要求寫出每一個存儲器芯片的地址范圍,畫出邏輯連線圖。
3.設某系統的CPU有16根地址線A15-A0、8根數據線D7-D0。現需擴展6KB的ROM,地址范圍為:0000H-17FFH,采用2716芯片。
(1)請寫出存儲器器件2716的數據線和地址線的條數;
(2)計算ROM的芯片數量;
(3)設計存儲器擴展原理圖,并寫出每片ROM的地址范圍。4.已知RAM芯片結構如圖所示,回答下列問題:
1)該芯片容量為多少?若要求構成一個2K×8的RAM陣列,需幾個這樣的芯片?
2)若RAM陣列組的起始地址為E1000H,畫出存儲器系統與8086的電路連接圖(8086工作在最小模式),并寫出每組RAM芯片的地址空間。
3)編程:將緩沖區中的10個數據寫進E1000開始的10個單元中,并說明如何查看結果?
五、判斷題
1.只讀存儲器ROM只有一種類型。
()2.動態RAM的一個重要問題是必須對它所存的信息定期進行刷新。
()
3.用紫外線照射一片EPROM的窗口后,若讀出其存儲單元的內容均為0FFH,則表明該EPROM已被擦除干凈。
()4.讀寫存儲器RAM,有SRAM和DRAM二種類型。
()
5.2 課后練習題
一、填空題
1.在Intel80x86系統中,若一個32位(4字節)字11223344H,存儲在地址為10000H的存儲單元中,則10000H字節單元內容為____________,10003H字節單元內容為___________。2.若芯片SRAM的容量為4K×4bit,現欲用這樣的芯片構成0A0000H到0C3FFFH的內存,需要___片這樣的芯片。
3.如果某存儲器芯片的容量為4K×8位,則存儲器片內尋址地址線是_______根,如果它在系統中起始地址為0F0000H,則它的末地址是_______________。
二、簡答題
1.試述動態RAM的工作特點,與靜態RAM相比,動態RAM有什么長處和不足之處。說明它的使用場合。
2.用下列RAM芯片構成32K×8的存儲器模塊,各需要多少芯片?多少個片選線?(1)1K×8(2)4K×8(3)1K×4(4)16K×4 中北大學微機原理及接口技術習題及練習冊
3.什么是字擴展?什么是位擴展?用戶自己購買內存條進行內存擴充,是在進行何種存儲器擴展?
三、存儲器應用
1.設某微機系統需要擴展內存RAM 32KB,擴充的存儲器空間為10000H開始的連續存儲區域。存儲器芯片采用16K×8的RAM芯片,CPU使用8088。1)選用芯片,畫出邏輯連接圖; 2)寫出各片RAM的所在地址區域。
2.用4K×4的EPROM存儲器芯片組成一個16K×8的只讀存儲器。試問:(1)該只讀存儲器的數據線和地址線的位數。(2)根據題意需要多少個4K×4的EPROM芯片?(3)畫出此存儲器的組成框圖。
第6章 輸入輸出接口技術
基本要求:理解I/O接口的作用和一般結構;掌握I/O編址方式和I/O傳送方式,理解中斷的概念、分類。本章重點:一些基本概念,I/O接口的構成以及I/O傳送方式
6.1 基本練習題
一、填空題
1.CPU與內存及I/O裝置間傳送數據的硬件線路通道稱為_______________。
2.CPU和外設之間的數據傳送方式有__________、__________、____________和___________。3.I/O接口的編址方式可分為_______________、_______________兩種方式。4
中北大學微機原理及接口技術習題及練習冊
4.CPU與I/O之間接口信息通常有三類,它們是____________、___________、____________信息。5.CPU從I/O接口的_______________中獲取外部設備的“準備好”、“忙”或“閑”等狀態信息。6.一個典型的接口是由____________、______________和______________三種不同的寄存器構成。7.主機與外設之間的數據傳送控制方式通常有三種,它們是程序控制方式,DMA方式及_______________,其中________方式的數據傳輸率最高。
二、選擇題
1.中斷與DMA()A)程序中斷可以完全代替DMA B)DMA可以完全代替程序中斷 C)二者各有使用范圍和特點,不能互相代替
2.I/O與主機信息的交換采用中斷方式的特點是_________。
A)CPU與設備串行工作,傳送與主程序串行工作 B)CPU與設備并行工作,傳送與主程序串行工作 C)CPU與設備并行工作,傳送與主程序并行工作
3.有關外設的連接,下面哪個說法是正確的__________________? A)輸入輸出設備可以直接和CPU連接
B)輸入設備的數據線必須經過三態緩沖器才能和CPU的數據總線連接 C)CPU的數據總線,必須經三態緩沖器才能和輸出設備連接 4.一般的接口電路中,不包含下面的哪個端口__________。A)數據口 B)地址口 C)控制口 D)狀態口 5.CPU與外設間數據傳送的控制方式有________________。
A)中斷方式 B)程序控制方式 C)DMA方式 D)以上三種都是
三、簡答題
1.什么情況下兩個端口可以用一個地址?
2.計算機與外部設備數據交換的方式有幾種,分別是什么?
3.如果利用中斷方式傳送數據,數據是如何傳輸的?中斷機構起什么作用? 4.什么是I/O接口?
5.簡述CPU以中斷方式如何與外設交換數據。
6.2課后練習題
一、選擇題
1.下列有關I/O端口的描述中,不正確的是_______________。
A)I/O端口從邏輯上講是被CPU訪問的I/O接口電路中的寄存器 B)8086系統對I/O端口的訪問只能通過專用的指令 C)從連接形式上講,I/O端口總是直接與數據總線連接 D)I/O端口可以看作是CPU與外設交換數據的中轉站
2.在DMA傳送方式中,對數據傳遞過程進行控制的硬件稱為()。
A)數據傳遞控制器 B)直接存儲器 C)DMAC D)DMAT 3.CPU響應中斷請求和響應DMA請求的本質區別是()A)中斷響應靠軟件實現 B)速度慢 C)控制簡單 D)響應中斷時CPU仍然仍控制總線,而響應DMA請求時,CPU要讓出總線 4.在中斷方式下,外設數據輸入到內存的路徑是()A)外設→數據總線→內存 B)外設→數據總線→CPU→內存 C)外設→CPU→DMAC→內存 D)外設→I∕O接口→CPU→內存 5.CPU與I∕O設備間傳送的信號有()中北大學微機原理及接口技術習題及練習冊
A)數據信息 B)控制信息 C)狀態信息 D)以上三種都是 6.CPU與外設之間的數據傳輸方式有_______________。
A)查詢方式 B)中斷方式 C)DMA方式 D)以上都是 7.主機、外設不能并行工作的輸入/輸出方式是____________。A)程序查詢方式 B)中斷方式 C)DMA方式
二、簡答題
1.說明I/O接口的基本功能。
2.相對于查詢方式,中斷方式有什么優點?和DMA方式比較,中斷方式有什么不足之處?
三、填空題
I/O端口的編址方式有統一編址和_______________兩種。其中,在PC機中,I/O端口編址方式為_______________。
第7章 并行接口及8255A應用
基本要求:要求學生掌握并行接口的原理及擴展方法,掌握并行接口器件8255A的內部結構、外部引腳、內部寄存器以及各種工作方式(方式0、方式1)特點和使用,了解方式2的特點;要求學生掌握8255A初始化編程的方法,并能進行應用程序的軟硬件設計;要求學生掌握鍵盤、LED顯示器的作用和工作原理,掌握接口的設計方法。重點:8255A的內部結構和引腳功能、與CPU的連接;8255A的工作方式0;控制字的格式及作用、各種工作方式的組合,初始化編程方法,應用設計;鍵盤、LED的工作原理。難點:8255A的工作方式;行掃描法、行反轉法,鍵識別與處理、多位LED的多位顯示問題。
7.1 基本練習題
一、填空題
1.一片8255A端口A有3種工作方式,端口B有_______種工作方式。
2.8255A的三個端口工作在方式0輸入方式時,三個端口均_________(有/無)鎖存能力。3.當從8255A的端口C讀出數據時,8255A的幾個控制信號*CS,A1,A0,*RD,*WR分別是_________,_________,_________,_________,_________(*代表低電平有效)。
4.8255A的端口A可用程序設置為__________、__________、_________三種工作方式,對C口還有一種特殊使用方式為____________。
5.當8255A的輸入信號 *CS=0、*RD=0、*WR=1且A1=A0=0時,此8255A執行的操作是_______________。(*表示低電平有效)
6.當8255A的輸入信號 *CS=0、*RD=
1、*WR=0且A1=A0=0時,此8255A執行的操作是_______________。(*表示低電平有效)
7.8255A芯片中的端口B可以有_______種工作方式。
8.一片8255A芯片內含_________個傳輸數據的8位I/O端口,其中PA口有_________種工作方式。6
中北大學微機原理及接口技術習題及練習冊
二、選擇題
1.8255A芯片具有三個獨立數據端口,只有_______端口具有雙向傳輸方式。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.已知某系統中8255芯片所占用的I/O地址為340H--343H,則該8255芯片內控制字寄存器口地址為_________。
A)340H B)341H C)342H D)343H 5.某系統采用8255A并行I/O接口,初始化時CPU所訪問的端口地址為0CBH,并設定A口的工作方式為方式1輸出,則A口的地址最可能為__________。A)0CBH B)0CAH C)0C9H D)0C8H 6.8255A的方式選擇控制字應寫入__________。
A)A口 B)B口 C)C口 D)控制口
7.在通用可編程并行電路8255A中,用于傳輸數據的8位I/O端口共有_________。A)1個 B)2個 C)3個 D)4個
三、簡答題
1.8255A是什么芯片?一片8255占用幾個口地址?它有幾種工作方式?
2.8255A的方式0一般使用在什么場合?在方式0時,如果使用應答信號進行聯絡,應該怎么辦? 3.當8255A工作在中斷方式2時,CPU是如何來區分輸入或輸出的? 4.現欲從8255A芯片PC口的PC0輸出高電平“1”,試問有哪幾種辦法實現此操作? 5.以4×4的鍵盤為例,簡述非編碼鍵盤中行反轉法掃描鍵盤的工作原理。
四、硬件編程題
1.一個8088系統中有一8255A,8255A各口設置如下:A組與B組均工作于方式0,A口為數輸入,B口為輸出,C口高位部分為輸出,低位部分為輸入,A口地址設為40H。1)寫出工作方式控制字 2)對8255A初始化
3)從A口輸入數據,將其取反后從B口送出
2.設8255A的4個尋址地址號為0060H~0063H,試編寫下列各種情況下的初始化程序。1)將A組和B組設置成方式0,A口,B口為輸入,C口為輸出。2)將A組工作方式設置成方式2,B組為方式1,B口作為輸出。3)將A口,B口均設置成方式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輸出。編寫程序實現初始化,并將端口B內容的2倍與端口C的內容求和后將結果取反送到端口A。
五、硬件設計題
1.用一片8255 A芯片設計一基于PC系統總線的I/O接口板,要求: 1)8255A占用的端口地址為300H--306H,畫出原理圖。
2)設8255A的PA、PB、PC口均工作在方式0,PA口為輸入,PB、PC口均為輸出,編寫8255的初始化程序片段(已知8255A控制字為10010000B)。
中北大學微機原理及接口技術習題及練習冊
3)編寫程序片段,將從PA口讀入的狀態送至PB口輸出。
2.已知8255的控制口地址為236H,開關信息接在PB口,發光二極管接在PA口,使用8255作為接口芯片,讀開關量的狀態,并用發光二極管顯示輸出。在將開關的信息存放在FIRST單元的同時,發光二極管完成其信息的顯示。要求畫出完整的線路連接圖并設計相應的程序。(8086工作在最小模式,8255A相應的控制字為82H)。
7.2 課后練習題
一、填空題
1.8255A控制字可以分為 和 兩類。2.8255A各個端口的工作方式是由 決定的。
二、選擇題
1.某系統采用8255A并行I/O接口,初始化時CPU所訪問的端口地址為0CBH,并設定為方式1輸出,則了B口的口地址應為___________。
A)0CAH B)0C9H C)0C8H D)0CCH 2.某系統采用8255A并行I/O接口,初始化時CPU所訪問的端口地址為0BBH,并設定為方式1輸出,則了B口的口地址應為__________。
A)0BAH B)0B9H C)0B8H D)0BCH
三、簡答題
常用的鍵盤掃描有幾種方式?試述各自的特點及原理。
四、硬件編程題
8255A的工作方式控制字和C口的按位置位/復位控制字有何差別?若將C口的PC2引腳輸出高電平(置位),假設8255A控制口地址是303H,程序段應是怎樣的?
五、硬件設計題
1.已知8255A的控制口地址為236H,LED采用共陽級接法。字型信息接在PB口,字位信息接在PA口,使用8255A作為接口芯片,在兩塊LED上顯示自己的學號。要求畫出完整的線路連接圖并設計相應的程序(8086工作在最小模式,8255A相應控制字為80H)。8
中北大學微機原理及接口技術習題及練習冊
2.若打印機及其工作時序如圖所示,當打印機不忙時(BUSY=0),向它送數據(設每次只傳送1個字節)并在數據穩定時用 負脈沖將數據存于打印機內部,同時設置打印機忙信號,即BUSY =1。
1)用可編程接口芯片8255A將打印機與總線相連接起來。若規定8255A的地址為0320H~032FH任選,試畫出連接電路圖。2)數據段中首地址為BUFFER的區域中存放著100字節要打印的字符,試編寫包括8255A初始化的打印程序,并將100個字符打印出來。
3.在一個系統中,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。請編寫程序段,完成上述功能(程序要加注解)。
中北大學微機原理及接口技術習題及練習冊
第8章 串行接口及8251A應用
基本要求:掌握異步通信的原理、方法、規程,理解字符傳送格式和波特率的含義,理解掌握8251A的功能、結構,掌握其外部接線、編程和使用方法,了解RS—232C串行通信接口標準,掌握其用法。教學重點:串行通信的基本原理以及8251A的使用。
8.1 基本練習題
一、填空題
1.常用來實現RS-232C電平與TTL電平相互轉換的電路是_______________。
2.串行通訊按照時鐘同步方式不同,可分為_______________通訊和_______________通訊。3串行接口標準RS-232C最簡化型的三根線為_______________;其電氣特性邏輯0和1的電平分別為_______________伏。
二、選擇題
1.IEEE488 總線是__________________。
A)工業控制總線 B)串行通信總線 C)計測總線 D)PC擴展總線 2.在數據傳輸率相同的情況下,同步傳輸的速度要高于異步傳輸,其原因是()A)字符間無間隔 B)雙方通信同步 C)發生錯誤概率少 D)附加信息總量少
3.設串行異步通信的數據格式是:1個起始位,7個數據位,1個校驗位,1個停止位,若傳輸率為1200,則每秒鐘傳輸的最大字符數為()A)10個 B)110個 C)120個 D)240個
4若傳輸率為2400,收、發時鐘(RxC∕TxC)頻率為38.4KHz,則波特率因子為()A)1 B)16 C)32 D)64
三、簡答題
1.8251A的狀態字哪幾位和引腳信號有關?狀態位TxRDY和引腳標號TxRDY有什么區別?它們在系統設計中有什么用處?
2.8251A內部有哪些功能模塊?其中讀/寫控制邏輯電路的主要功能是什么?
3.試問:從8251A的編程結構中,可以看到8251A有幾個寄存器和外部電路有關?一共要幾個端口地址?為什么?
四、編程題
1.一片8251占用80H,82H兩個端口地址,試說明該8251的C/D引腳如何與系統地址線連接,其控制端口地址為什么?數據端口為多少?并編程序初始化該8251,使其工作于同步方式,且波特率因子為16,允許發送和接收,8個數據位,2位停止位,不允許校驗。
2.用程序段對8251A進行同步方式設置。地址端口地址為66H,規定用內同步方式,同步字符為2個,用奇校驗,7個數據位。
8.2 課后練習題
一、簡答題
1.串行通訊的數據傳送方式有哪三種?0
中北大學微機原理及接口技術習題及練習冊
2.在8251內部有多個寄存器,其中有模式寄存器、同步字符寄存器
1、同步字符寄存器
2、控制寄存器、狀態寄存器、數據接收寄存器和數據發送寄存器,但是8251芯片只有一條引腳C/D用來區分內部寄存器,請問它是如何區分這些寄存器的?
二、編程題
1.設8251A為異步工作方式,波特率因數為16,7位/每字符,奇校驗,兩位停止位。CPU對8251A輸入80個字符。試對其進行初始化編程。設8251A的地址為0F2H。
2.若8251A的收發時鐘(RxC,TxC)頻率為38.4KHz,它的RTS和CTS引腳相連,試編寫出以半雙工異步通訊,每幀字符的數據位數為7,停止位數為1,偶校驗,波特率為600 b/s,處于發送狀態的初始化程序(設8251A的地址為02C0H和02C1H)。
第9章 中斷及8259A 基本要求:對于非電類同學,理解中斷的概念和分類,熟練掌握中斷的處理過程,會編寫中斷處理程序;掌握中斷優先權的排隊方法;了解中斷嵌套的概念。對于電類同學,在非電類基礎上,了解8259A的功能、結構和工作原理。而對于計算機專業的同學,在電類基礎上,掌握8259A的初始化方法和一般編程方法。教學重點:中斷、中斷源、中斷向量、中斷過程,8086中斷系統結構、中斷類型編碼、中斷過程,掌握中斷的處理過程,會編寫中斷處理程序,8259A 的功能、編程及使用方法。教學難點:8086中斷系統結構、中斷類型編碼、中斷過程;編寫中斷處理程序,8259A 的功能、編程及使用方法; 中北大學微機原理及接口技術習題及練習冊
9.1 基本練習題
一、填空題
1.中斷類型碼若為58H,它在中斷矢量表中的矢量地址為_______________H,從該地址開始連續四個單元存放的是_______________。
2.一個中斷類型號為01CH的中斷處理程序存放在0100H:3800H開始的內存中,中斷向量存儲在地址為_________至________的______個字節中。
3.8088的外部中斷分為________和__________兩大類。4.若用兩片斷8259A芯片構成主從級聯形式,則這兩片8259A芯片最多可直接管理_________級外部中斷源。
5.若8259A的兩個端口地址為20H和21H,則在初始化時,應在寫入ICW1_之后,以______地址寫入ICW2和ICW4。
6.8259A有兩類命令字,分別是_______________和_______________。
7.8086系統中,中斷服務子程序的入口地址通過__________獲取,它們之間的關系為________,如果1CH的中斷處理子程序從5110:2030H開始,則中斷向量被存放在_________單元,各單元的內容為___________。
8.8259A可采用級聯方式工作,在微機系統中最多可接_______(具體數字)個從屬的8259A。9.8088 CPU的非屏蔽中斷的類型碼為_________。
10.中斷優先級控制主要解決兩種問題:_______________、_______________。11.中斷向量可以提供_______________。
12.硬件中斷可分為_______________、_______________兩種。
二、簡答題 1.8259A的中斷屏蔽寄存器IMR和8086/8088的中斷允許標志IF有什么差別?在中斷響應過程中,它們怎樣配合起來工作?
2.外設向CPU申請可屏蔽中斷,但CPU不響應該中斷,其原因有哪些? 3.8259A的初始化命令字和操作命令字有什么差別?它們分別對應于編程結構中哪些內部寄存器?
4.在8086/8088的中斷系統中,響應可屏蔽中斷過程,是如何進入中斷服務程務程序的? 5.8086中,可屏蔽中斷與非屏蔽中斷的主要區別是什么? 6.8086中斷系統響應中斷時如何找到中斷入口地址?
三、選擇題
1.8086 CPU 響應可屏蔽中斷的必要條件除中斷允許標志IF=1外,只需滿足_________。A)訪內操作結束 B)當前指令執行完 C)無軟中斷請求 D)無內部中斷請求
2.PC機采用向量中斷方式處理8級外中斷,中斷號依次為08H-0FH。在RAM 0000H:002CH單元開始依次存放23H、FFH、00H、F0H四個字節,問該向量對應的中斷號和中斷程序入口是_______________。
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系統中的中斷向量表的作用是____________。
A)存放中斷服務程序 B)存放系統引導程序
C)存放中斷響應標志 D)存放中斷服務程序的入口地址 4.8259A內中斷類型號的數據長度為_________。
A)3位 B)8位 C)16位 D)8位或16位 5.8086對硬件中斷請求響應優先級最高的請求_____________。2
中北大學微機原理及接口技術習題及練習冊
A)NMI B)INTR C)內部硬件中斷 D)單步中斷
6.8086中斷向量表的大小為()字節,其中斷系統可以管理()種中斷。A)1K,256 B)1K,128 C)256,64 D)2K,512 7.8086系統可管理的中斷(軟件及硬件中斷)的個數最多為__________。A)8個 B)16個 C)64個 D)256個
8.當8088 CPU響應中斷時,CPU把斷點處的有關內容壓入堆棧保護,并清除()。A)TF B)IF C)OF D)TF和IF 9.除法出錯是屬于()中斷。
A)線路故障 B)內部中斷 C)外部中斷 D)單步中斷 10.3片8259A級聯,最多可管理的中斷級數為()級。A)20 B)21 C)22 D)24 9.2 課后練習題
一、選擇題
1.PC機中確定可屏蔽中斷服務程序的入口地址是___________。A)主程序中的調用指令 B)主程序中的轉移指令
C)中斷控制器發出的類型碼 D)中斷控制器中的中斷服務寄存器(ISR)
2.已知某8259A與8086 CPU相連,其對應的中斷類型碼為40--47H,那么在初始化時,CPU 送給8259A 的ICW2值和IR3中斷源被響應時8259A送給CPU的中斷類型碼可能的是_______。A)40H和47H B)40H和40H C)47H和43H D)43H和47H 3.對8086 CPU而言,中斷優先級別最高的是_______________。
A)單步中斷 B)除法錯,溢出中斷,軟中斷 C)INTR D)NMI 4.在8086環境下,對單片方式使用的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.在中斷響應周期內,將IF置0是由_________。
A)硬件自動完成的 B)用戶在編制中斷服務程序時設置的 C)關中斷指令完成的 7.中斷向量是__________。
A)子程序入口地址 B)中斷服務程序入口地址 C)中斷服務程序入口地址的地址 8.通過中斷向量表中的中斷向量,可以提供_________。
A)被選中設備的起始地址 B)傳送數據的起始地址 C)中斷服務程序入口地址 D)主程序的斷點地址 9.CPU響應中斷的時間是__________。
A)外設提出中斷 B)一條指令結束 C)取指周期結束 10.所有中斷處理(服務)過程的最后一條可執行指令必須是()。A)RET B)IRET C)HALT D)NOP
二、簡答題
1.8086中斷系統有哪幾類?8259A管理的是哪一類中斷?
2.CPU響應可屏蔽中斷有哪些基本條件。中北大學微機原理及接口技術習題及練習冊
3.已知8259A某可屏蔽中斷的類型號為20H,服務程序的入口地址標號為NMITS,編程將入口地址填寫到中斷向量表中。
三、判斷題
1.非屏蔽中斷信號是一個由高到低的下降沿,這類中斷不受中斷允許標志位的影響,也不能用軟件進行屏蔽。()2.在由8086組成的微機系統中,對應中斷類型碼為255的外設,其中斷服務程序的入口地址為0000:03FFH。()
3.實現中斷嵌套需用堆棧來保護斷點,由于所保護內容不多,不必考慮棧溢出。()4.中斷嵌套可以在多級上進行,形成多級嵌套,在應用時,其嵌套級數不受任何限制。()
第10章 定時器/計數器
基本要求:理解可編程定時器/計數器的功能及典型結構;掌握可編程定時計數芯片8253的初始化編程,8253芯片的硬件連接和應用程序的編程,以及8253的應用。本章重點:8253的初始化編程:方式控制字和計數初值設置;8253的6種工作方式;8253應用。本章難點:8253的初始化編程,計數值回讀。
10.1 基本練習題
一、填空題
1.8253A工作于“模式0”,設置計數器0的計數常數為0FFEH,進行二進制計數。假設8253A的端口地址為50H—56H。
MOV AL,;8253A初始化 OUT , AL MOV AL,;設8253A計數初值 OUT , AL MOV AL,;OUT , AL 2.某一測控系統要使用一個連續的方波信號,如果使用8253A可編程定時/計數器來實現此功能,則8253A應工作在方式。
3.利用8253A芯片每20ms產生一個脈沖輸出,若輸入的時鐘頻率為2MHz,8253A的計數初值應取,工作方式選。
二、選擇題
1.當8253A可編程定時/計數器工作在 下時,需要由外部脈沖觸發開始計數。A)方式0 B)方式1 C)方式2 D)方式3 E)方式4 F)方式5 2.若8253A處于計數過程中,當CPU對它裝入新的計數初值時,其結果將是。A)8253A禁止編程
B)8253A允許編程,并改變當前的計數初值 4
中北大學微機原理及接口技術習題及練習冊
C)8253A允許編程,但不改變當前的計數初值
D)8253A允許編程,是否影響當前計數過程隨工作方式而變
3.當8253A工作在方式0,在初始化編程時,一旦寫入控制字后。A)輸出信號端OUT變為高電平B)輸出信號端OUT變為低電平C)輸出信號端保持電平值不變 D)立即開始計數
4.當8253A工作在方式0,控制信號變為低電平,對計數器的影響是。A)結束本次循環,等待下一次計數的開始 B)暫時停止現行計數工作 C)不影響本次計數 D)終止本次計數過程,立即開始新的計數循環
5.利用8253A每20ms產生一次中斷,若CLK為20MHz,則8253A可采取的工作方式及計數初值為。
A)方式0;65535 B)方式3;40000H C)方式5;40000 D)方式2;40000 6.8253A。
A)只能實現計數 B)只能實現定時 C)即可實現計數,又可實現定時 D)都不能
三、簡答題
1.定時和計數有哪幾種實現方法?各有什么特點?
2.試說明定時器/計數器芯片Intel 8253A的內部結構。
四、綜合題
設8253A三個計數器的端口地址為100H、101H、102H,控制寄存器端口地址103H。輸入時鐘為2MHz,讓1號通道周期性的發出方波,其周期為1ms,試編寫初化程序段。
10.2 課后練習題
一、選擇題
1.CPU可以對8253計數器執行讀操作,其讀到的是()
A)工作方式 B)計數初值 C)計數執行部件CE(減法計數器)的當前值 D)0 2.在 8253 的6種工作方式中,能夠自動重復工作的兩種方式是()。
A)方式1,方式 2 B)方式 2,方式3 C)方式2,方式 4 D)方式 3,方式5 3.INTEL8253每個通道都有一個()位的預置初值減1計數器。A)4 B)8 C)16 D)32 4.在下列8253的四種工作方式中,即使GATE保持為高電平,處于()的8253在寫入初值后也不開始定時或計數。
A)方式0(計數結束中斷)B)方式1(硬件可重觸發單穩態)C)方式2(速率發生器)D)方式3(方波)
二、綜合題
1.某系統中8253芯片的通道0至通道2和控制端口的地址分別為0FFF0H~0FFF6H,定義通道0工作在方式2,CLK0=2MHz,要求輸出OUT0為1KHz的速率波;定義通道1工作方式0,其CLK1輸入外部計數事件,每計滿1000個向CPU發出中斷請求。試寫出8253通道0和通道1的初始化程序。中北大學微機原理及接口技術習題及練習冊
2.若要采用一片8253產生近似為1Hz的對稱方波,已知時鐘頻率為2MHz,8253地址為350-353H,試編寫8253初始化程序,并說明通道引腳的連接方法。
第11章 模擬量通道
基本要求:掌握模擬量通道意義,了解A/D,D/A轉換原理,掌握0809、0832的使用和編程方法,掌握實際檢測模擬量的一般方法和過程。重點難點:A/D,D/A轉換原理及使用和編程方法
11.1 基本練習題
一、填空、選擇題
1.A/D轉換器的功能是將_______________轉換成數字量信息,便于計算機運算、處理。
2.某10位的A/D芯片,模擬輸入信號的量程為0~+5伏,則數字量12對應的電壓為()伏。
A)-0.0293 B)0.0586 C)0.0293 D)-0.0586
二、簡答題
1.使用DAC0832進行數/模轉換時,有哪兩種方法可對數據進行鎖存?
2.當用帶兩級數據緩沖器的D/A轉換時,為什么有時要用3條輸出指令才完成16位或12位數據轉換?
3.什么叫采樣保持電路的采樣狀態和保持狀態?
三、編程題
1.利用DAC0832芯片 ,實現輸出三角波。DAC端口的地址為328H,DAC0832芯片采用一級緩沖方式。請寫出主要程序段。
2.在一個計算機系統中連接有一個8位 D/A 轉換器,D/A轉換器的數據端口地址為180H,請編程從此 D/A 轉換器的模擬量輸出端輸出一個如圖所示的鋸齒波(頻率不限制)。
11.2 課后練習題
一、簡答題
1.比較計數式,雙積分式和逐次逼近式A/D轉換的優缺點。6
中北大學微機原理及接口技術習題及練習冊
2.在數字量和模擬量并存的系統中,地線連接時要注意什么問題?
二、編程題
1.一個8位D/A轉換器連接于8086系統中,其端口地址為3FH,請編程實現在D/A轉換器的輸出端輸出一個鋸齒波。
2.一個8086系統中連接有一A/D轉換器,如圖所示,請完成下列問題 1)圖中0809通道5(IN5)的端口地址是多少?
2)圖中0809轉換完成信號(EOC)的端口地址是多少?
3)編程將通道7(IN7)的模擬信號連續采集16次,存放到內存BUF1開始的單元中。中北大學微機原理及接口技術習題及練習冊
第12章 與實驗相關的問題
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.在做匯編語言實驗時,有時需要使用調試工具DEBUG,在DEBUG中,如果要修改AL寄存器中的內容,需要使用的命令是__________________。
A)R AX B)R AL C)E AX D)E AL
三、問答題
1.請你設計一個實驗項目,在實驗箱上完成,具體要求是:在某個鍵按下時,發光二極管閃爍(亮一段時間,熄滅一段時間),而該鍵抬起來時,發光二極管一直點亮。寫出實驗步驟和具體使用的實驗箱資源等。
2.在我們做硬件中斷實驗時,經常在中斷服務程序中使用這樣兩條指令 MOV AL,20H OUT 20H,AL 請問這兩條指令的功能是什么?
3.在我們做硬件中斷實驗時,在主程序中經常使用如下三條指令
IN AL,21H AND AL,7FH OUT 21H,AL 請問這三條指令的功能是什么?
4.在做硬件實驗時,有一個同學在用F5裝載程序時,CS輸入0000,IP輸入0000,請問該實驗能否完成,為什么?
5.寫出做微機原理硬件實驗的具體步驟。6.簡述DEBUG中A、R、D、Q、G命令的功能。
12.2 課后練習題
一、判斷題
1.我們做軟件實驗時用MASM對編好的程序進行匯編。()2.在我們做微機原理硬件實驗時,實驗程序是由實驗箱上的CPU執行的。()3.在做微機原理硬件實驗時,實驗程序是由通用計算機PC的CPU運行的。()
二、簡答題
簡述DEBUG中A、R、D、Q、G命令的功能。8
中北大學微機原理及接口技術習題及練習冊-----參考答案
基本練習題參考答案
第1章 計算機基礎知識參考答案
一、填空題
1.地址總線,數據總線,控制總線(次序可以是任意的)2.中央處理器,存儲器,輸入/輸出接口(次序無關)
3.控制器,存儲器 4.-128--127,0FFH 5.-9 6. 45.625(45.625D)7. 01001111B(01001111或 1001111)8. 硬件系統,軟件系統 9. 0DC3H,0A01H 10. 運算器,控制器 11.補碼,FFB2H(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)系統總線,4)輔助存儲器,5)輸入/輸出(I/O)接口和輸入/輸出設備
3.在計算機中,連接CPU與各個功能部件之間的一組公共線路,稱為總線,在計算機中一般有三組功能不同的總線,傳輸地址信息的稱為地址總線,傳輸數據信息的稱為數據總線,傳輸控制信息的稱為控制總線。(只要答出總線定義,即可)
4.電子計算機是一種能自動,高速,精確地完成各式各樣的數據存儲,數值計算,邏輯推理,過程控制和數據處理功能的電子機器。計算機的主要特點有四個方面,即:高速性,準確性,邏輯性,通用性。(只要意思相近即可得分)5. BCD碼運算修正規則:
(1)凡是對應位運算結果為冗余碼時,加(減)6修正。
(2)如該位和數有向高位進(借)位時,也在該位加(減)6修正。(3)如低位修正結果使高位大于9時,高位進行加(減)6修正。(只要意思相近即可)6.CPU是組成微機系統的核心部件,其功能如下:(1)算術和邏輯運算,執行數據處理。(2)暫存數據。(3)實現程序控制,即可取指令,對指令寄存,譯碼分析并執行指令所規定的操作,還能提供整個系統所需的定時和控制信號。7.數在機器內的表示形式為機器數。而機器數對應的數值稱為機器數的真值。
第2章 8086/8088微處理器參考答案
一、填空題
1.3027BH 2.8,16 3.使8086進行初始化 4.4 5.6 6.0FFFFH,0000H 7.執行部件EU,總線接口部件BIU(次序無關)8.CPU的低8位數據線(AD0--AD7),CPU的高8位數據線(AD8--AD15)9.1MB(1兆字節),64K(65536)10.3,TF 11.先進后出(后進先出),SP,SS(SS,SP)29 中北大學微機原理及接口技術習題及練習冊-----參考答案
二、選擇題
1.B 2.C 3.B 4.A 5.B 6.A 7.B 8.B 9.C 10.C
三、簡答題
1.各字節的有效地址分別為0085H,0086H,0087H,0088H,0089H,008AH,008BH和008CH,8個總線周期
2.在8086內部由BIU和EU兩大部分組成,BIU主要負責和總線打交道,用于CPU與存儲器和I/O接口之間進行數據交換;EU主要是將從指令隊列中取得的指令加以執行。
3.在8086內部,按功能劃分可以分為BIU和EU兩大部分,BIU主要負責總線接口,與存儲器和I/O接口進行數據傳遞;而EU則是執行部件,主要是執行指令;這兩部分分開可以在執行指令的同時,從存儲器中將將要執行的指令取到指令隊列,使兩部分并行工作,提高CPU的速度。(只要意思為提高CPU的效率即可)
4.一般稱為CPU,它是將運算器、控制器集成在一塊芯片上,本身具有運算能力和控制功能,是微型計算機的核心。(只要答出將運算器、控制器集成在一塊即可)
第3章 指令系統參考答案
一、填空題
1.-128~+127 2.00FE,00FA 3.6006H,6008H 4.直接尋址,寄存器間接尋址(次序可以顛倒)5.改變程序執行的順序 6.(AL)=28H(28H送到AL寄存器)7.BX,BP(次序無關)8.0CAH 9.基址加變址尋址方式(基址址尋址方式)10.32000H單元的內容,32001H單元的內容 11.立即尋址方式 12.6AH 13.寄存器相對尋址方式(相對寄存器尋址方式)14.0-65535(其他數值表示也可以)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.址方式就是尋找操作數或操作數地址的方法。立即數尋址、寄存器尋址、直接尋址、寄存器間接尋址、寄存器相對尋址、基址變址尋址、相對基址變址尋址
2.I/O端口的地址范圍是0000H--0FFFFH(64K),當地址范圍在0000H-00FFH 時可以使用直接端口地址訪問和間接訪問,格式如下(以8位為例):
IN AL,PORT IN AL,DX OUT PORT,AL OUT DX,AL 而當地址范圍在大于00FFH 時只能使用間接訪問指令,格式如下(以8位為例):
IN AL,DX OUT DX,AL 3.(1)指令執行后SI取得的是內存變量NUM的值。
(2)指令執行后SI取得的是內存變量NUM的偏移地址。(3)指令執行后SI取得的是內存變量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)保護現場,即將主程序轉移前的程序狀態保存起來,保存內容主要是程序計數器PC的內容。保護現場通常采用堆棧完成,將程序計數器PC的內容(斷點地址)壓入堆棧。(2)將子程序入口地址3 0
中北大學微機原理及接口技術習題及練習冊-----參考答案
送入程序計數器PC,那么,下一條要執行的指令就是子程序的第一條指令。6.取出NE OBJ指令后,(IP)=0626H,OBJ的值是:(IP)+D->IP 0626H+27H=064DH 0626H+6BH=0691H 0626H-3AH=05ECH 7.第一條指令是將BUFFER字單元的內容送到AX寄存器,而第二條指令是將BUFFER的段內偏移地址送到AX寄存器。(1)(AX)=2345H(2)(AX)=0032H 8.通用數據讀寫自動選擇數據段寄存器(DS)目的數據串自動選擇附加數據段寄存器(ES)源數據串自動選擇數據段寄存器(DS)堆棧操作自動選擇堆棧段寄存器(SS)取指令操作自動選擇代碼段寄存器(CS)
9、(AX)=0FC2AH,SF=1,ZF=0,CF=1,OF=0 第4章 匯編語言程序設計參考答案
一、填空題
1.指令(程序),操作數 2.END 3.350 4.36(或24H)
二、簡答題
1.指令是真正讓計算機進行某種具體操作的命令,它在程序運行時執行。偽指令是通知匯編程序在翻譯程序時執行的命令。
2.變量是在程序運行過程中,其值可以改變的量,通常給其命名一個符號,稱為變量名。變量有三種屬性:變量的類型、變量的段地址、變量的段內偏移地址;類型屬性使用SIZE獲取,段地址屬性用SEG獲取,偏移地址屬性用OFFSET獲取。
3.PTR優先于隱含的類型屬性,指定操作數的類型的類型屬性。因為在許多情況下,所使用的操作符類型與原指定的類型不同,又不希望改變原有的設定,只暫時改變操作符類型,則必須使用PTR屬性操作符作為臨時設定,這個臨時設定類型只在本條指令中有效。
4.匯編語言是用指令助記符、符號地址編寫程序的一種語言,每條指令對應一種機器指令。匯編就是將匯編語言源程序翻譯成機器指令的過程
5.1)在AH寄存器中設定所需調用的功能號;2)根據功能的規定設定入口參數;3)用INT 21H進入子程序;4)根據規定,從相應的寄存器取得返回值。
三、程序設計
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
中北大學微機原理及接口技術習題及練習冊-----參考答案
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
中北大學微機原理及接口技術習題及練習冊-----參考答案
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章 半導體存儲器參考答案
一、填空題
1.線選,部分譯碼,全譯碼 2.0FE000H(FE000H)3.電容,刷新 4.隨機讀寫存儲器(RAM),只讀存儲器(ROM)
5.只讀存儲器,隨機讀寫存儲器,速度慢但掉電后信息不丟失,速度快但掉電后數據丟失 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:只讀存儲器,其中的內容在正常情況下只可以讀出,而不能改寫。
EPROM:可以由用戶編程的只讀存儲器,但在正常情況下只可以讀出其內容,而不能改寫。RAM一般用于計算機中需要經常改變其內容的存儲器,如計算機內存。
ROM一般用于計算機中不需要經常改變其內容的存儲器,如計算機的ROMBIOS。EPROM一般用于在設計過程中需要經常改變其內容,而在設計完成后其內容一般不改變的場合。2.線選法除將低位地址線直接接片內地址外,剩下的高位地址線,分別作為各個存儲器芯片的片選控制信號,尋址時只允許一位有效,否則不能保證每次只選中一個芯片。線選法的優點是連接簡單,無需專門譯碼電路,缺點是地址不連續,有重疊區,浪費地址空間,適于簡單存儲系統構造。
全譯碼法除了將低位地址總線直接連至各芯片的地址線外,將余下的高位地址總線全部譯碼,33 中北大學微機原理及接口技術習題及練習冊-----參考答案
譯碼輸出作為各芯片的片選信號。這種方法可以提供對全部存儲空間的尋址能力,且每一存儲單元有唯一地址對應。即使不需要全部存儲空間,多余的譯碼輸出可閑空,便于需要時擴充。
3.隨機存儲器RAM中的任何存儲單元都能隨時讀寫,即存取操作與時間、存儲單元物理位置順序無關,一旦掉電,所存信息丟失。常見類型有靜態RAM(SRAM)和動態RAM(DRAM)等。
ROM是一種只讀存儲器,其內容一經寫入,在工作過程中就只能讀出不能重寫,即使掉電,信息也不會丟失。常見類型有掩模ROM、PROM、EPROM、EEPROM等。
4.常用存儲器片選控制方法有3種,分別是線選法,全譯碼法,局部譯碼法。
線選法的優點是連線簡單,缺點是地址空間利用率低;全譯碼法不浪費地址空間,但需譯碼電路;局部譯碼介于前二者之間,當存儲容量要求大于系統地址線所能尋址的最大范圍,或者幾個微處理器需要共享某一存儲區域時,則采用擴充尋址法。
5.存儲體、地址譯碼器、控制邏輯電路、數據緩沖器。(每個1分)6.(1)16384(2)128(3)4 7.半導體存儲器主要有:ROM(只讀存儲器)和RAM(隨機存取存儲器)兩類,RAM隨機存儲器又可以分為:動態RAM,靜態RAM;ROM只讀存取存儲器又可以分為:掩膜型ROM;可編程ROM(PROM);可擦除可編程ROM(EPROM);電擦除可編程ROM(EEROM)。
8.計算機的內存一般存儲容量小,存取速度快,目前多采用半導體器件組成。通常有動態RAM和靜態RAM兩部分組成。常把軟磁盤和硬磁盤、磁帶等作為外存設備,最近光存儲器的應用也越來越廣泛。儲存容量大、速度低,必須配備專門的讀/寫控制設備。
9.采用矩陣形式存儲信息主要是為了節省地址譯碼電路,提高半導體器件的集成度。例如要組成1KB的內存,若不采用矩陣形式來組織這些單元,就需要1024條譯碼線才能實現對1KB的尋址。但若用32*32矩陣來排列,則只要有32條行選線和32條列選線就可以了。存儲容量越大,矩陣形式的優越性就越明顯。
10.常采用存儲器的模塊結構及在一個存儲模塊內再將存儲器分組,這樣可用地址的高位對模塊選擇,其余位對存儲器組進行選擇。
四、存儲器設計應用題 1.系統連接如圖:
2.存儲器芯片為8K×8,可知芯片容量為8K,地址線為13條,數據線為8條,而系統要求容量為32K,位數是8,因此為字擴展。需要的芯片為4個
存儲器芯片的地址為:
1)、地址譯碼器:3個輸入端的信號中必須有:A13,A14,其對應的位置不同,輸出的引腳也不同。只要輸入信號與輸出信號一致,且連接到相應的存儲器芯片上。2)、數據線連接正確
3)、地址線連接正確 4
中北大學微機原理及接口技術習題及練習冊-----參考答案
3.1)存儲器2716的數據線有8條,地址線有11條。
2)因為2716的容量為2KB,要擴展6KB,所以需要三片。3)原理圖如下:
4. 1)4片
2)連接如圖
中北大學微機原理及接口技術習題及練習冊-----參考答案
3)MOV AX,0E100H MOV CX,10 MOV ES,AX CLD MOV SI,OFFSET BUF REP MOVSB MOV DI,O 查看結果 D E100:0
五、判斷題
1.× 2.√ 3.√ 4.√
第6章 輸入輸出接口技術參考答案
一、填空題
1.總線 2.無條件傳送方式,程序查詢傳送方式,中斷傳送方式,DMA傳送方式 3.I/O接口單獨編址,與存儲器統一編址 4.數據信息,控制信息,狀態信息 5.狀態寄存器 6.數據寄存器,狀態寄存器,命令寄存器 7.中斷方式,DMA
二、選擇題
1.C 2.B 3.B 4.B 5.D
三、簡答題
1.一個端口作輸入,一個端口作輸出時,這兩個端口可共用一個地址。
2.計算機與外部設備數據交換的方式有三種:程序控制數據傳輸方式、中斷方式、DMA方式;其中在程序控制數據傳輸方式中,又分為直接數據傳輸方式和程序查詢數據傳輸方式。
3.利用中斷方式傳送數據,一般是首先向CPU發出中斷請求,CPU響應中斷后在中斷處理程序中進行數據傳輸,傳輸完畢返回。中斷機構起控制作用,實時性較強。
4.在CPU和外部設備之間,需要一些進行數據轉換、電平匹配和相互聯絡的功能電路,稱為I/O接口,在接口電路中,一般包含功能不同的寄存器,稱為端口寄存器。通過對這些寄存器的編程,可以改變接口的功能和輸入/輸出關系。
5.當外設在某個時候準備就緒,向CPU提出中斷申請,當CPU接收到此中斷請求后,如果可以響應此中斷,則會暫停現在正在進行的工作,響應此請求,得到此中斷的中斷類型碼,根據此類型碼,在中斷向量表中取得中斷服務程序的入口地址,執行此中斷服務程序,進行數據的交換,完成后,返回到被打斷的程序繼續原來的工作。
第7章 并行接口及8255A應用參考答案
一、填空題
1.2 2.無 3.0,1,0,0,1 4.基本輸入輸出方式(方式0),選通輸入輸出方式(方式1),雙向方式(方式2),按位置0置1 5.將端口A的數據送到數據線上(意思相近即可)
6.接收CPU送來的端口A的數據(意思相近即可)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信號有效,就有數據傳送,一般使用在可隨時傳送數據的場合。若使用應答信號進行聯絡,可用C口作為聯絡,對C口位操作,一般上C口用作選通(STB)線,下C3 6
中北大學微機原理及接口技術習題及練習冊-----參考答案
口作狀態輸入(RDY)線。3.在輸入,輸出均允許中斷的情況下,可在中斷服務程序中查詢狀態字,判斷OBF和IBF位的狀態,來區分是輸入中斷還是輸出中斷,并采取相應操作。
4.兩種方法:1)使用字節型輸出方式,向PC口輸出最低位為“1”的值;2)使用按位操作,將PC0置為“1” 5.1)首先規定行線為輸出,列線為輸入。2)從行線上輸出全“0”的數據,從列線讀取數據,如果讀取數據為全“1”,則說明沒有鍵按下,否則,有鍵按下。3)當有鍵按下時,將列線規定為輸出、行線為輸入。4)將第二步從列線上讀取的數據輸出到列線上,從行線上讀取數據,若讀取的數據為全“1”,則認為是一個干擾,否則,根據當前行、列線的數據值,可以唯一確定哪一個鍵按下。6.8255 A是可編程的并行接口芯片,設有三個8位的數據輸入/輸出端口,共有三種工作方式:方式0為基本的輸入/輸出方式;方式1為選通式輸入/輸出方式;方式2為雙向數據傳送方式。
四、硬件編程題
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.根據端口地址知,端口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
五、硬件設計題 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 中北大學微機原理及接口技術習題及練習冊-----參考答案
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應用參考答案
一、填空題
1.1488、1489(MAX232)2.異步,同步(次序無關)
3.數據發送線Txd,數據接收線Rxd,和地線,邏輯“0” +5V~+15V,邏輯“1”-5V~15V 二 選擇題
1.B 2.D 3.C 4.B 三 簡答題
1.狀態字中D6位SY/BR與SYNDET,D2位TxEPTY與TxE,D1位RxRDY與RxRDY,D0位TxRDY與TxRDY引腳有關。狀態位TxRDY與引信號TxRDY區別在于,TxRDY位為1的條件是:8251A內部數據輸出寄存器內容為空或即將發送完畢,TxRDY端輸出變高條件是TxRDY=1,CTS輸入為低電平且命令字設置TxEN發送允許位為1。它們在系統設計中可用于中斷請求或中斷查詢。
2.具有5個功能模塊:I/O緩沖器,讀/寫控制邏輯,接收器,發送器,調制/解調器。讀/寫控制邏輯主要功能是接收來自CPU控制總線的控制信號,對數據在內部總線的傳送方向進行控制。3.有7個寄存器和外部電路有關,方式寄存器,同步字符寄存器1和2,控制寄存器,數據輸入寄存器,數據輸出寄存器,狀態寄存器。只占用兩個端口地址,因為寄存器的區分是依靠讀/寫的固定順序。
四、編程題
1.系統總線A1與C/D引腳相連,控制端口地址為82H,數據端口地址為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
中北大學微機原理及接口技術習題及練習冊-----參考答案
第9章 中斷及8259A參考答案
一、填空題
1.160H--163H,中斷服務程序的偏移地址和段地址 2.00070H,00073H,4 3.非屏蔽中斷,可屏蔽中斷(次序無關)4.15 5.奇地址(21H)6.初始化命令字(ICW),操作命令字(OCW)7.中斷向量表,(中斷類型號*4)-->IP,(中斷類型號*4+2)-->CS,70H,72H字單元,(00070H)=2030H,(00072H)=5110H 8.8 9.2 10.多個中斷同時發生,中斷處理過程中另一更高優先級的中斷源提出中斷請求 11.中斷服務程序入口地址 12.可屏蔽中斷,非屏蔽中斷
二、簡答題
1.IMR的8位對應8個中斷級,其中置為1的位所對應的中斷級的輸入線IR處于被屏蔽方式,被屏蔽的中斷級請求不能使8259A的INT輸出端產生有效的請求信號。所以即使當中斷允許IF=1時也無法響應。IF是CPU的中斷允許標志,當IF=0時所有可屏蔽中斷被禁止。在中斷響應過程中,通過設置IF,IMR可靈活控制中斷的優先次序。
2.其原因可能有四個:(1)CPU處于關中斷狀態,IF=0。(2)該中斷請求已被屏蔽;(3)該中斷請求的時間太短,未能保持到指令周期結束;(4)CPU已釋放總線(即已響應了DMA請求),而未收回總線控制權。
3.初始化命令字通常在系統初始化階段設置,從ICW1開始,按照固定次序的設置,一經設置完成,則在以后的操作中基本保持不變,操作命令字是在程序執行階段向8259A發出的命令字,實現以8259A的狀態,中斷方式和過程的控制。操作命令字可以一個程序中多次設置,從而改變中斷的方式。初始化命令字有4個,分別為ICW1,ICW2,ICW3,ICW4,操作命令字有3個,分別為OCW1,OCW2,OCW3。
4.中斷控制器提供中斷類型碼,從中斷向量表中相應位置取出中斷服務程序首址置入IP和CS中,程序轉至中斷服務程序。
5.可屏蔽中斷能否響應受到CPU標志寄存器FLAG的限制,如果IF=0,則所有可屏蔽中斷都不能響應,只有IF=1時,CPU才能響應可屏蔽中斷,另外,可屏蔽中斷是從CPU的INTR引腳引入的。非屏蔽中斷是從CPU的NMI引腳引入CPU的,它不受標志寄存器中IF的限制,只要有請求,而在請求時沒有總線請求,就可以響應。
6.在響應中斷時,根據中斷類型號,從中斷類型號*4開始的連續的4個單元中保存有中斷服務程序的入口地址(段內偏移地址和段地址),取出來,直接送給PC和CS即可。
三、選擇題
1.B 2.B 3.D 4.B 5.A 6.A 7.D 8.D 9.B 10.C
第10章 定時器/計數器參考答案
一、填空題 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執行某一指令需要一定機器周期的原理,在軟件編程時循環執行一段指令,39 中北大學微機原理及接口技術習題及練習冊-----參考答案
從而產生累積的定時。優點是不需要增加硬件。缺點是耗費CPU資源,故軟件定時只適用于短時定時。而且,不同CPU的時鐘頻率不同,同一段軟件延時程序在不同的機器上運行,可能結果不同,即兼容性不強。
硬件定時和計數:以硬件計數器構成,計數脈沖觸發硬件計數器計數,如果計數脈沖的周期固定,則計數同時產生定時。優點是不占用CPU資源,定時精確,定時范圍大。缺點是增加一些硬件開銷。
2.它由與CPU的接口、一個控制寄存器以及三個16位計數器所組成。每個計數器通過3個引腿和外部聯系,1個為時鐘輸入端CLK,1個為門控信號輸入端GATE,別1個為輸出端OUT。
四、綜合題
要輸出脈沖周期為1ms,輸出脈沖的頻率是
13?1?10,當輸入時鐘頻率為2MHz時,?31?102?103?2000。計數器初值是31??10使用計數器1,先加載低8位,后加載高8位,設為方式3,二進制計數,控制字是76H。設控制口的地址是103H,計數器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進行數/模轉換,可使用兩種方法對數據進行鎖存。第一種方法是使輸入寄存器工在鎖存狀態,而DAC寄存器工作在不鎖存狀態。即使WR2和XFER均為低電平,DAC寄存器的鎖存端為無效狀態,而使輸入寄存器的有關控制信號,ILE為高電平,CS為低電平。當WR1來一個負脈沖時,就可完成一次轉換。
第二種方法是輸入寄存器工作在不鎖存狀態,DAC寄存器工作在鎖存狀態,即使WR1為低電平,CS為低電平
而ILE為高電平。這樣輸入寄存器的鎖存信號處于無效狀態,而WR2和XFER輸入一個負脈沖,使DAC寄存器為鎖存狀態。
2.如果有一個D/A轉換器超過8位,CPU則通過兩條輸出指令向兩個鎖存器對應的端口地址輸出數據,但是第一次執行輸出指令后,D/A轉換器會得到一個局部的輸入,由此,輸出端得到一個局部的,實際上不需要的模擬量輸出。因此用兩級緩沖結構來解決,CPU先用兩條輸出指令把數據送到第一級數據緩沖器,通過第三條輸出指令使數據送到第二級數據緩沖器,從而使D/A轉換器一次得到所有位待轉換的數據。這就是用帶兩級緩沖器的D/A轉換器必須要用3條輸出指令才能完成16位或12位數據轉換的理由。
3.采樣保持電路有兩種工作狀態,一種是采樣狀態,一種是保持狀態。在采樣狀態,輸出隨輸入而變化,增益為1,在保持狀態,輸出保持為某個值。0
中北大學微機原理及接口技術習題及練習冊-----參考答案
三、編程題 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章 與實驗相關的問題參考答案
一、填空題
1..ASM 2.編輯源程序,匯編,連接,調試
二、選擇題
1.C 2.C 3.A
三、問答題
1.采用8255做輸入輸出接口,將PB0連接按鍵,PA0連接發光二極管。編寫程序實現上述功能。8255初始化為方式0,A口做輸出,B口做輸入,從B口讀入數據判斷按鍵是否按下,進而控制發光二極管的狀態。
2.發出中斷結束命令,通知中斷控制器8259將中斷服務寄存器ISR中的相應位清除。3.設置中斷屏蔽字,在不改變其他引腳的中斷屏蔽狀態的情況下,將8259的中斷請求引腳IR7允許中斷。
4.不能完成,因為0000:0000H是中斷向量表,而實驗系統本身有許多工作是用中斷完成的,如果你改變了中斷向量表,則實驗箱的監控程序將無法工作,更不用說調試軟硬件了,所以實驗也就無法完成了。
5.硬件實驗:取出實驗箱,連接好串行通信電纜和實驗箱電源,根據實驗內容,在實驗箱中連接好設計用的電路,將實驗箱電源打開,打開計算機電源啟動計算機,啟動實驗集成環境,編制輸入實驗用程序,匯編程序、連接程序、將程序裝載如實驗箱,調試程序的運行并記錄實驗箱內實驗指示部件的狀態。
按與啟動實驗相反的次序,關閉各個實驗部件,將實驗室內實驗所使用的物品放歸原處,清潔、整理實驗室。對實驗結果進行分析,寫出實驗報告。
第五篇:數據庫原理及應用第7章課后習題答案
習題7
1、試述事務的概念及事務的四個特性。
事務(Transaction)是用戶定義的一個數據庫操作序列,這些操作是一個完整的工作單元,一個事務內的所有語句被作為一個整體,這些操作要么全做,要么全不做。事務是數據庫環境的中的邏輯單元,相當于操作系統中的進程。
為了保證數據庫中數據的正確性,一個事務具有四個特性:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持續性(Durability)。這四個特性簡稱ACID特性。
2、試述事務的狀態及轉換。
3、在數據庫中為什么要并發控制?并發控制能保證事務的哪些特性?
數據庫的一個明顯的特點是多個用戶共享數據庫資源,尤其是多用戶可以同時存取相同的數據。在這樣的系統中,在同一時刻并發運行的事務數可達數百個。若對事務的并發操作不加以控制,就會造成數據存、取的錯誤,破壞了數據的一致性和完整性。
并發控制可以防止數據不一致性出現。
4、并發操作可能會產生哪幾類數據不一致?用什么方法可以避免不一致性的情況?
并發操作帶來的數據不一致性分為四種情況:丟失數修改、讀“臟”數據、不可重復讀和產生“幽靈”數據。
在數據庫環境下,進行并發控制的主要技術有封鎖(Locking)、時間戳(Timestamp)和樂觀控制法。商用的DBMS一般都采用封鎖方法。
5、什么是封鎖?基本的封鎖類型有哪些?試述它們的含義。
封鎖機制,即加鎖(Locking),是一種并發控制機制,是用來調整對共享目標的并行存取的技術。事務通過向封鎖管理程序的系統組成部分發出請求而對事務加鎖。
基本封鎖類型有兩種:共享鎖(Share Locks,簡記為S鎖或讀鎖)和排它鎖(Exclusive Locks,簡記為X鎖或寫鎖)。
6、如何用封鎖機制保證數據的一致性?
在運用X鎖和S鎖對數據對象加鎖時,還需要約定一些規則,這些規則為封鎖協議或加鎖協議(Locking Protocol)。對封鎖方式加不同的規則,就形成了各種不同級別的封鎖協議。不同級別的封鎖協議所能達到的一致性級別是不同的。
7、什么樣的并發調度是正確的調度?
可串行性(Serializability)是并發事務正確調度的準則。按照這個準則規定,一個給定的并發調度,當且僅當它是可串行化的,才認為是正確調度。
8、理解并解釋下列術語的含義:
封鎖、活鎖、死鎖、排他鎖、共享鎖、可串行化的調度、兩段鎖協議。
1)加鎖就是事務T在對某個數據對象(例如表、記錄等)操作之前,先向系統發出請求,封鎖其要使用的數據。加鎖后事務T就對該數據對象有了一定的控制,在事務T釋放它的鎖之前,其它的事務不能更新此數據對象。
2)活鎖:如果事務T1封鎖了數據R,事務T2又請求封鎖R,于是T2等待。T3也請求封鎖R,當T1釋放了R上的封鎖之后系統首先批準了T3的請求,T2仍然等待。然后T4又請求封鎖R,當T3釋放了R上的封鎖之后系統又批準了T4的請求……,T2有可能永遠等待,這就是活鎖。
3)死鎖:如果事務T1封鎖了數據R1,T2封鎖了數據R2,然后T1又請求封鎖R2,因T2已封鎖了R2,于是T1等待T2釋放R2上的鎖,接著T2又申請封鎖R1,因T1已封鎖了R1,T2也只能等待T1釋放R1上的鎖。這樣T1在等待T2,而T2又在等待T1,T1和T2兩個事務永遠不能結束,形成死鎖。4)共享鎖:
若事務T對數據對象A加上S鎖,則事務T可以讀A,但不能修改A。其它事務只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。這就保證其他事務可以讀A,但在T釋放A上的S鎖之前不能對A做任何修改。5)排他鎖:
若事務T對數據對象A加上X鎖,則只允許T讀取和修改A,但不允許其它事務再對A加任何類型的鎖和進行任何操作,直到T釋放A上的鎖。這就保證其他事務在T釋放A上的鎖之前不能再讀取和修改A。6)多個事務的并發執行是正確的,當且僅當其結果與按某一次序串行地執行這些事務時的結果相同,稱這種調度策略為可串行化(Serializable)調度。
7)所謂兩段鎖協議是指所有事務必須分兩個階段對數據項加鎖和解鎖。具體內容如下: ①在對任何數據進行讀、寫操作之前,事務首先要獲得對該數據的封鎖;
②在釋放一個封鎖之后,事務不再申請和獲得任何其他封鎖。
9、數據庫中為什么要有恢復子系統?它的功能是什么?
系統故障會丟失這些事務對數據的修改,使數據庫處于不一致狀態。
恢復子系統在系統重啟時,撤銷所有未完成的事務,并重做已經提交的事務,以保證將數據庫真正恢復到一致狀態。
10、數據庫運行過程中可能產生的故障有幾類?哪些故障影響事務的正常執行?哪些
故障破壞數據庫數據? 1)事務內部的故障
事務內部的故障有的是可以通過事務程序本身發現的,有的是非預期的,不能由事務程序處理的。
事務故障意味著事務沒有達到預期的終點,因此,數據庫可能處于不正確的狀態。恢復程序要在不影響其他事務運行的情況下,強行回滾該事務,即撤銷該事務已經作出的任何對數據庫的修改,使得該事務好像根本沒有啟動一樣。這類恢復操作稱為事務撤銷(UNDO)。
2)系統故障
系統故障又稱為軟故障,是指造成系統停止運轉,要使得系統重新啟動的故障。例如,硬件錯誤(如CPU故障)、操作系統故障、DBMS代碼錯誤、系統斷電等都是系統故障。這樣的故障會影響正在運行的所有事務,但不破壞數據庫。
3)其他故障
介質故障或由計算機病毒引起的故障或破壞可歸為其他故障。
介質故障常稱為硬故障,指外存故障,如磁盤損壞、磁頭碰撞等。這類故障會對數據庫造成破壞,并影響正在操作數據庫的所有事務。這類故障發生的可能性小得多,但破壞性最大。
各種故障對數據庫的影響有兩種可能性:一是數據庫本身被破壞;二是數據庫沒有被破壞,但數據可能不正確,這是由于事務的運行被非正常終止造成的。
11、數據庫恢復技術有哪些?
1)利用備份技術 2)利用事務日志 3)利用鏡像技術
12、什么是數據庫的備份?
數據備份是指定期或不定期地對數據庫數據進行復制,可以將數據復制到本地機器上,也可以復制到其他機器上,也稱為數據轉儲。
13、什么是日志文件?為什么要設日志文件?
日志文件(log)是用來記錄事務對數據庫的更新操作的文件。具體的作用是:
a)事務故障恢復和系統故障恢復必須用日志文件。b)在動態備份方式中必須建立日志文件,后備副本和日志文件結合起來才能有效地恢復數據庫。
14、登記日志文件時為什么必須先寫日志文件,后寫數據庫?
如果先寫了數據庫修改,而在日志文件中沒有登記下這個修改,則以后就無法恢復這個修改了。如果先寫日志,但沒有修改數據庫,按日志文件恢復時只不過是多執行一次不必要的UNDO操作,并不會影響數據庫的正確性。所以為了安全,一定要先寫日志文件,即首先把日志記錄寫到日志文件中,然后寫數據庫的修改,這就是“先寫日志文件”的原則。
15、什么是數據庫鏡像?它有什么用途?
所謂鏡像就是在不同的設備上同時存有兩份數據庫,把一個設備稱為主設備,另一個稱為鏡像設備。主設備和鏡像設備互為鏡像關系,每當主數據庫更新時,DBMS自動把整個數據庫或其中的關鍵數據復制到另一個鏡像設備上。保證鏡像數據與主數據庫的一致。
這樣,一旦出現介質故障,可由鏡像磁盤繼續提供使用,同時DBMS自動利用鏡像磁盤數據進行數據庫的恢復,不需要關閉系統和重裝數據庫副本。
由于數據庫鏡像是通過復制數據實現的,頻繁地復制數據自然會降低系統運行效率,因此在實際應用中用戶往往只選擇對關鍵數據和日志文件鏡像,而不是對整個數據庫進行鏡像。