1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 微型计算机原理与接口技术第三版答案

微型计算机原理与接口技术第三版答案

时间:2020-04-03 01:23:11

相关推荐

微型计算机原理与接口技术第三版答案

微型计算机原理与接口技术第三版答案

第2章 练习题

3.简答题

(1) 什么是指令周期?什么是总线周期?一个总线周期至少包括几个时钟周期?

答:指令周期是一条指令执行所需的时钟周期,CPU在执行指令过程中,凡需执行访问存储器或访问 I/O 端口的操作都统一交给 BIU 的外部总线完成,进行一次访问所需的时间称为一个总线周期。一般一个基本的总线周期由 4 个时钟周期组成。

(3) 8086CPU 中有哪些通用寄存器和专用寄存器?说明他们的作用。

答:4个通用寄存器,AX:16位的累加器;BX:16位的基数寄存器,可用于寄存器间接寻址;CX:16位的计数寄存器,可作为程序循环计数寄存器;DX:16位的数据寄存器,可作为I/O指令专用间接寻址寄存器。

4个专用寄存器,BP:16位的基数指针寄存器,用来存放位于堆栈段中的一个数据区基址的偏移地址;SP:16位的堆栈指针寄存器,存放栈顶的偏移地址;SI:16位的源变址寄存器,用于存放当前数据段的偏移地址;DI:16位的目的变址寄存器,也用来存放当前数据段的偏移地址。

(4) 在 8086CPU 中,已知 CS 寄存器和 IP 寄存器的内容分别如下所示,请确定其物理地址。

1)CS=1000H ,IP=2000H

答:物理地址: CS16+IP=10000H+2000H=12000H

2)CS=1234H ,IP=0C00H

答:物理地址: CS16+IP=12340H+0C00H=12F40H

(5)设(AX)=2345H,(DX)=5219H,请指出两个数据相加或相减后,FLAG 中状态标志位的状态。

答:相加 : 0010 0011 0100 0101

+ 0101 0010 0001 1001

0111 0101 0101 1110

CF=0,SF=0,ZF=0,AF=0,OF=0,PF=0

相减: 0010 0011 0100 0101

0101 0010 0001 1001

1101 0001 0010 1100

CF=1,SF=1,ZF=0,AF=1,OF=1,PF=0

(6) 8086CPU 在最小模式下构成计算机系统至少应该包括哪几个基本的部分?

答:一片8284A时钟发生器,三片8282或74LS373地址锁存器,两片8286总线接收器。

(7)简述堆栈指示器SP有什么功能?堆栈的操作过程是怎样的?试举例说明。

答:堆栈指示器(SP )存放栈顶的偏移地址,以便存取位于当前堆栈段中的数据。

举例:PUSH BX ;将寄存器BX的内容压入堆栈。

操作过程分析:执行PUSH指令时,SP先自动减2,BX的低8位放入SP所指单元中,高8位放入SP+1所指单元中。

第3章 练习题

3. 问答题

(1)试分别说明换码指令和串操作指令所用的隐含寄存器及标志位,并说明各自的工作过程。

答:换码指令XLAT所用的隐含寄存器为BX和AL。指令“XLAT”的工作过程:将BX和AL中的值相加,把得到的值作为地址,然后将此地址所对应的单元中的值取到AL中。

串操作指令所用的隐含寄存器和标志位为CX、SI、DI和DF。字符串传送指令“REP MOVSB”的工作过程:将DS:SI逻辑地址所指存储单元的字节传送到ES:DI逻辑地址所指的内存单元中,当DF=0时,SI和DI均增1,CX减1;当DF=1时,SI和DI均减1,CX减1。重复执行上述操作,直到CX=0时停止。

(2)RET与IRET两条指令有何区别?并说明各自的应用场合。

答:RET是从堆栈中弹出断点地址,装入IP或IP与CS中,从而段内返回的目的。主要用于子程序的返回。IRET是中断返回指令,是专门为中断服务程序返回设计的。

(3)试分别举例说明8086CPU乘法与除法指令所用的隐含寄存器。

答:乘法指令有无符号数乘法指令MUL和有符号数乘法指令IMUL。MUL隐含寄存器AX,IMUL隐含寄存器AX和DX。如指令“MUL DL”的功能是将DL中的内容与AL中的内容相乘,结果放在AX中。

除法指令也有无符号数除法指令DIV和有符号数除法指令IDIV。DIV隐含寄存器AX,IDIV隐含寄存器AX和DX。如指令“IDIV BX”的功能是将DX和AX中的32位有符号数除以BX中的16位有符号数,商在AX中,余数在DX中。

(4)简述堆栈指示器SP有什么功能?堆栈的操作过程是怎样的?试举例说明。(教材P85)

4.请指出下列指令中源操作数和目的操作数的寻址方式。

(1)MOV SI,120 ;目的操作数为寄存器寻址,源操作数为立即寻址;

(2)MOV BP,[BX] ;目的操作数为寄存器寻址,源操作数为寄存器间接寻址;

(3)MOV BX,[200] ;目的操作数为寄存器寻址,源操作数为直接寻址;

(4)PUSH DS ;源操作数为寄存器寻址;

(5)POP BX ;目的操作数为寄存器寻址;

(6)AND DL,[BX+SI+30H] ;目的操作数为寄存器寻址,源操作数为相对的基址和变址寻址;

5.请写出如下程序片段中每条逻辑运算指令执行后标志 ZF、SF、和 PF 的状态:

MOV AL,4CH ; ZF不变,SF不变,PF不变

AND AL,0F0H ; ZF=0 ,SF= 0 ,PF=0

OR BL,4CH ; ZF=0 ,SF= 0 ,PF=0

XOR AL,AL ; ZF=1, SF= 0 ,PF=1

6.请写出如下程序片段中每条算术运算指令执行后标志 CF、ZF、SF、OF、PF 和 AF 的状态:

MOV BL, 54H ; 各标志位保持不变

ADD BL, 4BH ; CF=0, ZF=0 ,SF= 1 ,OF=1 ,AF=1,PF=0

CMP BL, 0B6H ; CF=1, ZF=0 ,SF=1, OF=0 ,AF=0 ,PF=0

SUB BL, BL ; CF=0 ,ZF=1 ,SF= 0 ,OF=0, AF=1,PF=0

INC BL ; CF=0 ,ZF=0 ,SF=0, OF=0 ,AF=0, PF=0

7.(DS)=1000H,(SS)=2500H,(SI)=0100H,(BX)=0800H,(BP)=0600H,指出下列指令的目的操作数字段寻址方式,并计算目的操作数字段的物理地址。

(1) MOV [BX], CX

目的操作数为寄存器间接寻址

目的操作数的物理地址为:DS×16+0800H=10800H

(2) MOV [2000H], BX

目的操作数为直接寻址

目的操作数的物理地址为:DS×16+2000H=12000H

(3) MOV [BP], BX

目的操作数为寄存器间接寻址

目的操作数的物理地址为:SS×16+0600H=25600H

(4) MOV [BP+200], BX

目的操作数为寄存器相对寻址

目的操作数的物理地址为:SS×16+0600H+C8H=256C8H

(5) MOV [BX+300][SI], AX

目的操作数为相对基址加变址寻址

目的操作数的物理地址为:DS×16+0800H+12CH+0100H=10A2CH

8.已知(SS)=800H,(SP)=0040H,(CX)=0AF0H,(DX)=201H。下列指令连续执行,请指出每条指令执行后SS、SP、AX、BX寄存器中的内容是多少?

PUSH CX ;SS=0800H,SP=003EH,AX不变,BX不变

PUSH DX ;SS=0800H,SP=003CH,AX不变,BX不变

POP AX ;SS=0800H,SP=003EH,AX=0201H,BX不变

POP BX ;SS=0800H,SP=0040H,AX=0201H,BX=0AF0H

9.阅读下列各小题的指令序列,在后面空格中填入该指令序列的执行结果。

(1) MOV DL,37H

MOV AL,85H

ADD AL,DL

DAA

AL= 22H , BL= 37H ,CF= 1

(2) MOV DX,1F45H

STC

MOV CX,95

XOR CH,0FFH

SBB DX,CX

DX= 1FB0H ,CF= 1

10.已知程序段如下。

CMP CX,BX

JNC L1

JNC L2

JMP L3

假设有以下三组CX,BX值,那么在程序执行后,分别转向哪里?

(1)(CX)=D301H,(BX)=D301H

答:转向 L1

(2)(CX)=2E50H,(BX)=8301H

答:转向 L2

(3)(CX)=477BH,(BX)=10DCH

答:转向 L1

11.设4个BCD码DT1、DT2、DT3、DT4分别放在AL、AH、CL、CH的低4位,请编写程序段,将这4个数按如下要求合并存放到BX寄存器中。

BX DT1 DT2 DT3 DT4

解:程序段如下:

MOV BX,00H

AND AX,0F0FH

AND CX,0F0FH

MOV BL,CL

MOV CL,4

SHL BL,CL

ADD BL,CH

MOV BH,AL

SHL BH,CL

ADD BH,AH

12.请用串操作指令实现将10~99这90个数从2100H开始的内存单元搬到3100H开始的内存单元处。

解:程序段如下:

MOV DS,2000H

MOV ES,3000H

CLD

MOV CX,90

MOV SI,100H

MOV DI,100H

REP MOVSB

第4章 练习题

2. 问答题

(1)变量和标号有什么异同之处?

答:变量和标号都有三种属性:段地址、偏移地址及类型。变量是存放在存储器单元中的操作数,其值可以改变,变量的类型可以是BYTE(字节)、WORD(字)、DWORD(双字)等;标号是可执行指令语句地址的符号表示,即用标志符来表示地址,标号的类型可以是NEAR(近)或FAR(远)。

(2)简述汇编语言中伪指令的基本作用和特点,与机器指令相比有何区别?

答:伪指令语句没有对应的机器代码,经汇编程序汇编后并不产生目标代码,由汇编程序对源程序汇编期间进行处理,主要作用是完成变量的定义、存储器的分配、段结构的定义,段的分配、过程的定义、程序开始和结束的指示等。而机器指令由CPU来执行,它的每一条指令语句在源程序汇编时都要产生可供计算机执行的指令代码(即目标代码)。

(3)试简述宏调用与子程序调用各自的作用和相互之间的区别。

答:宏调用的作用是在定义宏指令后,通过宏指令来表示对应的程序片段。子程序调用的作用是定义一个由主程序可以用CALL指令调用的程序。两者的区别:宏调用比子程序调用执行速度快;子程序调用使用CALL语句实现,在CPU执行时进行处理,而宏调用由宏汇编软件MASM中的宏处理程序来处理;子程序调用比宏调用节省内存空间;宏调用比子程序调用灵活。

(4)8086汇编语言程序中段的类型有几种?段定义语句中定位类型、组合类型和类别各起什么作用?

答:段类型有四类:数据段、代码段、堆栈段、附加段。定位类型用于规定20位的段起始地址。组合类型规定该段与其他段的位置关系。类别名的主要作用是将所有分类名相同的逻辑段组成一个段组。

3.根据题意定义变量

(1) 将字节数据12H,567H存放在变量DATA1的存储单元中。

DATA1 DW 12H,567H

(2) 将字节数据56H,0BCH存放在变量DATA2的存储单元中。

DATA2 DB 56H,0BCH

(3)在DATA3为首地址的存储单元中连续存放字节数据5个‘A’,6个(1,2,3),20个空单元。

DATA3 DB 5DUP(‘A’),6DUP(1,2,3), 20DUP(?)

(4) 在STR1为首地址的存储单元中存放字符串‘HOW ARE YOU’。

STR1 DB ‘HOW ARE YOU’

4.已知某数据段经汇编后数据在存储器中存放格式如下图,试写出数据段定义。

DATA1 00H

(字节数据) 0AH

10H

DATA2 04H

15

(字节数据) 08H

08H

08H

09H

DATA3 77H

(字数据) 65H

6CH

63H

6FH

6DH

解:DATA1 DB 00H,0AH,10H

DATA2 DB 15 DUP(04H,3DUP(08H),09H)

DATA3 DW 6577H,636CH,6D6FH

5.设数据段数据定义如下。

DATA SEGMENT

STR DB ‘GOOD MORNING!’,’’ADRDW3DUP(0,2,5)DISPDW3DATAENDS(1)画出内存分配图。STR47H(字节数据)4FH4FH44H20H4DH4FH52H4EH49H4EH47H21H24HADR00H重复3次(字数据)00H02H00H05H00HDISP03H(字数据)00H(2)分别用两种求偏移量的指令将STR的偏移地址送BX.解:①LEABX,STR②MOVBX,OFFSETSTR6.写出以下指令在汇编后目标程序中对应的指令。7.同时对于两条指令中分别出现的两个AND和两个OR是不是同一种含义?为什么?(1)MOVBX,1234HGT1000H对应MOVBX,0FFFFH(2)SBBDX,1024SHR3对应SBBDX,0080H(3)ANDAL,7AND47H对应ANDAL,07(4)ORDL,NOT(7OR54H)对应ORDL,A8(5)MOVAX,HIGH(1000H+5)对应MOVAX,0010(6)ADDAX,HIGH1000H+5对应ADDAX,0015注意:汇编后显示的立即数均为16进制数第(3)、(4)条指令中出现的两个AND和OR中,前面的AND和OR是指令系统中的指令助记符,是在程序执行时进行运算的;后面的AND和OR是逻辑运算符,是在编程过程中进行运算的,逻辑运算对象只能是常数,其结果也是常数。8.程序在数据段中定义的数据如下。DATASEGMENTVAR1DB4,6VAR2DD200DUP(?)DATAENDS以下三条指令分别汇编成什么?(可立即数方式表示)(1)MOVCL,LENGTHVAR2汇编成MOVCL,C8(2)MOVBL,TYPEVAR1汇编成MOVBL,01(3)MOVBX,SIZEVAR2汇编成MOVBX,0320注意:汇编后显示的立即数均为16进制数9.给定宏定义如下。DIFMACROX,YMOVAX,XSUBAX,YENDMABSDIFMACROV1,V2,V3LOCALNEXTPUSHAXDIFV1,V2CMPAX,0JGENEXTNEGAXNEXT:MOVV3,AXPOPAXENDM试展开以下调用,并判定调用是否有效(展开后的指令必须符合8086CPU指令系统要求)。(1)ABSDIFDX,AX,CX+PUSHAX+MOVAX,DX+SUBAX,AX+CMPAX,0+JGENEXT+NEGAX+NEXT:MOVCX,AX+POPAX(2)ABSDIF[100],[DI],BX+PUSHAX+MOVAX,[100]+SUBAX,[DI]+CMPAX,0+JGENEXT+NEGAX+NEXT:MOVBX,AX+POPAX(3)ABSDIF[BX+SI],[BP],100H;调用无效。语法错误(立即数的使用)。10.写一个宏定义,要求能把任意一个寄存器的最低位移至另一个寄存器的最高位中。解:宏定义如下:SMOVMACROX1,X2ANDX1,0001HRORX1,1ANDX2,7FFFHORX2,X1ENDM11.利用DOS功能调用从键盘输入60个字符到缓冲区BUF中,在按下ENTER键后在屏幕上显示这些字符。请写出程序段。解:程序段如下:DATASEGMENTBUFDB60;用户定义存放60个字节的缓冲区NUMBDB?;系统填入实际输入字符字节数CHARSDB60DUP(?);存放输入字符的ASCII码值DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETBUFMOVAH,0AHINT21HXORBX,BXMOVBL,NUMBMOVCHARS[BX],′’ ADR DW 3 DUP(0,2,5) DISP DW 3 DATA ENDS (1)画出内存分配图。 STR 47H (字节数据) 4FH 4FH 44H 20H 4DH 4FH 52H 4EH 49H 4EH 47H 21H 24H ADR 00H 重 复 3 次 (字数据) 00H 02H 00H 05H 00H DISP 03H (字数据) 00H (2)分别用两种求偏移量的指令将STR的偏移地址送BX. 解:①LEA BX,STR ②MOV BX,OFFSET STR 6.写出以下指令在汇编后目标程序中对应的指令。 7.同时对于两条指令中分别出现的两个AND和两个OR是不是同一种含义?为什么? (1)MOV BX,1234H GT 1000H对应MOV BX,0FFFFH (2)SBB DX,1024 SHR 3对应SBB DX,0080H (3)AND AL,7 AND 47H对应AND AL,07 (4)OR DL,NOT(7 OR 54H)对应OR DL,A8 (5)MOV AX,HIGH(1000H+5)对应MOV AX,0010 (6)ADD AX,HIGH 1000H+5对应ADD AX,0015 注意:汇编后显示的立即数均为16进制数 第(3)、(4)条指令中出现的两个AND和OR中,前面的AND和OR是指令系统中的指令助记符,是在程序执行时进行运算的;后面的AND和OR是逻辑运算符,是在编程过程中进行运算的,逻辑运算对象只能是常数,其结果也是常数。 8.程序在数据段中定义的数据如下。 DATA SEGMENT VAR1 DB 4,6 VAR2 DD 200 DUP(?) DATA ENDS 以下三条指令分别汇编成什么?(可立即数方式表示) (1)MOV CL,LENGTH VAR2汇编成MOV CL,C8 (2)MOV BL,TYPE VAR1汇编成MOV BL,01 (3)MOV BX,SIZE VAR2汇编成MOV BX,0320 注意:汇编后显示的立即数均为16进制数 9.给定宏定义如下。 DIF MACRO X,Y MOV AX,X SUB AX,Y ENDM ABSDIF MACRO V1,V2,V3 LOCAL NEXT PUSH AX DIF V1,V2 CMP AX,0 JGE NEXT NEG AX NEXT: MOV V3,AX POP AX ENDM 试展开以下调用,并判定调用是否有效(展开后的指令必须符合8086CPU指令系统要求)。 (1)ABSDIF DX,AX,CX +PUSH AX +MOV AX,DX +SUB AX,AX +CMP AX,0 +JGE NEXT +NEG AX +NEXT:MOV CX,AX +POP AX (2)ABSDIF [100],[DI],BX +PUSH AX +MOV AX,[100] +SUB AX,[DI] +CMP AX,0 +JGE NEXT +NEG AX +NEXT:MOV BX,AX +POP AX (3)ABSDIF [BX+SI],[BP],100H;调用无效。语法错误(立即数的使用)。 10.写一个宏定义,要求能把任意一个寄存器的最低位移至另一个寄存器的最高位中。 解:宏定义如下: SMOV MACRO X1,X2 AND X1,0001H ROR X1,1 AND X2,7FFFH OR X2,X1 ENDM 11.利用DOS功能调用从键盘输入60个字符到缓冲区BUF中,在按下ENTER键后在屏幕上显示这些字符。请写出程序段。 解:程序段如下: DATA SEGMENT BUF DB 60 ;用户定义存放60个字节的缓冲区 NUMB DB ? ;系统填入实际输入字符字节数 CHARS DB 60 DUP(?) ;存放输入字符的ASCII码值 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET BUF MOV AH,0AH INT 21H XOR BX,BX MOV BL,NUMB MOV CHARS[BX],'’ADRDW3DUP(0,2,5)DISPDW3DATAENDS(1)画出内存分配图。STR47H(字节数据)4FH4FH44H20H4DH4FH52H4EH49H4EH47H21H24HADR00H重复3次(字数据)00H02H00H05H00HDISP03H(字数据)00H(2)分别用两种求偏移量的指令将STR的偏移地址送BX.解:①LEABX,STR②MOVBX,OFFSETSTR6.写出以下指令在汇编后目标程序中对应的指令。7.同时对于两条指令中分别出现的两个AND和两个OR是不是同一种含义?为什么?(1)MOVBX,1234HGT1000H对应MOVBX,0FFFFH(2)SBBDX,1024SHR3对应SBBDX,0080H(3)ANDAL,7AND47H对应ANDAL,07(4)ORDL,NOT(7OR54H)对应ORDL,A8(5)MOVAX,HIGH(1000H+5)对应MOVAX,0010(6)ADDAX,HIGH1000H+5对应ADDAX,0015注意:汇编后显示的立即数均为16进制数第(3)、(4)条指令中出现的两个AND和OR中,前面的AND和OR是指令系统中的指令助记符,是在程序执行时进行运算的;后面的AND和OR是逻辑运算符,是在编程过程中进行运算的,逻辑运算对象只能是常数,其结果也是常数。8.程序在数据段中定义的数据如下。DATASEGMENTVAR1DB4,6VAR2DD200DUP(?)DATAENDS以下三条指令分别汇编成什么?(可立即数方式表示)(1)MOVCL,LENGTHVAR2汇编成MOVCL,C8(2)MOVBL,TYPEVAR1汇编成MOVBL,01(3)MOVBX,SIZEVAR2汇编成MOVBX,0320注意:汇编后显示的立即数均为16进制数9.给定宏定义如下。DIFMACROX,YMOVAX,XSUBAX,YENDMABSDIFMACROV1,V2,V3LOCALNEXTPUSHAXDIFV1,V2CMPAX,0JGENEXTNEGAXNEXT:MOVV3,AXPOPAXENDM试展开以下调用,并判定调用是否有效(展开后的指令必须符合8086CPU指令系统要求)。(1)ABSDIFDX,AX,CX+PUSHAX+MOVAX,DX+SUBAX,AX+CMPAX,0+JGENEXT+NEGAX+NEXT:MOVCX,AX+POPAX(2)ABSDIF[100],[DI],BX+PUSHAX+MOVAX,[100]+SUBAX,[DI]+CMPAX,0+JGENEXT+NEGAX+NEXT:MOVBX,AX+POPAX(3)ABSDIF[BX+SI],[BP],100H;调用无效。语法错误(立即数的使用)。10.写一个宏定义,要求能把任意一个寄存器的最低位移至另一个寄存器的最高位中。解:宏定义如下:SMOVMACROX1,X2ANDX1,0001HRORX1,1ANDX2,7FFFHORX2,X1ENDM11.利用DOS功能调用从键盘输入60个字符到缓冲区BUF中,在按下ENTER键后在屏幕上显示这些字符。请写出程序段。解:程序段如下:DATASEGMENTBUFDB60;用户定义存放60个字节的缓冲区NUMBDB?;系统填入实际输入字符字节数CHARSDB60DUP(?);存放输入字符的ASCII码值DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETBUFMOVAH,0AHINT21HXORBX,BXMOVBL,NUMBMOVCHARS[BX],′’ ;字符串后加一个结束符

MOV DL,0DH ;回车

MOV AH,2

INT 21H

MOV DL,0AH ;换行

MOV AH,2

INT 21H

MOV DX,OFFSET CHARS

MOV AH,9

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END START

第5章 练习题

2.编程题

(1)试编写一程序,把数组STRING中存放的20个8位二进制数分成正数数组和负数数组,并统计正数、负数和零的个数,结果分别存放在P、M、Z三个单元。

DATA SEGMENT

STRING DB 20 DUP(?)

POSI DB 20 DUP(?)

NEGA DB 20 DUP(?)

P DB 00H

M DB 00H

Z DB 00H

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

XOR BX,BX

MOV SI,BX

MOV DI,BX

MOV CX,20

LP: MOV AL,STRING[BX]

CMP AL,0

JGE P1

MOV NEGA[DI],AL

INC DI

INC M

JMP NEXT

P1: JNE P2

INC Z

JMP NEXT

P2: MOV POSI[SI],AL

INC SI

INC P

NEXT: INC BX

LOOP LP

MOV AH,4CH

INT 21H

CODE ENDS

END START

(2)试编写一程序,完成10个一位十进制数累加,累加结果以分离式BCD码形式存放于AH(高位),AL(低位)寄存器。

DATA SEGMENT

STRING DB ‘1112220004’

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV CX,10

XOR BX,BX

MOV AX,0

LP: ADD AL,STRING[BX]

AAA

INC BX

LOOP LP

MOV AH,4CH

INT 21H

CODE ENDS

END START

(3)试编写一程序,将2个字节的二进制数,变换成用ASCII码表示的四位十六进制数(用四字节表示)。

DATA SEGMENT

NUM DW 12345 ;0~65535

ASC DB 4 DUP(?)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV BX,NUM

LEA DI,ASC

MOV CX,0404H

LP1: ROL BX,CL

MOV DL,BL

AND DL,0FH

CMP DL,10

JB LP2

ADD DL,7

LP2: ADD DL,‘0’

MOV [DI],DL

INC DI

DEC CH

JNZ LP1

MOV AH,4CH

INT 21H

CODE ENDS

END START

(4)试用串操作指令SCAS,在10个字节的数据块BLOCK中,搜索与2EH相等的数,若找到,则将该数地址存放于ADR中,并在SIGNAL单元中作标记0FFH;否则,SIGNAL为00H。

DATA SEGMENT

BLOCK DB 26H,27H,28H,29H,2AH,2BH,2CH,2DH,2EH,2FH

ADR DW ?

SIGNAL DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA

START: MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV DI,OFFSET BLOCK

CLD

MOV CX,10

MOV AL,2EH

REPNZ SCASB

JNZ AA

MOV SIGNAL,0FFH

DEC DI

MOV ADR,DI

JMP NEXT

AA: MOV SIGNAL,00H

NEXT: MOV AH,4CH

INT 21H

CODE ENDS

END START

(5)请按如下说明编写子程序。

子程序功能:把用ASCII码表示的两位十进制数转换为压缩BCD码。

入口参数:DH:十位数的ASCII码,DL:个位数的ASCII码。

出口参数:AL:对应压缩BCD码。

TRANS PROC NEAR

PUSH CX

PUSH DX

MOV CL,4

SUB DH,‘0’

SUB DL,‘0’

SHL DH,CL

ADC DL,DH

MOV AL,DL

POP CX

POP DX

RET

TRANS ENDP

(6)编写一程序,计算100个16位正整数之和,如果和不超过16位字的范围(0~65535),则保存其和到SUM,如超过则显示“Overflow!”。

DATA SEGMENT

DAT1 DW 25 DUP(0034H,0345H,0000H,0000H)

SUM DW ?

STRING DB ‘Overflow!’,0DH,0AH,’$’

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV SI,OFFSET DAT1

MOV BX,OFFSET SUM

MOV CX,100

XOR AX,AX

L1: ADC AX,[SI]

JC OVER

INC SI

INC SI

LOOP L1

MOV [BX],AX

JMP NEXT

OVER: MOV DX,OFFSET STRING

MOV AH,9

INT 21H

NEXT: MOV AH,4CH

INT 21H

CODE ENDS

END START

3.问答题

(1)汇编语言程序的开发有哪些步骤,其工作过程需哪些软件来实现?可产生哪些输出文件?

答:步骤如下:1)明确任务,确确算法 2)绘制流程图 3)编写汇编语言程序 4)上机调试程序。

编写汇编语言程序时:1)需要软件建立源程序文件,并保存为.ASM文件。2)需MASM.EXE软件汇编源程序文件,可产生扩展名为OBJ的目标文件、扩展名为LST的列表文件和扩展名为CRF的对照文件。3)需要LINK.EXE软件与目标文件连接,可产生扩展名为EXE的可执行文件、扩展名为MAP的列表文件和扩展名为LIB的库文件。

上机调试时,需要DEBUG.EXE调试软件。

(2)程序结束软中断有哪几种实现方法?有什么区别?

答:程序结束软中断有三种实现方法:INT 20H、INT 21H、INT 27H。

INT 20H的功能是终止当前进程,关闭所有打开的文件,清除磁盘缓冲区,返回控制台的命令接收状态,实现程序退出时,不需要任何入口参数。INT 21H用于系统功能调用,该软中断包括3种情况:无返回程序结束(入口参数AH=0,无返回号)、程序结束并驻留(入口参数AH=31H,返回号AL=1)、带返回程序结束(入口参数AH=4CH,返回号AL=1)。INT 27H用于驻留退出,入口参数DX=XX设置驻留程序的长度。

(3)用汇编语言编程序有哪几种结构?

答:顺序结构;分支结构;循环结构;子程序结构。

(4)子程序结构中,主程序和子程序之间参数传递有哪几种方法?

答:参数传递的实现方案可分为:寄存器传送、固定缓冲区传送、地址表传送、堆栈传送。

第6章 练习题

3.简答题

(1)半导体存储器的主要性能指标有哪些?

答:半导体存储器的主要性能指标有:存储容量、存取速度、功耗、可靠性、价格。

(2)存储器芯片由哪几部分组成?各部分功能是什么?

答:存储芯片由存储矩阵、地址译码器、存储器控制电路、三态双向缓冲器组成。存储矩阵的功能是把能够寄存二进制信息的基本电路的集合体的这些基本存储电路按阵列形式排列和编址;地址译码器的功能是将CPU发送来的地址信号进行译码后产生地址编码,以便选中存储矩阵中的某一个或某几个基本存储电路,使其在存储器控制逻辑的控制下进行读/写操作;存储器控制电路通过相应的信号引脚,接收来自CPU或外部电路的控制信号,经组合变换,产生芯片内部各部分的控制信号;三态双向缓冲器的作用是使组成半导体RAM的各个存储芯片很方便地与系统数据总线相连接。

(3)简述SRAM和DRAM的各自特点。

答:SRAM的特点为速度快,不必配合内存刷新电路,可提高整体的工作效率,但集成度低,功耗较大,相同的容量体积较大。DRAM的特点是需要刷新来补充电荷。

(4)DRAM为什么要刷新?存储系统如何进行刷新?

答:DRAM由电容组成,通过高低电平表示存储的状态,由于是电容器作为载体,产生电荷泄露,故需要刷新来补充电荷。刷新按行进行,即每当CPU或外部电路对动态存储器提供一个行地址信号,使存储体中的某一行被选中,同时令列地址无效,即关闭所有的列选通道,这样,该行中所有基本存储电路的数据将在内部读出,并在相应列刷新放大器作用下被放大和刷新。

(5)什么是高速缓冲器?与主体有什么关系?基本工作原理是什么?

答:高速缓冲器为缓存,位于CPU与内存之间的临时存储器,以提高CPU数据输入输出速率。高速缓冲器的原理是根据局部性原理,把主存储器中访问概率高的内容存放在缓冲器中,当CPU需要读取数据时就首先在缓冲器中查找是否有所需内容,如果有则直接从缓冲器中读取;若没有则再主存中读取该数据,然后同时送往CPU的高速缓冲器。

3.一个5124的RAM芯片需要多少根地址线?多少根数据线?若要组成一个64K8的存储器,需要多少个RAM芯片?多少芯片组?多少根芯片组选择地址线?

答:一个5124的RAM芯片需要9根地址线,4根数据线。组成一个64K8的存储器需要256个RAM芯片,128个芯片组,7根芯片组选择地址线。

4.由Intel2164DRAM芯片组成一个64K8的存储器,共需多少个DRAM芯片?若进行刷新操作,需要几次才能刷新完毕?

答:组成一个64K8的存储器,共需8个DRAM芯片。需要128次才能刷新完毕,7个触发器。

第7章 练习题

3.问答题

(1)试说明8086CPU对INTR的响应过程。若某外部中断源通过8259A的IR4接入8086CPU系统,试说明应做哪几个方面的工作才能使该中断正常工作。

答:响应过程:1)CPU在每执行完一条指令后,自动检测是否有INTR中断请求;2)判断是否响应INTR线上的中断请求;3)确定中断向量地址;4)保存断点;5)执行中断服务程序;6)中断返回。

若外部中断源通过IR4接入8086系统,应做:1)设置8259A的初始化命令字和相关操作命令字;2)系统开中断。

(2)说明软中断与子程序调用在使用时有何区别。

答:软中断是由CPU根据程序的某条指令或者程序员对标志寄存器中某个标志位的设置而产生的;子程序调用是由CALL指令引起的。

(3)采用DMA方式为什么能进行高速数据传送?

答:DMA是一种直接存储器存取方式,利用这种方式,可以在没有CPU干预的情况下,存储器与外设之间或存储器与存储器之间进行直接数据传输,这样可以大大提高数据传输的速度。

(4)简述DMA控制器8237A的工作周期。

答:8237A在系统中的工作状态可分为两种工作周期:DMA空闲周期和DMA有效周期。

当8237A的所有通道均没有DMA请求时,芯片即处于空闲周期,此时8237A作为普通接口芯片受CPU控制,处于从属状态。当8237A采样到某通道有DMA请求,即向CPU发总线请求信号,一旦获得总线控制权则由空闲周期进入有效周期,此时8237A作为系统的主控芯片,处于主控状态.

(5)8237A在进行单字节方式DMA传送和块传送时,有什么区别?

答:1)单字节传送方式:每次DMA操作仅传送一个字节数据,传送后当前地址寄存器加1或减1,并将当前字节计数器减1,保持请求信号HQR无效,交出总线控制权,随后再次请求DMA传送下一个字节数据,如此往复直到当前字节计数器减为0FFFFH时终止。

2)数据块传送方式:8237A一旦获得总线控制权,便开始连续传送数据,每传送一个字节就自动修改地址,并使要传送的字节数减1,直到当前字节计数器减为0FFFFH时产生终止信号,或者受到外部的信号时结束传送,交出总线权。

4.下面是一个对8259A进行初始化的程序,请加上注释,并具体说明各初始化命令字的含义。

MOV AL,13H ;设置 ICW1 命令字 边沿触发方式,单片8259A需要设置 ICW4

MOV DX,40H

OUT DX,AL

INC DX ;DX 增 1,为设置下面的命令字做准备

MOV AL,08H ;设置 ICW2中断类型号为从 08H ~0FH

OUT DX,AL

MOV AL,09H ;设置 ICW4为8088模式,一般 EOI 缓冲方式,全嵌套方式

OUT DX,AL

系统分配给8259A的I/O地址为40H和41H

5.设8259A的偶地址是1000H,试编写屏蔽8259A中的IR3,IR4和IR6中断请求的程序。

MOV DX,1000H ;指向8259A的偶地址

MOV AL,01011000B ;使IMR的D3、D4、D6位为1

0UT DX,AL

8259A的OCW1可以实现中断源的屏蔽与开放。

6.某8086CPU系统的中断系统由两片8259A级联组成,从片联在主片的IR3上,主、从8259A的IR5上各接有一个外部中断源,其中断类型码分别为0DH,95H。假设它们的中断入口地址均在同一段中,段基址为1000H,偏移地址分别是200H,300H;所有中断都采用边沿触发方式、全嵌套方式、正常EOI结束方式。

(1)写出主、从8259A中断向量地址的范围;

(2)试编写全部初始化程序。

解:(1)主8259A的中断类型码的范围为:08H0FH,中断向量地址的范围为:20H3CH。从8258A的中断类型码的范围:90H97H,中断向量地址范围为:240H25CH。

(2)主8259A初始化程序段

MOV AX,00H

MOV DS,AX ;中断向量表的段地址为0000H

MOV BX,0DH4 ;取中断向量地址

MOV AX,200H ;取中断向量并送入中断向量表

MOV [BX],AX

MOV AX,1000H

MOV [BX+2],AX

MOV AL,00010001B ;ICW1边沿触发,级联方式,写入ICW4

OUT 30H,AL

MOV AL,08H ;ICW2中断类型号范围

OUT 31H,AL

MOV AL,00000100B ;ICW3从片联在主片的IR3上

OUT 31H,AL

MOV AL,00011101B ;ICW4全嵌套方式,正常EOI结束方式

OUT 31H,AL

从8259A初始化程序段

MOV AX,00H

MOV DS,AX ;中断向量表的段地址为0000H

MOV BX,95H4 ;取中断向量地址

MOV AX,300H ;取中断向量并送入中断向量表

MOV [BX],AX

MOV AX,1000H

MOV [BX+2],AX

MOV AL,00010001B

OUT 36H,AL

MOV AL,90H

OUT 37H,AL

MOV AL,00000011

OUT 37H,AL

MOV AL,0001

7.设计8237A的初始化程序。要求:通道0工作于快传送写模式,地址加1变化,允许自动预置功能;通道1工作于单字节传送,地址减1变化,禁止自动预置功能;通道2、通道3和通道1工作于相同的方式。8237A的DACK为高电平有效,DREQ为低电平有效,采用循环优先级方式启动8237A工作。

MOV DX,DMA+0DH ;DMA+0DH为复位命令端口地址

MOV AL,0 ;发复位命令

OUT DX,AL

MOV AL,10110100B ;设置通道0方式字

MOV DX,DMA+0BH

OUT DX,AL

MOV AL,01001001B ;设置通道1方式字

MOV DX,DMA+0BH

OUT DX,AL

MOV AL,01001010B ;设置通道2方式字

MOV DX,DMA+0BH

OUT DX,AL

MOV AL,01001011B ;设置通道3方式字

M0V DX,DMA+0BH

OUT DX,AL

MOV AL,10010000B ;设置控制字

MOV DX,DMA+08H

OUT DX,AL

8.试编写程序段,要求利用8237A在存储区的两个区域BUF1和BUF2之间直接传送数据,传送的数据长度为64KB

MOV AL,04H

MOV DX,DMA+08H ;控制寄存器端口

OUT DX,AL ;设控制字,禁止8237A工作

MOV DX,DMA+0DH ;复位命令端口

OUT DX,AL ;发复位命令

MOV DX,DMA+00H ;通道0地址寄存器端口

MOV AX,BUF1 ;源数据区首址

OUT DX,AL ;写入地址低8位

MOV AL,AH

OUT DX,AL ;写入地址高8位

MOV DX,DMA+02H ;通道1基地址与当前地址

MOV AX,BUF2 ;目的数据区首址

OUT DX,AL ;写入地址低8位

MOV AL,AH

OUT DX,AL ;写入地址高8位

MOV DX,DMA+03H ;通道1基计数与当前字节计数

MOV AX,0FFFFH

OUT DX,AL ;写入初始值低8位

MOV AL,AH

OUT DX,AL ;写入初始值高8位

MOV DX,DMA+0CH ;先/后触发器端口

OUT DX,AL ; 清先/后触发器端口

MOV DX,DMA+0BH ;方式寄存器端口

MOV AL,88H

OUT DX,AL ;设通道0方式字,数据块读 增量

MOV DX,DMA+0CH

OUT DX,AL ; 清先/后触发器端口

MOV DX,DMA+0BH ;方式寄存器端口

MOV AL,85H

OUT DX,AL ;设通道1方式字,数据块写 增量

MOV DX,DMA+0CH

OUT DX,AL ; 清先/后触发器端口

MOV DX,DMA+0FH ;主屏蔽字端口

MOV AL,0CH

OUT DX,AL ;屏蔽通道2、3

MOV DX,DMA+0CH

OUT DX,AL ; 清先/后触发器端口

MOV DX,DMA+08H ; 控制寄存器端口

MOV AL,01H

OUT DX,AL ;设控制字,允许存储器到存储器,启动8237A工作

MOV DX,DMA+0CH

OUT DX,AL ; 清先/后触发器端口

MOV DX,DMA+09H ;请求寄存器端口

MOV AL,04H

OUT DX,AL ;向通道0发出DMA请求

MOV DX,DMA+08H ; 读状态寄存器端口

AA1:IN AL,DX

JZ AA1

MOV DX,DMA+0CH

OUT DX,AL ; 清先/后触发器端口

MOV DX,DMA+09H ;请求寄存器端口

MOV AL,00H

OUT DX,AL ;通道0撤销DMA请求

MOV DX,DMA+0CH

OUT DX,AL ; 清先/后触发器端口

MOV DX,DMA+08H ; 设控制字

MOV AL,04H

OUT DX,AL ;禁止8237A工作

HLT

第8章 练习题

3.问答题

(1)当接口电路与系统总线相连接时,为什么要遵循“输入要经过三态,输出要锁存”的原则?

答:接口电路是介于主机和外设之间的一种缓冲电路,它使外设与总线隔离,起缓冲、暂存数据的作用。因为数据总线是各种设备以及存储器传送数据的公共总线,任何设备都不允许长期占用数据总线,而仅允许被选中的设备在读/写周期中享用数据总线,这就需要接口电路为输入设备提供三态缓冲作用,只在读/写周期中为被选中的设备开放与系统数据总线的连接,即输入要经三态;另外,对于输出接口,当快速的CPU要将数据传送到慢速的外设时,事先需要把数据送到锁存器中,等外设做好接收数据的准备工作后再把数据取走。

(2)I/O 接口的主要功能有哪些? 一般有哪两种编址方式?两种编址方式各自有什么特点?

答:I/O 接口的主要功能有:l)解决 CPU 与外设之间速度不匹配问题;2)实现信号电平的转换;3)实现信号格式的转换;

I/O 端口的编址方式有两种:统一编址方式和独立编址方式。

统一编址方式:优点是简化了指令系统的设计,访问 I/O 设备的指令类型多、功能强, I/O 地址空间可大可小。缺点是I/O 端口占用了存储单元的地址空间,且 I/O 译码电路变得较复杂。访问存储器的指令一般要比较长,这样延长了输入输出操作时间。独立编址方式:优点是可读性好,I/O 指令长度短,执行的速度快,占用内存空间少,I/O 地址译码电路较简单。缺点是CPU 指令系统中必须有专门的 IN 和 OUT 指令,而且这些指令的功能没有访问存储器的指令强。

(3)按照与CPU之间数据传输的方向分,可以将外部设备分为哪几类?外设与CPU之间传输的信号可以分为哪三种?

答:按照与CPU之间数据传输的方向分,可以将外部设备分为三类:输入设备、输出设备及I/O复合设备。

外设与CPU之间传输的信号可以分为三类:数据信号、状态信号、控制信号。

(4)何为总线?系统总线实现数据传输的操作过程是如何在主控模块的控制下进行的?

答:用于各部件之间传送信息的公共信号线称为总线。

若系统总线上只有一个主控模块,就没有总线请求阶段,但当系统总线上有多个主控模块时,则需提出申请,由总线仲裁部分确定总线使用权。主控模块取得总线使用权后,通过地址总线发出本次打算访问的从属模块的地址,通过数据总线发出相关命令。当主控模块和从属模块之间联系成功后,就可以进行数据传输,数据由源模块发出经数据总线送入目的模块。当数据传输完成后,当前主控模块的有关信息均从系统总线上撤除,让出总线的控制权。

(5)根据总线中信息传送的类型可分为哪几种?若按总线的规模、用途和应用场合又可分成哪几类?一般总线完成一次数据传输的操作过程可分为哪4个阶段?

答:根据总线中信息传送的类型可分为三种:地址总线、数据总线和控制总线。

按总线的规模、用途和应用场合又可分成四类:芯片内部总线、元件级总线、系统总线和外部总线。

一般总线完成一次数据传输的操作过程可分为4个阶段:总线请求阶段、寻址阶段、传输阶段、结束阶段。

4.在8086微型计算机系统中,有一外设的接口地址为2A8H~2AFH,请用74LS138译码器设计符合要求的地址译码电路。

解:该接口共有8个端口地址,取地址码最低3位A2、A1、A0作为接口内不同端口的选择。高13位地址码译出本接口的选择地址2A8H

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

0 0 0 0 0 0 1 0 1 0 1 0 1 X X X

在最小模式下,译码电路如下。

5.某系统分别用74LS244和74LS273作为输入输出接口。其输入口的地址为1000H,输出口的地址为2000H,试编写程序,当输入口的bit1,bit3和bit5位同时为1时,把以DATA为首地址的50个单元的数据从输出口输出;如果不满足上述条件则等待。

MOV SI,OFFSET DATA

MOV CX,50

LP1: MOV DX,1000H

IN AL,DX

AND AL,2AH

CMP AL,2AH

JNZ LP1

OUTPUT:MOV AL,[SI]

MOV DX,2000H

OUT DX,AL

INC SI

LOOP OUTPUT

6.一个采用查询式数据传送的输出接口,其数据端口地址为 300H,状态端口地址为 301H,外设状态位用 D7 位表示,并约定低电平有效。如果要将存储器缓冲区 DATA 中的 200 个字节数据通过该输出口输出,画出流程图,编写控制程序段。

程序段为:

LEA SI,DATA

MOV CX,200

LP1: MOV DX,301H

IN AL,DX

TEST AL,80H

JNZ LP1

DEC DX

MOV AL,[SI]

OUT DX,AL

INC SI

LOOP LP1

第 9 章

3.问答题

(1)并行接口和串行接口各有哪些特点?

答:并行接口的特点:1)通过多根信号线同时传送多位数据;2)多用于传输距离短,数据量大,速度高的实时传输场合;3)传送时一般不需要特定的数据传送格式。

串行接口特点:所需传送线少,成本低,而且能实现远距离通信。但传送速度较慢。

(2)8255A的三种工作方式有何不同?三个8位的数据端口功能有何异同?

答:8255A的三种工作方式为:基本输入/输出方式(方式0)、选通输入/输出方式(方式1)、双向总线 I/O 方式(方式2)。方式0没有专门的联络信号,一般只能用于简单的、无条件的传输场合,端口A、B、C均可工作于该方式下。方式1端口A、B的输入输出受端口C相应位控制。方式2时可实现数据的双向传输,只有端口A可以工作在方式2。

三个8位的数据端口:端口A、端口B和端口C。端口A可以设置为输入端口,也可以设置为输出端口,还可以设置为双向的8位数据端口,输入/输出时端口都具有锁存器、缓冲器,具有三种工作方式,是功能最齐全的数据端口。端口B可以设置为输入端口,也可以设置为输出端口,但不能设置为双向数据端口,端口B输入不能锁存,而输出可以锁存,具有两种工作方式。端口C有位寻址功能,能作为联络线配合端口A和B工作,端口C还能作为两个4位的端口使用,可以设置为输入端口,也可以设置为输出端口,但不能设置为双向数据端口。

(3)8251A同步和异步串行通信的初始化过程有何区别?

答:异步方式字格式

S2 S1 EP PEN L2 L1 B2 B1

同步方式字格式

SCS ESD EP PEN L2 L1 0 0

可见由方式字的最低两位确定8251A的工作方式,当全为0时,工作于同步方式,否则工作于异步方式。8251A工作于异步方式时,采用方式字的S2、S1两位来确定异步格式中的停止位的位数;当工作于同步方式时,SCS、ESD用于确定时内同步还是外同步,以及同步字符的个数。

(4)若8251A的工作方式寄存器内容为11111010,为使接收的波特率和发送的波特率分别为1200bit/s和4800bit/s,则此时RxC和TxC上分别接何种时钟信号频率?

答:RxC上接收时钟频率=120016Hz=19.2kHz

TxC上接发时钟频率=480016Hz=76.8kHz

4.设 8255A 的端口 A 和 B 均工作与方式 1,端口 A 输出,端口 B 和 C 为输入,端口 A 地址为 0060H(接口连续编址)。

(1)写出工作方式控制字。

0AFH

(2)编写 8255A 的初始化程序。

MOV DX,0063 H

MOV AL,0AFH

OUT DX,AL

(3)若要用置位/复位方式将 PC2 置为 1,PC7 清 0,试写出相应程序。

MOV DX,0063H

MOV AL,05H

OUT DX,AL

MOV AL,0EH

OUT DX,AL

5.用8255A作为打印机接口,如图9-33所示。当8255A向打印机送出一个负脉冲作为选通信号() 时,端口A的字符数据就送往打印机。当打印机的应答信号BUSY为0时,表示打印机不忙,可以发送数据到打印机。若8255A的端口地址为60H~63H,需打印的数据存放在以1000H数据为首地址的内存RAM中,数据长度为200,试编写向打印机发送数据的程序。

MOV BX,1000HMOV CX,200MOV AL,10000001BOUT 63H,AL

LOP: IN AL,62H

TEST AL,80H

JNZ LOP

MOV AL,[BX]

OUT 60H,AL

MOV AL,01H

OUT 63H,AL

MOV AL,00H

OUT 63H,AL

MOV AL,01H

OUT 63H,AL

INC BX

LOOP LOP

6.设8251A的控制口地址为0C2H,数据口地址为0C0H,按下列要求对8251A进行初始化。

(1)要求工作于异步方式,波特率系数为16,奇校验,8位数据位,1位停止位。

(2)允许接收、允许发送、全部错误标志复位。

(3)查询8251A的状态字,当接收准备就绪时,则从8251A输入数据,否则等待。

解:初始化程序如下

MOV DX,0C2H ;控制口地址

MOV AL,01011110B ;要求(1)

OUT DX,AL

MOV AL,00010101B ;要求(2)

OUT DX,AL

WAIT: IN AL,DX ;判断接收是否准备就绪

TEST AL,02H

JZ WAIT

MOV DX,0C0H

IN AL,DX

7.若8251A的地址为30H和31H,收发时钟(RxC,TxC)频率为38.4kHz,与引脚相连,要求波特率为2400,每帧字符的数据位数为7,停止位数为1,试编写出偶校验的半双工异步通讯的处于发送状态的初始化程序。

解:收发时钟频率为38.4kHz,波特率为2400bit/s,故波特率因子为38400/2400=16。

XOR AX,AX

MOV DX,31H

OUT DX,AL

OUT DX,AL

OUT DX,AL

MOV AL,40H

OUT DX,AL

MOV AL,01111010B

OUT DX,AL

MOV AL,00110101B

OUT DX,AL

第10章 练习题

3.问答题

(1)A/D和D/A转换器在微型计算机应用中起到什么作用?各有哪些性能指标?

答:D/A转换器是将数字量转换成模拟量的器件。主要性能指标:分辨率、转换精度、建立时间、线性误差、温度系数。

A/D转换器是将模拟量转换为数字量的器件。主要性能指标:分辨率、转换精度、转换时间、量程、温度参数。

(2)A/D和D/A转换器与CPU连接时应考虑哪几个方面?

答:D/A转换器与CPU接口时,应考虑两个方面:1)数字量的输入;2)输出电路。

A/D转换器与CPU接口时,应考虑四个方面:1)启动转换;2)多通道模拟量选择;3)数字量输出线的连接;4)转换结果的读取。

(3)DAC0832转换器有哪几种工作方式?每种工作方式如何实现?

答:DAC0832提供三种工作方式:直通工作方式、单缓冲工作方式、双缓冲工作方式。

直通工作方式的实现:、、和引脚直接接数字地,ILE引脚为高电平。

单缓冲工作方式的实现:使输入寄存器或DAC寄存器中的任意一个工作在直通状态,另一个工作在受控锁存状态,只执行一次写操作。

双缓冲工作方式的实现:CPU对DAC0832进行两次写操作。

(4)ADC的转换结果信号起什么作用?如何使用该信号读取转换结果?

答:ADC的转换结果信号用于判断转换是否结束,如果转换结束,则可读取转换结果。

判断转换结束并读取转换结果的方式有三种:定时读取、程序查询、中断方式。

4.设一个8253控制端口的地址为143H,三个计数器的端口地址分别为140H、141H和142H,要求将8253计数器0设置为方式0,计数初值为3000H;计数器1设置为方式2,计数初值为H;计数器2设置为方式4,计数初值为4030H。试编出相应的初始化程序。

解:MOV DX,143H

MOV AL,00110000B

OUT DX,AL

MOV DX,140H

MOV AL,0

OUT DX,AL

MOV AL,30H

OUT DX,AL

MOV DX,143H

MOV AL,01110100B

OUT DX,AL

MOV DX,141H

MOV AL,10H

OUT DX,AL

MOV AL,20H

OUT DX,AL

MOV DX,143H

MOV AL,10111001B

OUT DX,AL

MOV DX,142H

MOV AL,30H

OUT DX,AL

MOV AL,40H

OUT DX,AL

5.设8253时钟频率CLK为1MHz,其端口地址同题4,利用8253计数器0软件产生一次性中断,要求在送完计数初值后经过20ms产生一次中断,试编写初始化程序。

解:计数器0工作在方式0,按二进制计数,计数初值=20000/1=20000=4E20H。

MOV DX,143H

MOV AL,00110000B

OUT DX,AL

MOV DX,140H

MOV AL,20H

OUT DX,AL

MOV AL,4EH

OUT DX,AL

6.在某微机控制系统中。8251A作为CPU的全双工异步串行通信接口,采用中断方式工作,波特率因子为64,字符长度为7,偶校验,1位停止位,发送和接收数据的波特率均为2400bit/s。8253的计数器2为8251A提供发送、接收时钟TxC和RxC,CLK输入信号为8MHz。已知8251A的端口地址为0C0H和0C1H,8253的端口地址为330H~333H。请编写8251A和8253的初始化程序段。

解:波特率为2400bit/s,波特率因子为64,故收发时钟频率=2400*64=153.6kHz,即周期为6.5μs。时钟为8MHz,即周期为0.125μs,故计数初值=6.5/0.125=52,采用方式3。

8251A的初始化程序段。

XOR AX,AX

MOV DX,0C1H

OUT DX,AL

OUT DX,AL

OUT DX,AL

MOV AL,40H

OUT DX,AL

MOV AL,01111011B

OUT DX,AL

MOV AL,00010101B

OUT DX,AL

8253的初始化程序段

MOV AL,00010110B

MOV DX,333H

OUT DX,AL

MOV AL,52

MOV DX,330H

OUT DX,AL

7.应用8255A和AD574设计一个A/D转换的接口电路,设8255A的端口地址为060H和063H,要求采用查询方式连续采样100次,并将12位采样结果保存到BUFF开始的内存缓冲区,请画出硬件连线示意图并编程实现。

解:AD574进行12位转换时,可以通过并行接口电路8255A与CPU进行连接,如下图所示。12位数字输出端分别与8255A的PA口和PB口的低4位相连。CE、、信号与8255A的PC7~PC5相连,STS信号与8255A的PC0相连,当转换结束时发出低电平信号。

XORSI,SIMOV CX,100MOVAL,10010011B ;设定8255A的A、B口工作于方式0输入OUT63H,AL ;C口高4位输入,低4位输出

NEXT:MOV AL,00001010B ;使为低电平

OUT 63H,AL

MOV AL,00001100B ;使为低电平

OUT 63H,AL

MOV AL,00001111B ;使CE为高电平,启动A/D转换

OUT 63H,AL

LOP:IN AL,62H

TEST AL,01H

JNZ LOP

MOV AL,00001011B ;使为高电平,准备读A/D转换结果

OUT 63H,AL

NOP

NOP

IN AL,61H

AND AL,0FH

MOV BX,AL

IN AL,60H

MOV BL,AL

MOV BUFF[SI],BX

INC SI

INC SI

LOOP NEXT

MOV AL,00001110B

OUT 63H,AL

MOV AL,0000110DB

OUT 63H,AL

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。