接口实验指导书(4)

2019-05-18 19:44

MOV AH,35H MOV A L,0AH ;取0AH号中断向量送 ES:BX INT 21 H PUSH ES ;保存原中断向量 PUSH BX PUSH DS MOV DX,SEG ADINT MOV DS,DX MOV DX,OFFSET ADINT ;设置新的中断向量 MOV AH,25H MOV AL,0AH INT 21H POP DS IN AL,21H ;取中断屏蔽寄存器的内容 PUSH AX ;保存 AND AL,11111011B ;允许IRQ2的中断 OUT 21H,AL

4.PC机系统中的8259A工作在完全嵌套方式下,在中断处理程序结束时,需要发中断结束名命令。

MOV AL,20H OUT 20H,AL 5.编程2的内容具有一定难度,仅为选作内容。 四、程序框图:

1.中断处理程序:

保存使用的寄存器的内容 从0809的端口读取A/D转换的数据 发中断结束的命令 中断返回

16

2.主程序:

用INT21H的35H子功能取类型0AH的中断向量,并入栈保存 用INT21H的25H子功能设置类型0AH的中断向量,指向A/D转换的中断处理子程序 取中断屏蔽寄存器的内容保存在BP寄存器中 开放0AH号中断 300→CX 开中断 启动0809进行本次A/D转换 等待硬中断 关中断 A/D转换结果送内存6000H段 N CX减1为0? Y 用INT21H的25H子功能恢复原中断向量 恢复中断屏蔽寄存器内容 结束

17

五、程序清单(一):

CRLF MACRO

MOV DL,0DH MOV AH,02H INT 21H ;中断方式采样 A/ D转换数 MOV DL,0AH 据,送内存的6000H段处。 MOV AH,02H INT 21H ENDM

DATA SEGMENT INR DB ? RESULT DB ? DATA ENDS

STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START:MOV AX,DATA MOV DS,AX MOV AX,STACK ;初始化 MOV SS,AX MOV AX,TOP MOV SP,AX MOV AL,0AH MOV AH,35H ;取 IRQ2对应的中断向量 INT 21 H PUSH ES PUSH BX ;保存 PUSH DS MOV AX,SEG ADINT ;取中断处理程序的段址送 DS MOV DS,AX MOV DX,OFFSET ADINT ;偏移量送DX

MOV AL,0AH

MOV AH,25H ;设置 IRQ2中断向量指向中断 INT 21H 处理程序 POP DS ;恢复 DS IN AL,21H ;取中断屏蔽寄存器的内容送 MOV BP,AX BP保存

18

AND AL,11111011B ;允许 IRQ2中断 OUT MOV CCC: STI MOV OUT HLT CLI MOV PUSH MOV MOV MOV DEC MOV POP

LOOP

POP POP MOV MOV INT MOV OUT MOV

INT

ADINT PROC PUSH

PUSH

MOV IN MOV MOV OUT POP POP IRET ADINT ENDP CODE ENDS END START

21 H,AL CX,300 DX,220H DX,AL AX,SI DS

BX,6000H DS,BX

BX,CX BX [BX],AL DS CCC DX DS AL,0AH AH,25H 21 H

AX,BP 21H,AL AX,4C00H 21 H

NEAR AX DX

DX,220H AL,DX

SI,AX AL,20H 20H,AL DX AX

;采样300个点 ;开中断

;启动一次A/D采样 ;等待 IRQ2硬中断 ;关中断

;取A/D转换的结果

;送至内存6000:0—2FF区域

;恢复 IRQ2中断向量

;恢复原中断屏蔽寄存器的内容 ;结束

;中断处理子程序 ;保存

;读取A/D转换后的数据 ;数据送SI寄存器中 ;发中断结束命令

;恢复

19

六、程序清单(二):

以中断方式采样A/D转换数据,并将结果在PC机上显示出来。

说明:该程序使用两个缓冲区,其中,BUFFER1用于存放A/D采样转换的数值,BUFFER2用于存放显示的数对应的行值。P1是BUFFER1的地址指针,用于指示要读出的数的地址.

程序采用中断方式进行采样,将采样值存人BUFFER1中。每当640个点采样完后,则将采样值变成显示所对应的行值,以顺序号作为列值,按高分辨率图形方式显示出来。每次显示,都首先抹除旧的显示亮点,然后显示新的显示亮点。如此循环,则在屏幕上将看到一条动态显示曲线。当任意健按下时,程序运行结束。 DATA SEGMENT BUFFER l DB 640 DUP (0) BUFFER2 DB 640 DUP (0) Pl DW 8FH P2 DB 0FFH FLAG DB 0 DATA ENDS STACK SEGMENT DW 32 DUP (7) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX ;初始化 MOV AX,STACK MOV SS,AX MOV AL,0AH MOV AH,35H ;取0AH的中断向量送ES:BX INT 21H PUSH ES PUSH BX ;入栈保存 PUSH DS MOV AX,SEG ADINT MOV DS,AX MOV DX,OFFSET ADINT MOV AL,0AH ;设置新的中断向量,以指向中 MOV AH,25H 断 处理程序 INT 21H POP DS IN AL,21H ;取中断屏蔽寄存器内容送 BP MOV BP,AX

20


接口实验指导书(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:浅论实践教学中的指导环节

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

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