练习题
基本练习题
第1-4章
1.(3A.4) 16=( )2=( )10。 (F0)16=( )10。 若(F0)16是补码,其真值 =( )。
2.CPU的组成?
3.8086中,引脚AD15~AD0 是?其外部数据总线为几位?
4.8086处理器中处理动作的最小时间单位是?一个典型总线周期需要多少个T状态?
5.Intel 8086 I/O寻址空间有多大?8086系统中“段”的物理长度为多少字节?
6.处理器寻址能力与地址线数n的关系?如80286处理器具有16MB的寻址能力,该处理器具有多少条地址线?若某处理器具有4GB的寻址能力,则该处理器具有多少条地址线?
7.4K×8位RAM芯片,有地址线条数是多少条?用1024×1位RAM芯片设计一个32KB的存储器系统,问需要有多少片芯片组成?在一微机系统中,需组成一个64K字节的RAM,若选用64K×1位的Intel2164芯片,需要多少片?
8. 8086的段寄存器有哪些?它们是多少位的寄存器?8086的中断向量表在内存中的地址范围是从哪到哪?它可以容纳多少个中断向量?
9.8086CPU复位后的初始指令地址是?当CPU复位后的中断允许标志的状态是?
10.8086的MN/MX引脚的作用是?
11.8086系统的堆栈操作以特点是?放堆栈顶地址的寄存器是?
12.8086CPU进行I/O写操作时应满足的引脚关系?当8086CPU进行存储器写操作时应满足的引脚关系?8088执行存储器写时序的时候,是什么电平?
是什么电平?(#表示低电平)。
13.当DMA控制器向CPU请求总线后,CPU何时响应这一请求?当进行DMA操作时,CPU要作什么?
14.8088/8086CPU响应可屏蔽中断的三个必要条件是?
15. 在计算机中,按先进后出方式工作的存储空间是?8086CPU的堆栈操作以什么为单位?数据进栈时,栈顶向哪个地址方向浮动?
16.CPU响应可屏蔽中断时,从何处获取中断类型码?用软件确定中断优先权时,如何改变中断的优先权?
17.标志IF称为?
18. 介于CPU与主存储器间的高速缓冲存储器cache的作用是?
第5-7章
1.什么寻址方式的操作数在寄存器中?在什么寻址方式时操作数在存储器中?8086从存储器每取一条指令需要几个总线周期?
2.被移位指令最后移出的数据位会留存在什么标志位中?
3. 什么指令能使寄存器CX的低四位取反?低4位清零?
4.若AL=81H; 执行CBW后,则AX=?若AL=95H; 执行CBW后,则AX=?已知SP=2110H,执行POP AX后,SP=?
5.若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX=?
6. AX=1562H,指令XOR AX,AX执行后AX中的值是?
7.DEC BYTE PTR[BX]指令中的操作数的数据类型是?
8.串操作指令(如SCASB)的目的操作数的段地址一定在?
9.伪指令ORG的功能是?END START语句功能是?
10.COUNT EQU 256,其中COUNT称作?占几个字节存储单元?
11.执行CLD和MOVSB指令后,SI、DI、CX的变化?
12.AX中有符号数除以2的正确指令是?
13.这四条指令执行后,不改变AL寄存器内容的指令是?①AND AL,1②CMP AL,DL③XOR AL,AL ④SUB AL,DL
14.这几条指令中正确的是?①CMP [SI],100;② CMP WORD PTR [SI],100;③CMP [SI],100h;④CMP 100h,[SI] ;⑤MOV DS,0;⑥MOV AX,[BP][DI]; ⑦MOV WORD PTR [SI],100; ⑧MOV WORD PTR [BX],5
15.定义语句BUF DW 1,10 DUP(3 DUP(1,0),2) ,0ABH汇编后,为变量X0分配的存储单元字节数是?
16.执行1号DOS系统功能调用,从键盘输入的字符值存放在?执行2号DOS系统功能调用,待显示字符应存放在?INT 27H中断的中断向量所在的向量表单元地址是?
17.在DEBUG下,A、U、D命令的作用是? 在DEBUG上机调试程序时,存储器地址表示为12FA:015F,它的物理地址是?
18.判断AX和BX是否同时为偶数或同时为奇数。若是转YES的不正确指令序列是?
A. | OR AX,BX | B. | XOR AX,BX | |
AND AX,1 | AND AX,1 | |||
JE YES | JE YES | |||
C. | CMP AX,BX | D. | SUB AX,BX | |
AND AX,1 | AND AX,1 | |||
JE YES | JE YES |
19. 比较BX和SI中的两个存储器地址,若BX≥SI转向HIGH的正确指令是?
20.ABC DB 3 DUP(0,2 DUP(1,2),3)
COUNT EQU $-ABC
符号COUNT等价的值是?
21.8086微处理器的可屏蔽中断请求信号来自于引脚?
22.一个总线周期完成一次数据传输,至少要有几个过程?
23.在指令ADD、CMP、PUSHF、POPF中,不影响标志寄存器值的指令是?
24.设ES=3000H,DI=00FFH,CX=0005H,AL=41H,DF=0,从300FFH开始的连续5个字节单元内分别是44H,43H,42H,41H,41H。执行REPNZ SCASB指令后,DI=?CX=?( DI=0103H,CX=0001H )。
第8-9章
1.可编程序接口芯片是指?
2.程序控制输入/出传送方式是?CPU不断检测外设状态,当外设准备就绪后,才进行数据传送。这种数据传送方式称为?
3.属于程序控制的传送方式的是?
4.在查询传送方式中,CPU要对外设访问操作前,必须先做什么?设查询传送输入方式,被查询I/O端口应给出什么信号?一个基本IO接口通常具有哪些端口?
5.并行接口芯片8255的哪些引脚完成内部I/O端口选择?
6.8255A有几个端口?哪个端口可以以双向方式工作?哪个端口可进行按位置位/复位的操作?C口用途?只有方式0和方式1两种工作方式的端口是?
7.若8255的A口设置输入和方式1,当 时A口正做什么操作?
8.INTEL 8251A在串行异步通信时,设通信的波特率为1200bps,通信波特率为16,则外部时钟速率为?波特率9600bps时,时钟速率为?
9.在串行异步通信中,常采用什么校验方式?
10.在8251作异步通信,什么情况下会发生桢格式错误?
11.8251在串行通信中,CPU检测到8251的FE=1,这表明通信发生了?
12.在8251作串行异步传送时,什么情况下会发生溢出错误?
13.8253中有几个独立的计数器?
14.8253的计数器可做哪种计数?
15.8253有几种工作方式?哪种方式称为方波发生器?
16.8253计数器的最大计数初值是?
17.已知8253定时/计数器通道0 的CLK0连接时钟信号的频率为2MHz,要用通道0产生周期1毫秒方波,则通道0的二进制计数初值N=?
18.8259A有几个端口地址?
19.每一片8259A可管理几级优先权中断源?通过级联最多可管理几级优先权的中断源?能向CPU提供可编程的中断类型号?
20.8259的普通EOI结束命令的作用是?特殊EOI结束命令的作用是?
21.Intel 8086 PC机中,可以用什么控制多个可屏蔽的中断源是否被响应?
22.当进行DMA操作时,CPU必须让出什么给DMAC?
23.当DMA控制器向CPU请求使用总线后,8086CPU在什么时间响应这一请求?
24.8086的中断向量表可以容纳多少个中断向量?每个中断向量占几个字节?中断向量表在内存中的地址范围是从多少到多少?
25.异步串行通信传输一个字符的格式是?
26.在多个中断源的情况下,为增加控制的灵活性,常要求在每一个外设的接口电路中,设置一个什么触发器,只有当此触发器为“1”时,外设的中断请求才能被送到CPU 。
27.在8086CPU中,软件中断的中断类型码来自?
28.当8255A的端口A工作在方式1输入时,与配对使用的联络信号是?
29. 哪2个8255引脚完成内部I/O端口地址选择?
30. 8255A的哪个口各位可进行按位置位/复位的操作?
31.在8255的选通输出操作中,ACK#信号的用途是什么?
32. 在8255的选通输出操作中用什么来清除OBF#信号?
33.什么是异步串行数据通信?
34.什么是波特率?
35.解释下列术语:单工、半双工和全双工
36.当8255A的端口A工作在方式1输入时,与配对使用的联络信号是?
程序理解
1.现有下列程序段:
mov ax,6540h
mov dx,3210h
mov cl,04
shl dx,cl
mov bl,ah
shl ax,cl
shr bl,cl
or dl,bl
试问上述程序段运行后:ax=?bl=?dx=?
2. ORG 1000H
DA1 DB ?
… …
LEA SI,DA1
MOV CX,SI
NEXT:ADD SI,2
LOOP NEXT
…
变量DA1的偏移地址=? 程序段执行后SI=?
3. 程序段如下:
str db ‘ABCDEFGHIJ’
…
mov ah,01;从键盘输入一个1~9之间的字符
int 21h
and al,0fh
dec al
xor ah,ah
mov bx,offset str
add bx,ax
mov dl,[bx]
mov ah,02h ;显示输出
int 21h
…
试回答:
(1)如从键盘输人字符‘2’,程序段有什么结果?
(2)如从键盘输人字符‘5’,程序段有什么结果?
4. VAL DB X
… …
MOV AX,0
MOV AL,BYTE PTR VAL
MOV CL,10
MUL CL
该程序段完成的功能的数学表达式是? 结果存放在?
5.程序段如下:
VAL DB 20,122,73,-25,34,84,-46
…
MOV CX,7
LEA SI,VAL
NEXT:MOV AL,[SI]
INC SI
TEST AL,81H
LOOPZ NEXT
MOV BL,[SI]
…
请回答程序段运行后:AL=? BL=?
6. ABY DB 56H,28H,5AH,94H,61H
… …
MOV CL,ABY
MOV AL,ABY +1
ADD AL,CL
DAA
上述指令序列执行后,AL=? CL=?
7.程序段如下:
ASC1 DB 5 DUP( ? )
… …
MOV BX,OFFSET ASC1
MOV AL,45H
MOV CX,5
LOP:MOV [BX],AL
DEC AL
INC BX
LOOP LOP
试问:程序运行后,①从ASC1开始的5个字节中依次存放的什么数据?②与这些数据对应的ASCⅡ码字符是什么?
8.程序段如下:(设执行前SP=200H. )
MOV AX,1234H
MOV BX,5678H
…
PUSH AX
PUSH BX
POP AX
POP BX
试问:下述程序段执行后AX= ? BX=? 执行后SP=?
9. ORG 2000H
VAL DB ?
… …
MOV SI,OFFSET VAL
MOV CX,SI
XT:ADD SI,1
LOOP XT
变量VAL的偏移地址=?程序段执行后SI=?
程序设计
1.编写程序,从vals开始有n个单字节有符号数的数据区中,找出其中的最大数据存入max单元。
data segment
vals db 76,-12, 71,20,84,-5,102,……
n = $-vals
max db ?
data ends
2.如下数据段,设STR1字符串中有不超过15个数字字符。编写汇编语言程序,统计STR1串中的数字字符的个数,在显示“数字字符的个数为:”信息的后面显示统计结果。
DATA SEGMENT
STR1 DB ‘……This number is 31594347……’
LN = $-STR
STR2 DB ‘数字字符的个数为: $’
DATA ENDS
3.编写汇编程序,功能是把bcdm中的非压缩bcd码,转换为相应的ascii码存到asci数据区中并送屏幕显示。
data segment
bcdm db 09h,05h,06h,02h,08h,0,03h,01h,07h,04h
cunt =$- bcdm
asci db cunt dup ( ? )
data ends
4. 如下数据段,字节变量HX中定义了10个字节的数据,设计汇编程序按顺序把它们转换成字符,存入AC开始的数据区。(注10个字节的数据可看成20个十六进制数码)
MYD SEGMENT
HX DB 6AH,0E1H,57H,98H,0C1H,36H,11H,49H,0C2H,3CH
AC DB 20 DUP(?)
MYD ENDS
5. 首地址为buff1的数据区中存放若干数字字符,编程序把buff1中的数字字符转换为相应的非压缩BCD码,并存入buff2数据区中。
DAT SEGMENT
buff1 DB ‘2981058368’
N1 =$ - buff1
buff2 DB N1 DUP ( ? )
DAT ENDS
接口应用
1.设8253通道地址范围为48H~4BH ,0通道CLK0连接频率为2MHZ的时钟信号,现要求:计数器1输出一个频率为1Hz的方波信号,⑴画出8253电路连线图。⑵编写初始化程序。
2.利用8086的引脚,产生
存储器读与写和IO读与写信号,画出电路图。
3.如图电路图,设8255A的端口地址为20H~23H,试编程实现:当开关K1、K2、K3、K4全向上(接+VCC)时,只有L1灯亮,当开关K1、K2、K3、K4全向下(接地)时,只有L2灯亮,否则,只有L3灯亮,请编写完整的实验程序,要求灯能实时反映出开关的状态。
4.如图1.1步进电动机SM有4个电极a、b、c、d(其中a-c为一组线圈,b-d为一组线圈)。如图1.2当相邻两极加高电平“1”时,另外两相邻两极加低电平“0”时,电机的转子就会偏转(如a=b=”1”,c=d=”0”,时,转子上的K点就会偏转到a和b两极之间的位置上)。现有如图1.3的实验电装置电路,①请写出转子K点从ab之间开始,顺时针步进转一周分几步?每步通过PA口的输出码?(答案格式如:步1-输出码00000011-K点位于ab间;)②请编写程序(包括8255的初始化),使步进电机产生以每秒一圈的速度顺时针连续均匀转动。(设延时子程序DELY有0.01秒的延时量, 8255的A、B、C口和控制口的地址分别是28H,29H,2AH和2BH。)
![]() ![]() |
5.某系统中,定时/计数器8253的通道0、1、2和控制字端口分别为60H、61H、62H、63H。请完成:
(1)设CLK0=2MHz,定义通道0工作在方式2,要求输出OUT0=lkHz方波,计算定时系数并写出通道0初始化程序;
(2)定义通道1工作在方式2,用上述通道0的OUT0信号作为通道1的输入计数脉冲,设计数值为1000,请画出通道0和通道1的电路图,计算OUT1周期并写出通道1初始化程序;
(3)若用OUT1信号向CPU发中断请求,请画出中断信号产生的电路。
6.用8253作为某数据采集系统的定时器,每隔10ms用中断方式采集一次数据,已知输入时钟频率为10kHz,8259端口地址为20—21H,中断类型号为13H,8253端口地址为40~43H,请为8259和8253编制初始化程序。
7.用8253作为控制系统的定时器,每隔100ms以中断方式监控一次。设8253的输入时钟频率为fc=1MHz,端口地址为30—33H;8259端口地址为80—81H,中断类型号为23H。要求:①计算8253的定时时间常数,用图中标出的信号线,画出8253和8259的电路连线图;②分别为8259和8253编制初始化程序。
8. 设8255的A、B和C口工作在方式0下,能循环查询输入输出,当查询到PC1=1时结束本程序;查询到PC1=0且PC0=1时,从A口读入数据,将其高四位取反,低四位保持不变,然后送B口输出。试编写8255初始化和应用程序(设8255 A、B、C口和控制端口地址为70H-73H)。
9.若用8253作为温控系统的定时器,每隔2秒用中断方式测/控一次数据,8253的输入时钟频率为fc=100KHz,端口地址为50—53H;8259端口地址为58—59H,中断类型号为61H。要求:①计算8253的定时时间常数,画出8253和8259的电路连线图(可参考题20图);②分别为8259和8253编制初始化程序。
10. (延续题22)设计用8255做为控温加热系统的温度输入和控温输出接口,TS是数字化测温模块,当OE=1时TS通过8位数据线DATA输出补码格式的温度值。HC为加热器,当STB=1时,通过数据线线DATA可向HC的输入8位无符号数PN,PN越大HC的热功率越大,PN=0时HC不发热。要求8255定时检查温度,按温度大小分段控制HC的功率,设8255端口地址为5C—5FH。①画出8255与TS和HC间的电路连线;②写出8255的初始化程序;③利用题1,编写中断程序,每隔2秒进行一次温度t测量,按t值向HC输出PN:当0≤t<100时,PN=200;100≤t<120时,PN=100;120≤t<150时,PN=50,t>150时,PN=0。
11. 请把2片8259A接成非缓冲级联方式,#1为主片,#2为从片,#2片通过主片的IR1请求中断,正确连接图中标出的信号,接往CPU的标明所接的CPU信号。
练习题参考答案
基本练习题
第1-4章
1.(3A.4) 16=( )2=( )10。 (F0)16=( )10。 若(F0)16是补码,其真值 =( )。
( 111010.01, 58.25 。 240,-16)
2.CPU的组成? (运算器和控制器)
3.8086中,引脚AD15~AD0 是?其外部数据总线为几位?
( 地址与数据复用总线; 16位 )
4.8086处理器中处理动作的最小时间单位是?一个典型总线周期需要多少个T状态?
(1T时钟;4T)
5.Intel 8086 I/O寻址空间有多大?8086系统中“段”的物理长度为多少字节?(64KB ;64KB)
6.处理器寻址能力与地址线数n的关系?如80286处理器具有16MB的寻址能力,该处理器具有多少条地址线?若某处理器具有4GB的寻址能力,则该处理器具有多少条地址线?
(寻址能力=2n;n=24;n=32 )
7.4K×8位RAM芯片,有地址线条数是多少条?用1024×1位RAM芯片设计一个32KB的存储器系统,问需要有多少片芯片组成?在一微机系统中,需组成一个64K字节的RAM,若选用64K×1位的Intel2164芯片,需要多少片?(12条;(32×1024×8)/(1024×1)=256片; 8片)
8.8086的段寄存器有哪些?它们是多少位的寄存器?8086的中断向量表在内存中的地址范围是从哪到哪?它可以容纳多少个中断向量?
(CS,DS,SS,ES;16位; 0:0000H~ 0:03FFH;256个)
9.8086CPU复位后的初始指令地址是?当CPU复位后的中断允许标志的状态是?
(FFFF0H; 禁止中断状态)
10.8086的MN/MX引脚的作用是? ( 设置CPU最小/最大工作模式 )
11.8086系统的堆栈操作以特点是?放堆栈顶地址的寄存器是?
(双字节为单位,数据进栈时栈顶向小地址方向浮动 ;SP)
12.8086CPU进行I/O写操作时应满足的引脚关系?当8086CPU进行存储器写操作时的引脚关系?8088执行存储器写时序的时候,是什么电平?
是什么电平?(#表示低电平)
(M/IO#=0,WR#=0 ,RD#=1; M/IO#=1,WR#=0; =0;
=1)
13.当DMA控制器向CPU请求总线后,CPU何时响应这一请求?当进行DMA操作时,CPU要作什么? (总线周期完;必须让出三总线给DMAC)
14.8088/8086CPU响应可屏蔽中断的三个必要条件是?
(①当前指令执行结束、② IF=1和③INTR=1)
15. 在计算机中,按先进后出方式工作的存储空间是?8086CPU的堆栈操作以什么为单位?数据进栈时,栈顶向哪个地址方向浮动? (堆栈;字;小地址方向)
16.CPU响应可屏蔽中断时,从何处获取中断类型码?用软件确定中断优先权时,如何改变中断的优先权? (从数据总线上读取中断类型码;只要改变查询的先后顺序)
17.标志IF称为? (中断允许标志)。
18. 介于CPU与主存储器间的高速缓冲存储器cache的作用是?
(提高CPU访问主存的等效速率 )
第5-7章
1.什么寻址方式的操作数在寄存器中?在什么寻址方式时操作数在存储器中?8086从存储器每取一条指令需要几个总线周期?
(寄存器寻址;存储器寻址;不同指令长度不一样,至少要一个)
2.被移位指令最后移出的数据位会留存在什么标志位中? (CF )
3. 什么指令能使寄存器CX的低四位取反?低4位清零?
(XOR CX,000FH; AND CX,0FFF0H)
4.若AL=81H; 执行CBW后,则AX=?若AL=95H; 执行CBW后,则AX=?已知SP=2110H,执行POP AX后,SP=? (0FF81H ;0FF95H ;2112H)
5.若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX=? (1400H)
6. AX=1562H,指令XOR AX,AX执行后AX中的值是? (0)
7.DEC BYTE PTR[BX]指令中的操作数的数据类型是? ( 字节 )
8.串操作指令(如SCASB)的目的操作数的段地址一定在? (ES)
9.伪指令ORG的功能是?END START语句功能是?
(内存起始偏移地址定位;指示汇编到本句结束,本程序从START处开始执行)
10.COUNT EQU 256,其中COUNT称作?占几个字节存储单元?
(COUNT是符号常数,不占存储单元 )
11.执行CLD和MOVSB指令后,SI、DI、CX的变化? ( SI加1,DI加1,CX减1 )
12.AX中有符号数除以2的正确指令是? (SAR AX,1 )
13.这四条指令执行后,不改变AL寄存器内容的指令是?①AND AL,1②CMP AL,DL③XOR AL,AL ④SUB AL,DL (②)
14.这几条指令中正确的是?①CMP [SI],100;② CMP WORD PTR [SI],100;③CMP [SI],100h;④CMP 100h,[SI] ;⑤MOV DS,0;⑥MOV AX,[BP][DI]; ⑦MOV WORD PTR [SI],100; ⑧MOV WORD PTR [BX],5 ( ②⑥⑦⑧ )
15.定义语句BUF DW 1,10 DUP(3 DUP(1,0),2) ,0ABH汇编后,为变量X0分配的存储单元字节数是? (90H 或144)
16.执行1号DOS系统功能调用,从键盘输入的字符值存放在?执行2号DOS系统功能调用,待显示字符应存放在?INT 27H中断的中断向量所在的向量表单元地址是?
(AL; DL; 0:009CH )
17.在DEBUG下,A、U、D命令的作用是? 在DEBUG上机调试程序时,存储器地址表示为12FA:015F,它的物理地址是? (汇编、反汇编 、查看数据 ; 130FFH)
18.判断AX和BX是否同时为偶数或同时为奇数。若是转YES的不正确指令序列是? (A)
A. | OR AX,BX | B. | XOR AX,BX | |
AND AX,1 | AND AX,1 | |||
JE YES | JE YES | |||
C. | CMP AX,BX | D. | SUB AX,BX | |
AND AX,1 | AND AX,1 | |||
JE YES | JE YES |
19. 比较BX和SI中的两个存储器地址,若BX≥SI转向HIGH的正确指令是? (JAE HIGH )
20.ABC DB 3 DUP(0,2 DUP(1,2),3)
COUNT EQU $-ABC
符号COUNT等价的值是? (18)
21.8086微处理器的可屏蔽中断请求信号来自于引脚? (INTR )
22.一个总线周期完成一次数据传输,至少要有几个过程? ( 传送地址与传送数据 )。
23.在指令ADD、CMP、PUSHF、POPF中,不影响标志寄存器值的指令是?( PUSHF )
24.设ES=3000H,DI=00FFH,CX=0005H,AL=41H,DF=0,从300FFH开始的连续5个字节单元内分别是44H,43H,42H,41H,41H。执行REPNZ SCASB指令后,DI=?CX=?( DI=0103H,CX=0001H )。
第8-9章
1.可编程序接口芯片是指? (工作状态可由 CPU/主机来控制设定的接口芯片)
2.程序控制输入/出传送方式是?CPU不断检测外设状态,当外设准备就绪后,才进行数据传送。这种数据传送方式称为?
(无条件传送、条件传送和查询传送 ;查询传送方式)
3.属于程序控制的传送方式的是? (无条件传送,查询传送或条件传送)
4.在查询传送方式中,CPU要对外设访问操作前,必须先做什么?设查询传送输入方式,被查询I/O端口应给出什么信号?一个基本IO接口通常具有哪些端口?
(进行状态检测;就绪信号;数据、状态和控制端口)
5.并行接口芯片8255的哪些引脚完成内部I/O端口选择?(A1,A0 )
6.8255A有几个端口?哪个端口可以以双向方式工作?哪个端口可进行按位置位/复位的操作?C口用途?只有方式0和方式1两种工作方式的端口是?
(3个数据1个控制共4个8位端口; A口; C口; C口可作为端口A和B的联络信号线,又可作为端口使用; 是B口 )
7.若8255的A口设置输入和方式1,当 时A口正做什么操作?
(外设数据进入A口)
8.INTEL 8251A在串行异步通信时,设通信的波特率为1200bps,通信波特率为16,则外部时钟速率为?波特率9600bps时,时钟速率为?
(1200bps×16=19.2K ;9600bps×16=153600=153.6K )
9.在串行异步通信中,常采用什么校验方式? (奇偶校验)
10.在8251作异步通信,什么情况下会发生桢格式错误? (接收端没有收到停止位时 )
11.8251在串行通信中,CPU检测到8251的FE=1,这表明通信发生了? (帧格式错误)
12.在8251作串行异步传送时,什么情况下会发生溢出错误?
(串行异步传送,8251尚未读完当前桢数据,下一新数据又进入8251输入缓冲器,就会发生溢出错误)
13.8253中有几个独立的计数器? ( 3个16 位计数器 )
14.8253的计数器可做哪种计数? (二进制或十进制 )
15.8253有几种工作方式?哪种方式称为方波发生器? ( 6,3 )
16.8253计数器的最大计数初值是? (FFFFH)
17.已知8253定时/计数器通道0 的CLK0连接时钟信号的频率为2MHz,要用通道0产生周期1毫秒方波,则通道0的二进制计数初值N=? ( 2000 )
18.8259A有几个端口地址? ( 2 )
19.每一片8259A可管理几级优先权中断源?通过级联最多可管理几级优先权的中断源?能向CPU提供可编程的中断类型号? (8,64,可以)
20.8259的普通EOI结束命令的作用是?特殊EOI结束命令的作用是?
(用于清除当前优先级最高的IS位 ;用于清除指定优先级的IS位)
21.Intel 8086 PC机中,可以用什么控制多个可屏蔽的中断源是否被响应?
(除受IF标志的控制外,还受到8259A中断屏蔽寄存器的控制 )
22.当进行DMA操作时,CPU必须让出什么给DMAC? (三总线)
23.当DMA控制器向CPU请求使用总线后,8086CPU在什么时间响应这一请求?
(总线周期完)
24.8086的中断向量表可以容纳多少个中断向量?每个中断向量占几个字节?中断向量表在内存中的地址范围是从多少到多少?, ( 256 ; 4 ;从 00000:0000H到0:03FFH )
25.异步串行通信传输一个字符的格式是?
(以一位低电平起始位开始,以1-2位高电平的停止位结束。)
26.在多个中断源的情况下,为增加控制的灵活性,常要求在每一个外设的接口电路中,设置一个什么触发器,只有当此触发器为“1”时,外设的中断请求才能被送到CPU 。
(中断屏蔽)
27.在8086CPU中,软件中断的中断类型码来自? (指令的操作数)
28.当8255A的端口A工作在方式1输入时,与配对使用的联络信号是? ( IBF)
29. 哪2个8255引脚完成内部I/O端口地址选择?
(地址信号A1、A0与片选CS#=0共同用于I/O端口地址选择。通过A1、A0所组合的地址来区分8255A内部A、B、C三个数据端口和一个控制端口的地址。)
30. 8255A的哪个口各位可进行按位置位/复位的操作? (C口)
31.在8255的选通输出操作中,ACK#信号的用途是什么?
(ACK#是外设响应信号。ACK#是由外设送给8255的。当CPU通过8255输出的数据已经送到外设时,外设便向8255发ACK#应答信号。)
32. 在8255的选通输出操作中用什么来清除OBF#信号?
(OBF#是输出缓冲器满信号。当输出缓冲器中的数据被外设取走时应该将此信号清除。因此,由ACK#的有效信号将其置为高电平,即清除OBF#信号。)
33.什么是异步串行数据通信?
(按位进行传输的通信叫做串行通信。异步串行通信是串行通信的一种。所谓异步通信,是指在通信的双方没有统一的同步时钟,而是通过同步标志位来实现通信同步。在异步通信中,每一个字符的前后都要加上一些标志位组成一帧信息。这些标志位用作帧与帧之间的分隔和同步。)
34.什么是波特率? (波特率即传输率,就是在通信过程中每秒传输串型数据的位数。)
35.解释下列术语:单工、半双工和全双工
(单工:接收和发送器之间只有一根传输线连接,并且只允许在一个方向传送数据。 半双工:接收和发送器之间只有一根传输线连接,发送和接收数据分时交替进行。通过软件和接口的协调控制,实现数据传输的方向转换。 全双工:接收和发送器之间有两根传输线连接,承担两个不同方向的数据传送,发送数据和接收数据可以同时进行。)
36.当8255A的端口A工作在方式1输入时,与配对使用的联络信号是?(IBF )
程序理解
1.现有下列程序段:
mov ax,6540h
mov dx,3210h
mov cl,04
shl dx,cl
mov bl,ah
shl ax,cl
shr bl,cl
or dl,bl
试问上述程序段运行后:ax=?bl=?dx=?
答:( ax=5400h;bl= 06 ; dx= 2106h )
2. ORG 1000H
DA1 DB ?
… …
LEA SI,DA1
MOV CX,SI
NEXT:ADD SI,2
LOOP NEXT
…
变量DA1的偏移地址=? 程序段执行后SI=?
答: (1000H; 1000H+2*1000H=3000H)
3. 程序段如下:
str db ‘ABCDEFGHIJ’
…
mov ah,01;从键盘输入一个1~9之间的字符
int 21h
and al,0fh
dec al
xor ah,ah
mov bx,offset str
add bx,ax
mov dl,[bx]
mov ah,02h ;显示输出
int 21h
…
试回答:
(1)如从键盘输人字符‘2’,程序段有什么结果? (“B”)
(2)如从键盘输人字符‘5’,程序段有什么结果? (“E”)
4. VAL DB X
… …
MOV AX,0
MOV AL,BYTE PTR VAL
MOV CL,10
MUL CL
该程序段完成的功能的数学表达式是? 结果存放在?
答:(X*10; AX)
5.程序段如下:
VAL DB 20,122,73,-25,34,84,-46
…
MOV CX,7
LEA SI,VAL
NEXT:MOV AL,[SI]
INC SI
TEST AL,81H
LOOPZ NEXT
MOV BL,[SI]
…
请回答程序段运行后:AL=? BL=?
答:(73 ;-25)
6. ABY DB 56H,28H,5AH,94H,61H
… …
MOV CL,ABY
MOV AL,ABY +1
ADD AL,CL
DAA
上述指令序列执行后,AL=? CL=?
答:AL= 84H ,CL= 56H 。
7.程序段如下:
ASC1 DB 5 DUP( ? )
… …
MOV BX,OFFSET ASC1
MOV AL,45H
MOV CX,5
LOP:MOV [BX],AL
DEC AL
INC BX
LOOP LOP
试问:程序运行后,①从ASC1开始的5个字节中依次存放的什么数据?②与这些数据对应的ASCⅡ码字符是什么?
答:(45H、44H、43H、42H、41H。 ‘E’、‘D’、‘C’、‘B’、‘A’)
8.程序段如下:(设执行前SP=200H. )
MOV AX,1234H
MOV BX,5678H
…
PUSH AX
PUSH BX
POP AX
POP BX
试问:下述程序段执行后AX= ? BX=? 执行后SP=?
答:(AX= 5678H ;BX=1234H;执行后SP=200H)
9. ORG 2000H
VAL DB ?
… …
MOV SI,OFFSET VAL
MOV CX,SI
XT:ADD SI,1
LOOP XT
变量VAL的偏移地址=?程序段执行后SI=?
答:(偏移地址= 2000H ;SI= 4000H)
程序设计
1.编写程序,从vals开始有n个单字节有符号数的数据区中,找出其中的最大数据存入max单元。
data segment
vals db 76,-12, 71,20,84,-5,102,……
n = $-vals
max db ?
data ends
参考答案
cod segment
assume cs:cod,ds:data
start:mov ax,data
mov ds,ax
mov si,offset vals
mov cx,ln-1
mov al,[si]
next:inc si
cmp al,[si]
jg xx1
mov al, [si]
xx1:dec cx
jnz next
mov max,al
mov ah,4ch
int 21h
cod ends
end start
2.如下数据段,设STR1字符串中有不超过15个数字字符。编写汇编语言程序,统计STR1串中的数字字符的个数,在显示“数字字符的个数为:”信息的后面显示统计结果。
DATA SEGMENT
STR1 DB ‘……This number is 31594347……’
LN = $-STR
STR2 DB ‘数字字符的个数为: $’
DATA ENDS
参考答案
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
COUT PROC FAR
ST: MOV AX,DATA
MOV DS,AX
SUB BL,BL
LEA DI,STR1
MOV CX,LN
X1:CMP BYTE PTR [DI],’0’
JB G
CMP BYTE PTR [DI],’9’
JA G
INC BL
G:INC DI
LOOP X1
LEA DX,STR2
MOV AH,9
INT 21H
CMP BL,9
JBE X2
ADD BL,7
X2:ADD BL,30H
MOV DL,BL
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
COUT ENDP
CODE ENDS
END ST
3.编写汇编程序,功能是把bcdm中的非压缩bcd码,转换为相应的ascii码存到asci数据区中并送屏幕显示。
data segment
bcdm db 09h,05h,06h,02h,08h,0,03h,01h,07h,04h
cunt =$- bcdm
asci db cunt dup ( ? )
data ends
参考答案
cod segment
assume cs:cod,ds:data
start:mov ax,data
mov ds,ax
mov si,0
mov cx, cunt
next: mov al,[si+ bcdm]
add al,30h
mov [si+ asci],al
mov dl,al
mov ah,2
int 21h
inc si
dec cx
jnz next
mov ah,4ch
int 21h
cod ends
end start
4. 如下数据段,字节变量HX中定义了10个字节的数据,设计汇编程序按顺序把它们转换成字符,存入AC开始的数据区。(注10个字节的数据可看成20个十六进制数码)
MYD SEGMENT
HX DB 6AH,0E1H,57H,98H,0C1H,36H,11H,49H,0C2H,3CH
AC DB 20 DUP(?)
MYD ENDS
参考答案
CD SEGMENT
ASSUME CS:CD,DS:MYD
FD PROC FAR
START:MOV AX,MYD
MOV DS,AX
LEA SI,HX
LEA DI,AC
MOV DX,10
X1: MOV AL,[SI]
MOV AH,AL
MOV CL,4
SHR AL,CL
CMP AL,9
JBE X2
ADD AL,7
X2: ADD AL,30H
MOV [DI],AL
AND AH,0FH
CMP AH,9
JBE X3
ADD AH,7
X3: ADD AH,30H
MOV [DI+1],AH
ADD DI,2
INC SI
DEC DX
JNZ X1
MOV AH,4CH
INT 21H
FD ENDP
CD ENDS
END START
5. 首地址为buff1的数据区中存放若干数字字符,编程序把buff1中的数字字符转换为相应的非压缩BCD码,并存入buff2数据区中。
DAT SEGMENT
buff1 DB ‘2981058368’
N1 =$ - buff1
buff2 DB N1 DUP ( ? )
DAT ENDS
参考答案:
COD SEGMENT
ASSUME CS:COD,DS:DAT
ATOB PROC FAR
MOV AX,DAT
MOV DS,AX
MOV SI,0
MOV CX,N1
X0: MOV AL,[SI+ buff1]
AND AL,0FH
MOV [SI+ buff2],AL
INC SI
LOOP X0
MOV AH,4CH
INT 21H
ATOB ENDP
COD ENDS
END ATOB
接口应用
1.设8253通道地址范围为48H~4BH ,0通道CLK0连接频率为2MHZ的时钟信号,现要求:计数器1输出一个频率为1Hz的方波信号,⑴画出8253电路连线图。⑵编写初始化程序。
参考答案:
⑴ GATE0=GATE1=Vcc; CLK1=OUT0
⑵ 计算时间常数:T=2MHz/1Hz=2000000=200×10000。
0通道与1通道级联,
MOV AL,01110110B
OUT 4BH,AL
MOV AX,10000
OUT 49H,AL
MOV AL,AH
OUT 49H,AL
MOV AL,00110100B
OUT 4BH,AL
MOV AX,200
OUT 48H,AL
MOV AL,AH
OUT 48H,AL
2.利用8086的引脚,产生
存储器读与写和IO读与写信号,画出电路图。
参考答案:
3.如图电路图,设8255A的端口地址为20H~23H,试编程实现:当开关K1、K2、K3、K4全向上(接+VCC)时,只有L1灯亮,当开关K1、K2、K3、K4全向下(接地)时,只有L2灯亮,否则,只有L3灯亮,请编写完整的实验程序,要求灯能实时反映出开关的状态。
参考答案:
MOV AL,1001 1010B
OUT 23H,AL
MOV AL0
OUT 22H,AL
WAIT:IN AL,20H
AND AL,0FH
JZ L2
CMP AL,0FH
JE L1
MOV AL,4
OUT 22H,AL
MOV CX,10000
X1:NOP
LOOP X1
JMP WAIT
L1:MOV AL,1
OUT 22H,AL
MOV CX,10000
X2:NOP
LOOP X2
JMP WAIT
L2:MOV AL,2
OUT 22H,AL
MOV CX,10000
X3:NOP
LOOP X3
JMP WAIT
4.如图1.1步进电动机SM有4个电极a、b、c、d(其中a-c为一组线圈,b-d为一组线圈)。如图1.2当相邻两极加高电平“1”时,另外两相邻两极加低电平“0”时,电机的转子就会偏转(如a=b=”1”,c=d=”0”,时,转子上的K点就会偏转到a和b两极之间的位置上)。现有如图1.3的实验电装置电路,①请写出转子K点从ab之间开始,顺时针步进转一周分几步?每步通过PA口的输出码?(答案格式如:步1-输出码00000011-K点位于ab间;)②请编写程序(包括8255的初始化),使步进电机产生以每秒一圈的速度顺时针连续均匀转动。(设延时子程序DELY有0.01秒的延时量, 8255的A、B、C口和控制口的地址分别是28H,29H,2AH和2BH。)
![]() ![]() |
参考答案:
一拍一步:
步1-输出码00000011-K点位于ab间;
步2-输出码00001001-K点位于ad间;
步3-输出码00001100-K点位于dc间;
步4-输出码00000110-K点位于bc间;
一拍一步:
Step db 03h,09h,0ch,06h
Mov al,10001011b
Out 2bh,al
X0:Lea si,step
Mov cx,4
X2:Mov al,[si]
Out 28h,al
Mov bl,25
X1:call dely
Dec bl
Jnz x1
Inc si
Loop x2
Jmp x0
5.某系统中,定时/计数器8253的通道0、1、2和控制字端口分别为60H、61H、62H、63H。请完成:
(1)设CLK0=2MHz,定义通道0工作在方式2,要求输出OUT0=lkHz方波,计算定时系数并写出通道0初始化程序;
(2)定义通道1工作在方式2,用上述通道0的OUT0信号作为通道1的输入计数脉冲,设计数值为1000,请画出通道0和通道1的电路图,计算OUT1周期并写出通道1初始化程序;
(3)若用OUT1信号向CPU发中断请求,请画出中断信号产生的电路。
答:
(1)时间系数
NT=(1÷1000)÷(1÷2000000)=2000000÷1000=2000
初始化程序:
Mov al,00110100B
Out 63h,al
Mov ax,2000
Out 60h,al
Mov al,ah
Out 60h,al
(2)out1周期T1:
T1=1000/1000=1(秒)
初始化程序:
Mov al,01110100B
Out 63h,al
Mov ax,1000
Out 61h,al
Mov al,ah
Out 61h,al
(3)
6.用8253作为某数据采集系统的定时器,每隔10ms用中断方式采集一次数据,已知输入时钟频率为10kHz,8259端口地址为20—21H,中断类型号为13H,8253端口地址为40~43H,请为8259和8253编制初始化程序。
答:8253选通道1以方式2定时,时间初值N=10KHz×10ms=100。 8259由于中断类型号为13H,所以只能通过IR3,初始人为完全嵌套、边沿触发、非缓冲、非自动结束:
;8253初始化:
MOV AL,01110100B
OUT 43H,AL
MOV AX,100
OUT 41HAL
MOV AL,AH
OUT 41H,AL
;8259初始化:
MOV AL,00010011B定 ;ICW1
OUT 20H,AL
MOV AL,13H ;ICW2
OUT 21H,AL
MOV AL,01H ;ICW4
OUT 21H,AL
IN AL,21H ;读原屏蔽字
AND AL,11111011B ;允许IR3中断
OUT 21H,AL
7.用8253作为控制系统的定时器,每隔100ms以中断方式监控一次。设8253的输入时钟频率为fc=1MHz,端口地址为30—33H;8259端口地址为80—81H,中断类型号为23H。要求:①计算8253的定时时间常数,用图中标出的信号线,画出8253和8259的电路连线图;②分别为8259和8253编制初始化程序。
答:
① 计算8253的定时时间常数:Tn=输入频率/输出频率
时间常数超过一个计数通道的最大值,所以用二个计数通道串接计数(如图)
② 8259初始化程序:中断采用边缘触发方式,普通EOI方式
MOV AL,00010011B
OUT 80H,AL
MOV AL,23H
OUT 81H,AL
MOV AL,1
OUT 81H,AL
8253编制初始化程序:定时时间常数Tn=100000>65535(单通道最大定时初值),所以选择通道0和通道1串联,通道0定时初值100,通道1定时初值1000,工作方式2。
MOV AL,00110100B
OUT 33H,AL
MOV AX,100
OUT 30H,AL
MOV AL,AH
OUT 30H,AL
MOV AL,01110100B
OUT 33H,AL
MOV AX,1000
OUT 31H,AL
MOV AL,AH
OUT 31H,AL
STI
8. 设8255的A、B和C口工作在方式0下,能循环查询输入输出,当查询到PC1=1时结束本程序;查询到PC1=0且PC0=1时,从A口读入数据,将其高四位取反,低四位保持不变,然后送B口输出。试编写8255初始化和应用程序(设8255 A、B、C口和控制端口地址为70H-73H)。
答:MOV AL,10011001B ;A入0方式,B出0方式,C入
OUT 73H,AL
IN AL,72H
WAIT:TEST AL,2
JNZ DONE
TEST AL,1
JZ WAIT
IN AL,70H
XOR AL,0F0H
OUT 71H,AL
JMP WAIT
DONE:RET
9.若用8253作为温控系统的定时器,每隔2秒用中断方式测/控一次数据,8253的输入时钟频率为fc=100KHz,端口地址为50—53H;8259端口地址为58—59H,中断类型号为61H。要求:①计算8253的定时时间常数,画出8253和8259的电路连线图(可参考题20图);②分别为8259和8253编制初始化程序。
答:①计算8253的定时时间常数:Tn=输入频率/输出频率
时间常数超过一个计数通道的最大值,所以用二个计数通道串接计数(可参考题20图). 所以用二通道串连做定时,取N1=2000,则N2=N/N1=100,将OUT0接CLK1,工作方式选方式2速率波发生器,GATE0=GATE1=1,它可连续定时,但定时到时产生的是负脉冲,用该负脉冲产生中断信号需要反相。由于8253定时中断的类型号选在61H,8253的中断请求要接8259的IR1。8259的SP=1接高电平。
②8259的初始化编程:
MOV AL,0001XX11B
OUT 58H,AL
MOV AL,61H
OUT 59H,AL
MOV AL,00000X01B
OUT 59H,AL
IN AL,59H
AND AL,11111101B
OUT 59H,AL
CLI
③8253初始化编程:
MOV AL,0111X100B;先设置1通道,二进制计数,也可设成BCD计数
OUT 53H,AL
MOV AX,100
OUT 51H,AL
MOV AL,AH
OUT 51H,AL
MOV AL,0011X100B;设置0通道
OUT 53H,AL
MOV AX,2000
OUT 50H,AL
MOV AL,AH
OUT 50H,AL
10. (延续题22)设计用8255做为控温加热系统的温度输入和控温输出接口,TS是数字化测温模块,当OE=1时TS通过8位数据线DATA输出补码格式的温度值。HC为加热器,当STB=1时,通过数据线线DATA可向HC的输入8位无符号数PN,PN越大HC的热功率越大,PN=0时HC不发热。要求8255定时检查温度,按温度大小分段控制HC的功率,设8255端口地址为5C—5FH。①画出8255与TS和HC间的电路连线;②写出8255的初始化程序;③利用题1,编写中断程序,每隔2秒进行一次温度t测量,按t值向HC输出PN:当0≤t<100时,PN=200;100≤t<120时,PN=100;120≤t<150时,PN=50,t>150时,PN=0。
答:
①PC7=OE,PC0=STB
②8255初始化编程:
MOV AL,10010000B
OUT 5FH,AL
MOV AL,00000010B ;置STB=0,禁出
OUT 5FH,AL
③中断服务程序:
MOV AL,00001111B; OE=1
OUT 5FH,AL
IN AL,5CH ;输入温度值
MOV AH,AL
MOV AL,00001110B; OE=0
OUT 5FH,AL
CMP AH,100
JB L1
CMP AH,120
JB L2
CMP AH,150
JB L3
MOV AH,0
JMP XX
L1:MOV AH,200
JMP XX
L2:MOV AH,100
JMP XX
L3:MOV AH,50
XX:MOV AL,00000011B;STB=1
OUT 5FH,AL
MOV AL,AH
OUT 5DH,AL ;输出PN
MOV AL,00000010B;STB=0
OUT 5FH,AL
MOV AL,20H ;发EOI命令
OUT 58H,AL
CLI ;开中断
IRET
11. 请把2片8259A接成非缓冲级联方式,#1为主片,#2为从片,#2片通过主片的IR1请求中断,正确连接图中标出的信号,接往CPU的标明所接的CPU信号。
答: