OUT DX,AL
(4)将一个字节从端口2AH输入,存到内存BUF单元。 MOV DI,OFFSET BUF IN AL,2AH MOV [DI],AL
(5)将一个字从0A0FH单元输出。 MOV DX,0A0FH
OUT DX,AX
(6)将一个字从78H端口输入。 IN AX,78H
5. 增加一个新的软中断,应完成哪些操作? ? 选择一个可用的中断类型号。
? 编写新的软中断处理程序。
? 将新的软中断处理程序的入口地址写入到中断向量表的4×n起的4个字节中。 6. 类型号1DH的中断向量在存储器的哪些单元里?
1DH*4开始的连续四个字节中,即74H,75H,76H,77H。
7. 有两个设备,状态寄存器的端口地址分别是42H和54H,与其相对应的输入寄存器的
端口地址分别是44H和56H。要求轮流测试两个设备的状态寄存器,只要状态寄存器的第7位为1,则对应的设备就输入一个字符,状态寄存器的第7位不为1的设备不做
任何操作。试编制能实现该功能的程序。两个输入字符分别存入首地址为CHAR1和CHAR2的存储区中。如果输入字符为E,则程序结束。 STACK SEGMENT STACK DW 256 DUP(?)
STACK ENDS DATA SEGMENT
CHAR1 DB N1 DUP(?) CHAR2 DB N2 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK,DS:DATA START:MOV AX,DATA MOV DS,AX
MOV SI,OFFSET CHAR1 MOV DI,OFFSET CHAR2
AGAIN:IN AL,42H
TEST AL,80H
JZ NEXT IN AL,44H CMP AL,‘E’ JE EXIT
MOV [SI],AL
INC SI
NEXT:IN AL,54H
TEST AL,80H
36
JZ AGAIN IN AL,56H CMP AL,‘E’ JE EXIT
MOV [DI],AL INC DI
JMP AGAIN
EXIT:MOV AH,4CH INT 21H CODE ENDS
END START
8. 内存单元INT9开始放有一个中断服务程序,它所对应的中断类型号为9。试编写建立
这一中断向量的程序段。 ┇
MOV AX,0
MOV DS,AX ;DS指向向量表的段 MOV SI,9*4
MOV AX,OFFSET INT9 MOV [SI],AX MOV AX,SEG INT9 MOV [SI+2],AX ┇
9. 编写程序段落实现将类型2CH的中断向量指向中断处理程序INT2CH。
CODE SEGMENT ┇
MOV AX,0
MOV DS,AX ;DS指向向量表的段 MOV SI,2CH*4
MOV AX,OFFSET INT2CH MOV [SI],AX
MOV AX,SEG INT2CH MOV [SI+2],AX ┇
INT2CH PROC FAR ┇
STI ;开中断 IRET ;中断返回 INT2CH ENDP CODE ENDS
10. 编写程序实现在循环输出“A~Z”26个大写字母后,使计算机每隔10秒钟响铃一次。
? 先循环输出26个大写字母; ? 再定时10秒,到10秒则响铃;
37
? 定义响铃子程序。
11. 编程实现从COM1口输入一串字符到内存缓冲区的功能。
STACK SEGMENT STACK DW 256 DUP(?) STACK ENDS
DATA SEGMENT
BUFFER DB 30 DUP (?) COUNT DB 20 DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK,DS:DATA START:MOV AX,DATA MOV DS,AX
MOV SI,OFFSET BUFFER MOV BX,OFFSET COUNT MOV CL,[BX] LOP1:MOV DX,3FDH LOP2:IN AL,DX TEST AL,1 JZ LOP2
MOV DX,3F8H IN AL,DX MOV [SI],AL INC SI
DEC CL JNZ LOP1
MOV AH,4CH
INT 21H CODE ENDS
END START
12. 根据本章讲述的内容,试分析下面一段程序实现的功能。
MOV AX,0 MOV ES,AX
MOV DI,36H * 4
MOV AX,OFFSET INTBUF
STOSW
MOV AX,CS STOSW
该段程序实现置中断向量表的功能,中断向量码为36H。
38