《微机原理与接口技术》 洪永强习题答案 下载本文

41564736.doc集 - 19 - 编者:喻其山

(3)从通信接口COM1接收一个字符,并放入内存? (4)通过通信接口COM1向外发送1个字符?? 答:(1)、MOV DL, ?A?

MOV AH, 05H INT 21H (2)、MOV DX, 0 ;0号打印机

MOV AL, ?P? MOV AH, 0 INT 17H

(3)、MOV AH, 03H ;从通信接口COM1接收一个字符

INT 21H MOV BUF, AL (4)、MOV DL, ?C? ;通过通信接口COM1发送字符C

MOV AH, 04H INT 21H 7.12 利用DOS 系统功能调用,完成将键盘输入的小写字母转换为大写字母并输

出显示,直到输入?$?字符时停止输出 答:完整程序如下: CODE SEGMENT

ASSUME CS:CODE

START: MOV AH, 02H

MOV DL, 0DH ;显示“回车” INT 21H MOV AH, 02H MOV DL, 0AH ;显示“换行” INT 21H

INPUT: MOV AH, 01H ;键盘输入一个字符回显功能

INT 21H CMP AL, ?$? ;?$?字符? JE INPUT_END CMP AL, ?a? ;?a~z?字符? JB INPUT CMP AL, ?z? JA INPUT

AND AL, 0DFH ;小写字母转换为大写字母 MOV AH, 02H MOV DL, AL ;显示大写字母 INT 21H JMP INPUT

INPUT_END: MOV AX, 4C00H ;返回DOS功能

INT 21H

CODE ENDS

END START

41564736.doc集 - 20 - 编者:喻其山

7.13 从内存单元BUF开始的缓冲区中有7个8位无符号数,依次为53H、0D8H、

67H、82H、0A6H、9EH、0F4H。编程找出它们的中间值并放入RES单元,且将结果以“(RES)=?”的格式显示在屏幕上。 7.14 设某测试系统中,1号端口为测试口,所得数据是0~9之间的十进制整数;

2号端口为显示口,对应于数字0~9的LED七段共阴显示码依次为:3FH、06H、5BH、4FH、66H、6DH、3DH、07H、7FH、6FH。编写一段查表送显的程序,要求先从测试口读入一个数据,再查表将相应的显示码从显示口送出,如此反复进行直至读入数据0FFH为止。 7.15 编程实现以下操作:从键盘输入4个数字,分别作为两个10~99之间的十

进制数。求它们的和,并把结果以三位十进制数的形式显示在屏幕上。要求输入回显的两个加数与送显的和之间有适当的分隔,以示区别。格式自行拟定。

答:完整程序如下: CODE SEGMENT

ASSUME CS:CODE

START: MOV AH, 02H

MOV DL, 0DH ;显示“回车” INT 21H MOV AH, 02H MOV DL, 0AH ;显示“换行” INT 21H CALL INPUT ;输入2数并转换为十进制数送BL MOV AL, BL ;转换的十进制数保存在AL中 CALL INPUT ;输入2数并转换为十进制数送BL ADD AL, BL DAA

MOV BH, 0 ADC BH, 0 ;将进位位保存在BH中 MOV BL, AL ;将求和结果保存在BL中 CALL OUTPUT ;输入显示子程序调用 INT 20H ;结束,返回DOS

INPUT PROC

PUSH AX

MOV AH, 01H ;键盘输入一个字符功能 INT 21H

AND AL, 0FH ;ASCII码转换为二进制数 MOV BL, AL MOV CL, 4 SHL BL, CL ;BL内容左移四位 MOV AH, 01H ;键盘输入一个字符功能

41564736.doc集 - 21 - 编者:喻其山

INT 21H AND AL, 0FH OR BL, AL MOV AH, 02H MOV DL, ' '

;ASCII码转换为二进制数 ;合成为一个两位的十进制数 ;显示空格

INT 21H POP AX RET

INPUT ENDP

OUTPUT PROC

PUSH AX PUSH DX PUSH CX

MOV AH, 02H MOV DL, ' ' INT 21H MOV DL, BH OR DL, 30H

MOV AH, 02H INT 21H MOV DL, BL MOV CL, 04H SHR DL, CL OR DL, 30H MOV AH, 02H INT 21H MOV DL, BL AND DL, 0FH OR DL, 30H

MOV AH, 02H INT 21H POP CX POP DX POP AX RET

OUTPUT ENDP CODE ENDS

END START

ASCII码

ASCII码

ASCII码

;显示空格;显示进位位;进位位转换为;显示求和结果高位;结果高位转换为;显示求和结果低位;结果低位转换为41564736.doc集 - 22 - 编者:喻其山

第 8 章 计数器/定时器与DMA控制器

8.1 8.2 8.3 8.4 8.5

微机系统中的外部定时有哪两种方法?其特点如何? 8253计数/定时器有哪些特点? 8253初始化编程包括哪两项内容? 答:设定方式控制字和计数初始值。

8253有哪几种工作方式?区分不同工作方式的特点体现在哪几方面? 设8253芯片的计数器0、计数器2和控制口地址分别为04B0H、04B4H、04B6H。定义计数器0工作在方式3,CLK0为5MHz,要求输出OUT0为1KHz方波;定义计数器2用OUT0作计数脉冲,计数值为1000,计数器计到0时向CPU发出中断请求,CPU响应这一中断请求后继续写入计数值1000,开始重新计数,保持每一秒钟向CPU发出一次中断请求。试写出对8253的初始化程序,并画出硬件连接图。 答:硬件连接图如下:

D7~D0 D7~D0 S2 WR IOWC S1 RD IORC S0 INTA 8253 8259 1Hz 8288 IR INTR OUT2 8086CPU CLK0 A9 或门 5MHz OUT0 G2A Y0 A8 7432 GATE0 74LS138 A10 +5V G2B 7400 A6 GATE2 G1 A7 CLK2 C Y5 A5 CS B Y6 A4 A Y7 A3 A1 A2 A0 A1

8253的初始化程序段如下:

INIT8253: MOV DX, 04B6H ;控制口

MOV AL, 37H ;计数器0方式3 OUT DX, AL

MOV DX, 04B0H ;计数器0

MOV AX, 5000H ;计数值=5MHz/1kHz=5000 OUT DX, AL