微机第三版教材习题参考答案 马维华

更新时间:2023-12-19 15:25:01 阅读量: 教育文库 文档下载

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

微机原理与接口技术(第三版)课堂布置及需要关注习题参考答案 1

第二章作业

2-2简述微处理器的工作方式、各工作方式的含义和区别是什么?它们之间是如何切换的? 答:

1.五种工作方式:实地址方式、保护虚地址方式、虚拟86方式、系统管理方式以及IA-32E方式。 2.含义:

(1)实地址方式是指处理器工作在8086/8088编程环境下的工作方式,其最大地址空间为1MB。 (2)保护地址方式,又称保护虚地址方式,简称保护方式,是真正发挥处理器潜能的一种工作方式。所谓保护是指在执行多任务操作时,对不同任务使用的不同存储空间进行完全隔离,保护每个任务顺利执行,能够寻址的地址空间为实际的物理地址空间即2(m为处理器外部地址线的引脚条数)。

(3)虚拟86方式是指一个多任务的环境,即模拟多个8086的工作方式。在这个方式之下,处理器被模拟成多个8086微处理器同时工作。

(4) 系统管理方式(SMM)是为实现特定功能及系统安全提供的一种工作方式,SMM的功能主要包括电源管理以及为操作系统和正在运行的程序提供安全性。SMM最显著的应用就是电源管理。

以上四种方式是IA-32所有处理器所具有的工作方式。

(5)从后期的P4到以Core为核心的处理器开始支持64位扩展技术,引入了IA-32E工作方式。在这种方式下,处理器支持两种模式即兼容的工作方式(兼容IA-32处理器的方式)和64位工作方式。在兼容模式下,允许在64位操作系统下运行原来的16位和32位应用程序,可使用前缘REX访问64位数据,最大支持的32位地址空间,而在64位方式下,采用EM64T技术,支持64位操作,同时支持36位的地址(从Pentium Pro开始处理器的外部地址线就提供36条),支持64位线性地址,默认的地址空间为64位,默认的数据宽度为32位,指令允许32/64地址和32/64数据的混合使用,因此又把 Core为核心的处理器称为32/64处理器,与真正64位处理器有区别,可称之为具有64位功能的32位处理器。

3.工作方式的相互转换如下图所示。

m

以上工作方式中,系统管理方式需要用硬件切换即有/SMI引脚中断方可以从原来的工作方式进入系统管理方式,其它工作方式的切换均可用软件控制来切换工作方式。

2-3 IA-32E方式兼容模式和64位模式下,Cure X系列处理器能够寻址的物理地址空间分别有多大?

答: 具有IA-32E工作方式处理器在兼容模式下,最大支持的32位地址空间即4GB,而在64位方式下,采用EM64T技术,支持64位操作,同时支持36位的物理地址即64GB,支持64位线性地

2 IA-32 & Intel64微机原理与接口技术(第三版) 布置的习题参考答案

址,默认的地址空间为64位。

2-10 Pentium处理器的U和V两条指令流水线的功能是什么?主频为100MHz的Pentium处理器,最快执行两条指令的时间为多少ns?

答:(1)U流水线主要用于执行复杂指令,而V流水线只能执行简单指令。

(2)最快执行两条指令的时间是一个时钟周期,100MHz主频其一个时钟周期为1/100 (us)=10ns。2-11简述Pentium处理器的BTB的功能。

答:BTB(分支目标缓冲器)可对分支指令进行预测,目的是提高流水线执行效率。在Pentium微处理器中,使用了BTB预测分支指令,这样可在分支指令进入指令流水线之前预先安排指令的顺序,而不致使指令流水线的执行产生停滞或混乱。

2-18 总结一下8086/8088到Core i7处理器外部地址线、数据线条数、通用寄存器的位数以及所处的工作方式。各自的位长以及所能寻址的物理地址空间有多大?

答:从8086到Corei的相关参数如下表所示表。 处理器 主要参数 通用寄存器位数 外部数据线条数 外部地址线条数 物理地址空间 I/O组织(端口个) 工作方式 8086 16 16 20 1MB 64K 80286 16 16 24 16MB 64K 80386 32 32 32 4GB 64K 80486 32 32 32 4GB 64K P6Pro,PII,PIII(Pentium ) 32 64 32 4GB 64K 32 64 36 64GB 64K Pentium 4 32 64 36 64GB 64K Core 2 Duo 32/64 64 36 64GB 64K Core i7 32/64 64 36 64GB 64K Corei3/i5/ i7 (二代到六代) 32/64 64 36 64GB 64K 实,保护、实、保护、实、保护、实、保护、实、保护、系实方式 实方式 实方式 实、保护、系统V86、实方式 系统V86、系统管V86、系统管系统管理、统管理、V86 保护方式 保护V86 保护、管理、IA-32E 管理 理 理 IA-32E IA-32E 2-26 已经从内存1FF00000开始存放12H, 34H, 56H, 78H, 90H, ABH, CDH, EFH, 11H, 22H, 33H, 44H, 55H, 66H, 77H, 88H,99H,00H,AAH,BBH,CCH,DDH,EEH,FFH,试说明从1FF00000H开始取一个双四字的值,从1FF00008H开始取双字的值,以及从1F00010H开始取四字和一个字的值。

解:按照数据低字节存放在低地址的原则,在Intel处理器中,为了保持兼容性,仍然定义一个字为16位(尽管字长已经是32位或64位)

从1FF00000H开始的双四字的值=8877665544332211EFCDAB9078563412H 从1FF00008H开始的双字的值=44332211H

从1FF00010H开始的四字的值=FFEEDDCCBBAA0099H 从1FF00010H开始的一个字的值=0099H

2-32 对于IA-32或Intel 64处理器采用16位运算(用16位寄存器),求以下运算结果及相应各标志位:

(1) 5439H+4567H (2) 2345H+5219H (3) 54E3H-27A0H (4) 1A9FH+E561H 解:(1)

5439H+4567H=99A0H 0101 0100 0011 1001 + 0100 0101 0110 0111 1001 1001 1010 0000

AF=1,PF=1,ZF=0,CF=0,OF=1,SF=1 (2)

2345H+5219H=755EH

微机原理与接口技术(第三版)课堂布置及需要关注习题参考答案 3

0010 0011 0100 0101 + 0101 0010 0001 1001 0111 0101 0101 1110

AF=0,PF=0,ZF=0,CF=0,OF=0,SF=0 (3)法1直接相减 54E3H-27A0H=2D43H 0101 0100 1110 0011 - 0010 0111 1010 0000 0010 1101 0100 0011

AF=0,PF=0,ZF=0,CF=0,OF=0,SF=0 法2变减为加

54E3H-27A0H=54E3+D860H=2D43H 0101 0100 1110 0011 + 1101 1000 0110 0000 1 0010 1101 0100 0011

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

说明:可见这两种方法算出的结果是一样的,但进借位标志完全不同。

(4)

1A9FH+E561=0000H 0001 1010 1001 1111 + 1110 0101 0110 0001 1 0000 0000 0000 0000

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

2-37 内存数据如表2.26所示,指出实地址方式下,执行下列程序段后AX中的值。 MOV AX,1100H MOV DS,AX MOV BX,200H

MOV AX,[BX+62H]

表2.26 题2-38,2-43和2-44表(内存数据分布情况) 地址 : 00011267H 00011266H 00011265H 00011264H 00011263H 00011262H 00011261H 00011260H 数据 : 00H 70H 00H 01H 75H 39H 2AH 00H 地址 : 00011237H 00011236H 00011235H 00011234H 00011233H 00011232H 00011231H 00011230H 数据 : 00H 00H 11H 47H 32H 30H 31H 36H 地址 : 00001047H 00001046H 00001045H 00001044H 00001043H 00001042H 00001041H 00001040H 数据 : 00H 01H 1EH 13H 00H 00H 1FH FFH 地址 : 00001007H 00001006H 00001005H 00001004H 00001003H 00001002H 00001001H 00001000H 数据 : 00H 40H F3H 01H 00H 00H 1FH FFH 解:从程序段知DS=1100H,有效地址(偏移地址)=200H+62H=262H,因此物理地址=11000H+262H=11262H,11262H开始的一个字为7539H,所以AX=7539H

2-38 IA-32处理器描述符中所含有的基地址为089C0000H,段界限为0003FH,求(1)G=0时该描述符所寻址段的地址范围,该段如果要存汉字,能容纳多少个?(2)G=1时,对于4K页,描述的段的地址范围。

解:(1)G=0,段以字节为单位,段大小=段界+1=3FH+1=40H=64,末地址=段基址+段大

4 IA-32 & Intel64微机原理与接口技术(第三版) 布置的习题参考答案

小-1=段基址+段界=089C0000H+3FH=089C0000H~0x89C0003F,可容纳汉字64/2=32个;

(2)G=1时,段大小以页为单位(4K页),段大小=(段界+1)×4K=(3FH+1)×1000H=40000H=262144,末地址=段基址+段大小-1=089C0000H+40000-1=089C0000H+3FFFFH=089FFFFFH,可容纳汉字262144/2=131072个。

2-39 试定义IA-32处理器的两个段描述符来描述一个存储器段,均为一个可写、向上增长的用户访问的在物理存储器中、未访问过的数据段,(1)地址范围为03000000H~03001FFFH,(2)01000000H~027FFFFFH。

解:(1)定义段描述符就是确定段基址、段界和相关属性

段基址=03000000H,段界=末地址-首地址=1FFFH,段界

访问权字节, P=1,DPL=11,S=1, TYPE=001,A=0,对照描述符格式

31???????24 23 22 21 20 19??16 15 14 13 12 S 段基址(B31-B24) G D/B 0 AVL 段界(L19-L16) P DPL 基地址(B15-B0) 8 7??????0 基地址Type A (B23-B16) 段界(L15-L0) 11 10 9 4 0

所以段描述符为: 03 40 F2 000000 1FFFH

(2) 段基址=01000000H,段大小=027FFFFFH-01000000H+1=017FFFFFH=01800000H>FFFFFH+1因此,G=1,由于段大小=(段界+1)×4K,因此段界=段大小/4K-1=01800000H/4K-1=1800H-1=17FFH,其它属性同上,则段描述符=01C1F200000017FFH

2-41 已知从00100000H开始存放FFH,01H,00H,04H,10H,F2H,0AH,06H,FFH,03H,00H,00H,10H,F2H,40H,02H,从02100000H开始存放35H,36H,31H,30H,30H,32H,39H,38H,3AH,DS=000BH,EBX=0000002H,GDTR=001000001FFFH,CR0=60000011H,CR3=00034000H,对于IA-32处理器,执行指令MOV EAX,[EBX]时:

(1) 求源操作数对应的描述符表可存放描述符个数

(2) 求源操作数对应段描述符的值以及该描述符描述段的地址范围 (3) 求源操作数所对应的物理地址 (4) 求指令执行后EAX中的内容。 (5) 从已知条件中还能得到什么信息?

解:DS=000BH=0000 0000 0000 1011B, 对照选择子的格式可知TI=0,选中GDT表,RPL=11为普通用户使用,索引×8=08H

(1)GDT表可存放的描述符的个数由GDTR中的界决定,GDT表的界=1FFFH,因此可存放的段描述符的个数=(1FFFF+1)/8=400H=1K个;

(2)先找出描述符存放的首地址=GDT表首址(GDTR高32位)+索引×8=00100000H+08H=00100008H,以段描述符为0240F210000003FFH,段描述符描述的段的大小取决于段界和G,对照段描述符的格式可知G=0,段界=003FFH,段基址=02100000H,因此段地址范围为02100000H~0210003FFH;

(3)CR0=600000011H,因此PE=1,PG=0,是分段而不分页的保护方式,因此CR3多余,段内偏移地址=EBX的值=00000002H,因此物理地址=段基址+段内偏移地址=02100000H+00000002H=02100002H;

(4)021000002H开始的4个字节就是EAX的值=32303031H;

(5)由段描述符可知,G=0,D=1为32位数据,此外决定其它属性的主要是访问权字节,访问权字节中为F2H=11110010B,即P=1表示数据在物理存储器中,DPL=11表示一般用户程序访

微机原理与接口技术(第三版)课堂布置及需要关注习题参考答案 5

问的数据,S=1表示段描述符,A=0表示该段还没有被访问过,TYPE=001表示该段是向上增长的可写的数据段。

2-42已知内存中的数据如表2.26所示,对于IA-32处理器,已知内部相应寄存器的值为:ESI=00001230H,DS=SS=ES=FS=GS=1003H。GDT表和LDT表的首地址均为0,CR4=0。CR3=000011FFH,内存数据如下所示。

(1)当CR0=70000010H时指令MOV EAX,[ESI]对应源操作数的物理地址及指令执行后EAX中的值。

[ESI]对应源操作数的物理地址及指令执行后EAX(2)当CR0=70000011H时 求指令MOV EAX,中的值。该段的最多能容纳多少字节数据?根据访问权字节说明该段是什么样的段,是否存在存储器中?

地址 : 00011267H 00011266H 00011265H 00011264H 00011263H 00011262H 00011261H 00011260H 数据 : 00H 70H 00H 01H 75H 39H 2AH 00H 地址 : 00011237H 00011236H 00011235H 00011234H 00011233H 00011232H 00011231H 00011230H 数据 : 00H 00H 11H 47H 32H 30H 31H 36H 地址 : 00001047H 00001046H 00001045H 00001044H 00001043H 00001042H 00001041H 00001040H 数据 : 00H 01H 1EH 13H 00H 00H 1FH FFH 地址 : 00001007H 00001006H 00001005H 00001004H 00001003H 00001002H 00001001H 00001000H 数据 : 00H 40H F3H 01H 00H 00H 1FH FFH 解:CR4=0表示没有页的扩展,默认4KB页大小

(1)由CR0=70000010H可知,PE=0,处于实地址方式,因此物理地址=段地址×16+偏移地址EAX的值=75392A00H; =10030H+00001230H=00011260H,由表可知执行完MOV EAX,[ESI]之后,

(2)由CR0=70000011H知PE=1且PG=0为仅分段的保护方式,由DS=1003H=0001000000000011B,可知,TI=0选择的是GDT表,RPL=11表示一般用户访问,索引×8=1000H

段描述符存放的首地址=GDT表首址+索引×8=00001000H,所以通过上表可知,

段描述符=0040F30100001FFFH,段基址=00010000H,段界=01FFFH,G=0,段内偏移量=ESI=00001230H,因此物理地址=段基址+偏移地址=00010000H+00001230H=00011230H,由表可得执行MOV EAX,[ESI]后,EAX的值就是从00011230H开始的4个字节,即EAX=32303136H;

由于G=0时段大小=段界+1=01FFFH+1=2000H=8192字节,即可容纳8192字节的数据 访问权字节=F3H=11110011B,A=1该已经被访问过,同P=1在物理存储器中,是向上增长的可写的数据段。

(3)由CR0=E0000011H知PE=1且PG=10为分段且页的保护方式, 由(2)得线性地址=00011230H,由于CR4=0页大小为4KB(不扩展) 00011230H=0000 0000 0000 0001 0001 0010 0011 0000B,偏移地址=230H

CR3=000011FFH,因此页目录基地址=00001000H,页目录索引*4=0,因此目录项地址=00001000H,从表中找出页目录项为00001FFFH,因此页表基址=00001000H,页表索引*4=11H*4=44H因此页表项地址=00001044H,页表项=00011E13H,页基地址=00011000H,物理地址=页基地址+页内偏移量=00011000H+230H=00011230H,EAX的值就是从00011230H开始的4个字节,即EAX=32303136H;

2-43 已知内存中的据如表2.26所示,IA-32处理器复位后,立即执行以下指令,求出指令执行完EAX中的值并说明处理器的工作状态。(注意自复位后处理器的状态,参见2.3.1中图2.22)。

MOV EAX,CR0 OR EAX,1 MOV CR0,EAX

MOV EAX,00011000H

MOV AL,0 OUT 70H,AL IN AL,71H MOV [DI],AL

微机原理与接口技术(第三版)课堂布置及需要关注习题参考答案 11 ;秒单元

第六章作业

6-2简述微处理器与I/O设备之间的接口信息。

答:接口信息:微处理器与外设之间交换的信息概括起来有数据信息、状态信息和控制信息。 微机中的数据信息通常有数字量、模拟量和开关量三种基本形式。

状态信息是外部设备向微处理器提供外设当前工作状态的信息,微处理器接收到这些状态就可以了解外设的情况,适时准确地进行有效的数据传送。

常见的外设状态信息如输入设备准备好信号(READY)、输出设备是否忙(BUSY)等等。 控制信息是微处理器通过I/O接口向外部设备发送控制命令的信息。控制命令主要用于I/O设备的工作方式设置等。

6-3简述I/O编址方式。

答:I/O端口地址的编址有两种基本方法:存储器映射编址(统一编址)和I/O映射编址(独立编址)。

存储器映射I/O编址就是I/O端口的地址与存储器的地址统一混合编址,即把一个I/O口地址看作是一个存储单元。

I/O映射编址是指I/O端口与存储器分开独立编址,即I/O端口和存储器都有自己的一套地址空间,而且互不相干。这样,I/O端口不占用内存空间,但在这种编址方式下,必须采用专用的I/O指令(IN或OUT指令)才能访问I/O设备。

从8086到Pentium,仅支持I/O映射的编址方法,而P6架构及之后的处理器既支持I/O映射编址又支持存储器映射编址,即除了用IN/OUT等专用I/O指令外,还可以用访问存储器的指令访问被映射的I/O端口。

6-4微机系统中的16位、32位以及64位I/O组织的特点是什么?各自由哪些信号线访问I/O端口? 答:16位采用2个8位I/O体,32位采用4个8位I/O体,64位采用8个8位I/O体构成完整的I/O系统。I/O端口地址范围0000H~FFFFH, 不管是哪一种形式,处理器仅提供16条地址线来寻址I/O。

主要信号线有:

16位I/O组织的8086~80286:A15~A0以及IORC、IOWC和BHE; 32位的I/O组织80386~Pentium:A15~A2以及BE0~BE3、IORC和IOWC; 64位的I/O组织Pentium Pro~Core :A15~A3以及BE0~BE7、IORC和IOWC。 IN EAX,DX实际4个地址有效,OUT DX,RAX8个地址同时有效。

6-8试采用8位缓冲器和8位锁存器设计一个32位输入和输出接口,输入和输出接口的基地址均为8010H,画出原理图,并写出读该32位输入接口和写32位输出接口的程序片段,假设读入的32位数据存放在EBX中,待写的32位数据在ECX中。

答:参照教材中32位输入接口及32输出接口设计实例,满足本题要求的地址8010H的32位输入输出接口如图所示。

12 IA-32 & Intel64微机原理与接口技术(第三版) 布置的习题参考答案

DI31-DI032位I/O输入A15A14A13A12A11A10A9A8A7A6A4A5A3A212131274HC27D31-D0IORCBE3BE2DO31-DO24BE1DO23-DO16BE0DO15-DO8DO31-DO032位I/O输出DO7-DO0D31-D24D23-D16D15-D8D7-D01234121374HC2712856111274HC3032位输入接口DI31-DI24DI23-DI16DI15-DI8DI7-DI0181716151413121118171615141312111817161514131211B0B1B2B3B4B5B6B7B0B1B2B3B4B5B6B7B0B1B2B3B4B5B6B7U474HC245U374HC245U274HC245EDIREDIREDIRB0B1B2B3B4B5B6B7U174HC2451817161514131211191234567898Q7Q6Q5Q4Q3Q2Q1QU174HC5742345678919123456789191234567891213141516171819121314151617181912131415161718198Q7Q6Q5Q4Q3Q2Q1Q8Q7Q6Q5Q4Q3Q2Q1QU474HC574U374HC574CLKOCCLKOC8Q7Q6Q5Q4Q3Q2Q1QU274HC574CLKOC121314151617181911198765432BE0D7-D0987654321119876543211198765432D31-D24D23-D16D15-D8IOWCBE3BE2BE1111CLKOC8D7D6D5D4D3D2D1D8D7D6D5D4D3D2D1D8D7D6D5D4D3D2D1D8D7D6D5D4D3D2D1D191EDIRA0A1A2A3A4A5A6A7A0A1A2A3A4A5A6A7A0A1A2A3A4A5A6A7A0A1A2A3A4A5A6A732位输出接口

程序片段如下:

MOV IN MOV MOV OUT

DX,8010H EAX,DX EBX,EAX EAX,ECX DX,EAX

6-11已经波特率为2400bps,字符格式为7位数据,1位校验位,1位停止位,UART发送端的波形如图6.61所示(下方为参考方波,说明该数据是多少(用十六进制表示),采用什么校验?

+4.8V 0V f=2.4KHz参考方波) 图6.61 题6-11图

解:由UART字符格式知,传送数据是低位在前高位在后,据已经条件知,1位起始位,7位数据,1位校验位,1位停止位,共10位为一帧,从图中找出起始位(低电平)开始的连续10位,图从2.4KHz的一个脉冲对应2400bps波特率的一个位,即从第3个脉冲开始10位恰是传送的一帧字符,去掉开始的起始位,从第4个脉冲开始取7位数据位,依次是D0=1,D1=1,D2=0,D3=1,D4=0,D5=1和D6=1,校验位=0,停止位=1,因此数据为D6D5D4D3D2D1D0=1101011B=6BH,由于校验为0,因此传送的字符中(含校验位)1的个数为5,奇数,因此为奇校验。

6-13如果通过RS-232C进行双机通信,波特率为11520bps,字符格式为1位停止位,没有校验,8位数据,通过示波器得到的波形如图6.62所示,上图是RS-232C的连接器DB9-2脚(RXD)的波形,下面是为了比较方便输入的频率为11.52Kz的参考方波。指出波形对应的数据(用十六进制表示)。

微机原理与接口技术(第三版)课堂布置及需要关注习题参考答案 13

RS-232C RXD(DB9-2)引脚波形 +9.6V0V -9.6V f=11.52KHz(参考方波)

图6.62 题6-12图

解:分析方法同6-10,只是逻辑关系是相反的,+9.6V对应逻辑0,-9.6V对应逻辑1。 第3个参考脉冲对应起始位+9.6V(逻辑0),数据位从第4个脉冲开始的8位,依次为D0=1,D1=0,D2=0,D3=1,D4=0,D5=1,D6=0,D7=0,因此传送的数据为00101001B=29H

6-17假设8255的端口地址为60H-63H,试分别编写满足条件的初始化程序:

(1) 将A组和B组设置为方式0,端口A和B设成输入端口,C上半口为输入,下半口为输出。 (2) 将A口设为方式2,B口设为方式1输出。

(3) 将A口设为方式1输出,B口为方式1输出,PC4和PC5为输出。 解:(1)

MOV AL,10011010B

OUT 63H,AL (2)

MOV AL,11000100B

OUT 63H,AL (3)

MOV AL,10100100B

OUT 63H,AL

6-18如图6.63所示为以8086为核心采用8255扩展I/O接口,A口接一输入设备,B接输出设备,PC5作为检测输入设备的准备就绪信号READY,PC6作为输出设备忙BUSY检测端。

(1)写出8255的初始化程序片段

(2)写出读取输入设备数据并存入内存ES:DI指示单元的子程序(读时除了要判断RAEDY外,还要使能OE)

(3)写出从DS:SI指示的内存单元取出数据写到输出设备的子程序(写时除了要判断BUSY外,还要产生锁存脉冲CLK)

(4)已知8255的PC7接一上拉电阻,其对地连接一细长微型导线(A与B之间),PC3通过驱动接一蜂鸣器构成一简易防盗报警系统,如果微型导线被碰断,则蜂鸣器发出报警声(蜂鸣器得电而响)直到导线被保安人为接上,报警的同时向输出设备发送字符串“Grasp the burglar!”通知值班人员采取措施。写出有关程序。

14 IA-32 & Intel64微机原理与接口技术(第三版) 布置的习题参考答案

U1D7-D034333231302928271234856111212348561112IORCIOWCA1A2RESET53698356D0D1D2D3D4D5D6D7RDWRA0A1RESETCSPA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC743214039383718192021222324251415161713121110输出设备BUSYCLKA15A14A13A12A11A10A9A8A7A6A5A4A3A0VCC输入设备R210KREADYVCCOE8255BELLR11KABBG19013

图6.63 题6-18图

解:地址定义

P8255Ctrl P8255A P8255B P8255C

EQU EQU EQU EQU

0FC56H 0FC50H 0FC52H 0FC54H

;控制口 ;C口 ;Ready ;未准备好等待

(1) MOV AL,10001010B ;A方式0输出,C上半口输入,B方式0输入,C下半口输出 MOV DX,P8255Ctrl OUT DX,AL MOV DX,P8255C

(2)

WAITL: IN AL,DX

JZ WAITL MOV

TEST AL,00100000B ;PC5 MOV DX,P8255Ctrl

AL,00000000B

;PC0=0(OE=0) ;B口

;读输入设备数据 ;写入指定内存单元 ;C口

OUT DX,AL IN AL,DX

MOV DX,P8255B MOV ES:[DI],AL MOV DX,P8255C

(3)

WAITP:IN AL,DX

TEST AL,01000000B ;PC6(BUSY) JNZ WAITP

MOV DX,P8255Ctrl MOV NOP NOP DEL AL OUT DX,AL

;PC1=0(CLK=0)

MOV AL,DS[SI]

AL,00000011B

;PC1=1(CLK=1)

OUT DX,AL

微机原理与接口技术(第三版)课堂布置及需要关注习题参考答案 15

MOV DX,P8255A OUT DX,AL

;A口 ; 数据输出

(4) MOV DX,P8255Ctrl ;控制口

MOV AL,00000010B ;PC1=CLK=0,锁存脉冲复位为0 OUT DX,AL

MOV DX,P8255C ;C口 IN AL,DX TEST AL,80H JNZ BEEP

MOV DX,P8255Ctrl

MOV AL,00000110 ;PC3=0置复位命令字 OUT DX,AL JMP START

MOV DX,P8255Ctrl ;控制口 MOV AL,00000111 ;PC3=1 OUT DX,AL MOV CX,18 IN AL,DX

TEST AL,01000000B ;BUSY=1? JNZ WAITB MOV DX,P8255A MOV AL,[SI] OUT DX,AL

MOV DX,P8255Ctrl ;控制口

MOV AL,00000011B ;PC1=CLK=1,锁存脉冲上升沿 OUT DX,AL NOP INC SI DEC AL

;PC1=CLK=0,锁存脉冲结束

OUT DX,AL LOOP WAITB

;A口

;报警

;18个字符

MOV SI,OFFSET STRINGS MOV DX,P8255C

;C口

;取消报警

;判断PC7

START:

BEEP:

WAITB:

STRINGS DB ‘Grasp the burglar!’

6-19图6.64为用8255作为打印机接口的原理图,假设要打印的数据(组合BCD码,如45H)在以PDATA开始的存储区域,且数据长度为PNUM,写出打印这些数据的子程序。

16 IA-32 & Intel64微机原理与接口技术(第三版) 布置的习题参考答案

D7-D0U1343332313029282753698356D0D1D2D3D4D5D6D78255RDWRA0A1RESETCSPB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC7PA0PA1PA2PA3PA4PA5PA6PA743214039383718192021222324251415161713121110DB0DB1DB2DB3DB4DB5DB6DB7IORCIOWCA3A2RESET并行接口打印机地址译码A15~A4BE3BE2BE1BE0地址:3000H3004H3008H300CHSTBBUSY

图6.64 题6-11图

解:P8255A

P8255B P8255C P8255Ctrl

EQU EQU EQU EQU

3000H 3004H 3008H 300CH

MOV DX,P8255Ctrl MOV AL,10001000B OUT DX,AL MOV CX,PNUM

MOV AL,00000101B ;PC2=/STB=1置打印机选爱脉冲初始化为1 OUT DX,AL MOV AL,[SI] MOV BL,AL AND AL,0F0H PUSH CX MOV CL,4 SHR AL,CL ADD AL,30H POP CX CALL PSUB MOV AL,BL AND AL,0FH ADD AL,30H CALL PSUB INC SI .EXIT

;指向下一个单元

LOOP REPEAT

;取回原来的数据 ;取低4位 ;转换成ASCII码

;转换成ASCII码

;取数据 ;暂存BL ;取高4位

;方式选择控制字

MOV SI,OFFSET PDATA

REPEAT:

;打印一个字符的子程序

微机原理与接口技术(第三版)课堂布置及需要关注习题参考答案 17

PSUB

PROC NEAR MOV AH,AL MOV DX,P8255C IN AL,DX JNZ WAITP MOV DX,P8255A MOV AL,AH OUT DX,

AL

;A口地址

;取回待打印字符(ASCII码)

;送A口(打印机端口) ;控制口

;PC2=0命令(/STB=0),产生/STB负脉冲开始

;判BUSY=PC6

TEST AL,01000000B ;BUSY=PC6

;等打印字符在AL中暂存AH中,后面用到AL

WAITP:

MOV DX,P8255Ctrl MOV AL,00000100B OUT DX,AL NOP INC AL OUT DX,AL RET ENDP

;PC2=1命令(/STB=1) ,产生/STB负脉冲结束

SUBP

6-20已知8254的端口地址为3000H、3004H、3008H和300BH,外接时钟频率为2MHz,利用8254的OUT0通道产生周期为1ms的方波,OUT1产生最快的连续脉冲序列,周期为多少?OUT2产生最大的负脉冲(建议方式1),负脉冲的宽度为多少。试编制满足上述要求的程序。 解:(1)满足要求的程序如下

P8254_0 EQU P8254_1 EQU P8254_2 EQU P8254_C EQU

.CODE .STARTUP MOV DX,P8254_C OUT DX,AL MOV DX,P8254_0 MOV AX,2000 OUT DX,AL MOV AL,AH OUT DX,AL

;CTC0通道地址

;计数常数=2MHz*1000us=2000 ; 实际收入低8位初值 ;取高8位 ;写高8位初值

;8254控制口地址

;8254控制口地址

MOV AL,00110110B ;CTC0命令字:方波信号发生器方式

3000H 3004H 3008H 300CH

.MODEL SMALL

MOV DX,P8254_C OUT DX,AL MOV DX,P8254_1 MOV AL,2

MOV AL01010100B ;CTC1命令字:速率发生器方式

;CTC1通道地址

;计数常数=2(最快)

18 IA-32 & Intel64微机原理与接口技术(第三版) 布置的习题参考答案

OUT DX,AL ;写初值

;8254控制口地址

MOV DX,P8254_C OUT DX,AL MOV DX,P8254_2 MOV AL,0 OUT DX,AL .EXIT END

OUT DX,AL

MOV AL10110010B ;CTC2命令字:负脉冲信号发生器方式

;CTC2通道地址

;计数常数=0000(最大值) ;写初值

(2)OUT1产生最快的连续脉冲序列,1个周期为2个计数时钟,因此周期=1/2MHz*2=1us;

OUT2产生最大的负脉冲,负脉冲的宽度为65536个计数脉冲周期=65536×

1/2MHz=32768us=32.768ms

6-21已知8254的CLK0接5MHz时钟, 其端口地址为280H,282H,284H和286H系统采用16位的8086,画出8254与系统的连接图, 译码电路自行设计。

(1)要在OUT0引脚周期性地产生负脉冲宽度为2ms的信号作为定时中断请求信号,写出初始化程序

(2)若利用8254产生1S为周期的定时中断信号,说明实现方法,画出相应的连接图,并编写相应程序。

答: (1) 由地址:280H、282H、284H和286H知:(地址不重叠,即全译码,I/O端口16条地址线全部要参与译码)

A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0=0000 0010 1000 0xx0 B 电路如下:

5MHzD7-D05V101192ms周期的方波IORCIOWCA15A14A13A12A11A10A9A8A7A6A5A4A3A0A2A11234856111212348561112876543212223212019D0D1D2D3D4D5D6D7RDWRCSA1A0OUT0GATE0CLK08253OUT1GATE1CLK1131415OUT2GATE2CLK21716181S

OUT0产生2ms定时中断信号(方波) P8254_0 EQU 280H

P8254_1 EQU P8254_2 EQU P8254_C EQU

282H 284H 286H

MOV DX,P8254_C

微机原理与接口技术(第三版)课堂布置及需要关注习题参考答案 19

MOV AL,00110110B ;ctc0控制字 OUT DX,AL MOV AX,20000

MOV DX,P8255_0 OUT DX,AL MOV AL,AH OUT DX,AL

;写高字节初值

;初值=5MHz*(2ms*2)=5000*4=20000

;注意:2ms仅为负脉冲宽度,因此一个周期=4ms

;CTC0通道 ;写低字节初值

(2) 1S周期的时间常数1S*5MHz=1*5000000=5000000>65536因此一个定时通道不够,要两个通道级联,可以将CTC1的OUT1输出接CTC2输入CLK2,由OUT2产生1S方波,将5000000=1000*5000 即CTC1定时常数1000,CTC2定时常数为5000,系统连接如图所示。

MOV DX,P8254_C

MOV AL,01110110B ;CTC1控制字 OUT DX,AL MOV DX,P8254_1 MOV AX,1000 OUT DX,AL MOV AL,AH OUT DX,AL

;CTC1通道 ;初值1000低8位 ;写初值

;初值1000高8位

;写初值,在OUT1上得到0.2ms为周期的方波

MOV DX,P8254_C

MOV AL,10110110B ;CTC2控制字 OUT DX,AL MOV DX,P8254_2 MOV AX,5000 OUT DX,AL MOV AL,AH OUT DX,AL

;CTC2通道 ;初值5000低8位 ;写初值

;初值5000高8位

;写初值,在OUT2上得到1秒周期的方波

第七章作业

7-6已知内存单元中有关单元存放的信息如表7.7所示,CR0=60000001H,IDTR=6500000007FFH,GDTR=001000007FFFH,求类型号为11H的中断服务程序入口地址。

表7.7 题7-6内存数据分布 内存地址 数据(H) 00108064H 85 00108065H 00 00108066H 20 00108067H 00 0010810EH 5E 0010810FH 3C 00108110H FF 00108111H 1F 00108112H 00 00108113H 70 00108114H 00 内存地址 06700930H 06700931H 06700932H 06700933H 06700934H 06700935H 06700936H 06700937H : 06708258H 06708259H 数据(H) 89 65 12 25 10 49 C6 0F : 90 C7 内存地址 数据(H) 65000085H 51 65000086H 87 65000087H 00 65000088H 12 65000089H 20 6500008AH 13 6500008BH 81 6500008CH 00 6500008DH EE 6500008EH 42 6500008FH 00 20 IA-32 & Intel64微机原理与接口技术(第三版) 布置的习题参考答案 00108115H 00108116H 00108117H : 00200C20H 00200C21H 00200C22H 00200C23H F2 44 01 : B6 80 70 06 0670825AH 0670825BH 0670825CH 0670825DH 0670825EH 0670825FH 06708210H 06708211H 13 00 00 EE 45 32 F2 5D 65000090H 65000091H 65000092H 65000093H 65000094H 65000095H 65000096H 65000097H FF 01 58 82 00 49 44 00 解:CR0=60000001H知PG=0,PE=1保护方式

中断门描述符首地址=IDT表首地址+中断类型号*8=65000000H+11H*8=65000088H 所以中断门描述符=0042EE0081132012H

其中描述的偏移地址=00422012H, 段选择子=8113H

因此段描述符首地址=GDT首地址+索引*8=00100000H+8110H=00108110H 段描述符=0144F20070001FFFH,其描述符的段基地址=01007000H,因此

中断服务程序入口地址=段基地址+偏移地址=01007000H+00422012H=01429012H 7-11在AT兼容系统中,采用了两片8259,如7.3.3小节中图7.17所示。

(1) 如果外部中断采用边沿信号触发,非自动结束中断,主片IR7的中断类型号为0FH,从片IR1(IRQ9)的中断类型号为71H,主从片无缓冲,写出主从8259的初始化程序。

(2) 不允许串行口2和并行口2以及软磁盘、协处理器中断,写出有关程序片段。

(3) 将主片和从片中的IRR、ISR和IMR寄存器的内容分别读到DS:[1000]和ES:[2000]开始的存储区域,并判断当连接主片的外部中断源有两个以上请求中断且从片只有一个中断请求时,结束从片对应的中断,并屏蔽与主片连接的所有没有请求中断的中断源。写出相应程序段。

(4) 如果在从片的IR7(即IRQ15)处接一个数据采集卡的中断请求端,当有中断请求时,微处理器去读取采集卡的端口(输入数据地址为3C0H,输出数据口为3C1H),并将一个16位的数据写入内存缓冲区(由DATABUF指示缓冲区首地址),如果读出的数据超过为2010H,则向数据输出端口发送一个命令使采集板停止工作,命令字为55H;如果读出的数据为0,则向DATABUF+5单元写入AAH。写出中断服务程序。

(5) 如果上述数据采集卡有中断请求,使微处理器自动执行中断服务程序,写出有关程序段(包括加载中断向量以及驻留内存程序)。

解:

(1) ;主片初始化

MOV AL,00010001B ;ICW1 OUT 20H,AL MOV AL,0FH OUT 21H,AL OUT 20H,AL

MOV AL,00010101B ;ICW4 OUT 21H,AL

;中断类型号(ICW2)

MOV AL,00000100B ;ICW3

;从片初始化

MOV AL,00010001B ;ICW1 OUT 0A0H,AL MOV AL,71H

;中断类型号(ICW2)

微机原理与接口技术(第三版)课堂布置及需要关注习题参考答案 21

OUT 0A1H,AL

MOV AL,00000010B ;ICW3 OUT 0A0H,AL

MOV AL,00000001B ;ICW4 OUT 0A1H,AL

(2)

MOV AL,00101000B ;主片OCW1 OUT 21H,AL

MOV AL,00100000B ;从片OCW1 OUT 0A1H,AL MOV SI,1000 MOV DI,2000 MOV AL,0AH OUT 20H,AL IN AL,20H MOV BL,AL INC SI MOV AL,0BH OUT 20H,AL IN AL,20H INC SI IN AL,21H MOV AL,0AH

OUT 0A0H,AL ;读从片IRR命令 IN AL,0A0H ;读从IRR进AL中 MOV BH,AL INC DI MOV AL,0BH OUT 0A0H,AL

;读从片ISR命令

IN AL,0A0H ;读从片ISR进AL中 MOV ES:[DI],AL ;从片ISR存入内存 INC DI IN AL,0A1H MOV AL,BL MOV CX,8 MOV DL,0

;计1的个数 ;读从片IMR ;取主片IRR

MOV ES:[DI],AL ;从片IMR存入内存

;从片IRR暂存BH

MOV ES:[DI],AL ;从片IRR存入内存

;读主片IMR

MOV DS:[SI],AL ;主片IMR存入内存

;读主片ISR命令 ;读主片ISR进AL中 ;读主片IRR命令 ;读IRR进AL中 ;主片IRR暂存BL

(3)

MOV DS:[SI],AL ;主片IRR存入内存

MOV DS:[SI],AL ;主片ISR存入内存

22 IA-32 & Intel64微机原理与接口技术(第三版) 布置的习题参考答案

LP10:

LP11:

LP20:

EIOP:

LRET: (4) INSTR:

STOP:

WRITEAA: RET0:

SHR AL,1 ADDC DL,0 LOOP LP10

CMP DL,2

;>=2?

JAE LP11 JMP LRET MOV AL,BH ;取从片IRR MOV CX,8 MOV DL,0

;计1的个数 SHR AL,1 ADDC DL,0 LOOP LP20

CMP DL,1

;=1? JZ EIOP JMP LRET MOV AL,20H

;EOI命令 OUT 20H,AL ;OCW3 OUT 0A0H,AL MOV AL,BL NOT AL

;对主片IRR取反 OUT 21H,AL

;屏蔽主片未申请的中断

MOV AL,BH NOT AL

;对从片IRR取反 OUT 0A1H,AL

;屏蔽从片未申请的中断

NOP .EXIT PUSH AX

PUSH DX MOV DX,3C0H IN AX,DX

MOV WORD PTR DATABUF,AX CMP AX,2005H JA STOP CMP AX,0 JZ WRITEAA MOV AL,55H MOV DX,3C1H OUT DX,AL JMP RET0

MOV BYTE PTR DATABUF+5,0AAH MOV AL,20H

;EOI命令

微机原理与接口技术(第三版)课堂布置及需要关注习题参考答案 23

OUT 20H,AL OUT 0A0H,AL POP DX POP AX IRET CLI

MOV DX,OFFSET INSTR MOV AX,2577H INT 21H IN AL,0A1H OUT 0A1H,AL STI

MOV DX,OFFSET INSTALL INT 27H

;读IMR

AND AL,01111111B ;打开从片IR7中断

;中断类型号77H(对应从片的IR7)

(5) INSTALL:

7-12 如图7.16所示的8259级联系统,如果主片地址为0300H和0302H,从片地址为0304H和0306H,则:

(1) 如果主片中断类型号为50H~57H,从片中断类型号为98H~9FH,主片为特殊全嵌套方式,写出有

关程序片段。

(2) 如果系统中所有中断源无法区分区分优先级别,则写出相应的程序片段以适应这种优先级 (3) 如果主片8259当前最高优先级为IR5,并使该请求变为下一个循环的最低优先,则OCW2的

格式怎样?

解:(1)设置中断类型号,特殊全嵌套

主片:

MOV DX,300H MOV AL,00010001B OUT DX,AL INC DX

MOV AL,50H OUT DX,AL OUT DX,AL OUT DX,AL 从片:

MOV DX,304H MOV AL,00010001B OUT DX,AL INC DX

MOV AL,98H

;写ICW1

;写ICW2 ;写主片ICW3 ;写ICW4

MOV AL,00000100B MOV AL,00010101B

;写ICW1

24 IA-32 & Intel64微机原理与接口技术(第三版) 布置的习题参考答案

OUT DX,AL OUT DX,AL OUT DX,AL MOV DX,300H

;写ICW2 ;写从片ICW3 ;写ICW4

MOV AL,00000010B MOV AL,00000001B (2)应该选择循环优先方式 MOV AL,10000000B OUT DX,AL MOV DX,304H MOV AL,10000000B OUT DX,AL (3)

MOV DX,300H MOVAL,11000101B OUT DX,AL MOV DX,304H MOVAL,11000101B OUT DX,AL

;从片OCW2

7-16 如何加载中断向量?写出加载中断类型号为50H到内存的程序片段。

答:加载中断向量有两种基本方式,一种是直接装入方法,一种是利用系统功能调用加载方法。其中直接装入法是将中断向量的段地址和偏移地址直接写入中断向量表对应地址区域,而系统功能调用法是利用DOS功能调用的入口采用软件指令来间接装入中断向量到中断向量表中。

直接装入法写50H号中断的中断向量的程序片段:

MOV AX,0

MOV ES,AX ;使ES指向0段

MOV BX,50H*4 ;中断类型号为50H (从0-255) MOV AX,OFFSET INTSR ;中断服务程序偏移地址 MOV ES:WORD PTR [BX],AX ;偏移地址写入向量表 MOV AX,SEG INTSR ;中断服务程序段地址

MOV ES:WORD PTR [BX+2],AX ;使ES指向0段,段地址写入向量表 ┅

INTSR: PUSH AX;中断服务程序 PSUH BX ┅

POP BX POP AX IRET ;中断返回

;写主片OCW2

;写从片OCW2

;主片OCW2

系统功能调用法写50H号中断的中断向量的程序片段:

MOV DX,SEG INTSR ;取现中断服务程序入口地址的段地址→DS

MOV DS,DX

MOV DX,OFFSET INTSR ;取中断服务程序入口地址的偏移地址→DX MOV AH,25H MOV AL,50H ;中断类型号在AL中(50H) INT 21H ;装入中断向量

??

INTSR: PUSH AX;中断服务程序 PSUH BX

微机原理与接口技术(第三版)课堂布置及需要关注习题参考答案 25

POP BX POP AX

IRET ;中断返回

第十章作业

10-3假设一8位T型电阻网络式DAC,其参考电压为-5V, Rf=R,则将输出的数了量为68H时, 输出电压为多少? 当获得的输出电压为4V时,应该向DAC送入的数字量是多少?

n?1解:U。=?RfVref?2iDi=?RfVref?D,Vref=-5V,Rf=R,所以D=68H,U0=5×68H/256=2.03125V;

n2R2nR0U0=4V,则D=4/5*256=204.8≈205=C0H

10-4利用图10.5的电路,如果DAC0832的地址为3004H,写出产生最低点为1V,最高点为4V的三角波(波形如图10.20所示)程序片段。如果采用同样的程序,试问如果电路改为图10.7所示的双极应用,输出的波形是怎样的? 4V 1V 0V

图10.20 1-4V三角波

解:1V对应的数字量D1V=1/5*256=51.2≈51,4V对应的数字量D4V=4/5*256=204.8≈205=C0H 参考程序片段如下: DLV EQU 51 DHV EQU 205

MOV DX,3004H

MOV DX,3A9H MOV AL,DLV

REPLP1: OUT DX,AL

CMP AL,DHV JB INCDV OUT DX,AL

MOV AL,DLV CMP AL,DHV JLE INCD OUT DX,AL CMP AL,DLV JA DEC0 JMP INC0

INC0: OUT DX,AL

DEC0: DEC AL

INCD: INC AL

REPLP2 DEC AL

26 IA-32 & Intel64微机原理与接口技术(第三版) 布置的习题参考答案

CMP AL,DLV JA REPLP2 JMP REPLP1

2Vref?D?Vref2n

INCDV: INC AL

对于双极应用由式(10-2)知Vo=

D=51时,Vref=5V,因此Vo=2*5/256*51-5=-3V,

D=205时,Vref=5V,因此Vo=2*5/256*205-5=3V,因此程序不变时输出波形为-3V至+3V的三角波,输出波形如图所示。

3V0V-3V

10-5基于16位总线的压力检测系统如图10.21所示,已知8255的PA口作为A/D转换器ADC0809的接口;ADC0809的500KHz CLK时钟由8254 OUT1产生,已知8254的CLK1端接2MHz的时钟信号,GATE1接8255的PC7;DAC0832作为后向输出通道,各地址关系及与系统总线连接如图所示。系统工作过程为:采集8路压力,将其转换后的数字量一方面存放到内存缓冲区(由DATABUF指示),然后取8路压力的平均值,把平均值数字量通过逻辑取反后由DAC0832变换成模拟量输出,如果采集平均值超过Pmax值,则通过在8254的OUT0输出正脉冲为5ms的方波,如果低于Pmin,则让在8254的OUT2输出最大的负脉冲(不需要硬件触发)。

试按以下要求用编写有关程序片段:

(1) 写出8255在本应用系统中的初始化程序片段 (2) 写出供ADC0809的CLK端500KHZ方波的程序片段 (3) 根据系统工作过程写出满足要求的程序片段

(4)通过该电路,还可以扩展应用,请自行设计,说明要求,并给出参考答案。

A9A8A7

12U3374AS11654321A0A1U774AS138E3E2E1CBAY7Y6Y5Y4Y3Y2Y1Y079101112131415U8343332313029282753698356+5C1U2D0D1D2D3D4D5D6D7RDWRA0A1RESETCSPA0PA1PA2PA3PA4PA5PA6PA7PC0PC1PC2PC3PC4PC5PC6PC7PB0PB1PB2PB3PB4PB5PB6PB7432140393837141516171312111018192021222324251714158181920212524239622lsb2-82-72-62-52-42-32-2msb2-1ADDAADDBADDCOESTARTALEADC080926272812345A6A5A4A3A2IORCIOWC2MHzD7~D012U5A374AS32IN0IN1IN2IN3IN4IN5IN6IN7压力1压力2压力3压力4压力5压力6压力7压力8信号调理电路模拟信号输入+5710EOCCLOCKref(+)ref(-)121687654321222391110D0D1D2D3D4D5D6D7RDWRCLK0GATE0OUT0A0A1U18254CSCLK1OUT1GATE1OUT2GATE2CLK21920211513141716188255R1U1276541615141312lsbDI0DI1DI2DI3DI4DI5DI6msbDI7CSWR1DAC0832RfbIout1Iout2VrefXferILEWR29+511128171918-5+5U9Vo压力传感器RW模拟输出VCCVCC

图10.21 一数据采集与处理系统原理示意图

解:地址分配: 8254:300H~303H 8255:304H~307H

微机原理与接口技术(第三版)课堂布置及需要关注习题参考答案 27

DAC0832:314H~317H任何一个地址均可 P8254_0 P8254_1 P8254_2 P8254_C P8255A P8255B P8255C PDAC0832

EQU 300H EQU 301H EQU 302H EQU 304H EQU 305H EQU 306H EQU 314H

; 8254-0通道 ; 8254-1通道 ; 8254-2通道 ; 8255A口 ; 8255B口 ; 8255C口 ;DAC0832地址

;8255控制端口 ;92H

EQU 303H ; 8254控制口

P8255Ctrl EQU 307H ; 8255控制口

(1)8255初始化要做的工作就是确定工作方式:A方式0输入、B方式0输入、C口输出

MOV DX,P8255Ctrl MOV AL,10010010B OUT DX,AL

计数值初=2MHz/500KHz=2000/500=4 MOV DX,P8255Ctrl MOV AL,00001111B OUT DX,AL

;PC7=1(GATE1=1) ;8254控制端口地址

;8254通道1设置为8位读写,二进制计数 ;初值

MOV DX,P8254_C MOV AL,01010110B OUT DX,AL MOV AL,4 OUT DX,AL

MOV DX,P8254_1 ;8254通道1口地址

(2)8254产生500KHz方波

(3)

对ADC0809的操作依据三个步骤进行,即启动并锁存地址、查询EOC状态以及转换读取结果,然参考程序如下:

PROC MOV MOV MOV MOV INC OUT MOV MOV OUT MOV

NEAR CX,8 DX, P8255C BL,80H AL,BL BL

DX,AL

;8255的C端口地址

;通道0(低3位,高位1为GATE1) ;选择ADC0809通道 ;指向下一通道

;ALE、START、OE=0,选中INi

MOV SI,OFFSET DATABUF

后根据结果确定DAC0832的输出波形。假设初始化工作已经做完如(1)和(2) ADCS

START:

REPEATL:

DX,P8255Ctrl

AL,00001011B ;ALE=1 DX,AL

AL,00001001B ;START=1

28 IA-32 & Intel64微机原理与接口技术(第三版) 布置的习题参考答案

OUT NOP NOP MOV OUT MOV OUT MOV DX,AL

AL,00001010B ;ALE=0 DX,AL

AL,00001000B ;START=0 DX,AL DX,P8255B AL,DX

;指向8255的B端口

ADCWAIT: IN

RP2:

CALLSUB1:CALLSUB2:AND AL,01 JZ ADCWAIT

;判断EOC是否为1

MOV DX,P8255Ctrl

MOV AL,00000111B ;OE=1 MOV DX,P8255A ;8255的A口地址 IN AL,DX ;读取转换结果 MOV [SI],AL

;存结果 INC SI LOOP REPEATL MOV SI,OFFSET DATABUF MOV CX,8 MOV AX,0

MOV BH,0 MOV AL,[SI] ADD AX,BX INC SI LOOP RP2

MOV BL,8 DIV BL

CMP AL,Pmin JB CALLSUB1 ;低于Pmin产生最大的负脉冲 CMP AL,Pmax

;

JA CALLSUB2

;超过Pmax产生5ms为高电平的方波JMP START NOT AL

MOV DX,PDAC0832 ;DAC0832口地址(E14H~E17H) OUT DX,AL JMP START CALL SUB1 JMP

START CALL

SUB2 JMP

START

微机原理与接口技术(第三版)课堂布置及需要关注习题参考答案 29

DATABUF DB 8 DUP(?)

RET

ADCS SUB2 SUB1

PROC

NEAR

MOV DX,P8254Ctrl ;8254控制端口地址

MOV AL,10110000B ;方式0中断信号发生器方式,产生最大负脉冲 OUT DX,AL MOV DX,P8254_2 MOV AL,0 OUT DX,AL OUT DX,AL RET ENDP

;8254计数通道2地址 ;最大常数0(65536)

ENDP

NEAR ;8254 OUT0产生5ms正脉冲的方波,方波周期为10ms

PROC

MOV DX,P8254Ctrl MOV AL,00110110B OUT DX,AL MOV DX,P8254_0

MOV AX,20000 ;2MHz*(5ms*2)=20000 OUT DX,AL MOV AL,AH OUT DX,AL RET ENDP

SUB2

SUB1

(4)没有使用的译码输出可接其它I/O接口,没有使用的PC6可接LED指示,没有使用的PB1~PB7可以接按键作为输入。具体略。

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

Top