微机原理与接口技术(第四版)课后习题答案北京大学出版社

2026/1/26 20:50:37

33

mov ax,offset intproc 一个过程名 cld mov es:[di],ax mov ax,seg intproc mov es:[di+2],ax sti 〔解答〕

设置80H号中断向量。

; intproc是

iret int08h endp

; 中断返回

〔习题7.21〕编写一个程序,将例题7-5的INT 80H内部中断服务程序驻留内存。然后在调试程序中或其他程序中执行INT 80H,看能否实现其显示功能。 〔解答〕 ; 代码段 jmp start ; 80H内部中断服务程序:显示字符串(以〔习题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 push ax push dx ?? ; 日时钟计时 ?? ; 控制软驱马达 int 1ch mov al,20h out 20h,al pop ax pop dx pop ds iret int08h endp 〔解答〕

int08h proc far ; 远过程 sti ; 开中断 push ds ; 保护现场 push ax push dx ?? ; 日时钟计时 ?? ; 控制软驱马达 int 1ch ; 调用1CH号中断 mov al,20h ; 发送EOI中断结束命令 out 20h,al pop ax ; 恢复现场 pop dx pop ds

0结尾);DS∶DX=缓冲区首地址 new80h proc sti push ax push bx push si mov si,offset intmsg new1: mov al,cs:[si] 字符 cmp al,0 jz new2 mov bx,0 ROM-BIOS调用显示一个字符 mov ah,0eh int 10h inc si 字符 jmp new1 new2: pop si pop bx pop ax iret intmsg db 'A Interrupt !',0dh,0ah,0 结尾)

new80h endp 序结束 ; 主程序 start: mov ax,cs mov ds,ax 断向量 mov dx,offset new80h cli mov ax,2580h int 21h sti mov eax,offset tsrmsg 息 call dispmsg mov dx,offset start 存程序的长度 add dx,15 shr dx,4 “节”(16个字节)为单位 mov ax,3100h 返回DOS

; 过程定义 ; 开中断 ; 保护寄存器 ; 获取欲显示; 为“0”结束 ; 采用; 显示下一个; 恢复寄存器 ; 中断返回 Instruction ; 字符串(以0; 中断服务程; 设置04H中; 显示安装信; 计算驻留内; 调整为以; 程序驻留, 34

int 21h

tsrmsg db 'INT 80H Program Installed ! add al,30h mov date[ebx],al ; 保存到缓冲区 ',0dh,0ah,0

〔习题7.22〕完成例题7-2显示当前日期同样的功能,请获得日期数据后转换成ASCII码,保存在缓冲区、利用DISPMSG子程序显示。

〔解答〕

; ex0722.asm in DOS include io16.inc .data date byte 'Today is 20xx-yy-zz',0 .code start: mov ebx,11 mov al,9 ; AL=9(准备从9号单元获取年代数据) out 70h,al ; 从70H的I/O地址输出,选择CMOS RAM的9号单元 in al,71h ; 从71H的I/O地址输入,获取9号单元的内容,保存在AL mov dl,al shr al,4 ; 转换高位BCD码为ASCII码 add al,30h mov date[ebx],al ; 保存到缓冲区 add ebx,1 and dl,0fh ; 转换低位BCD码为ASCII码 add dl,30h mov date[ebx],dl ; 保存到缓冲 add ebx,2 mov al,8 ; AL=8(从8号单元获取月份数据) out 70h,al in al,71h mov dl,al shr al,4 ; 转换高位BCD码为ASCII码 add al,30h mov date[ebx],al ; 保存到缓冲区 add ebx,1 and dl,0fh ; 转换低位BCD码为ASCII码 add dl,30h mov date[ebx],dl ; 保存到缓冲 add ebx,2 mov al,7 ; AL=7(从7号单元获取日期数据) out 70h,al in al,71h mov dl,al shr al,4 ; 转换高位BCD码为ASCII码

add ebx,1 and dl,0fh ; 转换低位BCD码为ASCII码 add dl,30h mov date[ebx],dl ; 保存到缓冲 mov eax,offset date ; 显示 call dispmsg exit 0 end start

第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,称为调制解调器,将数字信号转换为适合在电话线路上传送的模拟信号(调制)以及将电话线路的模拟信号转换为数字信号(解调)。

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

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

35

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

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

⑩ 处理器输出数据都只在输出指令OUT执行的极短时间内出现在数据总线上,慢速的外设不能及时获取,所以主机与DAC之间必须连接数据锁存器。 (5)对8255的控制寄存器写入A0H,则其端口

C的PC7引脚被用作__________信号线。

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

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

(8)欲使通信字符为8个数据位、偶校验、2〔习题8.2〕判断题

(1)称为定时器也好,称为计数器也好,其实它们都是采用计数电路实现的。

(2)计数可以从0开始逐个递增达到规定的计数值,也可以从规定的计数值开始逐个递减恢复到0;前者为加法计数器,后者是减法计数器;8253/8254采用后者。

(3)32位PC机中并没有8253或8254芯片,但其控制芯片组具有兼容其功能的电路。

(4)一次实现16位并行数据传输需要16个数据信号线。进行32位数据的串行发送只用一个数据信号线就可以。

(5)8255没有时钟信号,其工作方式1的数据传输采用异步时序。

(6)调制解调器的信号调制是数字信号与模拟信号的转换,所以其转换原理与ADC或DAC器件一样。

(7)模拟地线和数字地线都是地线,所以一般可以随意连接在一起。

(8)电脑通过麦克风录音,需要ADC器件将音波转换为数字音频信号。

(9)模拟量转换为数字量一定会引入转换误差,所以一定有失真。

(10)当处理器提供数字量后DAC器件将输出相应的模拟量,但ADC器件需要启动转换,隔一定时间后才能获得数字结果。 〔解答〕

① 对 ② 对 ③ 对 ④ 对 ⑤ 对 ⑥ 错 ⑦ 错 ⑧ 对 ⑨ 对 ⑩ 对 〔习题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。

个停止位,则应向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引脚上将产生一个输出信号。

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

〔解答〕

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

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

① 使计数器1工作在方式0,仅用8位二进制计数,计数初值为128。

36

② 使计数器0工作在方式1,按BCD码计数,计数值为3000。

③ 使计数器2工作在方式2,计数值为02F0H。 xor ah,ah shl ax,1 ; 乘以2 mov bx,ax ; 记数值表是16位数〔解答〕

① mov al,50h mov dx,207h out dx,al mov al,128 ; =80h mov dx,205h out dx,al

② mov al,33h mov dx,207h out dx,al mov ax,3000h ; 不是3000 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

〔习题8.7〕利用扬声器控制原理,编写一个简易乐器程序。

当按下1~8数字键时,分别发出连续的中音1~7和高音i(对应频率依次为524Hz,588Hz,660Hz,698Hz,784Hz,880Hz,988Hz和1048Hz);

当按下其他键时暂停发音;

当按下ESC键(ASCII码为1BH),程序返回操作系统。 〔解答〕 ; 数据段 table dw

2277,2138,1808,1709,1522,1356,1208,1139 ; 对应中音1~7和高音i的定时器记数值 ; 代码段 mov al,0b6h ; 设置定时器2工作方式 out 43h,al again: call readc ; 等待按键 cmp al,'1' ; 判断是否为数字1~8 jb next cmp al,'8' ja next sub al,30h ; 1~8的ASCII码转换为二进制数 sub al,1 ; 再减1,将数字1~8变为0~7,以便查表

据,无法采用xlat指令 mov ax,table[bx] ; 取出对应的记数值 out 42h,al ; 设置定时器2的记数值 mov al,ah out 42h,al in al,61h ; 打开扬声器声音 or al,03h ; 使D1D0=PB1PB0=11B,其他位不变 out 61h,al jmp again ; 连续发声,直到按下另一个键

next: push ax in al,61h ; 不是数字1~8,则关闭扬声器声音 and al,0fch ; 使D1D0=PB1PB0=00b,其他位不变 out 61h,al pop ax cmp al,1bh ; 判断是否为ESC键(对应ASCII码1bh) jne again ; 不是ESC,继续;否则程序执行结束

〔习题8.8〕针对8255芯片工作方式1输出时序,说明数据输出的过程。

〔解答〕

① 中断方式下,处理器响应中断,执行输出OUT指令:输出数据给8255,发出WR信号。查询方式下,通过端口C的状态确信可以输出数据,处理器执行输出指令;

② WR信号一方面清除INTR,另一方面在上升沿使OBF有效,通知外设接收数据。实质上OBF信号是外设的选通信号;

③ WR信号结束后,数据从端口数据线上输出。当外设接收数据后,发出ACK响应;

④ ACK信号使OBF无效,上升沿又使INTR有效(允许中断的情况),发出新的中断请求。

〔习题8.9〕设定8255芯片的端口A为方式1输入,端口B为方式1输出,则读取口C的数据的各位是什么含义?

〔解答〕

PC0:端口B的中断请求信号 PC1:端口B输出缓冲器满信号 PC2:端口B中断允许控制位 PC3:端口A的中断请求信号 PC4:端口A中断允许控制位 PC5:端口A输入缓冲器满信号 PC6/PC7:I/O信号


微机原理与接口技术(第四版)课后习题答案北京大学出版社.doc 将本文的Word文档下载到电脑
搜索更多关于: 微机原理与接口技术(第四版)课后习题答案北京大学出版社 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219