1、116/32 位微机原理、汇编语言及接口技术教程部分习题参考解答第 1 章 微型计算机系统概述习题 1.2什么是通用微处理器、单片机(微控制器)、DSP 芯片、嵌入式系统?解答通用微处理器:适合较广的应用领域的微处理器,例如装在 PC 机、笔记本电脑、工作站、服务器上的微处理器。单片机:是指通常用于控制领域的微处理器芯片,其内部除 CPU 外还集成了计算机的其他一些主要部件,只需配上少量的外部电路和设备,就可以构成具体的应用系统。DSP 芯片:称数字信号处理器,也是一种微控制器,其更适合处理高速的数字信号,内部集成有高速乘法器,能够进行快速乘法和加法运算。嵌入式系统:利用微控制器、数字信号处理
2、器或通用微处理器,结合具体应用构成的控制系统,其典型的特点是把计算机直接嵌入到应用系统之中。习题 1.5说明微型计算机系统的硬件组成及各部分作用。解答CPU:CPU 也称处理器,是微机的核心。它采用大规模集成电路芯片,芯片内集成了控制器、运算器和若干高速存储单元(即寄存器)。处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。存储器:存储器是存放程序和数据的部件。外部设备:外部设备是指可与微机进行交互的输入(Input)设备和输出(Output)设备,也称 I/O 设备。I/O 设备通过 I/O 接口与主机连接。2总线:互连各个部件的共用通道,主要含数据总线、地址
3、总线和控制总线信号。习题 1.6什么是总线?微机总线通常有哪 3 组信号?各组信号的作用是什么?解答总线:传递信息的共用通道,物理上是一组公用导线。3 组信号线:数据总线、地址总线和控制总线。(1)地址总线:传输将要访问的主存单元或 I/O 端口的地址信息。(2)数据总线:传输读写操作的数据信息。(3)控制总线:协调系统中各部件的操作。习题 1.7简答如下概念:(1)计算机字长(2)取指译码执行周期(3)ROM-BIOS(4)中断(5)ISA 总线解答(1)处理器每个单位时间可以处理的二进制数据位数称计算机字长。(2)指令的处理过程,即指处理器从主存储器读取指令(简称取指),翻译指令代码的功能
4、(简称译码),然后执行指令所规定的操作(简称执行)的过程。(3)ROM-BIOS 是“基本输入输出系统”,操作系统通过对 BIOS 的调用驱动各硬件设备,用户也可以在应用程序中调用 BIOS 中的许多功能。(4)中断是 CPU 正常执行程序的流程被某种原因打断、并暂时停止,转向执行事先安排好的一段处理程序,待该处理程序结束后仍返回被中断的指令继续执行的过程。(5)ISA 总线是指 IBM PC/AT 机上使用的系统总线。习题 1.8下列十六进制数表示无符号整数,请转换为十进制形式的真值:(1)FFH (2)0H (3)5EH (4)EFH解答(1) 255(2) 0(3) 94(4) 2393
5、习题 1.9将下列十进制数真值转换为压缩 BCD 码:(1)12 (2)24 (3)68 (4)99解答(1) 12H(2) 24H(3) 68H(4) 99H习题 1.10将下列压缩 BCD 码转换为十进制数:(1)10010001 (2)10001001 (3)00110110 (4)10010000解答(1) 91(2) 89(3) 36(4) 90习题 1.11将下列十进制数用 8 位二进制补码表示:(1)0 (2)127 (3)127 (4)57解答(1) 00000000(2) 01111111(3) 10000001(4) 11000111习题 1.12数码 09、大写字母 AZ
6、、小写字母 az 对应的 ASCII 码分别是多少?ASCII 码0DH 和 0AH 分别对应什么字符?解答数码 09 对应的 ASCII 码依次是 30H39H 。大写字母 AZ 对应的 ASCII 码依次是:41H5AH。小写字母 az 对应的 ASCII 码依次是:617AH。ASCII 码 0DH 和 0AH 分别对应的是回车和换行字符。4第 2 章 微处理器指令系统习题 2.1微处理器内部具有哪 3 个基本部分?8088 分为哪两大功能部件?其各自的主要功能是什么?这种结构与 8 位 CPU 相比为什么能提高其性能?解答算术逻辑单元 ALU、寄存器组和控制器;总线接口单元 BIU:管
7、理 8088 与系统总线的接口负责 cpu 对接口和外设进行访问执行单元 EU:负责指令译码、执行和数据运算;8 位 cpu 在指令译码前必须等待取指令操作的完成,8088 中需要译码的指令已经取到了指令队列,不需要等待取指令。而取指令是 cpu 最为频繁的操作,因此 8088 的结构和操作方式节省了大量等待时间,比 8 位 cpu 节省了时间,提高了性能。习题 2.2说明 8088 的 8 个 8 位和 8 个 16 位通用寄存器各是什么?解答8 个 8 位寄存器:AH、AL、BH、BL 、CH、CL、DH、DL;8 个 16 位寄存器:累加器 AX、基址寄存器 BX、计数器 CX、数据寄存
8、器 DX、源地址寄存器 SI、目的地址寄存器 DI、基址指针 BP、堆栈指针 SP。习题 2.4举例说明 CF 和 OF 标志的差异。解答例:有运算:3AH+7CH=B6H作为无符号数运算,没有进位,CF=0;作为有符号数运算,结果超出范围,OF=1.习题 2.5什么是 8088 中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?1MB 最多能分成多少个逻辑段?请将如下逻辑地址用物理地址表达: FFFFH:0 40H:17H 2000H:4500H B821H:4567H解答物理地址:物理存储单元具有的一个唯一的 20 位编号逻辑地址:在 8088 内部和用户编程时,所采用的“段地址:偏移地
9、址”形式将逻辑地址中的段地址左移二进制 4 位(对应 16 进制是一位,即乘以 16),加上偏移地址就得到 20 位物理地址51MB 最多能分成 1MB16B2 20242 16 个逻辑段,因为每隔 16 个字节单元就可以开始一个逻辑段 FFFFH:0FFFF0H 40H:17H00417H 2000H:4500H24500H B821H:4567HBC777H习题 2.8已知 DS2000H 、BX 0100H 、SI0002H ,存储单元20100H20103H依次存放12H、34H、56H、78H,21200H21203H 依次存放 2AH、4CH、B7H、65H,说明下列每条指令执行完
10、后 AX 寄存器的内容,以及源操作数的寻址方式? mov ax,1200h mov ax,bx mov ax,1200h mov ax,bx mov ax,bx+1100h mov ax,bx+si mov ax,bxsi+1100h解答 mov ax,1200h ;AX1200H,立即数寻址 mov ax,bx ;AX0100H,寄存器寻址 mov ax,1200h ;AX4C2AH ,直接寻址 mov ax,bx ;AX3412H,寄存器间接寻址 mov ax,bx+1100h ;AX4C2AH ,寄存器相对寻址 mov ax,bx+si ;AX7856H,基址变址寻址 mov ax,bx
11、si+1100h ;AX65B7H,相对基址变址寻址习题 2.9说明下面各条指令的具体错误原因 mov cx,dl mov ip,ax mov es,1234h mov es,ds mov al,300 mov sp,ax mov ax,bx+di mov 20h,ah解答(1)cx 为字寄存器,dl 为字节寄存器,类型不匹配。(2)mov 指令的目的操作数只能是寄存器或者主存单元,ip 是指针。(3)不允许立即数到段寄存器的传送。(4)不允许段寄存器之间的直接传送。6(5)数据溢出。(6)sp 不能用于寄存器间接寻址。(7)格式不对。应为:mov ax,bx+di(8)mov 指令的操作数不
12、能是立即数。习题 2.10已知数字 09 对应的格雷码依次为:18H、34H、05H、06H、09H 、0AH、0CH 、11H、12H 、 14H,它存在于以 table 为首地址(设为 200H)的连续区域中。请为如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。lea bx,tablemov al,8xlat解答lea bx,table ;获取 table 的首地址,BX200Hmov al,8 ;传送欲转换的数字,AL8xlat ;转换为格雷码,AL12H习题 2.11给出下列各条指令执行后 AL 值,以及 CF、ZF、SF、OF 和 PF 的状态:mov al,89hadd
13、 al,aladd al,9dhcmp al,0bchsub al,aldec alinc al解答mov al,89h ;AL89H CF ZF SF OF PFadd al,al ;AL12H 1 0 0 1 1add al,9dh ;AL0AFH 0 0 1 0 1cmp al,0bch ;AL0AFH 1 0 1 0 1sub al,al ;AL00H 0 1 0 0 1dec al ;AL0FFH 0 0 1 0 1inc al ;AL00H 0 1 0 0 17习题 2.12请分别用一条汇编语言指令完成如下功能: 把 BX 寄存器和 DX 寄存器的内容相加,结果存入 DX 寄存器。
14、 用寄存器 BX 和 SI 的基址变址寻址方式把存储器的一个字节与 AL 寄存器的内容相加,并把结果送到 AL 中。 用 BX 和位移量 0B2H 的寄存器相对寻址方式把存储器中的一个字和 CX 寄存器的内容相加,并把结果送回存储器中。 用位移量为 0520H 的直接寻址方式把存储器中的一个字与数 3412H 相加,并把结果送回该存储单元中。 把数 0A0H 与 AL 寄存器的内容相加,并把结果送回 AL 中解答 add dx,bx add al,bx+si add bx+0b2h,cx add word ptr 0520h,3412h add al,0a0h习题 2.13设有 4 个 16
15、位带符号数,分别装在 X、Y 、Z、V 存储单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处。mov ax,Ximul Ymov cx,axmox bx,dxmov ax,Zcwdadd cx,axadc bx,dxsub cx,540sbb bx,0mov ax,Vcwdsub ax,cxsbb dx,bxidiv X解答(V-( X*Y+Z-540)/X8习题 2.14给出下列各条指令执行后的结果,以及状态标志 CF、OF、SF、ZF、PF 的状态。mov ax,1470hand ax,axor ax,axxor ax,axnot axtest ax,0f0f0h解答mov
16、 ax,1470h ;AX1470H CF ZF SF OF PFand ax,ax ;AX1470H 0 0 0 0 0or ax,ax ;AX1470H 0 0 0 0 0xor ax,ax ;AX0000H 0 1 0 0 1not ax ;AXFFFFH 0 1 0 0 1test ax,0f0f0h ;AXFFFFH 0 0 1 0 1习题 2.15控制转移类指令中有哪三种寻址方式?解答相对寻址、直接寻址、间接寻址(还可以分成寄存器间接、存储器间接)习题 2.16假设 DS2000H 、BX 1256H 、TABLE 的偏移地址是 20A1H,物理地址 232F7H 处存放 3280
17、H,试问执行下列段内间接寻址的转移指令后,转移的有效地址是什么? JMP BX JMP TABLEBX解答(1)1256H(2)3280H习题 2.17判断下列程序段跳转的条件 xor ax,1e1ehje equal test al,10000001bjnz there cmp cx,64h9jb there解答 AX1e1eh(异或后为 0) AL 的 D0 或 D7 至少有一位为 1 CX(无符号数) 64h习题 2.18如下是一段软件延时程序,请问 NOP 指令执行了多少次?xor cx,cxdelay: noploop delay解答216 次习题 2.20按照下列要求,编写相应的程
18、序段: 由 string 指示起始地址的主存单元中存放有一个字符串(长度大于 6),把该字符串中的第 1 个和第 6 个字符(字节量)传送给 DX 寄存器。 有两个 32 位数值,按“小端方式”存放在两个缓冲区 buffer1 和 buffer2 中,编写程序段完成 DX.AXbuffer1buffer2 功能。 编写一个程序段,在 DX 高 4 位全为 0 时,使 AX0;否则使 AX1。 把 DX.AX 中的双字右移 4 位 有一个 100 个字节元素的数组,其首地址为 array,将每个元素减 1(不考虑溢出或借位)存于原处。解答(1)mov dl,string1mov dh,strin
19、g6(2)mov ax, word ptr buffer1sub ax, word ptr buffer2; 先减低 16 位mov dx, word ptr buffer1+2sbb dx, word ptr buffer2+2; 后减高 16 位,需减低 16 位的借位(3)test dx,0f000h10jz nextmov ax,-1jmp donenext: mov ax,0done: (4)mov cx,4again: shr dx,1 ; 右移一位,移出的低位进入 CF 标志rcr ax,1 ; 将 CF 移进 AX 高位,同时实现 AX 右移loop again ; 循环 4
20、次,实现 4 位右移(5)mov cx,100mov bx,0again: sub arraybx,1inc bx loop again 11第 3 章 汇编语言程序设计习题 3.9给出下列语句中,指令立即数(数值表达式)的值: mov al,23h AND 45h OR 67h mov ax,1234h/16+10h mov ax,23h SHL 4 mov al,a AND (NOT(a-A) mov ax,(76543 LT 32768) XOR 7654h解答(1) al=67h(2) ax=133h,dx=4h(3) ax=0230h(4) al=41h(5) ax=7654h习题
21、3.10画图说明下列语句分配的存储空间及初始化的数据值: byte_var db ABC,10,10h,EF,3 dup(-1,?,3 dup(4) word_var dw 10h,-5,3 dup(?)解答(1)从低地址到高地址,各个字节依次是:41h 42h 43h 0ah 10h 45h 46h ffh - 04h 04h 04h ffh - 04h 04h 04h ffh - 04h 04h 04h(2)从低地址到高地址,各个字节依次是:10h 0 FBh FFh - - - - - -其中“-”表示无初值,实际上汇编程序会填入 0。习题 3.11请设置一个数据段,按照如下要求定义变量
22、: my1b 为字符串变量,表示字符串 “Personal Computer” my2b 为用十进制数表示的字节变量,这个数的大小为 20 my3b 为用十六进制数表示的字节变量,这个数的大小为 20 my4b 为用二进制数表示的字节变量,这个数的大小为 20 my5w 为 20 个未赋值的字变量 my6c 为 100 的符号常量 my7c 为字符串常量,代替字符串“Personal Computer”12解答my1b db Personal Computermy2b db 20my3b db 14hmy4b db 00010100bmy5w dw 20 dup(?)my6c = 100my7
23、c equ 习题 3.15假设 myword 是一个字变量, mybyte1 和 mybyte2 是两个字节变量,指出下列语句中的具体错误原因。 mov byte ptr bx,1000 mov bx,offset mywordsi cmp mybyte1,mybyte2 mov mybyte1,al+1 sub al,myword jnz myword解答(1) 1000 超过一个字节所能表达的最大整数(2)SI 应为偶数(3)两个内存单元不能直接运算(4)不能使用 al+1,应改为al+1(5)源操作数与目的操作数类型不匹配(6)条件转移指令后面应接标号,而不是变量习题 3.16编写一个程
24、序,把从键盘输入的一个小写字母用大写字母显示出来。解答mov ah,1 ;只允许输入小写字母int 21hsub al,20h ;转换为大写字母mov dl,almov ah,2int 21h ;显示13第 4 章 微机总线习题 4.1微机总线的信号线包括_、_、_、以及电源和地线。微机系统可以将总线划分为三层(类),它们是_、_和_。解答数据总线 、 地址总线 、 控制总线芯片总线、 内总线、外总线习题 4.2占用总线进行数据传输,一般需要经过总线请求和仲裁、_、_和结束 4 个阶段。解答寻址,数据传送习题 4.7执行一条指令所需要的时间被称为_周期,而总线周期指的是_,8088 基本的总线
25、周期由_个 T 组成。如果 8088 的 CLK 引脚接 5MHz 的时钟信号,那么每个 T 状态的持续时间为_。解答指令CPU 通过总线操作与外界(存储器和 I/O 端口)进行一次数据交换的过程(时间)4200ns习题 4.8请解释 8088 以下引脚信号:CLK、A 19/S6A 16/S3、A 15A 8、AD 7AD 0、 、IOM/、 、ALE 的含义,并画出它们在存储器写总线周期中的波形示意。RDW解答CLK:CPU 时钟信号A19/S6A16/S3:地址信号 A19A16 和状态信号 S6S3 分时复用信号A15A8:地址信号 A15A8AD7AD0:地址信号 A7 A0 和数据
26、信号 D7D0 分时复用信号IO/M*:I/O 接口和存储器操作区别信号RD*:读控制信号,WR*:写控制信号ALE:地址锁存信号14习题 4.9在 8088 的工作过程中,什么情况下会产生 TW?具体发生在什么时刻?解答当 8088 进行读写存储器或 I/O 接口时,如果存储器或 I/O 接口无法满足 CPU 的读写时序(来不及提供或读取数据时),需要 CPU 插入等待状态 Tw。在读写总线周期的 T3 和 T4 之间插入 Tw。习题 4.11在 8088 系统中,读取指令“ADD 2000H, AX”(指令长度为 3 个字节)和执行该指令各需要几个总线周期?它们各是什么样的总线周期?解答8
27、088 每个总线周期只能读写一个字节数据。所以读取指令长度为 3 个字节的指令“ADD 2000H, AX”需要 3 个时钟周期,执行时需要 2 个时钟周期。读取指令是 存储器读 总线周期,执行时是 存储器写 总线周期。15第 5 章 主存储器习题 5.3类似处理器总线,存储器芯片也分成数据、地址和控制 3 类引脚。以存储结构为32K8 的 SRAM 62256 为例,该芯片应有_个数据引脚、_个地址引脚,3 个典型的控制引脚分别是_、_和_。解答815片选输出允许写入允许习题 5.7EEPROM 的擦写与闪存的擦写有什么不同?以 AT28C040 或 AT29C512 为例,说明常用的两种判
28、断擦写是否完成的方法,并估算两者完成整个芯片编程的最快时间。解答AT28C040 最快编程时间:(5121024/256)10ms20480ms20sAT29C512 最快编程时间:512 扇区(10ms128 字节 (15010 -39010 -6)ms)14950.4ms15s习题 5.8SRAM 芯片的片选引脚有什么用途?假设在 8088 微处理器系统中,地址信号A19A 15 输出 01011 时译码电路产生一个有效的片选信号,则该片选信号将占有多少主存容量?其地址范围是什么?解答主存容量:2 1532KB,因低位地址信号的个数是 15 个。地址范围:01011 00000000000
29、0000 01011 11111111111111,即58000H5FFFFH。习题 5.11什么是存储器芯片连接中的“位扩展”和“字扩展”?采用 DRAM 21256(256K1)构成 512KB 的 RAM 存储模块,需要多少个芯片,怎样进行位扩展和字扩展?16解答位扩充:存储器芯片数据引脚个数小于主机数据信号个数时,利用多个存储器芯片在数据“位”方向的扩充。字扩充:当一个存储器芯片不能满足系统存储容量时,利用多个存储器芯片在“数据字”方向的扩充。组成 512KB 存储模块,用 DRAM 21256(256K1)需要 16 个芯片;位扩充 8 个,字扩充 2 组。习题 5.13给出图 5-
30、28 中 4 个存储器芯片各自占用的地址范围。如果采用部分译码,要指出重复的地址范围。解答4 个存储芯片各自的可用地址范围:芯片号 A19A18 A17A16 A15A0 地址范围12340001111101全 0全 1全 0全 1全 0全 1全 0全 100000H3FFFFH40000H7FFFFHC0000HCFFFFH,重复地址:E0000HEFFFFHD0000HDFFFFH,重复地址:F0000HFFFFFH17第 6 章 输入输出接口习题 6.1典型的 I/O 接口电路通常有哪 3 类可编程寄存器?各自的作用是什么?解答(1)数据寄存器:保存外设给 CPU 和 CPU 发往外设的
31、数据(2)状态寄存器:保存外设或接口电路的状态(3)控制寄存器:保存 CPU 给外设或接口电路的命令习题 6.2I/O 端口与存储器地址常有_ _和_两种编排方式,8088/8086 处理器支持后者,设计有专门的 I/O 指令。其中指令 IN 是将数据从_传输到_,执行该指令时 8088/8086 处理器引脚产生_ _总线周期。指令“OUT DX, AL”的目的操作数是 _寻址方式,源操作数是_寻址方式。解答(I/O 端口与存储器地址)统一编址(I/O 端口与存储器地址)独立编址外设处理器I/O 读(I/O 端口的 DX)寄存器间接寄存器习题 6.5有一个查询输入接口电路类似图 6-9,但其数
32、据端口为 8F40H、状态端口为 8F42H。从状态端口最低位可以获知输入设备是否准备好一个字节的数据:D 01 表示准备好,D00 说明没准备好。不考虑查询超时,编程从输入设备读取 100 个字节保存到 INBUF缓冲区。解答mov bx,offset inbufmov cx,100again: mov dx,8f42hstatus: in al,dx ;查询一次test al,01hjz statusmov dx,08f40hin al,dx ;输入一个字节18mov bx,alinc bxloop again ;循环,输入 100 个字节习题 6.10查询、中断和 DMA 传送是微机中常
33、用的外设数据交换方式,请说明各自的特点。解答19第 7 章 中断控制接口习题 7.28088 中断向量表的作用是什么?解答习题 7.48259A 中 IRR、IMR 和 ISR 三个寄存器的作用是什么?解答中断请求寄存器 IRR:保存 8 条外界中断请求信号 IR0IR7 的请求状态,Di 位为 1表示 IRi 引脚有中断请求;为 0 表示无请求。中断服务寄存器 ISR:保存正在被 8259A 服务着的中断状态,Di 位为 1 表示 IRi 中断正在服务中;为 0 表示没有被服务。中断屏蔽寄存器 IMR:保存对中断请求信号 IR 的屏蔽状态,Di 位为 1 表示 IRi 中断被屏蔽(禁止);为
34、 0 表示允许。习题 7.5PC/XT 机的 ROM-BIOS 对 8259A 的初始化程序如下:mov al,13hout 20h,almov al,08hout 21h,almov al,09hout 21h,al请说明其设定的工作方式。解答习题 7.6某时刻 8259A 的 IRR 内容是 08H,说明_。某时刻 8259A 的 ISR 内容是 08H,说明_。在两片 8259A 级连的中断电路中,主片的第 5 级 IR5 作为从片的中断请求输入,则初始化主、从片时,ICW3 的控制字分别是_和_。解答IR3 引脚有中断请求IR3 正在被中断服务,其它不被处理20H 和 05H。20习题
35、 7.11下段程序读出的是 8259A 的哪个寄存器?mov al,0bhout 20h,alnopin al,20h解答读取中断服务寄存器 ISR 的内容。因为执行输入指令(A00)之前,执行的输出指令,写入了 OCW3(D4D3 01),其中 P RR RIS(D2D1D0)011 指明随后读出 ISR。不是查询字。21第 8 章 定时计数控制接口习题 8.28253 每个计数通道与外设接口有哪些信号线,每个信号的用途是什么?解答CLK 时钟输入信号在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减 1GATE 门控输入信号控制计数器工作,可分成电平控制和上升沿控制两种类
36、型OUT 计数器输出信号当一次计数过程结束(计数值减为 0),OUT 引脚上将产生一个输出信号习题 8.38253 每个通道有_种工作方式可供选择。若设定某通道为方式 0 后,其输出引脚为_电平;当_后通道开始计数,_信号端每来一个脉冲_就减 1;当_,则输出引脚输出_电平,表示计数结束。8253 的 CLK0 接 1.5MHz 的时钟,欲使 OUT0 产生频率为 300KHz 的方波信号,则 8253 的计数值应为_,应选用的工作方式是_。解答6低写入计数初值(并进入减 1 计数器)CLK减 1 计数器计数器减为 0高5(1.5MHz 300KHz)3习题 8.4试按如下要求分别编写 825
37、3 的初始化程序,已知 8253 的计数器 02 和控制字 I/O地址依次为 204H207H。 使计数器 1 工作在方式 0,仅用 8 位二进制计数,计数初值为 128。 使计数器 0 工作在方式 1,按 BCD 码计数,计数值为 3000。 使计数器 2 工作在方式 2,计数值为 02F0H。解答(1) mov al,50hmov dx,207hout dx,almov al,128 ;80h22mov dx,205hout dx,al(2) mov al,33hmov dx,207hout dx,almov ax,3000h ;不是 3000mov dx,204hout dx,almov
38、 al,ahout dx,al(3) mov al,0b4hmov dx,207hout dx,almov al,02f0hmov dx,206hout dx,almov al,ahout dx,al23第 10 章 并行接口习题 10.4设定 8255A 的口 A 为方式 1 输入,口 B 为方式 1 输出,则读取口 C 的数据的各位是什么含义?解答习题 10.5对 8255A 的控制寄存器写入 B0H,则其端口 C 的 PC5 引脚是什么作用的信号线?解答方式控制字为 B0H10110000B,说明 A 组为方式 1 输入,它将征用 PC5 引脚作为输入缓冲器满信号 IBFA习题 10.7
39、第 10.2.3 节用 8255A 端口 A 方式 1 与打印机接口,如果采用端口 B,其他不变,请说明如何修改接口电路和程序。解答24mov dx,0fffehmov al,84hout dx,almov al,04h;使 INTEB(PC2)为 0,禁止中断out dx,almov cx,counter ;打印字节数送 CXmov bx,offset buffer ;取字符串首地址call prints;调用打印子程序prints procpush ax ;保护寄存器push dxprint1: mov al,bx ;取一个数据mov dx,0fffahout dx,al ;从端口 B 输
40、出mov dx,0fffchprint2: in al,dxtest al,02h ;检测( PC1)为 1 否?jz print2inc bxloop print1pop dxpop axretprints endp习题 10.8设一工业控制系统,有四个控制点,分别由四个对应的输入端控制,现用 8255A 的端口 C 实现该系统的控制,如图 10-22。开关 K0K 3 打开则对应发光二极管 L0L 3 亮,表示系统该控制点运行正常;开关闭合则对应发光二极管不亮,说明该控制点出现故障。编写 8255A 的初始化程序和这段控制程序。解答;写入方式字mov al,100001b ;81hmov
41、dx,控制口地址 ;0fffehout dx,al25;加入下一段更好,使 L0L3 全亮mov al,0fhmov dx,端口 C 地址 ;0fffchout dx,al;控制程序段mov dx,端口 C 地址 ;0fffchin al,dx ;读入 PC0PC3mov cl,4shl al,cl ;左移 4 位out dx,al ;控制 PC4PC7习题 10.16如图 10-23 为用一片 8255A 控制 8 个 8 段共阴极 LED 数码管的电路。现要求按下某个开关,其代表的数字(K 1 为 1,K 2 为 2,K 8 为 8)在数码管从左到右循环显示(已有一个延时子程序 delay
42、 可以调用),直到按下另一个开关。假定 8255A 的数据端口A、B 、 C 及控制端口的地址依次为 FFF8HFFFBH 。编写完成上述功能的程序,应包括8255A 的初始化、控制程序和数码管的显示代码表。解答显示代码表table db 0c0h ;对应 0(任意)db 0f9h,0a4h,0b0h,99hdb 92h,82h,0f8h,80h ;对应 188255A 初始化mov dx,0fffbhmov al,10001001b ;89hout dx,al;控制程序again0: mov dx,0fffah ;输入开关状态in al,dxmov cx,8 ;确定哪个开关闭合mov ah,01h ;mov ah,08hagain1: shr al,1 ;shl al,1jnc disp0inc ah ;dec ahloop again1jmp disp1显示字段disp0: mov bx,offset table26mov al,ahxlatmov dx,0fff8hout dx,al ;输出段码disp1: mov cx,8 ;循环显示 8 位mov al,01hmov dx,0fff9hdisp2: out dx,al ;输出位码call delayshl al,1loop disp2jmp again0