pop bx pop ax iret ; 中断返回
intmsg db 'A Instruction Interrupt !',0dh,0ah,0 ; 字符串(以0结尾) new80h endp ; 中断服务程序结束 ; 主程序
start: mov ax,cs mov ds,ax ; 设置04H中断向量 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 int 21h
tsrmsg db 'INT 80H Program Installed ! ',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 al,30h mov date[ebx],al ; 保存到缓冲区 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可以通过编程产生一个确定宽度的单稳脉冲,故称工作方式1为可编程单稳脉冲工作方式。
② 因为计数器是先减1,再判断是否为0,所以写入0实际代表最大计数值。
③ 通过控制字的D7位来区别:D7=1,该控制字为方式控制字;否则为位控制字。
④ 8255的三种工作方式均可实现输出数据锁存,即数据输出后被保存在8255内部,可以读取出来,只有当8255再输出新一组数据时才改变。
⑤ Modem,称为调制解调器,将数字信号转换为适合在电话线路上传送的模拟信号(调制)以及将电话线路的模拟信号转换为数字信号(解调)。
⑥ 因绝大多数设备只使用RS-232C标准的其中9个信号,所以PC机上就配置9针连接器。 ⑦ 两台微机进行短距离通信,可以不使用调制解调器,直接利用232C接口连接,被称为零调制解调器(Null Modem)连接。
⑧ UART表示通用异步接收发送器,主要功能是将并行数据转换为串行数据发送,以及实现串行数据转换为并行传送给处理器。
⑨ 采用多路开关,通过微型机控制,把多个现场信号分时地接通到A/D转换器上转换,达到共用A/D转换器以节省硬件的目的。
⑩ 处理器输出数据都只在输出指令OUT执行的极短时间内出现在数据总线上,慢速的外设不能及时获取,所以主机与DAC之间必须连接数据锁存器。 〔习题8.2〕判断题 〔解答〕