微机

更新时间:2024-06-22 00:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、程序运行题

1、下列程序段要求在 100 个带符号数中找出其中最大的一个数。设该数据区首址的偏移

地址=2000H,最后要求将最大值存入偏移地址=2100H 的单元中,试填空完成该程序。 MOV BX, 2000H

MOV AX, [BX]

MOV CX, 100 LOP1: INC BX

CMP AL, [BX] JNG LOP2

MOV AL, [BX] LOP2: LOOP LOP1

MOV [2100H] ,AL 2、 写出执行结果:

MOV AL, 05H MOV BX, 1050H XOR AX, AX ADD AL, BL

执行结果; AX= 0050H , CF=____0____。 MOV BL, 15H MOV AL, BL MOV CL, 2 SAL AL,CL ADD AL,BL

执行结果: AL= 69H ,CF= 0 。 3、源程序如下:

MOV AX, SEG TABLE ;TABLE为表头 MOV ES, AX

MOV DI, OFFSET TABLE MOV AL, ‘0’ MOV CX, 100 CLD

REPNE SCASB

问:1) 该段程序完成什么功能?

2) 该段程序执行完毕之后,ZF和CX有几种可能的数值?各代表什么含义? 从目的串中查找是否包含字符 ‘0’,若找到则停止,否则继续重复搜索。 ZF=1, 说明已找到字符; ZF=0, 说明未找到字符

CX=0,说明中途已找到字符退出 ;CX=0,且ZF=0说明串中无字符 ‘0’ 4、用一条指令完成:将CX中间8位取反,其余位不变。 XOR CX,0FF0H

5、分析以下程序段 MOV DX , 1234H MOV BX , 5678H MOV AL , BL ADD AL , DL

1

DAA

MOV CL , AL MOV AL , BH ADC AL , DH DAA

MOV CH , AL

(1)简要说明上述程序段的主要功能;

(2)当程序执行后, CX寄存器的内容是多少? (1) 对两个组合BCD数相加,和放在CX中 (2) 程序执行完后,CX=6912H

二、简答题

1、CPU与外设之间的数据传送方式

在微型计算机系统中,CPU与外设之间的数据传送方式主要有程序传送方式、中断传送方式和直接存储器存取(DMA)传送方式;

2、引起中断的原因或发出中断请求的设备称为中断源 (1)外部设备请求中断。(2)故障强迫中断。(3)实时时钟请求中断。(4)数据通道中断。(5)程序自愿中断。

3、DAC:数字模拟转换器。分辨率为10v/1024≈9.77mv 4、CPU通过并行接口与A/D转换器连接时,CPU是否可以在任何时间读入变换后的数据?为什么?

不能随时读取变换后的数据。因为从模拟信号转换成数字信号需要一段时间,在尚未变换完的情况下就试图读入数据,会得到错误的结果。 5、A/D转换器:是模/数转换通道的核心环节,其功能是将模拟输入电信号转换成数字量(二进制数或BCD码等),以便由计算机读取、分析处理,并依据它发出对生产过程的控制信号

6、中断响应:中断源向CPU发出中断请求,若优先级别最高,CPU在满足一定的条件下,可以中断当前程序的运行,保护好被中断的主程序的断点及现场信息。然后,根据中断源提供的信息,找到中断服务子程序的入口地址,转去执行新的程序段。

7、在A/D转换过程中,采样保持电路有什么作用?在什么情况下可以不使用采样保持电路?

由于A/D转换需要一定的时间,因此需有采样保持电路接受输入信号并将信号保持稳定。如果输入信号变化缓慢,可以不使用采样保持电路 8、比较8086和8088在结构上的的异同 共同点:(1)内部均由EU、BIU组成,结构基本相同。(2)寄存器等功能部件均为16位(3)内部数据通路为16位。(4)指令系统相同。

不同点:第一、8086的指令队列可以容纳6个字节,每个总线周期在存储器中取出2个字节指令代码填入队列。而8088只能容纳4个字节,且每个总线周期只能取出1个字节指令代码。第二、8086外部数据总线宽度为16位,8088外部数据总线宽度只有8位。注意:8086和8088外部数据总线的宽度不同将导致扩展主存储器及输入/输出接口时系统地址线和数据线连接方式的不同。 第三、其他不同的引脚定义:(1)AD15~AD0,在8086中为地址/数据复用,而在8088中AD15~AD8改为A15~A8只作地址线用;(2)34、28号引脚定义不同。

9、已有AX=E896H,BX=3976H,若执行ADD BX,AX指令,则结果BX,AX,标志位

2

CF,OF,ZF各为何值?

BX=220CH AX=E896H CF=1 OF=0 ZF=0 10、有变量定义的伪指令如下:

NUMS DW 18 DUP(4 DUP(5),23) VAR DB 'HOW ARE YOU !', 0DH, 0AH

试问:NUMS、VAR变量各分配了多少存储字节?

NUMS分配了180个字节 (3分) VAR分配了15个字节

11、已有MOV AL,INF[BP+SI]与MOV AL,ES:INF[BP+SI]两条指令,试问:其源操作数采用何种寻址方式?是字或是字节操作?两条指令有何区别? 源操作采用基址+变址寻址方式 (2分) 是字节操作 MOV AL,INF[BP+SI]—访问的是堆栈段

MOV AL,ES:INF[BP+SI]—访问的是附加段,实现了段超越

三、编程题

1、在数据段中,从2000H 单元开始存放了 50 个 8 位字符,试编程序,求出其中’A’的个数,并将结果送入NUM 单元中。 STACK SEGMENT STACK DB 20 DUP(?) STACK ENDS DATA SEGMENT NUM DB ? DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV SI,2000H MOV CX,50 MOV BL,00H A1: MOV AL,[SI]

CMP AL,’A’; CMP AL,41H JNZ A2 INC BL A2: INC SI LOOP A1 MOV NUM,BL INT 03H CODE ENDS END START

2、8 位D/A 转换器DAC0832 的输出电压范围为0~5V,端口地址为4321H,试编程实现产生0~3V 锯齿波的程序

MOV DX, 4321H ;端口地址送DX A1: MOV AL, 00H ;准备起始输出数据 LOOP: OUT DX, AL CALL DALLY

3

INC AL

CMP AL,99H JNC A1 JMP LOOP

DALLY: MOV CX,0500H A2: LOOP A2 RET

3、ADC0809采用单缓冲结构,端口号为1000H,试编写程序实现方波 OK:MOV DX,1000H MOV AL,00H OUT DX,AL CALL DELAY MOV AL,0FFH OUT DX,AL CALL DELAY JMP OK

DELAY PROC NEAR MOV BX,0AH

OK2:MOV CX,0FFFFH OK1:DEC CX JNZ OK1 DEC BX JNZ OK2 RET

DELAY ENDP

4、编写程序段,实现从数据段以BUF为首地址的字符串中寻找‘A’字符,将它们的偏移地址依次存放于ADDS为首地址的存储区内,并统计‘A’的个数,存放于NUM单元中,该字符串以‘$’结尾(‘$’=24H)。BUF DB ‘…………’,‘$’ COUNT EQU $-BUF

ADDS DW COUNT DUP(?) NUM DW ? …… LEA BX, BUF LEA SI, ADDS MOV CX, 0

L1: MOV AL, [BX]

CMP AL, 41H ;‘A’ JNZ L2

MOV [SI], BX INC CX

ADD SI, 2 L2: INC BX

CMP AL, 24H ;‘$’ JNZ L1

4

MOV NUM, CX HLT

5、在数据段DS中的一个数据块STRING由大小写英文字母、数字、其他符号组成,长度为COUNT。将其传送到同一段中STRING1为首地址的内存区,并将英文中大写字母转换成小写英文字母,其余不变。 LEA SI, STRING LEA DI, STRING1 MOV CX, COUNT NEXT: MOV AL, [SI] CMP AL, 41H JB GO CMP AL, 5AH JA GO ADD AL, 20H GO: MOV [DI], AL INC SI INC DI LOOP NEXT

6、根据从外设端口71H输入的内容M,判断M的取值情况,并分别处理如下:若M<10,则向73H端口送0H;若M>20,则向73H端口送0FFH;若10≤M≤20,向73H端口送88H。要求编写程序片段并画出流程框图。 开始 START:IN AL,71H

CLC CMP AL,10

从71H端口读数据 JC LP1 CMP AL,20

清除CF JC LP2 MOV BL,0FFH

JMP LP3

AL<10? LP1: MOV BL,00 JMP LP3 NLP2: MOV BL,80H

AL>20? LP3: MOV AL,BL

OUT 73H,AL

N

BL=88H

向73H口输出

四、综合题

1、下图为 SRAM6116 芯片与 8088 系统总线的连接图 (1) 写出6116 芯片的存储容量;

(2) 分析每片6116 所占的内存地址范围。 (1)6116 芯片的存储容量是2k*8bit

5

YBL=00H YBL=0FFH

(2)第一片6116 的内存地址范围是F1000H~F17FFH 第二片 6116 的内存地址范围是F1800H~F1FFFH

2、用8255 编程实现开关K0—K7 一一对应控制发光二极管L0—L7的亮灭,已知 A口的地址为 0380H。

(1)写出8255 其余端口的地址; (2)画出8255 的连接图。 (3)写出8255 的初始化程序。 1)0381H 0382H 0383H 3)MOV DX, 0383H MOV AL, 90H OUT DX, AL A: MOV DX, 0380H IN AL, DX MOV DX, 0381H OUT DX, AL JMP A HLT

3、用8253 控制发光二极管亮 1S,灭1S。已知时钟频率为 2MHz,计数器2 的端口地址为ACF2H。

(1)写出8253 计数器0、1 和控制口的地址; (2)画出8253 的连接图; (3)写出8253 的初始化程序。

(1) 计数器0:ACF0H 计数器 1:ACF1H 控制口:ACF3H (3)CODE SEGMENT ASSUME CS:CODE

START:MOV DX, 0ACF3H MOV AL, 00110110B OUT DX, AL

MOV DX, 0ACF0H MOV AX, 20000 OUT DX, AL MOV AL,AH OUT DX, AL

MOV DX, 0ACF3H MOV AL, 01010110B OUT DX, AL

MOV DX, 0ACF1H MOV AL, 200 OUT DX, AL CODE ENDS END START

6

4、用8253 实现每隔 1s 产生一个负脉冲,已知 8253 的时钟频率为2MHZ。 (1)写出8253 的端口地址;(2)编写8253 的初始化程序。 (1) 8253 的端口地址为DF80H,DF81H,DF82H,DF83H

(2) 1/2MHz=0.5us 1s/0.5us=2000000>65535,应采用两个计数器级联,可定义0# 计数器工作在方式3 (方波发生器),计数初值为20000,1#计数器工作在方式 2 (频率发生 器),计数初值为 100。 MOV DX,0DF83H MOV AL,00110110B OUT DX,AL

MOV AL,01010100B OUT DX,AL MOV DX,0DF80H MOV AX,20000 OUT DX,AL MOV AH,AL OUT DX,AL

MOV DX,0DF81H MOV AL,100 OUT DX,AL

5、用8253-5通道1作为DRAM刷新定时器,动态存储器要求在2ms内对全部128行存储单元刷新一遍,假定计数用的时钟频率为2MHz,问该通道应工作在什么方式?请写出控制字和计数值(用16进制数表示) 应工作在方式2,即频率发生器方式。 控制字:54H。

计数值:汁数周期为0.5μs,两行刷新的最大时间问隔为2ms/128=15.6μs,15.6/0.5=31.2,可取计数值31,符合时间间隔在15.6μs以内的要求。

6、AD574与8位数据总线的接口如图示。设定AD574占有的I/O地址为200H和202H,AD574引脚A0为转换数据长度选择,在启动时,A0=1启动8位,A0=0启动12位转换,在读数时,当12/=0时,则A0=0读高8位,A0=1读低4位。请写出:①启动转换时CE,,R/的取值(0或1)②启动12位转换的指令序列③读取转换值的指令序列(12位结果放在Ax中) ①CE=1,=0,R/=0 ②MOV DX,200H

OUT DX,AL;AL内容无意义 ③MOV DX,200H IN AL,DX MOV AH,AL MOV DX,202H IN AL,DX

7、阅读下列程序并回答问题: DSEG SEGMENT

ARRAY DW 100 DUP(?) DSEG ENDS

CSEG SEGMENT MAIN PROC FAR

7

ASSUME CS:CSEG,DS:DSEG,ES:DSEG START:

MOV AX,DSEG MOV DS,AX MOV ES,AX MOV CX,100 MOV AX,2020H LEA D1,ARRAY CLD

REP STOSW MOV AX,4C00H INT 21H MAIN ENDP CSEG ENDS END START (1)该程序完成什么功能?

(2)程序执行后,DS:0000字节单元中的内容是什么?ES:0000字节单元中的内容又是什么? 1.将ARRAY数组中的单元都填人空格符(20H)。

2.(DS:0)=20H,(ES:0)=20H

8、设计并画出一个8X8小键盘及接口电路,用文字叙述方式说明键盘及接口电路的工作原理及行扫描法识别键按下的工作过程。(规定用一片8255A作接口电路,其他元器件自选) 1.电路工作原理:

(1)8255A的口A设置为输出状态,PAO~PA7接行线ROW0一ROW7。 (2)8255A的口B设置为输入状态,PB0一PB7接列线CO~C7。 (3)电阻R为列线提拉电阻,保证列线静态电位为高电平。

(4)行列线交点接一开关,开关按下时将交点上行线逻辑状态送到该交点的列线上。 2.行扫描法识别键按下 (1)扫描程序首先让8255A的口A输出扫描码(初值为lllllll0B): (2)扫描程序渎人8255A的B口连接的列线状态,判断是否有为逻辑。的列线;

(3)若B口读入有为。的位,说明本行有键按下,经移位检测出为。的列线序号,与扫描

码为。位所对应的行线序号共同形成键号,转相应键处理程序;

(4)若B口读人没有为。的位,说明本行无键按下,修改扫描码(第二次为llllll01B); (5)转向(1),进行下一次扫描,如此循环直至发现有键按下为止。

假设(DS)=2000H,(ES)=3000H,(SS)=4000H,(SP)=100H,(BX)=200H,(SI)=1,

(D1)=2,(BP)=256,字变量ARRAY偏移地址为0050H,(20250H)=1234H,(40100H)=00AOH,(40102H)=2200H.填空回答下列问题。

(1)MOV Ax,[BP][DI] ;源操作数物理地址= 40102 H 指令执行后(AX)= 2200 H (2)POP Ax ;源操作数物理地址=40100 H 指令执行后(AX)=00AO H (3)PUSH Es:[BX] ;源操作数有效地址=200 H

(4)LEA DI,ARRAY ;源字段的寻址方式是 直接寻址方式 指令执行后(DI)= 0050 H (5)JMP [BX] ;指令执行后(IP)= 200 H

8

(6)ADD AL,BYTE PTR ARRAY[BX] ;源字段的寻址方式是 寄存器相对寻址方式 指令执行后(AL)= 34 H 9、分析下列程序,回答问题。

MOV AH,1 INT 21H CMP AL,‘Y’ JE NO CMP AL,‘y’ JE NO

MOV DL,0 JMP EXIT NO:MOV DL,1

EXIT:MOV AH,4CH INT 21H …

.画出此段程序流程图。 .这段程序完成什么功能?

从键盘上输入一个字符且与‘Y’或‘y’相比较,若相同则DL←1,不相同DL←0。 10、下图是一个存储器系统,地址总线共有20位,数据总线8位,试分析电路,回答问题。 (1).单片EPROM和单片SRAM的容量各为多少? (2)74LS138的作用是什么?

(3)EPROM2的地址范围是多少?

(1)EPROM单片容量为4K×8位,SRAM单片容量为2K×8位。 (2)74LS138的作用是译码。

(3)ERROM2的地址范围为:F9000H~F9FFFH。

11、设外部有一脉冲信号源PLUS,要求用8253—5的计数器0对该信号源连续计数,当计数器计为0时向CPU发出中断请求。

1.画出8253-5的CLK0、GATE0和OUT0的信号连接图。

2.若该芯片的端口地址为40H~43H,计数初值为1234H,写出该计数器工作在方式2按二进制计数的初始化程序。

3.若计数初值为12345H,在上述基础上增加计数器1如何连接以实现计数。 2.MOV AL,34H OUT 43H,AL MOV AL,34H OUT 40H,AL MOV AL,12H OUT 40H,AL

3.PLUS作CLK0的输入,OUT0的输出作CLK1的输入信号。OUT1的输出作CPU的请求信号。用两个计数器串联计数实现20位二进制的计数。

12、要求8253的计数通道1每20ms定时向CPU发出一次中断请求,以便进行有关的I/O处理;同时要求8255的PA0输出控制一个LED,要求初始化结束LED熄灭,PB0、PC0为输入,请编写8253和8255的初始化程序(注:无关位清0)。 8255初始化

9

CPU D7-0 RD WR A1 A0

译码器

+5V PA0 MOV AL,10000011B(83H)

OUT 87H,AL

+5V

MOV AL,00H OUT 84H,AL

PB0 8253初始化

MOV AL,01110100B(74H) OUT 83H,AL MOV AX,20000 OUT 81H,AL

PC0 MOV AL,AH OUT 81H,AL

13、某微机系统提供以下信号:地址线A0~A19,数据线D0~D7,控制线WR、RD。。试用两片静态RAM 芯片6264BL(8K?8bits),扩充为16K?8bits的存贮器系统。(10分) (1)单片存储器寻址需要多少根地址线?并在图中虚线框中写出地址下标。 (2)假如扩充的存贮器空间为10000H开始的连续存储区,画出电路连线图。 (3)写出各个SRAM芯片的所在地址空间。 片内需要13根地址线,即A12~A0 电路连线如下:

CPU的数据总线D7~D0、读写控制线、分别与两片存储器芯片的数据线D7~D0、读写控制线、直接相连;

CPU的地址线A12~A0直接与两片存储器芯片的A12~A0相连; A19与38译码器的高电平有效的使能端相连,A18与38译码器的一个低电平有效的使能端相连,A17、A16通过或门和38译码器的另一个低电平有效的使能端相连; A15、A14、A13分别与38译码器的地址控制端C、B、A相连;

38译码器的输出端与0#存储器芯片的相连,38译码器的输出端与1#存储器芯片的相连。 0# 地址范围:10000H~11FFFH 1# 地址范围:12000H~13FFFH

14、设8255的端口地址为200H~203H。

(1)要求PA口方式1,输入;PB口方式0输出;PC7~PC6为输入;PC1~PC0为输出。试写出8255的初始化程序。

(2)程序要求当PC7=0时置位PC1,而当PC6=1时复位PC0,试编制相应的程序 (1) MOV DX, 203H MOV AL, 10111000B

OUT DX, AL (2) MOV DX, 202H IN AL, DX MOV AH, AL TEST AL, 80H

JNZ NEXT1 MOV DX, 203H

MOV AL, 00000011B ;对PC1置位 OUT DX, AL NEXT1:MOV AL, AH

10

TEST AL, 40H JZ NEXT2

MOV AL, 00000000B ; 对PC0复位 MOV DX, 203H OUT DX, AL NEXT2:………

15、利用8255进行接口设计,使之完成以下功能:C口连接一指示灯,当A口输入的开关信号和B口输入的开关信号相同时,指示灯点亮;不相同时指示灯熄灭。要求: (1) A口和B口分别只连接一个开关即可。

(2) 在下图中画出必要的连接线,不要求地址译码。 (3) 编写程序片段实现以上功能 程序片断如下:设地址为280H~283H MOV DX, 283H MOV AL, 92H OUT DX, AL MOV DX, 280H IN AL, DX MOV AH, AL MOV DX, 281H IN AL, DX CMP AH, AL

JZ OK MOV DX, 283H MOV AL, 0 OUT DX, AL

JMP L1 OK: MOV DX, 283H MOV AL, 1

OUT DX, AL L1: …………

11

TEST AL, 40H JZ NEXT2

MOV AL, 00000000B ; 对PC0复位 MOV DX, 203H OUT DX, AL NEXT2:………

15、利用8255进行接口设计,使之完成以下功能:C口连接一指示灯,当A口输入的开关信号和B口输入的开关信号相同时,指示灯点亮;不相同时指示灯熄灭。要求: (1) A口和B口分别只连接一个开关即可。

(2) 在下图中画出必要的连接线,不要求地址译码。 (3) 编写程序片段实现以上功能 程序片断如下:设地址为280H~283H MOV DX, 283H MOV AL, 92H OUT DX, AL MOV DX, 280H IN AL, DX MOV AH, AL MOV DX, 281H IN AL, DX CMP AH, AL

JZ OK MOV DX, 283H MOV AL, 0 OUT DX, AL

JMP L1 OK: MOV DX, 283H MOV AL, 1

OUT DX, AL L1: …………

11

本文来源:https://www.bwwdw.com/article/ujh3.html

Top