微机实验8253(2)

2019-08-30 12:51

(3)计数器级联方式实验,流程如图3.3.3:

开始显示提示,输入计数器 0 的初值和计数器 1 的初值设置计数器 0 为工作方式 3设置计数器 1 为工作方式 2设置计数器 0 的初值设置计数器 1 的初值询问是否继续Yes是否是‘y’键 ?No结束

图3.3.3 TPC-USB平台计数器级联实验流程图

四、程序清单与执行结果

4.1 程序清单

1.计数器方式0实验

CODE SEGMENT

ASSUME CS:CODE START:

MOV AL,10H ;计数器0,方式0,写两个字节,二进制计数 MOV DX,283H ;把控制寄存器地址放在DX寄存器中 OUT DX,AL ;将AL的值送入DX端口

5

MOV DX,280H ;把计数器0地址放在DX寄存器中 MOV AL,0FH ;将0FH存入AL寄存器 OUT DX,AL ;将此时AL的值送入DX端口 LP1: IN AL,DX ;从DX端口读入8位,放在AL寄存器中 CALL DISP ;调用DISP

PUSH DX ;将DX内容保存到堆栈段

MOV AH,06H ;将06H存入AH,为了下句调用21中断 MOV DL,0FFH ;将0FFH存入DL INT 21H ;调用21中断

POP DX ;将DX的内容推出栈段

JZ LP1 ;如果DX的内容是0,就跳转到LP1 MOV AH,4CH ;将4CH存入AH,为了下句调用21中断 INT 21H ;调用21中断

DISP PROC NEAR ;定义一个名为DISP的子程序 PUSH DX ;把DX的内容保存到堆栈段中

AND AL,0FH ;将AL寄存器的内容与0FH进行“与”运算,再把结果存入AL中 MOV DL,AL ;将AL的值送入DL寄存器 CMP DL,9 ;比较DL中的值与9的大小

JLE NUM ;如果DL的值小于或等于9时,则跳转到NUM ADD DL,7 ;将DL的值与7进行相加后,再送入DL中 NUM: ADD DL,30H ;将DL的值与30H进行相加后,再送入DL中 MOV AH,02H ;将02H存入AH

6

INT 21H ;调用DOS21中断

MOV DL,0DH ;结合“MOV AH,02H”,输出0DH INT 21H ;调用中断指令

MOV DL,0AH ;结合“MOV AH,02H”,输出0AH INT 21H ;调用DOS21中断

POP DX ;将DX的内容推出栈段

RET ;子程序在功能完成后返回调用程序继续执行 DISP ENDP ;子程序结束 CODE ENDS ;代码段结束 END START 2.计数器方式3实验 CODE SEGMENT

ASSUME CS:CODE START:

MOV DX,283H ;把控制寄存器地址放在DX寄存器中

MOV AL,36H ;设置控制字00110110(计数器0,方式3,写两个字节,二进制计数) OUT DX,AL ;将AL的值送入DX端口 MOV AX,1000H ;把1000H这个数赋给AX

MOV DX,280H ;把计数器0地址放在DX寄存器中 OUT DX,AL ;将AL的值送入DX端口 MOV AL,AH ;将AX的高8位存入AL寄存器中

7

OUT DX,AL ;将此时AL的值送入DX端口 MOV DX,283H ;把端口地址放在DX寄存器中

MOV AL,76H ;设置控制字01110110(计数器1,方式3,写两个字节,二进制计数) OUT DX,AL ;将AL的值送入DX端口 MOV AX,1000H ;把1000H赋给AX

MOV DX,281H ;把端口地址放在DX寄存器中 OUT DX,AL ;将AX的低8位送入DX端口 MOV AL,AH ;将AX的高8位存入AL寄存器中 OUT DX,AL ;将AL的值送入DX端口 MOV AH,4CH ;将4CH存入AH INT 21H ;调用DOS21中断 CODE ENDS ;代码段结束 END START ;程序结束

3. 计数器级联实验 data segment

mesg1 db 13,10,'counter0:','$' mesg2 db 13,10,'counter1:','$' mesg3 db 13,10,'continue?(y/n)','$' mesg4 db 13,10,13,10,'thank you!',13,10,'$' errorm db 13,10,'input error!','$' counter0 dw 0 counter1 dw 0

8

data ends code segment assume cs:code,ds:data main proc far start: mov dx,data mov ds,dx do: sub bx,bx sub ax,ax mov counter0,0 mov counter1,0 ;init l1:

mov dx,offset mesg1 mov ah,09h int 21h

rd1 : ;read counter0 mov al,0 ;判断有无输入mov ah,01 ;read a char int 21h cmp al,0 jz rd1

9


微机实验8253(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016年江西教师招聘考试教育综合真题及标准答案[1]

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

马上注册会员

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