第一篇:《微机原理及应用》教材课后习题及答案
《微机原理及应用》习题答案
第一章
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=12.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=12.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,输出脉冲的频率是
13110,当输入时钟频率为2MHz时,311021032000。计数器初值是3110使用计数器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自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本。
由于数据库镜像是通过复制数据实现的,频繁地复制数据自然会降低系统运行效率,因此在实际应用中用户往往只选择对关键数据和日志文件镜像,而不是对整个数据库进行镜像。