计算机控制技术实验报告
实验一 系统认识及程序调试练习
实验目的
1.掌握TD-ACC+实验教学系统联机软件中的各菜单功能,熟练掌握其中的程序编辑、编译、链接、加载及调试方法
2.了解TD-ACC+实验教学系统的系统资源及硬件操作环境。
实验设备
PC 机一台,TD-ACC+实验系统一套
实验内容
1.阅读“第一部分 i386EX 系统板介绍”,了解TD-ACC+实验教学系统的构成;
流程图转换为ns图2.读懂实验程序,对实验程序进行编辑、编译、链接、加载及调试练习。
实验原理
调试下列程序:在显示器上显示一行26个英文字母,换行后重复进行。
第一种实现方法:显示两行字母之间的延时时间采用软件延时方式。
实验程序1(采用软件延时方式)
CODE      SEGMENT
          ASSUME    CS:CODE
START:    MOV    CX,001AH        ;显示字符个数(26)→CX
          MOV    AH, 01         
          MOV    AL, 13         
          INT    10H            ;显示换行
          CALL    DELAY        ;调用延时子程序
          MOV    AL,41H          ;送字符‘A’的ASCⅡ码
AGAIN:    MOV    AH,01          ;显示一个字符
          INT    10H
          INC    AL              ;下一显示字符的ASCⅡ码
          LOOP  AGAIN          ;连续显示26个字母
          JMP    START          ;重复进行
DELAY:    PUSH    CX              ;延时子程序
          MOV    CX,0FFFFH                           
DEL1:      PUSH    AX                               
          POP      AX                               
          LOOP    DEL1                             
          POP    CX                               
          RET   
CODE    ENDS
          END  START 
第二种实现方法:显示两行字母之间的间隔时间用内部定时器8254进行控制,时间到由定时器的OUT端发出脉冲信号到中断控制器8259的中断信号输入端,向CPU请求中断,在中断程序中完成显示一行字母的功能。
硬件接线如图1-1,用排线将i386内部1#定时器输出OUT1连接到8259的一个中断请求端IRQ7。
8254与8253类似,它们的编程方式是兼容的,其控制字格式如下:
        D7      D6        D5      D4      D3      D2      D1      D0
SC1
SC0
RW1
RW0
M2
M1
M0
BCD
               
   

SC1 SC0——所选计数器 
0  0      计数器0 
0  1      计数器1 
1  0      计数器2 
1  1      无意义     
RW1 RW0——读/写格式     
0  0    锁定当前计数值(供CPU读取)
0  1    只读/写低8位
1  0    只读/写高8位
1  1    先读/写低8位,后读/写高8位
M2 M1M0——工作方式选择
0  0  0      方式0
0  0  1      方式1
X  1  0      方式2
X  1  1      方式3
1  0  0      方式4
1  0  1      方式5
BCD——计数格式
0    计数器按二进制格式计数
1    计数器按BCD码格式计数

实验程序2(采用定时中断方式)
CODE    SEGMENT
          ASSUME        CS:CODE
START:    MOV    AX,OFFSET IRQ7;填写8259的7号中断矢量入口地址的偏移量
            MOV    SI,003CH          ;填写8259中断7的中段矢量
          MOV    [SI],AX          ;填偏移量矢量   
          MOV    AX,CS          ;填写8259中断矢量入口地址的段地址
          MOV    SI,003EH          ;填写7号中断段地址矢量
          MOV    [SI],AX
           
          CLI                      ;关系统总中断
          CALL    SYSINTI    ;调用系统初始化子程序
          MOV        DX,0F043H                             
          MOV    AL,076H          ;初始化1#定时器                       
          OUT      DX,AL                             
          MOV        DX,0F041H                                   
          MOV      AL,10H        ;定时10ms时间常数低8位                             
          OUT      DX,AL        ;写1#定时器定时常数的低字节
          MOV        X,0F041H                                     
          MOV    AL,27H        ;定时10ms时间常数高8位
          OUT      DX,AL        ;写1#定时器定时常数的高字节                   
          MOV    BX,64H
          MOV    AH, 01         
          MOV    AL, 13         
          INT      10H            ;显示换行
AGAIN:  STI    ;打开系统总中断
          HLT    ;停机等待直到有中断产生                     
          JMP    AGAIN          ;继续
IRQ7:    DEC      BX
          JNZ      FINISH
          MOV    BX,64H
          MOV    CX,001AH
          MOV    AL,41H
AGAIN1:  MOV    AH,01   
          INT      10H
          INC      AL         
          LOOP      AGAIN1
          MOV    AH, 01         
          MOV    AL, 13         
          INT      10H                       
FINISH:  MOV    AL,20H        ;中断结束                     
          OUT    20H,AL
          IRET                      ;中断返回
         
SYSINTI:  MOV  AX,8000H          ;系统初始化子程序(已保存在机器中)
            OUT    23H,AL          ;扩展IO使能

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。