一、单项选择题 (从下列各题四个备选答案中选出一个正确答案,并将其代号写在答题纸相应位置处。答案选错或未选者,该题不得分。)
1.属于数据寄存器组的寄存器是 ( C ) 。
A.AX,BX,CX,DS B.SP,DX,BP,IP C.AX,BX,CX,DX D.AL,DI,SI,AH
2.微型计算机的ALU部件是包含在 ( D ) 之中。
A.存贮器 B.I/O接口 C.I/O设备 D.CPU 3.微型计算机的性能主要由( B )来决定。
A.价钱 B.CPU C.控制器 D.其它
4.8086/8088系统中,对存贮器进行写操作时,CPU输出控制信号有效的是( A ) 。 A.W/ =1, =0 B. =1
C.M/ =0, =0 D. =0 5.在8086/8088微机系统中,将AL内容送到I/O接口中,使用的指令是 ( D )。 A.IN AL,端口地址 B.MOV AL,端口地址 C.OUT AL,端口地址 D.OUT 端口地址,AL
6.若执行指令TESTAL,O1H 后,标志位ZF=1则AL中的内容必定是( A )。 A.偶数 B.奇数 C.正数 D.负数
7.通常,外设接口中的数据端口、状态端口和控制端口( C )。 A.都是双向端口
B.分别为双向端口、输出端口和输入端口 C.分别为双向端口、输入端口和输出端口 D.分别为输入端口、输入端口和输出端口 8.十进制数78的8421BCD码表示为( A )
A.01111000B B.10000111B C.01001110B D.01001000B 9.ASCII码42H所代表的字符应为 C
A. '5' B. 'A' C. 'B' D. 'G' 10.已知语句为:ORG 0010H
VAL DW 1,2,$+2,3,4,5
则指令“MOV AX,VAL+4”执行后,AX的值为( D )。 A. 0004H B.0005H C. 0012H D.0016H 11.下列指令中,执行速度最快的是( C )。
A. MOV AX,100 B. MOV AX,[BX] C. MOV AX,BX D. MOV AX,[BX+BP]
12.设AL=0AH,下列指令执行后,能使AL=05H的指令是( D )。 A. NOT AL B. AND AL,0FH C. OR AL,0FH D. XOR AL,0FH
13.已知SP=2110H,执行指令“POP AX”后,SP寄存器的值为( D )。 A. 210EH B. 210FH C. 2111H D. 2112H
14.已知AL,BL中为无符号数, 若使AL≤BL时转到标号AGAIN, 哪个程序段不能实现此功能 ( D )
【第 1 页 共 27 页】
A. CMP AL, BL B.CMP AL, BL JC AGAIN JBE AGAIN
C.CMP BL, AL D.CMP AL, BL JNC AGAIN JNB AGAIN
15.下列指令中不会改变指令指示器IP的是( A )
A.MOV B.JMP C.CALL D.RET
16.使用移位指令,把寄存器的最高位移入CF,并在最低位补为0时使用( D )。 A.ROL B.SAR C.SHR D.SAL 17.已知下列程序段
DATA DW 04H,05H,06H ??
LEA BX,DATA MOV AX,3 ADD BX,AX MOV AX,[BX] ??
当程序执行完MOV AX,[BX]指令后,AX=( C )。 A.0400H B.0500H C.0600H D.8000H 18.8086/8088指令OUT 80H,AL表示( C )
A.将80H送给AL B.将80H端口的内容送给AL
C.将AL的内容送给80H端口 D.将AL内容送给80H内存单元
19.若8255 A口工作于方式1输出,B口工作于方式0输入,C口工作于方式0输入,则方式控制字应为( B )。
A.0A9H B.0ABH C.0A3H D.1BH
20.某存贮器的容量为4K字节,则CPU至少应提供( C )根地址线才能对所有存贮单元进行寻址。
A.14 B.13 C.12 D.11 21.与十进制数58.75等值的十六进制数是( B ) 。
A.A3.CH B.3A.CH C.3A.23H D.C.3AH
22.在计算机内部,一切信息的存取、处理和传送都是以( D )形式进行的。 A.EBCDIC码 B.ASCII码 C.十六进制编码 D.二进制编码 23.下列语句中有语法错误的语句是( A )。 A. MOV AX,[ SI][ DI] B.ADD AX,[ BX] C. CMP [ BX] ,AX D.LEA SI,20H[ BX] 24.下列四条指令中,错误的是( B )。
A.SHL AL,1 B.MOV AH,BX C. SHR AL,CL D. MOV AL,20H
25.8086CPU可扩展IO端口地址的个数最多为( A )。 A.1K B.4K C.8K D.64K 26.在微机中负数常采用哪种机器数表示?( D )
【第 2 页 共 27 页】
A.原码 B.BCD码 C.反码 D.补码
27.对于有20条地址线的CPU,其最大可直接寻址空间是( A )。 A.1MB B.32KB C.256KB D.64KB
28.“ADC CX,[BX][SI]”指令源操作数的寻址方式是( C )。 A.寄存器寻址 B.寄存器间接寻址 C.基址+变址寻址 D.直接寻址
29.在计算机内部,一切信息的存取、处理和传送都是以 ( D )形式进行的。 A.EBCDIC码 B.ASCII码 C.十六进制编码 D.二进制编码 30.BP用作基地址寄存器时,隐含使用的段寄存器为( D )。 A. CS B. DS C. ES D. SS
31. DOS系统功能(INT 21H)2号调用要求将待显示字符的ASCII码送人 ( B )。A.DH寄存器 B.DL寄存器 C. AL寄存器 D.AH寄存器 32.设某一ROM芯片的地址范围为0000H~0FFFH,则该ROM芯片可寻址单元有( C A.1K个 B.2K个 C.4K个 D.8K个 33.计算机硬件中最核心的部件是( C )。
A.运算器 B.主存储器 C.CPU D.输入/输出设备 34.微机的性能主要取决于( A )。
A.CPU B.主存储器 C.硬盘 D.显示器 35.计算机中带符号数的表示通常采用( C )。
A.原码 B.反码 C.补码 D.BCD码 36.采用补码表示的8位二进制数真值范围是( C )。
A.-127~+127 B.-1 27~+128 C.-128~+127 D.-128~+128
37.大写字母“B”的ASCII码是( B )。
A.41H B.42H C.61H D.62H
38.某数在计算机中用压缩BCD码表示为10010011,其真值为( C )。 A.10010011B B.93H C.93 D.147
39. 若要将8255A的端口C的PC6位置为1,则应选择的置位/复位控制字为 ( A ) A.ODH B.7BH C.0CH D.OBH
40. 某内存单元的段基址为3200H偏移地址为8000H,则这个单元的物理地址应为( B )
A.32800H B.3A000H C.32000H D.40000H
41.主机与设备传送数据时,采用( A ),主机与设备是串行工作的。 A.程序查询方式; B.中断方式; C.DMA方式; D.通道。 42.与MOV BX,OFFSET VAR指令完全等效的指令是( D )。 A.MOV BX,VAR B.LDS BX,VAR C.LES BX,VAR D.LEA BX,VAR 43.与十进制数56等值的二进制数是( A )。
A.111000 B.111001 C.101111 D.110110 44.二进制数1101.01转换成十进制数是 ( C ) 。 A.17.256 B.13.5 C.13.25 D.17.5
45.算式65H-3EH的运算结果是否有溢出,结果的真值为( C )。
【第 3 页 共 27 页】
。 ) A.有、39 B.有、27 C.无、39 D.无、27 46.CPU执行算术运算指令不会影响的标志位是( D )
A.溢出标志 B.符号标志 C.零标志 D.方向标志 47.设DF=0每次执行MOVSB指令后,SI和DI均要分别( C )。 A. 减2 B. 减1 C. 加1 D. 加2 48.下列关于74LS373的说法,正确的是( B )。 A. 74LS373是一种3—8地址译码器 B. 74LS373是一种8D锁存器 C. 74LS373主要用于数据缓冲 D. 74LS373主要用于地址缓冲
49.8086的存储器是分段的,定义一个段的命令是( B )。
A. MACRO和ENDM B. SEGMENT和ENDS C. PROC和ENDP D. NAME和END
50.在使用重复控制指令时,用作重复次数计数器的寄存器是( C )。 A. AX B. BX C. CX D. DX
51.编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有( D )。 A. CMP B.SUB C.AND D.MOV 52.下面指令执行后,改变AL寄存器内容的指令是( D )。 A.TEST AL,02H B.OR AL,AL C.CMP AL,B D.AND AL,BL 53.设DH=10H,执行NEG DH指令后,正确的结果是( B )。 A.DH=10H CF=1 B.DH=0F0H CF=0 C.DH=10H CF=0 D.DH=0F0H CF=1
54.设DS=8225H,DI=3942H,指令NEG BYTE PTR[DI]操作数的物理地址是( A )。 A.85B92H B.86192H C.BB690H D.12169H 55.在机器数( B )中,零的表示形式是唯一的。
A.原码 B.补码 C.移码 D.反码 56.某DRAM芯片,其存储容量为512K×8位,该芯片的地址线和数据线数目为( D ) 。 A.8,512 B.512,8 C.18,8 D.19,8 57.下述说法中( B )是正确的。
A.EPROM是可改写的,因而也是随机存储器的一种; B.EPROM是可改写的,但它不能用作为随机存储器用; C.EPROM只能改写一次,故不能作为随机存储器用; D.EPROM是可改写的,但它能用作为随机存储器用。
58.设AL的内容为39H,执行指令“TEST AL,05H”后,AL的内容为( C ) A.31H B.35H C.39H D.3DH
59.设某一ROM芯片的地址范围为0000H~03FFH,则该ROM芯片可寻址单元有( A ) A.1K个 B.2K个 C.4K个 D.8K个 60.一个16×16点阵的汉字要占用( B )
【第 4 页 共 27 页】
A.24个字节 B.32个字节 C.48个字节 D.256个字节 61.计算机系统中内存容量大小取决于( B )
A.CPU数据总线的位数 B.CPU地址总线的位数
C.CPU控制总线的位数 D.CPU数据总线和地址总线的位数 62.下列伪指令中,可以用来定义字节变量的是( A )
A.DB B.DW C.DD D.DQ
63.设AL的内容为4BH,执行指令“TEST AL,05H”后,AL的内容为( B )
A.01H B.4BH C.4FH D.0BEH 64.设某一ROM芯片的地址范围为0000H~1FFFH,则该ROM芯片可寻址单元有( D )
A.1K个 B.2K个 C.4K个 D.8K个 65.8086按I/O指令寻址方式得到的地址是( D )
A.物理地址 B.有效地址 C.段内偏移量 D.I/O端口地址
66.设SP= 3000H,执行下列指令后,SP寄存器的值是 ( B ) POP BX PUSH AX
A.2FFEH B.3000H C.3002H D.3004H
67. 串操作指令中,目的操作数的段地址一定在____寄存器中。 ( D ) A.CS B.SS C.DS D.ES 68. 利用DOS功能调用,实现字符显示的程序段为 MOV AH,2
MOV DL,39H INT 21H
则屏幕显示的是 ( B )
A.39H B.9 C.3 D.39 69. 在工作过程中需要不断刷新的存储器是 ( B )
A.SRAM B.DRAM C.PROM D.NVRAM 70.对于8253某一通道,要获得最大计数值,其初值设置为 ( D ) A.FFH B.FFFFH C.01H D.OOOOH
二、填空题(请在每小题的空格中填上正确答案。错填、不填均无分)
1.若用1K×1位的RAM芯片组成16K×8位的存储器,需要 128 片芯片。其中在
CPU的地址线中有 10 根参与片内寻址,其余位用做芯片组选择信号。
2.在8086系统中,若要从存储器奇地址体中读1个字节数据,则存储器有关的控制信号和它们的有效逻辑电平信号:RD#= 0 ,WR#= 1 , M/IO#= 1 ,BHE#= 0 。 3.带符号数-86所表示的二进制补码为 10101010B 。
4.连续执行MOV DL,2AH 和SHR DL,1两条指令后,DL= 00010101 ,CF= 0 。 5.某微机系统的RAM容量为8K*8,若首地址为4800H,则最后一个单元的地址是 67FFH,若采用2K*4的芯片进行扩展,需要 8 片该芯片。 6.寄存器写指令MOV [SI],AX时,则CPU相应的外部管脚状态:WR#= 0 ,RD#= 1 ,M\\IO#= 1 。
【第 5 页 共 27 页】
7.已知 [X]补=10110101B,求X= -75 (结果用十进制表示)。
8.将两个8位二进制数00110101及10110110做“异或”操作后,寄存器FR的下面3个状态标志分别是:PF= 0 ,SF= 1 ,ZF= 0 。
9.在MOV [BX][SI],CX 指令中,目的操作数采用 基址+变址 寻址方式,源操作数采用 寄存器 寻址方式。 10.已知当前数据段位于存储器的B4000H到C3FFFH范围内,则段寄存器DS的内容为 B4000H 。
11.在80x86中, 逻辑 地址是由程序提供的地址; 物理 地址是内存单元的实际地址。 12.在MOV [BX],AL 指令中,目的操作数采用 寄存器间接 寻址方式,源操作数采用 寄存器 寻址方式。 13.某程序在当前数据段中存有两个数据字0ABCDH和1234H,它们对应的物理地址分别为3FF85H和40AFEH,若已知当前(DS)=3FB0H,则这两个数据的偏移地址分别为 0485H 和 0FFEH 。
14.I/O端口有 存储器的映像I/O寻址 和 I/O映像的I/O寻址 两种寻址方式。 15.在输入输出的接口电路中,常常要用 锁存器 和 缓冲器 解决I/O口与CPU之间的同步问题。
16.8086系统中的物理地址是由 20 根地址总线形成的。任何一个逻辑地址都由 段基址和 偏移地址 两部分构成,都是16位二进制数。
17.在某系统中,已知当前(SS)=2360H,(SP)=0800H,那么该堆栈段在存储器中的物理地址范围是 23600H~23E00H 。若往堆栈中存入20个字节数据,那么SP的内容为 07ECH 。 18.8086/8088构成的微机中,每个主存单元对应两种地址:_段基地址_和_偏移地址__。 19.微机系统I/O接口的两种编址方式是 统一编址 、 独立编址 ,8086 CPU采用的是 独立编址 。 20.微机的总线是传递信息的一组公用导线,分三组: 地址 总线, 数据 总线, 控
制 总线。
21.一般的I/O接口电路具有 数据寄存器、状态寄存器 、控制寄存器三类寄存器。 22.一般的I/O接口电路有数据寄存器,状态寄存器和控制寄存器三种,其中 数据端口 能对传送数据提供缓冲,隔离,寄存的作用 ; 状态寄存器 用来保存外设或接口的状态;控制寄存器 用来寄存CPU通过数据总线发来的命令。 23.8086CPU由 指令执行部件(EU,Execution Unit) 和 总线接口部件(BIU,Bus Interface Unit) 两部分组成。前者的主要功能是 执行指令 ,后者的主要功能是 形成访问存储器的物理地址 。
24. 8086CPU中的FR是一个16位的寄存器,由状态标志和 控制 标志两部分组成。 25.若用4K*1位的RAM芯片组成8K*8为的存储器,需要 16 片芯片,A19—A0地址线中 A11—A0 参与片内寻址。
26.8086微处理机在最小模式下,用引脚 M/IO# 来控制输出地址是访问内存还是访问I/O。
27.已知 [Y]补=01100111B,求Y= +103 (结果用十进制表示)。
【第 6 页 共 27 页】
28.可将AX寄存器中D0,D5,D8和D11位求反,其余位不变的指令: XOR AX,0921H 。 29.在ADD DX,106H[SI]指令中,目的操作数采用 寄存器 寻址方式,源操作数采用 变址寻址方式。
三、简答题
1.假设已知(DS)=2900H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)= 0100H,
(BP)=0010H,数据段中变量名VAL的偏移地址值为0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少? (1) MOV AX,ES:[BX] (2) MOV AX,[SI] (3) MOV AX,VAL[BX]
(4) MOV AX,[BX][SI]
(5) MOV AX,[BP][SI]
答:(1)在指令 MOV AX,ES:[BX] 中,源操作数字段的寻址方式是寄存器间接寻址,
其物理地址值=(ES)*10H+(BX)=21000H+100H=21100H
(2)在指令 MOV AX,[SI] 中,源操作数字段的寻址方式是寄存器间接寻址,其物
理地址值=(DS)*10H +(SI)=29000H+0A0H=290A0H
(3)在指令 MOV AX,VAL[BX] 中,源操作数字段的寻址方式是寄存器相对寻址,
其物理地址值=(DS)*10H+(BX)+50H= 29000H+100H+50H= 29150H
(4)在指令 MOV AX,[BX][SI] 中,源操作数字段的寻址方式是基址变址寻址,其
物理地址值=(DS)*10H+(BX)+(SI)=29000H+100H+0A0H =291A0H
(5)在指令 MOV AX,[BP][SI] 中,源操作数字段的寻址方式是基址变址寻址,其物理地址值=(SS)*10H+(BP)+(SI)=15000H+10H+0A0H =150B0H 2.试简要说明冯?诺依曼的“存储程序和程序控制”的设计思想是什么?
答:(1)微型计算机系统的硬件由运算器、控制器、存储器、输入设备和输出设备五大
基本部件组成。
(2)计算机内部采用二进制数据格式表示数据和指令。
(3)程序和数据将被事先存入主存储器中,计算机在工作时能在不需要操作人员干
预的情况下,自动逐条取出指令并执行。
3. 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。 (1)MOV AX,1200H (2)MOV AX,BX
(3)MOV AX,[1200H] (4)MOV AX,[BX+1100] (5)MOV AX,[BX+SI]
答:(1)指令MOV AX,1200H执行完后AX寄存器的内容为1200H; (2)指令MOV AX,BX执行完后AX寄存器的内容为0100H;
(3)指令MOV AX,[1200H]是将从物理地址=(DS)*10H+1200H=21200H开始的两个
单元内容送AX,执行完后AX寄存器的内容为4C2AH;
【第 7 页 共 27 页】
(4)指令MOV AX,[BX+1100]是将从物理地址=(DS)*10H+(BX)+1100H=21200H
开始的两个单元内容送AX,故执行完后AX寄存器的内容为4C2AH; (5)指令MOV AX,[BX+SI]是将从物理地址=(DS)*10H+(BX)+(SI)=20102H开
始的两个单元内容送AX,故执行完后AX寄存器的内容为7856H;
4.什么是接口?为什么需要接口?接口有哪些作用?
答:(1)在介于主机和外设之间用于完成某些控制功能、速度匹配、信号转换的一种缓
冲电路称为I/O接口电路,简称I/O接口(Interface)。
(2)I/O接口在CPU与外设之间建立一个缓冲区,解决CPU与外设之间在数据形式、数据的传递方式以及传递速率上存在很大差异的矛盾。
(3)接口作用主要包括信号暂存、数据格式转换、传送路径的切换控制和状态信号的交换、通讯控制、设备动作、定时控制、中断管理及错误检测等功能。 5.判断下列指令书写是否正确,如有错误,指出错在何处并用正确的程序段(一条或多条指令)实现原错误指令期望实现的操作。 (1)MOV [BX],[SI] (2)MOV BL,F5H (3)POP [BX] (4)SHL AX,5 (5)MUL AX,BX
答:(1)MOV [BX],[SI] 错,源操作数和目的操作数均为内存单元,不允许。
应改为:MOV AX,[SI]
MOV [BX],AX (2)MOV BL,F5H 错,源操作数错,以A~F开头的数字前应加0。
应改为:MOV BL,0F5H (3)POP [BX] 正确。
(4)SHL AX,5 错,不能用大于己于1的立即数指出移位位数。
应改为:MOV CL,5
SHL AX,CL
(5)MUL AX,BX 错,目的操作数AX是隐含的,不能在指令中写出。
应改为:MUL BX
6. 试按以下要求写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。要求使用以下几种寻址方式实现: (1)寄存器间接寻址(用3条指令实现) (2)寄存器相对寻址(用2条指令实现) (3)基址变址寻址 (用3条指令实现)
答:(1)使用寄存器间接寻址,把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令为:
MOV BX,BLOCK ADD BX,12 MOV DX,[BX]
【第 8 页 共 27 页】
(2)使用寄存器相对寻址,把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令为: MOV BX,BLOCK MOV DX,[BX+12]
(3)使用基址变址寻址,把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令为:
MOV BX,BLOCK MOV SI,12
MOV DX,[BX+SI]
7. 假定(BX)=637DH,(SI)=2A9BH,位移量D=3237H,试确定在以下各种寻址方式下的有效地址是什么? (1)直接寻址
(2)使用BX的间接寻址
(3)使用BX的寄存器相对寻址 (4)基址变址寻址
(5)相对基址变址寻址
答:(1)直接寻址,若使用位移量D=3237H进行,则有效地址为3237H;
(2)使用BX的间接寻址时,有效地址在BX寄存器中,即有效地址=637DH; (3)使用BX的寄存器相对寻址的有效地址=(BX)+D=637DH+3237H=95B4H; (4)基址变址寻址的有效地址=(BX)+(SI)=637DH+2A9BH=8E18H; (5)相对基址变址寻址的有效地址=(BX)+(SI)+D=C050H; 8.I/O接口有什么用途? (至少写出其5种功能)
答:1)进行地址译码或设备选择,以便使CPU能与某一指令的外部设备通信。
2)状态信息的应答,以协调数据传送之前的准备工作。 3)进行中断管理,提供中断信号。
4)进行数据格式转换,如正负逻辑的转换、串行与并行数据转换等。 5)进行电平转换,如TTL电平与MOS电平间的转换。 6)协调速度,如采用锁存、缓冲、驱动等。 7)时序控制,提供实时时钟信号。
9.8086系统中的存储器为什么要采用分段结构?有什么好处?
答:(1)8086CPU中的寄存器都是16位的,16位的地址只能访问64KB的内存。8086系统中的物理地址是由20根地址总线形成的,要做到对20位地址空间进行访问,就需要两部分地址采用段基址和偏移地址方式组成物理地址。
(2)优点是:满足对8086系统的1MB存储空间的访问,同时在大部分指令中只要提
供16位的偏移地址即可。
10.判断下列指令书写是否正确,如有错误,指出错在何处并用正确的程序段(一条或
多条指令)实现原错误指令期望实现的操作。 (1)MOV AL,BX (2)MOV ES,3278H (3)PUSH AL
【第 9 页 共 27 页】
(4)INC [BX] (5)MOV DX,2000H
答:(1)MOV AL,BX 错,源操作数为字类型,目的操作数为字节类型,二者不一致。应
改为:MOV AX,BX 或 MOV AL,BL ;
(2)MOV ES,3278H 错,立即数不能直接送ES寄存器。 应改为:MOV AX,3278H
MOV ES,AX
(3)PUSH AL 错,栈操作不能按字节进行。应改为:PUSH AX
(4)INC [BX] 错,未指定操作数的类型。应改为:INC BYTE PTR [BX] (5)MOV DX,2000H 正确。
11.计算机的主要性能指标有哪些?
答:(1)主频:主频很大程度上决定了计算机的运行速度;
(2)字长:决定了计算机的运算精度、指令字长度、存储单元长度等,可以是
8/16/32/64位;
(3)运算速度; (4)存储容量;
(5)可靠性、可维护性等。
12.若已知当前(DS)=7F06H,在偏移地址为0075H开始的存储器中连续存放6个字节的数据,分别为11H,22H,33H,44H,55H和66H,请指出这些数据在存储器中的物理地址,如果要从存储器中读出这些数据,需要访问几次存储器?各读出哪些数据? 答:(1)物理地址:7F06H×10H+0075H=7F0D5H,故从7F0D5H起6个地址数据在存储器中的地址。
(2)最少要访问四次:第一次:11。第二次:33,22。第三次:55,44。第四次:66。
13.分别用一条语句实现下述指明的功能
(1)栈顶内容弹出送字变量DI。 ( POP DI ) (2)不允许中断即关中断。 ( CLI ) (3)子程序返回调用程序。 ( RET ) (4)若操作结果为零转向标号GOON。 ( JZ GOON ) (5) 将AX内容清为0 。 ( XOR AX,AX )
14.什么是逻辑地址?什么是物理地址?如何将逻辑地址转换为物理地址?8086/8088 CPU的寻址范围是多少?
答:从8088/8086开始,CPU内部就有了对存储器的分段机制,每个存储单元可以成两
种地址:逻辑地址与物理地址。
(1)逻辑地址:逻辑地址是编程时所使用的地址,在实模式下,它由段基地址与段内偏移地址组成,习惯上写为“段基地址:偏移地址”。
(2)物理地址:物理地址又称为实际地址,它是信息在内存中存放的实际地址,是CPU访问存储器时实际发出的地址信息。
(3)在实地址方式下,由CPU中的总线接口单元将段基地址左移4位后与16位的偏移地址相加,生成20位的物理地址。可以访问1MB的存储空间。
(4)8086/8088CPU的地址总线均为20位,8086/8088CPU的寻址范围为1MB。
【第 10 页 共 27 页】
15.分别指出下列指令中目的操作数采用什么寻址方式? (1) MOV [SI],AX (2) MOV 2[DI],BX (3) MOV 2[BX+SI],DX (4) MOV AX,[2000H]
(5) MOV AX,2000H
答:(1) MOV [SI],AX ;变址寻址 (2) MOV 2[DI],BX ;变址相对寻址 (3) MOV 2[BX+SI],DX ;基址+变址相对寻址
(4) MOV AX,[2000H] ;寄存器寻址 (5) MOV AX,2000H ;立即寻址 16. 8086CPU为什么要用地址锁存器?
答:由于8086CPU的地址/数据总线和地址/状态总线是分时复用的,而存储器或I/O接口电路通常要求与CPU进行数据传送时,在整个总线周期内必须保持稳定的地址信息,因而必须在总线周期的第一个时钟内,将地址锁存起来。另外,具有三态输出的锁存器可以提高地址总线的驱动能力。
17.简述CPU与外设进行数据交换的几种常用方式。
答: CPU与外设之间的数据传输有以下三种方式:程序方式、中断方式、DMA方式。其中程序方式又分为无条件传送方式和条件传送方式两种方式。无条件传送方式用于简单外设,如LED显示器。条件传送方式用于外设较少的情形,接口简单,但CPU效率低。在实时系统以及多个外设的系统中,采用中断传送方式。这种方式CPU利用率高,速度快,但需要专门的中断控制电路。
18. 无条件传送方式用在哪些场合?画出无条件传送方式的工作原理图并说明。
答:无条件传送方式适用于对一些简单的外设的操作中,如:开关、七段LED显示管等。当CPU执行输入指令是,读信号RD有效,选择信号M/IO处于低电平,因而三态缓冲器被选通,使其中早已准备好的输入数据进入数据总线,再到达CPU。
CPU执行输出指令时,M/IO和WR信号有效,于是接口中的输出锁存器被选中,CPU输出的信息经过数据总线打入输出锁存器,输出锁存器保持这个数据,直到外设取走。
四、判断题(正确的打“√”,错误的打“×”)
1.在三种基本I/O同步控制方式中,以DMA式控制最好,中断方式次之,程序查询方式
最差。(× )
2、对于种类不同的计算机,其机器指令系统都是相同的。( × ) 3、在计算机中,数据单位bit的意思是字节。 ( × )
4、八进制数的基数为8,因此在八进制数中可以使用的数字符号是0、1、2、3、4、5、
6、7、8。(× )
5、在汉字国标码GB2312-80的字符集中,共收集了6763个常用汉字。( √ ) 6. IP中存放的是正在执行的指令偏移地址。 (× )
7. 从内存单元偶地址开始存放的数据称为规则字。 ( √ )
8. EU执行算术和逻辑运算后的结果特征可由控制标志位反映出来。 (× )
【第 11 页 共 27 页】
9.任何一个存储单元只对应一个物理地址。 (√ ) 10.计算机中数据的表示范围不受计算机字长的限制。 (× )
11.堆栈是以先进后出方式工作的存储空间。 ( √ ) 12.一般地,串行通信比并行通信的传输速率低,但适用于远程数据传输。( √ ) 13.当运算产生溢出时,不一定会产生溢出中断。 ( √ ) 14. 若要实现定时控制,则需将定时器的计数脉冲输入信号CLK作为中断请求信号。( × )
15.异步通信与同步通信的差别主要表现在字符与字符间的传送一个是异步,一个是同步,至于字符内部的位与位之间,两者都是同步传送的。 ( × )
16. 8255A工作于方式0时,不能使用中断,而在方式1或方式2时,既可用中断,也可不用中断。( √ ) 17. 在微型计算机中,串行输入输出端口与微处理器之间是采用串行方式交换数据的。( √ )
18. 奇偶校验位是根据传送数据中的“1”的个数进行编码的。( √ )
19. 8086在对存储器进行访问时,数据线和地址线分时复用,数据线先于地址线有效。( × )
20.DMA方式的I/O操作与程序查询方式和中断控制式相比,用硬件控制代替了那里的软件控制,且无需经CPU传数,因此数据传送速度明显提高。( √ )
21.计算机中带符号数采用补码表示的目的是为了简化机器数的运算。( √ ) 22. 64位微机的含义是:这种机器能同时处理64位二进制数。 ( √ ) 23. 微型计算机工作的过程,本质上就是执行一个特定指令序列的过程。而每执行一条指令都包括取指令、分析、执行和数据处理四个阶段。( × ) 24. 伪指令是指示性语句,不产生机器目标代码。( √ )
25. 标志寄存器是微处理器的基本组成部件之一,其作用是寄存ALU操作结果的某些重要特征。( √ )
26. 程序计数器是确保微处理器有序的执行程序的关键性寄存器,用于存放下一条要执行的指令的地址码。( √ )
27. 任何微处理器都有运算和控制功能,但不具备存储功能。 (× ) 28. 微型计算机的工作过程是执行程序的过程,而程序的执行又是重复执行指令的过程,因此计算机的工作过程本质上就是执行指令的过程。 ( √ ) 29. 计算机中带符号数采用补码表示的目的是为了简化机器数的运算。 ( √ ) 30.CPU是中央处理器的简称,它至少包含一个处理器,为了提高计算速度,CPU也可以由多个处理器组成。( √ )
31.异步串行通信的基本特点是:以字符为基本单位,传送时字符间异步,字符内各位间同步。( √ )
32. 内部软件中断都不受IF和TF影响。( × )
33. 主存储器和CPU之间增加高速缓冲存储器的目的是为了扩大主存储器的容量。( × )
34. 存储器的存储空间与微机的地址线位数有关。( √ )
35. 锁存器即可作为输出接口,又可作为输入接口使用。( × )
【第 12 页 共 27 页】
36. 8255A工作于方式0时,不能使用中断,而在方式1或方式2时,既可用中断,也可不用中断。(√ ) 37. 在微型计算机中,串行输入输出端口与微处理器之间是采用串行方式交换数据的。( × )
38. 奇偶校验位是根据传送数据中的“1”的个数进行编码的。( √ )
39. 8086在对存储器进行访问时,数据线和地址线分时复用,数据线先于地址线有效。( × )
40.DMA方式的I/O操作与程序查询方式和中断控制式相比,用硬件控制代替了那里的软件控制,且无需经CPU传数,因此数据传送速度明显提高。( √ )
五、程序分析题
1. 设 AX=2875H、BX=34DFH、SS=1307H、SP=8H,依此执行以下指令。 PUSH AX PUSH BX POP AX POP CX
连续执行以上指令后, SP= 13078H,AX=34DFH, BX=34DFH ,CX=2875H。 2. 将AL中一个两位的十六进制数变换成为其所对应的ASCII码,存放到AX中。(程序思路:将AL中的XYH转换为对应的ASCII码,先转换XYH变换成0YH后转换成对应的ASCII吗,后将XYH变成XOH后变换成0XH后转换成对应的ASCII码;X或Y≥0AH,加07H后再加30H,反之加30H)
MOV AH, AL ;将AL中的数据暂存在AH中 AND AL, 0FH ;先转换低半字节,屏蔽高半字节
CMP AL, 0AH ;判断Y是否为A~F,是则加07H;否则在0~9之间加30H JB G1 ;Y<0AH,转G1,加30H ADD AL, 7 ;反之,加07H,再加30H G1: ADD AL, 30H ;加30H MOV CL, 4 ;转换高半字节 AND AH, 0F0H ;屏蔽低半字节 SHR AH, CL ;右移
CMP AH, 0AH ;比较X<0AH,转G2,加30H
3.
JB G2 ;<0AH,转G2
ADD AH, 7 ;反之,加07H,再加30H G2: ADD AH, 30H
试编程对8253初始化启动其工作。要求计数器0工作于模式1,初值为3000H;计数器1工作于模式3,初值为100H;计数器2工作于模式4,初值为4030H。设端口地址为40H、41H、42H和43H。
MOV AL, 00110010B/32H ;设置计数器0控制字 OUT 43H,AL
MOV AX, 3000H ;送计数器0计数初值
【第 13 页 共 27 页】
OUT 40H,AL MOV AL,AH
OUT 40H,AL
MOV AL, 01010111B/57H ;设置计数器1控制字 OUT 43H,AL MOV OUT MOV OUT MOV OUT
AL, 1000H ;送计数器1计数初值 41H,AL
AL, 10111000B/0B8H ;设置计数器2控制字 43H,AL
AX, 4030H ;送计数器2计数初值 42H,AL
MOV AL,AH OUT 42H,AL
4. 下面为一多字节加法程序,第一个数和是8A0BH,第二个数是D705H。 DATA SEGMENT
FIRST DB 0BH,8AH,0H SECOND DB 05H,0D7H DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA
MOV DS,AX
MOV CX, 2 ;加数的字节个数 MOV SI,0
CLC ;进位标志清0 NEXT: MOV AL,SECOND[SI] ADC FIRST[SI],AL INC SI LOOP NEXT MOV AL,0
ADC AL, 0 ;处理产生的高位进位
MOV FIRST[SI],AL
MOV AH, 4CH ;返回DOS INT 21H CODE ENDS
END START
5. 写出执行下列程序段的AX中的内容。 MOV AX, 0809H MOV DL, 10 XCHG AH, DL
【第 14 页 共 27 页】
MUL AH AAM
ADD AL, DL
执行完上述程序后,AX= 0908H 。 6. 设已定义数据段
DATA SEGMENT
??ORG 0010H/VAR1 DB 10H DUP(?) VAR2 DW 10H,7889H
??ORG 0020H/ VAR3 DB 6 DUP(?) VAR5 DB 20H,0 ADRR DW VAR2,VAR5
DATA ENDS
为使ADRR字存储单元中存放内容为“0010H”,ADRR+2字存储单元中存放内容为“0020H”,上述省略号位置应分别填写一条什么语句?
10. 按题意给出合适的1~2条指令。 (1)将AX的高8位和低8位数据互换。 MOV CL,8 ROR AX,CL
(2)将AL的高4位数据保留,低4位数据置1。 OR AL,0FH
(3)将AX和SI寄存器间接寻址的存储器操作数相加,和在AX中。
ADD AX,[SI]
(4)将AX和250做有符号数乘法。 MOV BX,250 IMUL BX
1.设有100个字节数据(用补码表示),存放在数据段中EA=2000H的存储区内,完成下列程序应能从该数据区中找出最大的1个数并存人同一数据段EA=2100H的单元中。 MAX: MOV BX, 2000H ;设置数据段的首地址
MOV AL,[BX] MOV CX, 99 ;设置需寻找的字节数
LOOP1: INC BX CMP AL,[BX]
JGE LOOP2 ;进行大小判断 MOV AL,[BX]
LOOP2: DEC CX ;计数指针减1
JNZ LOOP1 ;判断整个数据是否比较完? MOV [2100H] ,AL ;将最大数存放在2100H地址单元
2.已知某8255A的端口地址地址为60H~63H,现欲安排其PA,PB,PC口全部为输出,PA,PB口均工作于方式0模式,并将PC6置位,使PC3复位,试编写出相应的初始化程序。
MOV AL, 80H ;设置8255A的工作方式
【第 15 页 共 27 页】
OUT 63H,AL
MOV AL, 0DH ;设置使PC6置位 OUT 63H,AL
MOV AL, 06H ;设置使PC3复位 OUT 63H,AL
3. 某程序段如下:
DATA SEGMENT
STRING DB ‘PRESS ANY KEY’,0DH,0AH,‘$’
DATA ENDS MOV AH,09
MOV DX,SEG STRING
MOV DS,DX
MOV DX,OFFSET STRING INT 21H
执行上述程序段后程序实现了什么功能?
答:在屏幕上显示输出“PRESS ANY KEY”并回车换行
4.统计BUF数据区256个字节数据中零、正数、负数的个数,分别存放到ZERO、POSI、NEGA单元中。 MOV ZERO,0 MOV POSI,0
MOV NEGA,0 ;三个统计值单元,初值为0 MOV CX,256 ;CX为计数值,初值为256 LEA BX,BUF ;BX取BUF数据区首地址
P0:MOV AL, [BX] ;AL取BUF数据区一个字节数据 CMP AL,0
JGE P1 ;AL≥0,转P1
INC NEGA ;为负数,NEGA单元值+1 JMP P3
P1: JZ P2 ;AL=0,转P2
INC POSI ;为正数,POSI单元值+1 JMP P3
P2:INC ZERO ;为0,ZERO单元值+1 P3:INC BX
LOOP P0 ;CX-1≠0,转P0(继续统计) HLT
5.编写完成相应功能的程序段。求有符号字数A,B的绝对值,并将绝对值较小的数送到C单元中存放。
MOV AX,A CMP AX,0
JGE PA ;AX≥0(正数),转PA
【第 16 页 共 27 页】
NEG AX ;AX“为负数取补”(正数) PA: MOV BX,B
CMP BX,0
JGE PB ;BX≥0(正数),转PB
NEG BX ;BX“为负数取补”(正数)
PB: CMP AX,BX ;AX和BX比较 JBE EXIT ;AX≤BX,转EXIT XCHG AX,BX ;AX,BX交换
EXIT:MOV C,AX ;AX总是绝对值较小的 HLT
6.某8253的端口地址为40H~43H。按下列要求编写各计数器的初始化程序。要求计数器1做方波发生器(工作于方式3),输入时钟频率为2MHz,方波频率为200Hz,要求用BCD码计数。计数器2对外部事件计数(工作于方式0),每计数到100时产生一个中断请求信号。
MOV AL, 77H ;设置计数器1:方式3,16位BCD码计数 OUT 43H,AL ;送计数器1控制字 MOV AX, 0 ;送BCD码计数值
OUT 41H,AL ;先低8位,后高8位写计数初值 MOV AL,AH OUT 41H,AL
MOV AL, 90H ;设置计数器2:方式0,8位二进制计数
OUT 43H,AL ;设置计数器2控制字 MOV AL, 100 ;AL取计数初值 OUT 42H ,AL ;写计数初值
1.分析下列程序执行后的结果。
TABLE DB 30H ,31H ,32H,33H, 34H ENTRY DB 3
MOV BX , OFFSET TABLE ADD BX,ENTRY
MOV AL,[BX] ;
问 程序执行后AL= 33H 2.已知DS=3000H , SS=4000H , BX=1200H , BP=1000H,(31200H)=01H , (31201H)=02H , (41200H)=03H , (41201H)=04H。程序段如下:
MOV AX, 1200H ;该指令的源操作数的寻址方式: 立即寻址 ADD AX, SS:[1200H] ;
ADD AX, [BX] ;请写出程序段执行后的结果AX= 1804H 3.分析以下程序,并写出结果。
DSEG SEGMENT
DATA1 DW 0A566H DATA2 DW 26D1H SUM DW 2 DUP(?)
【第 17 页 共 27 页】
DSEG ENDS CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG
START: MOV AX, DSEG
MOV DS, AX LEA SI, SUM MOV AX, DATA1 ADD AX, DATA2
MOV [SI], AX MOV AH,4CH INT 21H
CSEG ENDS END START
请写出程序执行后SUM的偏移地址= DATA1+4 ,SUM单元的内容= 0CC37H 。 4.下列程序段求FLD开始的八个数据的平均值,结果在RES中。请将程序填写完整(不考虑溢出) DATA SEGMENT
FLD DW 10,-20,30,-60,-71,80,79,56 RES DB ? DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA MOV AX,DATA MOV DS,AX MOV CX,8 MOV AX,0
LEA SI,FLD R1:ADD AX,[SI] ADD SI,2 DEC CX JNZ R1 MOV CL,8
IDIV CL MOV RES,AL ; HLT
CODE ENDS
5.执行下列程序,分析程序的结果: MOV SP,2000H MOV AX,0F0H MOV SI,1234H MOV DX,5678H PUSH SI POP DI SHL DX,1 TEST AX,DX PUSH DX
【第 18 页 共 27 页】
HLT
(1)SP= 1FFEH ;
(2)DH内容所在存储器的偏移地址为 1FFFH ; (3)DL内容所在存储器的偏移地址为 1FFEH ; (4)(AX)= 0F0H ; (5)(DI)= 1234H ; (6)(DX)= 0ACF0H ; (7)标志位ZF= 0 。
7.设AX=8B6AH,BX=00FFH,分别给出以下指令执行后AX的值。 (1) ADD AX,BX ;AX= 8C69 H (2) SUB AX,BX ;AX= 8A6B H (3) AND AX,BX ;AX= 006A H
(4) OR AX,BX ;AX= 8BFF H (5) XOR AX,BX ;AX= 8B95 H
8.请指出下列语句中寻址方式的错误。
(1) MOV CX,[AX] ;AX不能做存储器操作数寻址的寄存器 (2) ADD BL,500 ;500超过了一个字节(8位)数值范围 (3) POP AL ;堆栈操作必须是字(16位)类型数据
(4) MUL AL,BL ;只要给出一个乘数,另一个乘数(AL/AX)隐含 (5) AND 100,AX ;目的操作数不能使立即数寻址 (6) SUB [BX],[DI] ;2个操作数不能都是立即数 (7) MOV DS,2000H ;立即数不能直接送给段寄存器
(8) RCL BX,4 ;移位数如果超过1,要用CL寄存器存放 (9) XCHG BX,4078H ;交换的操作数不能使立即数
(10) INC [SI] ;[SI]寻址的数据类型(字节/字)不明确 六、编程与电路设计题
1.已知8255A的PA口做输出与七段共阳LED连接,PC口连接按键,实现按键键值显示,按16个按键显示对应按键的键值数码。如图题六电路图所示。已知PC0~PC3做输入,连接键盘的行扫描线,PC0为第0行;PC4~PC7做输出,连接键盘的列扫描线,PC4为第0列。试完
AD[0..15]U3AD0AD1AD2AD3AD4AD5AD6AD7RDWRA1A2343332313029282753698356D0D1D2D3D4D5D6D7RDWRA0A1RESETCSPA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC78255A43214039383718192021222324251415161713121110IO3R104815926AE37BF1kR21kR31kR41k【第 19 页 共 27 页】 CD成下列程序,使程序加载到CPU中后,按任意键,该键的键值在LED中正确显示出来。8255A的CS连IO3,地址为为30H。
题六电路图 IO3 EQU 30H DATAS SEGMENT
TAB DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH ;0~9,A~F的共阳显示代码
DATAS ENDS CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:MOV AX,DATAS MOV DS,AX
LP0: MOV AL, 81H ;设置8255A的工作方式,PA口输出,PC0~3输入,PC4~7输出 OUT IO3+6/36H ,AL ;送方式控制字到8255A MOV AL,0FFH OUT IO3+0,AL
NOKEY:MOV AL,0FH ;第一步:判断有无键按下
OUT IO3+4/34H ,AL ;让列输出全为0,行全为1
IN AL,IO3+4 ;读取行线状态,若全为1,则无键按下;反之有键按下。 AND AL,0FH ;无键按下,值为0FH CMP AL,0FH
JZ NOKEY ;无键按下,再扫描键盘 MOV DL,11101111B;第二步:有键按下,依次让列输出0。首先第0列输出0,列扫
描初始值
MOV DH,0 ;列号初始值为0
LP1: MOV AL,DL OUT IO3+4,AL
IN AL, IO3+4/34H ;读行线的内容,相应位为0,则与该行相连的按键按下 TEST AL,01H ;测试第0行
JNZ LONE ;第0行无键按下,转测试第1行 MOV AL,0 ;第0行,行首值为00H JMP LP2 ;转键值计算
LONE: TEST AL, 02H ;测试第1行
JNZ LTWO ;第1行无键按下,转测试第2行 MOV AL,04H ;第1行,行首值为04H JMP LP2
LTWO:TEST AL, 04H ;测试第2行
JNZ LTHR ;第2行无键按下,转测试第3行 MOV AL,08H ;第2行,行首值为08H JMP LP2
LTHR:TEST AL, 08H ;测试第3行
JNZ NEXT ;第3行无键按下,扫描下一列 MOV AL,0CH ;第3行,行首值为0CH
LP2: ADD AL,DH ;第三步:计算键值。键值=行首值+列号 LEA BX,TAB ;获得LED显示代码的表格首地址
【第 20 页 共 27 页】
XLAT ;查询对应按键的共阳显示代码 OUT IO3+0 ,AL ;送PA口显示显示
WAIT1:IN AL,IO3+4 ;第4步:等待按键释放 AND AL,0FH CMP AL,0FH JNZ WAIT1 JMP NOKEY
NEXT:INC DH ;扫描下一列 ROL DL,1
CMP DL, 0FEH ;判断是否扫描完所有列,没有则继续扫描;反之扫描结束。 JZ KEYEND ;扫描结束转KEYEND
JMP LP1 ;未扫描完,继续扫下一列。 KEYEND:JMP NOKEY MOV AH,4CH INT 21H
CODES ENDS
END START 2.已知在BLOCK开始的内存单元中有若干以字节为单位的正、负数,编写程序,试统计其中≧0的个数存放于M_DATA单元中,<0的个数存放于P_DATA单元中。
DATA SEGMENT
BLOCK DB 33,-70,-9,45,-8,-146 COUNT EQU $-BLOCK
P_DATA DB COUNT DCP (0)
M_DATA DB COUNT DCP (0) DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA
MOV DS,AX
(1) SI,BLOOK ;设置BLOCK地址
(2) DI,OFFSET P_DATA ;设置存放<0的数单元地址 LEA BX,M_DATA ;设置存放≧0的数单元地址 MOV CX, (3) ;设置BLOCK中存放数据个数 NEXT: MOV AL,[SI] ;读存放在BLOCK单元中的数据
CMP AL,0 ;若≧0,则转PP (4) PP
MOV (5) ,AL ;存放到<0的数据存储单元中 INC DI
JMP (6)
PP: MOV (7) ,AL ;存放到≧0的数据存储单元中 INC BX
LOOP1: INC (8) ;修改地址,准备判断下一个数据
【第 21 页 共 27 页】
LOOP NEXT ;未判断完则继续 MOV AH,4CH ;判断结束,返回DOS
INC 21H CODE ENDS
END START
参考答案:(1)LEA、(2)MOV、(3)COUNT、(4)JGE或JNB、(5)[DI]、(6) LOOP1 (7) [BX]、(8)SI
3.编写程序:读取8255A端口A输入的数据,并随即向端口B输出,并对输入数据加以判断,当大于等于80H时,PC5和PC2置位,否则复位。(设8255A端口地址为60H~63H)
MOV AL, 90H ;A口方式0输入,B口方式0输出,C口输出 OUT 63H ,AL ;设置方式控制字 IN AL, 60H ;“读”A口 OUT 61H ,AL ;“写”B口 CMP AL,80H ;
JAE LP1 ;≥80H,转LP1 MOV AL, 00H ;PC5和PC2复位 JMP LP2
LP1: MOV AL,24H ;PC5和PC2置位 LP2: OUT 62H ,AL ;“写”C口
MOV AH,4CH INT 21H
4.某微机系统中采用8253、ADC0809和74LSl38等芯片构成一数据采集器,使CPU能通过查询方式采集到ADC0809的8个输入通道的数据。要求用PC机中的8253计数器0提供10kHz的转换时钟频率给A/D,计数器0的CLK0端输入信号频率为1.19MHz,8253的起始地址为40H。I/O端口扩展可用的地址空间为300H~33FH,输入数据缓冲区首地址为DBUFF。根据题图,填空完成8253初始化程序段和数据采集程序段。。
题六图-1 【第 22 页 共 27 页】
题六-图1 (1)8253初始化程序 MOV AL, 37H
;送控制字,计数器0工作于方式3,采用BCD计数
OUT 43H,AL
MOV AL, 19H ;送时间常数,先送低位,后高位数据 OUT 40H,AL
MOV AL, 01H OUT 40H,AL (2)数据采集程序段
DATAC PROC FAR LEA BX,DBUFF
MOV CX ,8 ;8路采样
MOV DX,300H ;DX指向ADC通道0 NEXT:OUT DX,AL ;锁存并启动A/D转换
PUSH DX ;保存通道号 MOV DX,308H ;DX指向状态口
WAIT1:IN AL,DX ;读入EOC状态
TEST AL,80H
JNZ WAIT1 ;转换还没开始
WAIT2:IN AL,DX
TEST AL, 80H JZ WAIT2 ;转换还没结束
POP DX
IN AL, DX ;读入转换结果 MOV [BX],AL INC BX INC DX
LOOP NEXT ;未采样完8路通道,继续;采样完结束 RET
DATAC ENDP
5.在ARRAY中定义了10个字节无符号数据,以下程序实现查找10个数中最大、最小数,分别存放在AMAX和AMIN中。
DATA SEGMENT
ARRAY DB 56,78,24,100,200,15,63,85,130,180 AMAX DB 0 AMIN DB 255 DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA MAIN PROC FAR BEGIN:PUSH DS
【第 23 页 共 27 页】
MOV AX,0 PUSH AX MOV MOV MOV
AX,DATA DS,AX
CX, 10 ;查找次数
LEA SI,ARRAY
AGAIN:MOV AL, [SI] ;取待比较的数据
CMP AL,AMAX ;与前次存放大的数相比较 JBE LOPl ;≤前次数转校小的数比较 MOV AMAX , AL ;存大的数到AMAX LOPl:CMP AL,AMIN
JAE LOP2 ;≥小的数,比较下一个数据 MOV AMIN ,AL ;反之存小的数 LOP2: INC SI ;修改地址
LOOP AGAIN ;未比较完,继续比较 RET
MAIN ENDP CODE ENDS END MAIN
6.已知硬件连接如图1所示,要求编一汇编语言程序段实现如下系统功能:8255A用作查询式打印机接口时的电路连接和打印机各信号的时序如题六图-1所示,8255A的端口地址为80H~83H,工作于方式0。填空完成以下程序段,将数据区中变量DATA的8位数据送打印机打印,程序以RET指令结束。
参考程序:MOV AL, 81H ;设置8255A的方式控制字,都作为基本工作方式,PA做输出,PB做输出,PC上半口作输出,下半口作输入 OUT 83H,AL
MOV AL,0BH ;置STB为“H’’
【第 24 页 共 27 页】
OUT 83H,AL
PULL:IN AL, 82H ;查询BUSY状态 TEST AL, 08H JNZ PULL
MOV AL,DATA ;将DATA送PA口 OUT 80H ,AL
MOV AL, 0AH ;置STB为“L” OUT 83H,AL
MOV AL, 0BH ;置STB为“H” OUT 83H,AL ;产生负脉冲选通信号 RET
7.已知8255A的A口和B口工作在方式0,A口作为输入端口,接有2个开关;B口为输出端口,接有8个发光二极管。系统硬件电路如图1所示,不断扫描开关Ki,当开关K0闭合时,点亮LED0、LED2、LED4、LED6,其它LED暗;当开关K1闭合时,点亮LED1、LED3、LED5、LED7,其它LED暗;当开关K0和K1同时闭合时退出。设8255A端口A、端口B、端口C及控制端口的地址分别为200H~203H。试编写程序实现。
CODE SEGMENT
ASSUME CS:CODE
START: MOV AL, (1) ;8255初始化 MOV DX,203H OUT DX,AL
AGAIN: MOV DX, (2) IN AL,DX
TEST AL, (3) ;检测K0 K1 JZ EXIT
【第 25 页 共 27 页】
题六--图1 TEST AL, (4) ;检测K0 JZ DISP_0
TEST AL, (5) ;检测K1 JZ DISP_1 JMP AGAIN
DIAP_0: MOV AL, (6) ;偶位上LED亮,奇位上LED暗 MOV DX,201H OUT DX,AL JMP AGAIN
DIAP_1: MOV AL, (7) ;奇位上LED亮,偶位上LED暗 MOV DX,201H
OUT DX,AL JMP AGAIN EXIT: MOV AH,4CH INT 21H CODE ENDS
END START
参考答案:(1)90H、98H、99H或书写相应的二进制码
(2)200H、(3)03H、(4)01H、(5)02H、(6)55H、(7)0AAH
8.已知硬件连接如图1所示,要求编一汇编语言程序段实现如下系统功能:设计一个程序,PC机使扬声器发出500Hz频率的声音,按下ESC键声音停止。8253的CLK2为1.193MHZ。8255的端口地址为60H~63H,8253的端口地址为40H~43H。
题六-图1
参考程序: CODE SEGMENT
ASSUME CS:CODE
START: MOV AL, (1) ;8253控制字
【第 26 页 共 27 页】
OUT 43H,AL ;写8253计数器2的方式控制字 MOV AX, (2)
OUT 42H, AL MOV AL, AH
OUT 42, AL ;按先低8位后高8位的顺序写入计数器2的计数值 NEXT: MOV AH, (3) ;单字符输入DOS功能调用 INT 21H
CMP AL,1BH ;ESC键的ASCII码=1BH (4) EXIT MOV AL, (5)
OUT 61H,AL ;置GATE2信号有效,扬声器发声 (6) NEXT EXIT: IN AL, 61H
AND AL, (7) ;关闭扬声器 OUT 61H, AL
MOV AH, 4CH ;返回DOS INT 21H CODE ENDS
END START
参考答案:(1)0B0H或10110110B、(2)2386、(3)01H 、(4)JZH 、【第 27 页 共 27 页】
、、(7)0FCH
(5)03H(6)JMP