您的当前位置:首页微机原理与接口技术(第四版)课后习题答案

微机原理与接口技术(第四版)课后习题答案

2023-02-01 来源:乌哈旅游
第1章 微型电脑系统

① 处理器每个单位时间可以处理的二进制数据位数称电脑字长。 ② 总线信号分成三组,分别是数据总线、地址总线和控制总线。 ③ PC机主存采用DRAM组成。

④ 高速缓冲存储器Cache是处理器与主存之间速度很快但容量较小的存储器。

⑤ ROM-BIOS是“基本输入输出系统”,操作系统通过对BIOS的调用驱动各硬件设备,用户也可以在应用程序中调用BIOS中的许多功能。

⑥ 中断是CPU正常执行程序的流程被某种原因打断、并暂时停止,转向执行事先安排好的一段处理程序,待该处理程序结束后仍返回被中断的指令继续执行的过程。

⑦ 主板芯片组是主板的核心部件,它提供主板上的关键逻辑电路。 ⑧ MASM是微软开发的宏汇编程序。

⑨ 指令的处理过程。处理器的“取指—译码—执行周期” 是指处理器从主存储器读取指令〔简称取指〕,翻译指令代码的功能〔简称译码〕,然后执行指令所规定的操作〔简称执行〕的过程。

⑩ 机器语言层,即指令集结构。

〔学生很多认为是:汇编语言层。前4章主要涉及汇编语言,但本书还有很多处理器原理等内容〕 〔习题1.3〕填空题

① Central Processing Unit,中央处理单元,处理器 ② 1MB,4GB ③ 216,64KB ④ EXE,COM

⑤ Instruction Set Architecture ⑥ 目录

⑦ MMX,SSE3 ⑧ 64

⑨ IBM,DOS ⑩ PCI

〔习题1.4〕说明微型电脑系统的硬件组成及各部分作用。

〔解答〕

CPU:CPU也称处理器,是微机的核心。它采用大规模集成电路芯片,芯片内集成了控制器、运算器和假设干高速存储单元〔即寄存器〕。处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。

存储器:存储器是存放程序和数据的部件。

外部设备:外部设备是指可与微机进行交互的输入〔Input〕设备和输出〔Output〕设备,也称I/O设备。I/O设备通过I/O接口与主机连接。

总线:互连各个部件的共用通道,主要含数据总线、地址总线和控制总线信号。 〔习题1.5〕什么是通用微处理器、单片机〔微控制器〕、DSP芯片、嵌入式系统?

〔解答〕

通用微处理器:适合较广的应用领域的微处理器,例如装在PC机、笔记本电脑、工作站、服务器上的微处理器。

单片机:是指通常用于控制领域的微处理器芯片,其内部除CPU外还集成了电脑的其他一些主要部件,只需配上少量的外部电路和设备,就可以构成具体的应用系统。

DSP芯片:称数字信号处理器,也是一种微控制器,其更适合处理高速的数字信号,内部集成有高速乘法器,能够进行快速乘法和加法运算。

嵌入式系统:利用微控制器、数字信号处理器或通用微处理器,结合具体应用构成的控制系统。 〔习题1.7〕区别如下概念:助记符、汇编语言、汇编语言程序和汇编程序。

〔解答〕

助记符:人们采用便于记忆、并能描述指令功能的符号来表示机器指令操作码,该符号称为指令助记

符。

汇编语言:用助记符表示的指令以及使用它们编写程序的规则就形成汇编语言。 汇编语言程序:用汇编语言书写的程序就是汇编语言程序,或称汇编语言源程序。 汇编程序:汇编语言源程序要翻译成机器语言程序才可以由处理器执行。这个翻译的过程称为“汇编”,完成汇编工作的程序就是汇编程序〔Assembler〕。

〔习题1.8〕区别如下概念:路径、绝对路径、相对路径、当前目录。系统磁盘上存在某个可执行文件,但在DOS环境输入其文件名却提示没有这个文件,是什么原因?

〔解答〕

路径:操作系统以目录形式管理磁盘上的文件,文件所在的分区和目录就是该文件的路径。

绝对路径:从根目录到文件所在目录的完整路径称为“绝对路径”。是保证文件唯一性的标示方法。 相对路径:从系统当前目录到文件所在目录的路径称为相对路径。 当前目录:用户当前所在的目录就是当前目录。

指明的路径不正确,或者执行了另外一个同名的文件。 〔习题1.10〕冯·诺依曼电脑的基本设计思想是什么?

〔解答〕

采用二进制形式表示数据和指令。指令由操作码和地址码组成。

将程序和数据存放在存储器中,电脑在工作时从存储器取出指令加以执行,自动完成计算任务。这就是“存储程序”和“程序控制”〔简称存储程序控制〕的概念。

指令的执行是顺序的,即一般按照指令在存储器中存放的顺序执行,程序分支由转移指令实现。 电脑由存储器、运算器、控制器、输入设备和输出设备五大基本部件组成,并规定了5部分的基本功能。

〔习题1.11〕电脑系统通常划分为哪几个层次?普通电脑用户和软件开发人员对电脑系统的认识一样吗?

〔解答〕

最上层是用户层。 第5层是高级语言层。 第4层是汇编语言层。 第3层是操作系统层。 第2层是机器语言层。 第1层是控制层。

第0层是数字电路层。

普通电脑用户和软件人员对电脑系统的认识并不一样。普通电脑用户看到的电脑,也就是我们最熟悉的电脑,属于用户层,而软件人员看到的属于高级语言层或是汇编语言层。

第2章 处理器结构

〔习题2.1〕简答题

〔解答〕

① ALU是算术逻辑运算单元,负责处理器所能进行的各种运算,主要是算术运算和逻辑运算。 ② 取指是指从主存取出指令代码通过总线传输到处理器内部指令寄存器的过程。8086分成总线接口单元和指令执行单元,可以独立操作。在执行单元执行一条指令的同时,总线接口单元可以读取下一条指令,等到执行时不需要进行取指了,所以称为预取。

③ Pentium采用别离的Cache结构,一个用做指令Cache,一个用做数据Cache。 ④ 堆栈的存取原则是先进后出〔也称为后进先出〕操作方式存取数据。

⑤ 标志寄存器主要保存反映指令执行结果和控制指令执行形式的有关状态。 ⑥ 执行了一条加法指令后,发现ZF=1,说明运算结果为0。

- -2

⑦ 没有。

⑧ 汇编语言的标识符大小写不敏感,即表示字母大小写不同、但表示同一个符号。 ⑨ 不会。

⑩ 指令的操作数需要通过存储器地址或I/O地址,才能查找到数据本身,故称数据寻址方式。 〔习题2.3〕填空题

① 32,DX,DH ② 16

③ 段地址,偏移地址,EIP,IP ④ 00100110,0

⑤ 73C00H,73800H

⑥ EBX,ECX,ESI,EDI,EBP,ESP ⑦ 实地址,64KB

⑧ ASM,目标模块,FLAT

⑨ 立即数寻址、寄存器寻址和存储器寻址 ⑩ DS,SS

〔习题2.4〕处理器内部具有哪3个基本部分?8086分为哪两大功能部件?其各自的主要功能是什么? 〔解答〕

处理器内部有ALU、寄存器和指令处理三个基本单元。 8086有两大功能部件:总线接口单元和执行单元。

总线接口单元:管理着8086与系统总线的接口,负责处理器对存储器和外设进行访问。8086所有对外操作必须通过BIU和这些总线进行。

执行单元EU:负责指令译码、数据运算和指令执行。 〔习题2.6〕

什么是标志?什么是IA-32处理器的状态标志、控制标志和系统标志?说明状态标志在标志寄存器EFLAGS的位置和含义。

〔解答〕

标志:用于反映指令执行结果或控制指令执行形式的一个或多个二进制数位。例如,有些指令执行后会影响有关标志位;有些指令的执行要利用相关标志。

状态标志:用来记录程序运行结果的状态信息。 控制标志:DF标志,控制字符串操作的地址方向。 系统标志:用于控制处理器执行指令的方式。

状态标志在标志寄存器EFLAGS中的位置和含义如下:

31 11 10 9 8 7 6 5 4 3 2 1 0 …… OF SF ZF AF PF CF 〔习题2.8〕什么是8086中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?请将如下逻辑地址用物理地址表达〔均为十六进制形式〕:

① FFFF∶0 ② 40∶17 ③ 2000∶4500 ④ B821∶4567

〔解答〕

物理地址:在处理器地址总线上输出的地址称为物理地址。每个存储单元有一个唯一的物理地址。 逻辑地址:在处理器内部、程序员编程时采用逻辑地址,采用“段地址:偏移地址“形式。某个存储单元可以有多个逻辑地址,即处于不同起点的逻辑段中,但其物理地址是唯一的。

逻辑地址转换成物理地址:逻辑地址由处理器在输出之前转换为物理地址。将逻辑地址中的段地址左移二进制4位〔对应16进制是一位,即乘以16〕,加上偏移地址就得到20位物理地址。

① FFFFH:0=FFFF0H ② 40H:17H=00417H

③ 2000H:4500H=24500H ④ B821H:4567H=BC777H

- -3

〔习题2.9〕IA-32处理器有哪三类基本段,各是什么用途?

〔解答〕

IA-32处理器有代码段、数据段、堆栈段三类基本段。

代码段:存放程序的指令代码。程序的指令代码必须安排在代码段,否则将无法正常执行。

数据段:存放当前运行程序所用的数据。程序中的数据默认是存放在数据段,也可以存放在其他逻辑段中。

堆栈段:主存中堆栈所在的区域。程序使用的堆栈一定在堆栈段。 〔习题2.11〕什么是实地址方式、保护方式和虚拟8086方式?它们分别使用什么存储模型?

〔解答〕

实地址方式:与8086具有相同的基本结构,只能寻址1MB物理存储器空间,逻辑段最大不超过64KB;但可以使用32位寄存器、32位操作数和32位寻址方式;相当于可以进行32位处理的快速8086。实地址工作方式只能支持实地址存储模型。

保护方式:具有强大的段页式存储管理和特权与保护能力,使用全部32条地址总线,可寻址4GB物理存储器。保护方式通过描述符实现分段存储管理,每个逻辑段可达4GB。处理器工作在保护方式时,可以使用平展或段式存储模型。

虚拟8086方式:在保护方式下运行的类似实方式的运行环境,只能在1MB存储空间下使用“16位段”。 处理器工作在虚拟8086方式时,只能使用实地址存储模型。

〔习题2.12〕汇编语句有哪两种,每个语句由哪4个部分组成?

〔解答〕

汇编语句有两种:执行性语句〔处理器指令〕、说明性语句〔伪指令〕。 每个语句有:标号、指令助记符、操作数或参数、注释4个部分组成。 〔习题2.16〕说明以下指令中源操作数的寻址方式?假设VARD是一个双字变量。

〔1〕mov edx,1234h 〔2〕mov edx,vard 〔3〕mov edx,ebx 〔4〕mov edx,[ebx]

〔5〕mov edx,[ebx+1234h] 〔6〕mov edx,vard[ebx] 〔7〕mov edx,[ebx+edi]

〔8〕mov edx,[ebx+edi+1234h] 〔9〕mov edx,vard[esi+edi] 〔10〕mov edx,[ebp*4] 〔解答〕

① 立即数 ② 直接 ③ 寄存器 ④ 寄存器间接 ⑤ 寄存器相对 ⑥ 寄存器相对 ⑦ 基址变址 ⑧ 相对基址变址 ⑨ 相对基址变址 ⑩ 带比例寻址

- -4

第3章 数据处理

〔习题3.1〕简答题

〔1〕使用二进制8位表达无符号整数,257有对应的编码吗?

〔2〕字符“'F'”和数值46H作为MOV指令的源操作数有区别吗?

〔3〕为什么可以把指令“MOV AX, (34+67H)*3”中的数值表达式看成是常量? 〔4〕数值500,能够作为字节变量的初值吗?

〔5〕为什么说“XCHG EDX,CX”是一条错误的指令?

〔6〕都是获取偏移地址,为什么指令“LEA EBX, [ESI]”正确,而指令“MOV EBX, OFFSET[ESI]”就错误?

〔7〕INC,DEC,NEG和NOT都是单操作数指令,这个操作数应该是源操作数还是目的操作数? 〔8〕大小写字母转换使用了什么规律?

〔9〕乘除法运算针对无符号数和有符号数,有两种不同的指令。只有一种指令的加减法如何区别无符号数和有符号数运算?

〔10〕逻辑与运算为什么也称为逻辑乘? 〔解答〕

① 没有。使用二进制8位表达无符号整数,257没有对应的编码。 ② 字符“'F'”的ASCII码就是数值46H,所以没有区别。

③ 汇编程序在汇编过程中对数值表达式计算,得到一个确定的数值,故称数值表达式为常量。 ④ 不能。数值500大于一个字节所能表达的数据量,所以不能为字节变量赋值。 ⑤ 源、目标寄存器位数不同,不能用该指令进行数据交换。

⑥ 前者在指令执行时获得偏移地址,是正确的;但后者的OFFSET只能在汇编阶段获得偏移地址,但此时寄存器内容是不可知的,所以无法获得偏移地址。

⑦ INC,DEC,NEG和NOT指令的操作数既是源操作数也是目的操作数。 ⑧ 大小写字母转换利用它们的ASCII码相差20H。

⑨ 加减法不区别无符号数和有符号数,但根据运算结果分别设置标志寄存器的CF和OF标志,可利用CF和OF进行区别。

⑩ 逻辑与运算规则类似二进制的乘法,所以称其为逻辑乘。 〔习题3.3〕填空题

〔1〕定义字节变量的伪指令助记符是_____________,获取变量名所具有的偏移地址的操作符是_____________。

〔2〕电脑中有一个“01100001”编码。如果把它认为是无符号数,它是10进制数___________;如果认为它是BCD码,则表示真值_____________;又如果它是某个ASCII码,则代表字符__________。

〔3〕C语言用“\\n”表示让光标回到下一行首位,在汇编语言中需要输出两个控制字符:一个是回车,其ASCII码是_____________,它将光标移动到当前所在行的首位;另一个是换行,其ASCII码是_____________,它将光标移到下一行。

〔4〕数据段有语句“H8843 DWORD 99008843H”,代码段指令“MOV CX, WORD PTR H8843”执行后,CX=_____________。

〔5〕用DWORD定义的一个变量XYZ,它的类型是_____________,用“TYPE XYZ”会得到数值为_____________。如果将其以字量使用,应该用_____________说明。

〔6〕数据段有语句“ABC BYTE 1,2,3”,代码段指令“MOV CL, ABC+2”执行后,CL=_____________。 〔7〕例题3-9的TAB定义如果是“1234567890”,则显示结果是__________。 〔8〕指令“XOR EAX, EAX”和“SUB EAX, EAX”执行后,EAX=__________,CF=OF=__________。而指令“MOV EAX, 0”执行后,EAX=__________,CF和OF没有变化。

〔9〕例题3-15程序执行结束,变量QVAR内容是__________;BCD内容是__________。

〔10〕欲将EDX内的无符号数除以16,使用指令“SHR EDX, __________”,其中后一个操作数是一个立即数。

〔解答〕

① BYTE,OFFSET ② 97,61,小写字母a

- -5

③ 0DH〔13〕,0AH〔10〕 ④ 8843H

⑤ DWORD,4,WORD PTR XYZ ⑥ 3

⑦ 78894111 ⑧ 0,0,0

⑨ 0123456788765432H,83H ⑩ 4 〔习题3.4〕

以下十六进制数表示无符号整数,请转换为十进制形式的真值: ① FFH ② 0H ③ 5EH ④ EFH 〔解答〕

① 255 ② 0 ③ 94 ④ 239 〔习题3.7〕

将以下十进制数用8位二进制补码表示: ① 0 ② 127 ③-127 ④ -57 〔解答〕

① 00000000 ② 01111111 ③ 10000001 ④ 11000111 〔习题3.8〕

进行十六进制数据的加减运算,并说明是否有进位或借位: ① 1234H+7802H ② F034H+5AB0H ③ C051H-1234H ④ 9876H-ABCDH

〔解答〕

① 1234H+7802H=8A36H,无进位 ② F034H+5AB0H=4AF4H,有进位 ③ C051H-1234H=BE1DH,无借位 ④ 9876H-ABCDH=ECA9H,有借位 〔习题3.9〕

数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码0DH和0AH分别对应什么字符?

〔解答〕

数码0~9对应的ASCII码依次是30H~39H。

大写字母A~Z对应的ASCII码依次是:41H~5AH。 小写字母a~z对应的ASCII码依次是:61~7AH。 ASCII码0DH和0AH分别对应的是回车和换行字符。 〔习题3.10〕

设置一个数据段,按照如下要求定义变量或符号常量: ① my1b为字符串变量:Personal Computer ② my2b为用十进制数表示的字节变量:20 ③ my3b为用十六进制数表示的字节变量:20

- -6

④ my4b为用二进制数表示的字节变量:20 ⑤ my5w为20个未赋值的字变量 ⑥ my6c为100的常量

⑦ my7c表示字符串:Personal Computer 〔解答〕 my1b my2b my3b my4b my5w my6c my7c

byte 'Personal Computer' byte 20 byte 14h

byte 00010100b word 20 dup(?) = 100

equ

〔习题3.16〕

使用假设干MOV指令实现交互指令“XCHG EBX,[EDI]”功能。 〔解答〕

push eax mov eax,ebx mov ebx,[edi] mov [edi],eax pop eax

; 可以没有

; 可以没有

〔习题3.17〕

假设当前ESP=0012FFB0H,说明下面每条指令后,ESP等于多少?

push eax push dx

push dword ptr 0f79h pop eax

pop word ptr [bx] pop ebx

〔解答〕

ESP=0012FFACH ESP=0012FFAAH ESP=0012FFA6H ESP=0012FFAAH ESP=0012FFACH ESP=0012FFB0H

〔习题3.19〕请分别用一条汇编语言指令完成如下功能:

〔1〕把EBX寄存器和EDX寄存器的内容相加,结果存入EDX寄存器。

〔2〕用寄存器EBX和ESI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。

〔3〕用EBX和位移量0B2H的寄存器相对寻址方式把存储器中的一个双字和ECX寄存器的内容相加,并把结果送回存储器中。

〔4〕将32位变量VARD与数3412H相加,并把结果送回该存储单元中。 〔5〕把数0A0H与EAX寄存器的内容相加,并把结果送回EAX中。 〔解答〕

① add edx,ebx

② add al,[ebx+esi] ③ add [bx+0b2h],cx ④ add varw,3412h

- -7

⑤ add eax,0a0h

给出以下各条指令执行后AL值,以及CF、ZF、SF、OF和PF的状态:

mov al,89h add al,al add al,9dh cmp al,0bch sub al,al dec al inc al

mov al,89h add al,al add al,9dh cmp al,0bch sub al,al dec al inc al

; AL=89H ; AL=12H ; AL=0AFH ; AL=0AFH ; AL=00H ; AL=0FFH ; AL=00H

CF ZF 1 0 0 0 1 0 0 1 0 0 0 1

SF 0 1 1 0 1 0

OF 1 0 0 0 0 0

PF 1 1 1 1 1 1

〔习题3.21〕

〔解答〕

〔习题3.28〕编程将一个压缩BCD码变量〔例如92H〕转换为对应的ASCII码,然后调用DISPC子程序〔在输入输出子程序库中〕显示。 〔解答〕 bcd

; 数据段 byte 92h ; 代码段 mov al,bcd shr al,4 add al,30h call dispc mov al,bcd and al,0fh add al,30h call dispc

第4章 汇编语言程序设计

〔习题4.1〕简答题

〔1〕是什么特点决定了目标地址的相对寻址方式应用最多? 〔2〕什么是奇偶校验?

〔3〕为什么判断无符号数大小和有符号大小的条件转移指令不同? 〔4〕双分支结构中两个分支体之间的JMP指令有什么作用? 〔5〕为什么特别强调为子程序加上必要的注释?

〔6〕子程序采用堆栈传递参数,为什么要特别注意堆栈平衡问题? 〔7〕参数传递的“传值”和“传址”有什么区别? 〔8〕INCLUDE语句和INCLUDELIB有什么区别? 〔9〕混合编程有什么优势?

〔10〕运行Windows程序,有时为什么会提示某个DLL文件不存在?

〔解答〕

① 当同一个程序被操作系统安排到不同的存储区域执行时,指令间的位移没有改变,目标地址采用相对寻址可方便操作系统的灵活调度。

- -8

② 数据通信时,数据的某一位用做传输数据的奇偶校验位,数据中包括校验位在内的“1”的个数恒为奇数,就是奇校验;恒为偶数,就是偶校验。

③ 无符号数和有符号数的操作影响两组不同的标志状态位,故判断两个无符号数和有符号数的大小关系要利用不同的标志位组合,所以有对应的两组指令。

④ 双分支结构中两个分支体之间的JMP指令,用于实现结束前一个分支回到共同的出口作用。 ⑤ 完整的子程序注释可方便程序员调用该子程序,子程序注释包括子程序名、子程序功能、入口参数和出口参数、调用注意事项和其他说明等。

⑥ 子程序保持堆栈平衡,才能保证执行RET指令时当前栈顶的内容是正确的返回地址。主程序也要保持堆栈平衡,这样才能释放传递参数占用的堆栈空间,否则多次调用该子程序可能就致使堆栈溢出。

⑦ “传值”是传递参数的一个拷贝,被调用程序改变这个参数不影响调用程序;“传址”时,被调用程序可能修改通过地址引用的变量内容。

⑧ INCLUDE语句包含的是文本文件、是源程序文件的一部分;INCLUDELIB语句包含的是子程序库文件。

⑨ 取长补短。

⑩ Windows程序在运行时需要加载其配套的动态链接库DLL文件,当其没有被搜索到时就会提示不存在。

〔习题4.3〕填空题

〔1〕JMP指令根据目标地址的转移范围和寻址方式,可以分成四种类型:段内转移、__________,段内转移、__________和段间转移、__________,段间转移、__________。

〔2〕假设在平展存储模型下,EBX=1256H,双字变量TABLE的偏移地址是20A1H,线性地址32F7H处存放3280H,执行指令“JMP EBX” 后EIP=__________,执行指令“JMP TABLE[EBX]”后EIP=__________。

〔3〕“CMP EAX,3721H”指令之后是JZ指令,发生转移的条件是EAX=__________,此时ZF=__________。

〔4〕小写字母“e”是英文当中出现频率最高的字母。如果某个英文文档利用例题4-11的异或方法进行简单加密,统计发现密文中字节数据“8FH”最多,你判断该程序采用的字节密码可能是__________。

〔5〕循环结构程序一般有三个部分组成,它们是__________,循环体和__________部分。

〔6〕例题4-14程序中的RET指令,如果用POP EBP指令和JMP EBP指令替换,此时EBP内容是__________。

〔7〕过程定义开始是“TEST PROC”语句,则过程定义结束的语句是__________。宏定义开始是“DISP MACRO”语句,则宏定义结束的语句是__________。

〔8〕利用堆栈传递子程序参数的方法是固定的,例如寻址堆栈段数据的寄存器是__________。 〔9〕MASM汇编语言中,声明一个共用的变量应使用__________伪指令;而使用外部变量要使用__________伪指令声明。

〔10〕调用ReadConsole函数时,用户在键盘上按下数字8,然后回车,则键盘缓冲区的内容依次是__________。

〔解答〕

① 相对寻址,间接寻址,直接寻址,间接寻址 ② 1256H,3280H ③ 3721H,1 ④ EAH

⑤ 循环初始,循环控制 ⑥ REPT1标号的地址 ⑦ TEST ENDP,ENDM ⑧ EBP

⑨ PUBLIC,EXTERN ⑩ 38H 0DH 0AH 〔习题4.6〕

执行如下程序片断后,CMP指令分别使得5个状态标志CF、ZF、SF、OF和PF为0还是为1?它会使得哪些条件转移指令指令Jcc的条件成立、发生转移?

- -9

mov eax,20h cmp eax,80h

〔解答〕

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

可以使得条件成立、发生转移的指令有:JC JS JP JNZ JNO 〔习题4.9〕

指令CDQ将EAX符号扩展到EDX,即:EAX最高为0,则EDX=0;EAX最高为1,则EDX=FFFFFFFFH。请编程实现该指令功能。 〔解答1〕 test eax,8000h jz next1 mov edx,0ffffffffh jmp done next1: mov dx,0 done:

〔解答2〕

使用移位指令更好。 rol eax,1 rcr edx,1 sar edx,31 ror eax,1

〔习题4.11〕编写一个程序,先提示输入数字“Input Number:0~9”,然后在下一行显示输入的数字,结束;如果不是键入了0~9数字,就提示错误“Error!”,继续等待输入数字。 〔解答〕

inmsg ermsg

again:

erdisp:

done:

〔习题4.12〕有一个首地址为ARRAY的20个双字的数组,说明以下程序段的功能。

sumlp:

mov ecx,20 mov eax,0 mov esi,eax

add eax,array[esi]

; 数据段

byte 'Input number(0~9): ',0

byte 0dh,0ah,'Error! Input again: ',0 ; 代码段

mov eax,offset inmsg ; 提示输入数字 call dispmsg call readc ; 等待按键 cmp al,'0' ; 数字 < 0? jb erdisp cmp al,'9' ; 数字 > 9? ja erdisp

call dispcrlf call dispc jmp done

mov eax,offset ermsg call dispmsg jmp again

; 测试最高位

; 最高位为0〔ZF=1〕,转移到标号NEXT1

; 最高位为1,顺序执行:设置EDX=FFFFFFFFH ; 无条件转移,跳过另一个分支

; 最高位为0转移到此执行:设置EDX=0

- -10

add esi,4 loop sumlp mov total,eax

〔解答〕

求这20个双字的和,保存在TOTAL变量,不关进心进位和溢出。

〔习题4.22〕编写一个子程序,它以二进制形式显示EAX中32位数据,并设计一个主程序验证。 〔解答〕

dispbd

dbd:

dispbd

; 代码段,主程序 mov eax,8F98FF00H call dispbd

; 代码段,子程序 proc

push ecx push edx mov ecx,32 rol eax,1 push eax and al,01h add al,30h call dispc pop eax loop dbd pop edx pop ecx ret endp

; 调用子程序

; 32位二进制数的输出

; 要输出的字符个数 ; AL循环左移一位 ; 取AL最低位

; 转化成相应的ASCLL码值 ; 以二进制的形式显示

〔习题4.26〕

编制3个子程序把一个32位二进制数用8位十六进制形式在屏幕上显示出来,分别运用如下3种参数传递方法,并配合3个主程序验证它。

〔1〕采用EAX寄存器传递这个32位二进制数 〔2〕采用temp变量传递这个32位二进制数 〔3〕采用堆栈方法传递这个32位二进制数 〔解答〕

〔1〕 ; 数据段 wvar word 307281AFH ; 代码段,主程序 mov eax,wvar call disp mov al,'H' call dispc ; 代码段,子程序 disp proc push ebx push ecx mov ecx,8 ; 8位 dhw1: rol eax,4 mov ebx,eax and al,0fh ; 转换为ASCII码

- -11

add al,30h cmp al,'9' jbe dhw2 add al,7 dhw2: call dispc mov eax,ebx loop dhw1 pop ecx pop ebx ret disp endp

〔2〕 ; 数据段 wvar word 307281AFH temp word ? ; 代码段,主程序 mov eax,wvar mov temp,eax call disp mov al,'H' call dispc ; 代码段,子程序disp proc push ebx push ecx mov ecx,8 mov eax,temp dhw1: rol eax,4 mov ebx,eax and al,0fh add al,30h cmp al,'9' jbe dhw2 add al,7 dhw2: call dispc ; mov eax,ebx loop dhw1 pop ecx pop ebx ret disp endp

〔3〕 ; 数据段 wvar word 307281AFH ; 代码段,主程序 push wvar call disp add esp,4 mov al,'H'

; 8位 ; 转换为ASCII码 显示一个字符 -12

disp

dhw1:

dhw2:

disp call dispc

; 代码段,子程序 proc

push ebp mov ebp,esp push ebx push ecx mov ecx,8 ; 8位 mov eax,[ebp+8] rol eax,4 mov ebx,eax and al,0fh ; 转换为ASCII码 add al,30h cmp al,'9' jbe dhw2 add al,7 call dispc mov eax,ebx loop dhw1 pop ecx pop ebx pop ebp ret endp

〔习题4. 31〕

区别如下概念:宏定义、宏调用、宏指令、宏展开、宏汇编。

〔解答〕

宏定义:就是对宏进行说明,由一对宏汇编伪指令MACRO和ENDM来完成。 宏调用:宏定义之后的使用。在使用宏指令的位置写下宏名,后跟实体参数。 宏指令:使用宏时,其形式很像指令,所以称为宏指令。 宏展开:在汇编时,汇编程序用对应的代码序列替代宏指令。 宏汇编:指使用宏的方法进行汇编语言程序设计。

第5章 微机总线

〔习题5.1〕简答题

〔1〕为什么称处理器的数据总线是双向的?

〔2〕8086的地址和数据总线为什么要分时复用? 〔3〕具有三态能力的引脚输出高阻意味着什么? 〔4〕总线周期中的等待状态是个什么工作状态? 〔5〕猝发传送是一种什么传送?

〔6〕总线数据传输为什么要进行总线仲裁? 〔7〕异步时序为什么可以没有总线时钟信号?

〔8〕32位PC机为什么采用多级总线结构,而不是单总线结构? 〔9〕USB总线有几个导线组成?

〔10〕什么是微软宣称的即插即用PnP〔Plug-and-Play〕技术?

〔解答〕

① 数据总线承担着处理器与存储器、外设之间的数据交换,既可以输入也可以输出,故其是双向的。 ② 为减少引脚个数,8086采用了地址总线和数据总线分时复用。即数据总线在不同时刻还具有地址总线的功能。

- -13

③ 具有三态能力的引脚当输出呈现高阻状态时,相当于连接了一个阻抗很高的外部器件,信号无法正常输出;即放弃对该引脚的控制,与其他部件断开连接。

④ 处理器的运行速度远远快于存储器和I/O端口。处理器检测到存储器或I/O端口不能按基本的总线周期进行数据交换时,插入一个等待状态Tw。等待状态实际上是一个保持总线信号状态不变的时钟周期。

⑤ 猝发传送是处理器只提供首地址、但可以从后续连续的存储单元中读写多个数据。

⑥ 总线上可能连接多个需要控制总线的主设备,需要确定当前需要控制总线的主设备,所以需要总线仲裁。

⑦ 异步时序是由总线握手〔Handshake〕联络〔应答〕信号控制,不是由总线时钟控制。故总线时钟信号可有可无。

⑧ 单总线结构限制了许多需要高速传输速度的部件。32位PC机采用多种总线并存的系统结构。各种专用局部总线源于处理器芯片总线,以接近处理器芯片引脚的速度传输数据,它为高速外设提供速度快、性能高的共用通道。

⑨ 4个。

⑩ 即插即用技术是指32位PC机的主板、操作系统和总线设备配合,实现自动配置功能。 〔习题5.3〕填空题

〔1〕某个处理器具有16个地址总线,通常可以用A__________表达最低位地址信号,用A15表达最高地址信号。

〔2〕8086有3个最基本的读写控制信号,它们是M/IO,__________和__________。

〔3〕8086预取指令时,在其引脚上将产生__________总线操作;执行指令“MOV AX, [BX]”时,在其引脚上将产生__________总线操作;执行指令“MOV [BX], AX”时,在其引脚上将产生__________总线操作。

〔4〕8086无等待的总线周期由__________个T状态组成,Pentium无等待的总线周期由__________个T状态组成。如果处理器的时钟频率为100MHz,则每个T状态的持续时间为__________。

〔5〕8086处理器进行I/O读操作时,其引脚M/IO为低,引脚RD为__________;ISA总线的__________引脚低有效说明进行I/O读操作。PCI总线用C/BE[3::0]#引脚编码为__________表示I/O读总线周期。

〔6〕占用总线进行数据传输,一般需要经过总线请求和仲裁、__________、__________和结束4个阶段。

〔7〕USB总线理论上最多能够连接__________个USB设备,USB 2.0支持低速__________、全速__________和高速480Mb/s三种速率。

〔8〕PCI总线共用数据和地址信号,所以数据传输需要两个阶段:第一个阶段〔一个时钟〕提供__________〔地址,数据〕,第二个阶段〔最少一个时钟〕交换__________〔地址,数据〕。

〔9〕Pentium的3个最基本的读写控制引脚是M/IO,__________和__________。

〔10〕用于要求处理器插入等待状态的信号在8086上是引脚READY,在Pentium上是__________引脚,对应ISA总线是__________信号。 〔解答〕

① 0

② 读RD,写WR

③ 存储器读,存储器读,存储器写 ④ 4,2,10ns

⑤ 低有效,IOR,0010 ⑥ 寻址,数据传送

⑦ 127,1.5Mb/s,12Mb/s ⑧ 地址,数据 ⑨ D/C,W/R ⑩ BRDY,I/O CH RDY 〔习题5.4〕

处理器有哪4种最基本的总线操作〔周期〕?

- -14

〔解答〕

存储器读、存储器写,I/O读、I/O写。

〔习题5.5〕8086处理器的输入控制信号有RESET,HOLD,NMI和INTR,其含义各是什么?当它们有效时,8086 CPU将出现何种反应?

〔解答〕

RESET:复位输入信号,高电平有效。该引脚有效时,将迫使处理器回到其初始状态;转为无效时,CPU重新开始工作。

HOLD:总线请求,是一个高电平有效的输入信号。该引脚有效时,表示其他总线主控设备向处理器申请使用原来由处理器控制的总线。

NMI:不可屏蔽中断请求,是一个利用上升沿有效的输入信号。该引脚信号有效时,表示外界向CPU申请不可屏蔽中断。

INTR:可屏蔽中断请求,是一个高电平有效的输入信号。该引脚信号有效时,表示中断请求设备向处理器申请可屏蔽中断。

〔习题5.6〕区别概念:指令周期、总线周期〔机器周期〕、时钟周期、T状态。

〔解答〕

指令周期:一条指令从取指、译码到最终执行完成的过程。 总线周期〔机器周期〕:有数据交换的总线操作。

时钟周期:处理器的基本工作节拍,由时钟信号产生,一个高电平和一个低电平为一个周期。

T状态:完成特定操作的一个时钟周期。由于时间上一个T状态等于一个时钟周期,所以常常将两者混为一谈。

〔习题5.7〕总结8086各个T状态的主要功能。

〔解答〕

T1状态:总线周期的第一个时钟周期主要用于输出存储器地址或I/O地址; T2状态:输出读/写控制信号。

T3状态:锁存地址、处理器提供的控制信号和数据在总线上继续维持有效,且T3时钟的前沿〔下降沿〕对READY引脚进行检测。READY信号有效,进入T4周期。

T4状态:总线周期的最后一个时钟周期,处理器和存储器或I/O端口继续进行数据传送,直到完成,并为下一个总线周期做好准备。

Tw状态:等待状态。处理器在T3前沿发现READY信号无效后,插入Tw。Tw状态的引脚信号延续T3时的状态、维持不变。

〔习题5.8〕请解释8086〔最小组态〕以下引脚信号的含义:CLK,A19/S6~A16/S3,AD15~AD0,ALE,M/IO,RD和WR。默画它们在具有一个等待状态的存储器读总线周期中的波形示意。 〔解答〕

CLK:时钟输入。时钟信号是一个频率稳定的数字信号,其频率就是处理器的工作频率,工作频率的倒数就是时钟周期的时间长度。

A19/S6~A16/S3:地址/状态分时复用引脚,是一组4个具有三态能力的输出信号。这些引脚在访问存储器的第一个时钟周期输出高4位地址A19~A16,在访问外设的第一个时钟周期输出低电平无效;其他时间输出状态信号S6~S3。

AD15~AD0:地址/数据分时复用引脚,共16个引脚,用作地址总线时是单向输出信号;用作数据总线时是双向信号,具有三态输出能力。

ALE:地址锁存允许,是一个三态、输出、高电平有效的信号。有效时,表示复用引脚〔AD15~AD0和A19/S6~A16/S3〕上正在传送地址信号。

- -15

M/IO:访问存储器或者I/O,是一个三态输出信号,该引脚高电平时,表示处理器将访问存储器,

此时地址总线A19~A0提供20位的存储器物理地址。该引脚低电平时,表示处理器将访问I/O端口,此时地址总线A15~A0提供16位的I/O地址。

RD:读控制,也是一个三态、输出低电平有效信号。有效时,表示处理器正在从存储单元或I/O端

口读取数据。

WR:写控制,是一个三态、输出低电平有效信号。有效时,表示处理器正将数据写到存储单元或

I/O端口。

第6章 存储系统

〔习题6.1〕简答题

〔1〕存储系统为什么不能采用一种存储器件构成? 〔2〕什么是高速命中和高速缺失〔未命中〕?

〔3〕高速缓存Cache系统的标签存储器有什么作用? 〔4〕什么是Cache的地址映射?

〔5〕Cache的写入策略用于解决什么问题?

〔6〕存储器的存取时间和存取周期有什么区别? 〔7〕虚拟存储器是什么存储器?

〔8〕DRAM芯片怎么有行地址又有列地址? 〔9〕地址重复是怎么回事?

〔10〕页表项的P〔D0〕位有什么作用?

〔解答〕

① 因为各种存储器件在容量、速度和价格方面存在矛盾。速度快,则单位价格高;容量大,单位价格低,但存取速度慢。故存储系统不能采用一种存储器件。

② Cache中复制着主存的部分内容。当处理器试图读取主存的某个字时,Cache控制器首先检查Cache中是否已包含有这个字。假设有,则处理器直接读取Cache,这种情况称为高速命中;假设无,则称为高速缺失。

③ 标签存储器保存着该数据所在主存的地址信息。

④ 主存块与Cache行之间的对应关系称“地址映射”, Cache通过地址映射确定一个主存块应放到哪个Cache行组中。

⑤ 写入策略用于解决写入Cache时引起主存和Cache内容不一致性的问题。

⑥ 存取时间是指从读/写命令发出,到数据传输操作完成所经历的时间;存取周期表示两次存储器访问所允许的最小时间间隔。存取周期大于等于存取时间。

⑦ 虚拟存储器是由操作系统利用辅助存储器、以磁盘文件形式建立的、在主存储器与辅助存储器之间的一个存储器。

⑧ DRAM芯片容量大、芯片小,高集成度,引脚数量少。故DRAM芯片将地址引脚分时复用,即用一组地址引脚传送两批地址。第一批地址称行地址,第二批地址称列地址。

⑨ 译码电路中只有部分地址线参与译码会造成地址重复,也就是一个存储单元占有多个存储器地址。 ⑩页表项的P位称为存在位〔Present〕,表示该页面是否在物理存储器中。 〔习题6.3〕填空题

〔1〕电脑存储容量的基本单位:1 B〔Byte〕=__________b〔bits〕,1KB=__________B,1MB=__________KB,1GB=__________MB,1TB=__________GB=__________B。

〔2〕80486片上Cache的容量是__________,采用__________路组合地址映射。

〔3〕在半导体存储器中,RAM指的是__________,它可读可写,但断电后信息一般会__________;而ROM指的是__________,正常工作时只能从中__________信息,但断电后信息__________。

〔4〕存储结构为8K×8位的EPROM芯片2764,共有__________个数据引脚、__________个地址引脚。用它组成64KB的ROM存储区共需__________片芯片。

〔5〕对一个存储器芯片进行片选译码时,有一个高位系统地址信号没有参加译码,则该芯片的每个存储单元占有__________个存储器地址。

〔6〕半导体__________芯片顶部开有一个圆形石英窗口。U盘、MP3播放器、数码相机、多媒体 等

- -16

设备一般采用半导体__________芯片构成存储器。

〔7〕在8088处理器系统中,假设地址总线A19~A15输出01011时译码电路产生一个有效的片选信号。这个片选信号将占有主存从__________到__________的物理地址范围,共有__________容量。

〔8〕8086和80286使用16位数据总线,主存分成偶数地址和奇数地址两个存储体。80386和80486处理器使用__________位数据总线,利用4个字节允许信号区别__________个存储体。Pentium及以后的IA-32处理器使用__________位数据总线,主存由__________个存储体组成。

〔9〕高速缓冲存储器的地映址射有____________、____________和____________方式。Pentium的L1 Cache采用____________映射方式。

〔10〕已知IA-32处理器某个段描述符为0000B98200002000H,则该段基地址=__________,段界限=__________。

〔解答〕

① 8,1024,1024,1024,1024,240 ② 8KB,4

③ 随机存取存储器,丧失,只读存储器,读取,不会丧失 ④ 8,13,8 ⑤ 2

⑥〔UV-〕EPROM,Flash Memory ⑦ 58000H,5FFFFH,32KB ⑧ 32,4,64,8

⑨ 直接映射,组合相关映射,全相关映射,2路组合相关映射 ⑩ 00820000H,02000H 〔习题6.5〕简述存储系统的层次结构及各层存储部件特点。

〔解答〕

为解决容量、速度和价格的矛盾,存储系统采用金字塔型层次结构,单位价格和速度自上而下逐层减少,容量自上而下逐层增加。

存储系统的各层存储部件自上而下依次是:CPU寄存器、高速缓存、主存存储器(RAM/ROM),辅助存储器如磁盘、光盘等。CPU寄存器、高速缓存器集成在CPU芯片上,对用户来说,是透明的,它们用于暂存主存和处理器交互的数据,以减少频繁读取主存而影响处理器速度;主存储器则可和处理器直接交换数据,而辅助存储器必须经过主存存储器,才可与处理器进行数据交换。

〔习题6.6〕在半导体存储器件中,什么是SRAM、DRAM和NVRAM?

〔解答〕

SRAM是静态读写存储器芯片,它以触发器为基本存储单元,以其两种稳定状态表示逻辑0和逻辑1。 DRAM是动态读写存储器芯片,它以单个MOS管为基本存储单元,以极间电容充放电表示两种逻辑状态,需要不断刷新保持信息正确。

NVRAM多指带有后备电池的SRAM芯片,这种芯片采用CMOS制造工艺设计以减少用电。 〔习题6.9〕什么是掩摸ROM、OTP-ROM、EPROM、EEPROM和Flash ROM?

〔解答〕

掩膜ROM:通过掩膜工艺、将要保存的信息直接制作在芯片当中,以后再也不能更改。

OTP-ROM:该类芯片出厂时存储的信息为全“1”,允许用户进行一次性编程,此后便不能更改。 EPROM:一般指可用紫外光擦除、并可重复编程的ROM。

EEPROM:也常表达为E2PROM,其擦除和编程〔即擦写〕通过加电的方法来进行,可实现“在线编程”和“在应用编程”

Flash ROM:是一种新型的电擦除可编程ROM芯片,能够很快擦除整个芯片内容。 〔习题6.11〕什么是存储器芯片的全译码和部分译码?各有什么特点?

〔解答〕

全译码:使用全部系统地址总线进行译码。特点是地址唯一,一个存储单元只对应一个存储器地址〔反之亦然〕,组成的存储系统其地址空间连续。

- -17

部分译码:只使用部分系统地址总线进行译码。其特点:有一个没有被使用的地址信号就有两种编码,这两个编码指向同一个存储单元,出现地址重复。

〔习题6.19〕什么是段选择器、描述符、描述符表和描述符表寄存器?

〔解答〕

段选择器:保护方式下的16位段寄存器就是段选择器。

描述符:是保护方式引入的数据结构,有8个字节64位,具有段基地址、访问权限、段界限等字段。IA-32处理器利用它来实现存储管理、特权与保护。

描述符表:描述符表是存放描述符的一个特殊区域段。 描述符表寄存器:指明描述符表所在主存地址的寄存器。

第7章 输入输出接口

〔习题7.1〕简答题

〔1〕外设为什么不能像存储器芯片那样直接与主机相连?

〔2〕电脑两个功能部件、设备等之间为什么一般都需要数据缓冲? 〔3〕什么是接口电路的命令字或控制字? 〔4〕PC机中CMOS RAM属于主存空间吗?

〔5〕与系统总线连接的输入接口为什么需要三态缓冲器? 〔6〕透明锁存器和非透明锁存器是什么区别?

〔7〕什么样的外设可以采用无条件数据传送方式? 〔8〕什么是查询超时错误?

〔9〕远调用CALL指令和INT N指令有什么区别? 〔10〕为什么说外部中断才是真正意义上的中断?

〔解答〕

① 外部设备,在工作原理、驱动方式、信息格式、以及工作速度等方面彼此差异很大,与处理器的工作方式也大相径庭。所以,外设不能像存储器芯片那样直接与处理器相连,必须经过一个中间电路。

② 数据缓冲用于匹配快速的处理器与相对慢速的外设或两个功能部件速度不匹配的数据交换。 ③ 处理器向接口芯片相应端口写入特定的数据,用于选择I/O芯片的工作方式或控制外设工作,该数据称命令字或控制字。

④ PC机中CMOS RAM不属于主存空间,CMOS RAM有64个字节容量,以8位I/O接口形式与处理器连接,通过两个I/O地址访问。

⑤ 在输入接口中,为防止多个设备同时向总线发送数据,需要安排一个三态缓冲器。只有当处理器选通时,才允许被选中设备将数据送到系统总线,此时其他输入设备与数据总线隔离。

⑥ 透明锁存器的控制端为有效电平时,输出随输入变化,常称为直通或透明。非透明锁存器不管其控制端为低或为高电平,输出状态都不随输入变化。

⑦ 如发光二极管、按键和开关等简单设备,它们的工作方式十分简单;相对处理器而言,其状态很少发生变化或变化很慢。这些设备与处理器交换数据时,可采用无条件传送。

⑧ 在查询程序中,当查询超过了规定的时间,设备仍未就绪时,就引发超时错误。

⑨ 远调用CALL指令利用直接或间接寻址调用另一个代码段的子程序;INT n指令利用中断向量表〔地址表〕的方法调用另一个代码段的中断服务程序,还有保存标志寄存器的功能。

⑩ 外部中断是由处理器外部提出中断请求引起的程序中断。相对于处理器来说,外部中断是随机产生的,所以是真正意义上的中断。 〔习题7.3〕填空题

〔1〕电脑能够直接处理的信号是_____,_____和_____形式。

〔2〕在Intel 80x86系列处理器中,I/O端口的地址采用_____编址方式,访问端口时要使用专门的_____指令,有两种寻址方式,其具体形式是:_____和_____。

〔3〕指令IN是将数据从_____传输到_____,执行该指令处理器引脚产生_____总线周期。

〔4〕指令“IN AL, 21H”的目的操作数是_____寻址方式,源操作数是_____寻址方式。 〔5〕指令“OUT DX, EAX”的目的操作数是_____寻址方式,源操作数是_____寻址方式。

- -18

〔6〕DMA的意思是_____,主要用于高速外设和主存间的数据传送。进行DMA传送的一般过程是:外设先向DMA控制器提出_____,DMA控制器通过_____信号有效向处理器提出总线请求,处理器回以_____信号有效表示响应。此时处理器的三态信号线将输出_____状态,即将它们交由_____进行控制,完成外设和主存间的直接数据传送。

〔7〕在IA-32处理器中0号中断被称为_____中断,外部非屏蔽中断是_____号中断。 〔8〕IA-32处理器在开中断状态,其标志IF=_____。指令_____是开中断指令,而关中断指令是_____,关中断时IF=_____。

〔9〕实地址方式下,主存最低_____的存储空间用于中断向量表。向量号8的中断向量保存在物理地址_____开始的_____个连续字节空间;如果其内容从低地址开始依次是00H、23H、10H、F0H,则其中断服务程序的首地址是_____。

〔10〕某时刻中断控制器8259A的IRR内容是08H,说明其_____引脚有中断请求。某时刻中断控制器8259A的ISR内容是08H,说明_____中断正在被服务。

〔解答〕

① 数字量、开关量、脉冲量

② I/O独立,输入输出〔I/O〕指令,直接寻址,DX寄存器间接寻址 ③ I/O端口〔接口,外设〕,处理器〔主机〕,I/O读 ④ 寄存器,I/O地址的直接寻址 ⑤ I/O地址的间接寻址,寄存器

⑥ 直接存储器存取,DMA请求,总线请求,总线响应,高阻,DMAC〔DMA控制器〕 ⑦ 除法错,2

⑧ 1,STI,CLI,0

⑨ 1KB,20H,4,F010H∶2300H ⑩ IR3,IR3请求的

〔习题7.4〕一般的I/O接口电路安排有哪三类寄存器?它们各自的作用是什么?

〔解答〕

① 数据寄存器

保存处理器与外设之间交换的数据。 ② 状态寄存器

保存外设当前的工作状态信息。处理器通过该寄存器掌握外设状态,进行数据交换。 ③ 控制寄存器

保存处理器控制接口电路和外设操作的有关信息。处理器向控制寄存器写入控制信息,选择接口电路的不同工作方式和与外设交换数据形式。

〔习题7.5〕什么是I/O独立编址和统一编址,各有什么特点?

〔解答〕

独立编址是将I/O端口单独编排地址,独立于存储器地址。

统一编址是将I/O端口与存储器地址统一编排,共享一个地址空间。

端口独立编址方式,处理器除要具有存储器访问的指令和引脚外,还需要设计I/O访问的I/O指令和I/O引脚,其优点是:不占用存储器空间;I/O指令使程序中I/O操作一目了然;较小的I/O地址空间使地址译码简单。但I/O指令功能简单,寻址方式没有存储器指令丰富。

统一编址方式,处理器不再区分I/O口访问和存储器访问。其优点是:处理器不用设计I/O指令和引脚,丰富的存储器访问方法同样能够运用于I/O访问。缺点是:I/O端口会占用存储器的部分地址空间,通过指令不易识别I/O操作。

〔习题7.6〕简述主机与外设进行数据交换的几种常用方式。 〔解答〕

主机与外设进行数据交换的几种常用方式:

- -19

① 无条件传送方式,常用于简单设备,处理器认为它们总是处于就绪状态,随时进行数据传送。 ② 程序查询方式:处理器首先查询外设工作状态,在外设就绪时进行数据传送。

③ 中断方式:外设在准备就绪的条件下通过请求引脚信号,主动向处理器提出交换数据的请求。处理器无其他更紧迫任务,则执行中断服务程序完成一次数据传送。

④ DMA传送: DMA控制器可接管总线,作为总线的主控设备,通过系统总线来控制存储器和外设直接进行数据交换。此种方式适用于需要大量数据高速传送的场合。

〔习题7.10〕以可屏蔽中断为例,说明一次完整的中断过程主要包括哪些环节?

〔解答〕

中断请求:外设通过硬件信号的形式、向处理器引脚发送有效请求信号。 中断响应:在满足一定条件时,处理器进入中断响应总线周期。 关中断:处理器在响应中断后会自动关闭中断。

断点保护:处理器在响应中断后将自动保护断点地址。

中断源识别:处理器识别出当前究竟是哪个中断源提出了请求,并明确与之相应的中断服务程序所在主存位置。

现场保护:对处理器执行程序有影响的工作环境〔主要是寄存器〕进行保护。 中断服务:处理器执行相应的中断服务程序,进行数据传送等处理工作。 恢复现场:完成中断服务后,恢复处理器原来的工作环境。 开中断:处理器允许新的可屏蔽中断。

中断返回:处理器执行中断返回指令,程序返回断点继续执行原来的程序。 〔习题7.12〕明确如下中断有关的概念:中断源、中断请求、中断响应、关中断、开中断、中断返回、中断识别、中断优先权、中断嵌套、中断处理、中断服务。

〔解答〕

中断源:能引起中断的事件或原因。

中断请求:是外设通过硬件信号的形式、向处理器引脚发送有效请求信号。 中断响应:中断响应是在满足一定条件时,处理器进入中断响应总线周期。 关中断:禁止处理器响应可屏蔽中断。 开中断:允许处理器响应可屏蔽中断。 中断返回:处理器执行中断返回指令,将断点地址从堆栈中弹出,程序返回断点继续执行原来的程序。 中断识别:处理器识别出当前究竟是哪个中断源提出了请求,并明确与之相应的中断服务程序所在主存位置。

中断优先权:为每个中断源分配一级中断优先权,即系统设计者事先为每个中断源确定处理器响应他们的先后顺序。

中断嵌套:在一个中断处理过程中又有一个中断请求被响应处理,称为中断嵌套。 中断处理:接到中断请求信号后,随之产生的整个工作过程,称中断处理。 中断服务:指处理器执行相应的中断服务程序,进行数据传送等处理工作。 〔习题7.19〕中断控制器8259A中IRR,IMR和ISR三个寄存器的作用是什么?

〔解答〕

中断请求寄存器IRR:保存8条外界中断请求信号IR0~IR7的请求状态。Di位为1表示IRi引脚有中断请求;为0表示该引脚无请求。

中断屏蔽寄存器IMR:保存对中断请求信号IR的屏蔽状态。Di位为1表示IRi中断被屏蔽〔禁止〕;为0表示允许该中断。

中断服务寄存器ISR:保存正在被8259A服务着的中断状态。Di位为1表示IRi中断正在服务中;为0表示没有被服务。

〔习题7.20〕下面是IBM PC/XT机ROM-BIOS中的08号中断服务程序,请说明各个指令的作用。 int08h proc sti push ds

- -20

int08h 〔解答〕 int08h

int08h

push ax push dx …… …… int 1ch mov al,20h out 20h,al pop ax pop dx pop ds iret endp proc far sti

push ds push ax push dx …… …… int 1ch mov al,20h out 20h,al pop ax pop dx pop ds iret endp

; 日时钟计时 ; 控制软驱马达

; 远过程 ; 开中断 ; 保护现场

; 日时钟计时 ; 控制软驱马达 ; 调用1CH号中断

; 发送EOI中断结束命令 ; 恢复现场

; 中断返回

第8章 常用接口技术

〔习题8.1〕简答题

〔1〕为什么称8253/8254的工作方式1为可编程单稳脉冲工作方式? 〔2〕为什么写入8253/8254的计数初值为0却代表最大的计数值? 〔3〕处理器通过8255的控制端口可以写入方式控制字和位控制字,8255如何区别这两个控制字呢? 〔4〕“8255具有锁存输出数据的能力”是什么意思? 〔5〕Modem〔戏称“猫”〕是一个什么作用的器件?

〔6〕RS-232C标准使用25针连接器,为什么PC机上常见的是9针连接器? 〔7〕什么是RS-232C的零调制解调器连接方式? 〔8〕UART器件的主要功能是什么?

〔9〕多路开关在模拟输入输出系统中起什么作用?

〔10〕处理器为什么需要通过锁存器与数字/模拟转换器连接?

〔解答〕

① 方式1可以通过编程产生一个确定宽度的单稳脉冲,故称工作方式1为可编程单稳脉冲工作方式。 ② 因为计数器是先减1,再判断是否为0,所以写入0实际代表最大计数值。

③ 通过控制字的D7位来区别:D7=1,该控制字为方式控制字;否则为位控制字。

④ 8255的三种工作方式均可实现输出数据锁存,即数据输出后被保存在8255内部,可以读取出来,只有当8255再输出新一组数据时才改变。

⑤ Modem,称为调制解调器,将数字信号转换为适合在 线路上传送的模拟信号〔调制〕以及将 线路的模拟信号转换为数字信号〔解调〕。

- -21

⑥ 因绝大多数设备只使用RS-232C标准的其中9个信号,所以PC机上就配置9针连接器。

⑦ 两台微机进行短距离通信,可以不使用调制解调器,直接利用232C接口连接,被称为零调制解调器〔Null Modem〕连接。

⑧ UART表示通用异步接收发送器,主要功能是将并行数据转换为串行数据发送,以及实现串行数据转换为并行传送给处理器。

⑨ 采用多路开关,通过微型机控制,把多个现场信号分时地接通到A/D转换器上转换,到达共用A/D转换器以节省硬件的目的。

⑩ 处理器输出数据都只在输出指令OUT执行的极短时间内出现在数据总线上,慢速的外设不能及时获取,所以主机与DAC之间必须连接数据锁存器。 〔习题8.3〕填空题

〔1〕8253芯片上有__________个__________位计数器通道,每个计数器有__________种工作方式可供选择。假设设定某通道为方式0后,其输出引脚OUT为__________电平;当__________后通道开始计数,__________信号端每来一个脉冲__________就减1;当__________,则输出引脚输出__________电平,表示计数结束。

〔2〕假设某8253的CLK0接1.5MHz的时钟,欲使OUT0产生频率为300kHz的方波信号,则8253的计数值应为__________,应选用的工作方式是__________。

〔3〕8255具有__________个外设数据引脚,分成3个端口,引脚分别是__________,__________和__________。

〔4〕8255的A和B端口都定义为方式1输入,端口C上半部分定义为输出,则方式控制字是__________,其中D0位已经没有作用、可为0或1。

〔5〕对8255的控制寄存器写入A0H,则其端口C的PC7引脚被用作__________信号线。

〔6〕PC机键盘上ESC键和字母A键的扫描码分别是__________和__________,断开扫描码分别是__________和__________。

〔7〕232C用于发送串行数据的引脚是__________,接收串行数据的引脚是__________,信号地常用__________名称表示。

〔8〕欲使通信字符为8个数据位、偶校验、2个停止位,则应向8250__________寄存器写入控制字__________,其在PC系列机上的I/O地址〔COM2〕是__________。

〔9〕有符号数32的8位补码是00100000,如果用8位偏移码是__________;有符号数-32的8位补码是11100000,如果用8位偏移码是__________。

〔10〕如果ADC0809正基准电压连接10V,负基准电压接地,输入模拟电压2V,则理论上的输出数字量为__________。

〔解答〕

① 3,16,6,低,写入计数初值〔并进入减1计数器〕,脉冲输入CLK,减法计数器,计数器的计数值减为0,高

② 5〔=1.5MHz÷300KHz〕,3

③ 24,PA0~PA7,PB0~PB7,PC0~PC7 ④ 10110110〔=B6H,B7H〕

⑤ OBF

⑥ 01H,1DH〔=30〕,81H,9DH〔=158〕 ⑦ TxD,RxD,GND

⑧ 通信线路控制〔CLR〕,00011111B〔1FH〕,2FBH ⑨ 10100000,01100000

⑩ 53H〔=51≈51.2=2÷10×256〕

〔习题8.4〕8253芯片每个计数通道与外设接口有哪些信号线,每个信号的用途是什么?

〔解答〕

CLK时钟输入信号:在计数过程中,此引脚上每输入一个时钟信号〔下降沿〕,计数器的计数值减1。 GATE门控输入信号:控制计数器工作,可分成电平控制和上升沿控制两种类型。

OUT计数器输出信号:当一次计数过程结束〔计数值减为0〕,OUT引脚上将产生一个输出信号。

- -22

〔习题8.5〕8253芯片需要几个I/O地址,各用于何种目的? 〔解答〕

4个,读写计数器0,1和2,及控制字。

〔习题8.6〕试按如下要求分别编写8253的初始化程序,已知8253的计数器0~2和控制字I/O地址依次为204H~207H。

① 使计数器1工作在方式0,仅用8位二进制计数,计数初值为128。 ② 使计数器0工作在方式1,按BCD码计数,计数值为3000。 ③ 使计数器2工作在方式2,计数值为02F0H。 〔解答〕

mov al,50h mov dx,207h out dx,al mov al,128 mov dx,205h out dx,al mov al,33h mov dx,207h out dx,al mov ax,3000h mov dx,204h out dx,al mov al,ah out dx,al mov al,0b4h mov dx,207h out dx,al mov al,02f0h mov dx,206h out dx,al mov al,ah out dx,al

; =80h

; 不是3000

〔习题8.12〕有一工业控制系统,有四个控制点,分别由四个对应的输入端控制,现用8255的端口C实现该系统的控制,如此题图形。开关K0~K3打开则对应发光二极管L0~L3亮,表示系统该控制点运行正常;开关闭合则对应发光二极管不亮,说明该控制点出现故障。编写8255的初始化程序和这段控制程序。 〔解答〕

; 写入方式字

mov al,100×00×1b ; =81H〔×表示任意,可以填写为0,也可以为1〕 mov dx,控制口地址 ; 可以假设为0FFFEH out dx,al

;加入下一段更好,使L0~L3全亮 mov al,0fh

mov dx,端口C地址 ; 可以假设为0FFFCH

- -23

out dx,al ;控制程序段

mov dx,端口C地址 in al,dx mov cl,4 shl al,cl out dx,al

; 可以假设为0FFFCH ; 读入PC0~PC3 ; 左移4位

; 控制PC4~PC7

〔习题8.14〕串行异步通信发送8位二进制数01010101:采用起止式通信协议,使用奇校验和2个停止位。画出发送该字符时的波形图。假设用1200 bps,则每秒最多能发送多少个数据?

〔解答〕

每个字符的位数是:1个起始位+8个数据位+1个奇校验位+2个停止位=12位,采用1200bps、即每秒1200位的传送速率,则每秒最多能发送1200÷12=100个数据。

0 1 0 1 0 1 0 1 0 1 1 1 图8-2 波形例如图

〔习题8.20〕ADC的转换结束信号起什么作用,可以如何使用该信号,以便读取转换结果?

〔解答〕

当A/D转换结束,ADC输出一个转换结束信号,通知主机读取结果。 有多种使用A/D转换结束信号的方法,对应的程序设计方法也不同。

查询方式:把结束信号作为状态信号经三态缓冲器送到主机系统数据总线的某一位上。主机不断查询这个状态位,发现结束信号有效,便读取数据。

中断方式:把结束信号作为中断请求信号接到主机的中断请求线上。ADC转换结束,主动向处理器申请中断。处理器响应中断后,在中断服务程序中读取数据。

DMA传送方式:如果ADC速度足够快,可把结束信号作为DMA请求信号,采用DMA传送方式。 延时传送方法:不使用结束信号,微机延时到转换结束读取数据。

8255 PA0~PA7 PC4 PC7 8位 ADC EOC START 模拟信号

PB0~PB7 8位 DAC 模拟信号

图8-3 习题8.21附图

- -24

〔习题8.21〕某控制接口电路如此题图形。需要控制时,8255A的PC7输出一个正脉冲信号START启动A/D转换;ADC转换结束在提供一个低脉冲结束信号EOC的同时送出数字量。处理器采集该数据,进行处理,产生控制信号。现已存在一个处理子程序ADPRCS,其入口参数是在AL寄存器存入待处理的数字量,出口参数为AL寄存器给出处理后的数字量。假定8255端口A,B,C及控制端口的地址依次为FFF8H~FFFBH,要求8255的端口A为方式1输入、端口B为方式0输出。编写采用查询方式读取数据,实现上述功能的程序段。 〔解答〕

again:

; 8255A初始化 mov al,1011000×b mov dx,0fffbh out dx,al

; 使PC7=0〔START为低〕 mov al,00001110b mov dx,0fffbh out dx,al

; 启动A/D转换 mov al,00001111b mov dx,0fffbh out dx,al ; 使PC7=1〔START为高〕 nop

mov al,00001110b out dx,al ; 使PC7=0〔START为低〕 ; 查询是否转换结束 mov dx,0fffah in dx,al test al,20h

; PC5=0〔转换未结束,继续检测〕 jz again

; PC5=1〔转换结束〕 mov dx,0fff8h ; 输入数据 in al,dx call adprcs ; 处理数据 mov dx,0fff9h out dx,al ; 输出数据

- -25

因篇幅问题不能全部显示,请点此查看更多更全内容