实验一系统认识实验
一、实验目的
掌握TDN86/51教学系统的基本操作
二、实验设备
TDN86/51教学实验系统一台
三、实验内容及步骤
1.系统认识实验(1)
(1)程序的输入与修改
从3500H内存单元开始建立0-15共16个数据。
实验步骤
a.使用串行通讯电缆将实验系统与PC微机相连。
b.将位于线路板右下角的系统状态选择开关拨至86档,开启实验系统。
c.在系统软件所在目录下键入MD86↙,选择对应串口号,进入集成操作软件环境,出现
系统提示符“>”。按下F1功能键,进入全屏幕编辑界面,按ALT+F建立新文件(NEW),即可开始输入源程序。实验程序及流程如下:
STACK SEGMENT STACK ;8088宏汇编程序
DW 64 DUP() ;定义堆栈段
STACK ENDS
CODE SEGMENT ;定义代码段
ASSUME CS:CODE
START: MOV DI,3500H ;程序开始设数据区首址
MOV CX,0010H ;字节数送入CX中
MOV AX,0000H
SAHF
A1: MOV [DI],AL ;写入一字节
INC DI ;修改地址指针
INC AX ;修改数据
DAA ;十进制调整
LOOP A1 ;未填完转移
A2: JMP A2
CODE ENDS ;代码段结束
END START ;程序段结束
d.输入程序后,按F2保存程序(规定扩展名为*.asm),使用ALT+X返回集成软件环境。
e.按F2,输入源程序名↙(省略扩展名,系统默认为.asm),对源程序进行汇编,生成目
标文件(*.obj)及错误信息文件(*.m)。若给出LST文件名则生成相应*.lst文件。
f.汇编无误后,按F3输入文件名↙对汇编生成的*.obj文件进行连接,连接信息显示于
屏幕上,生成相应*.exe可执行文件。
g.按F5,输入*.exe可执行文件名↙,填入程序段地址CS:0000↙及偏移地址IP:2000
↙,PC开始将程序从磁盘装入到教学系统内存,提示装载完毕后使用U0000:2000↙命
h.当发现源程序输入错误或需要调整时,在调试界面下可用A命令来修改,如修改2000
句为
(2)运行程序
系统提供了单步运行、设断点运行、连续运行等方式,具体操作如下:
a.单步运行:其操作如下表,每运行一条指令后会显示下一条待执行指令并以蓝底白字显
示变化寄存器的内容,重复T↙(或按F4键)就可一步一步地运行,直至程序结束。
b.连续运行:在“>”提示符下键入G=0000:2000↙(在系统默认段地址CS=0000情况下
也可直接键入G=2000↙)可连续运行程序,在运行过程中,可通过CTRL+C终止程序运行,返回监控状态;也可通过CTRL+S暂停程序运行,按任意键继续。
c.
上例中定义了2009地址为断点,每次键入GB=0000:2000↙程序连续运行至断点时,程序中断并显示当前各寄存器内容。GB是G命令的扩充,表示含断点连续运行程序,断点仅当系统复位时清除。
(3)内存单元内容的显示:
使用D=0000:3500↙可查看3500H-350FH单元中的内容是否为0-15共16个数。
(4)内存单元内容的修改:
若要修改某一单元内容,可进行如下操作,其中,“空格”键用于向待编辑单元的高地
E命令。
2.系统操作练习(2)
将内存3500H单元开始的0-15共16个数据传递到3600H单元开始的数据区中。实验程序及流程如下:
STACK SEGMENT STACK
DW 64 DUP()
CODE SEGMENT
ASSUME CS:CODE
START: MOV SI,3500H ;建立源地址指针
MOV DI,3600H ;建立目标地址指针
MOV CX,0008H ;字数送入CX寄存器中
A1: MOV AX,[SI] ;取源数据一字送入AX中
MOV [DI],AX ;将源数据送入目标地址单元中
INC SI ;修正指针
INC SI
INC DI
INC DI
DEC CX ;修改循环次数
JNZ A1 ;判断是否传送完毕
A2: JMP A2
CODE ENDS ;代码段结束
END START ;程序段结束
实验步骤
(1)输入程序并检查无误,经汇编、连接后装入系统。
(2)E3500↙,在3500-350F单元中分别送入00、01、02…。
(3)G=0000:2000↙,运行以上程序,按CTRL+C中断,返回监控。
(4)D3600↙,显示结果:3600 00 01 02 …。
实验二数码转换编程及程序调试
一、实验目的
1.掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。
2.熟悉键盘使用方法。
3.熟悉调试程序的方法
二、实验设备
TDN86/51教学实验系统一台
三、实验内容及步骤
计算机输入设备输入的信息一般是由ASCII 码或BCD 码表示的数据或字符,CPU 一般均用二进制进行计算或其他信息处理,处理结果的输出又必须依照外设的要求变为ASCII 码、BCD 码或七段显示码等。因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。
计算机与外设间的数码转换关系如图2-1所示,数码对应关系如表2-1所示。
1. 将ASCII 码表示的十进制数转换为二进制数
十进制表示为:
∑=--?=?++?+?n
i i i n n n n D D D D 0
01
1101010
10 ┅┅┅┅┅┅┅┅┅(1)
Di 代表十进制数1,2,3,┅9,0; 上式转换为:
图2-1 数码转换关系 二进制
0110
10)10)10((((10
D D D D D n n
i n i
i
+?++?+?=?-=∑ ┅┅┅┅┅┅┅┅┅(2)
由式(2)可归纳十进制数转换为二进制数的方法:从十进制数的最高位Dn 开始作乘
10加次位的操作,依次类推,则可求出二进制数的结果。程序流程及参考程序如下:(规定:被转换的ASCII 码十进制数存放在3500H-3504H 单元中,转换结果存在于3510H-3511H 单元中。)
STACK SEGMENT STACK DW 64 DUP() STACK ENDS
CODE SEGMENT
ASSUME CS:CODE START: MOV SI,3500H MOV DI,3510H
MOV BX,000AH
MOV CX,0004H MOV AH,00H MOV AL,[SI] SUB AL,30H
A1: IMUL BX
ADD AL,[SI+01] SUB AL,30H INC SI LOOP A1 MOV [DI],AX A2: JMP A2 CODE ENDS
END START
实验步骤
(1) 输入程序并检查无误,经汇编、连接后装入系统。 (2) 在3500-3504H 单元存入十进制数12的ASCII 码,即E3500↙,并输入30 30 30
31 32。
(3) G=0000:2000↙,运行以上程序,并用CTRL+C 来中断程序,返回监控状态。 (4) 用D3510↙查看结果,应为:3510 0C 00。 (5) 反复试几组数,考察程序的正确性。 2. 将十进制数的ASCII 码转换为BCD 码
设从键盘输入的五位十进制数的ASCII 码已存放在3500H 起始的内存单元内,把它转换为BCD 码后,再按位分别存入350AH 起始的内存单元内。若输入的不是十进制数的ASCII 码,则对应存放结果的单元内容为“FF ”。由表2-1可知,一字节ASCII 码取其低四位即变为BCD 码。实验程序及流程如下:
STACK SEGMENT STACK
DW 64 DUP()
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV CX,0005H ;循环计数器赋初值
MOV DI,3500H ;ASCII码首地址
A1: MOV BL,0FFH ;将错误标志送入BL
MOV AL,[DI] ;送ASCII码至AL
CMP AL,3AH ;比较AL与3AH
JNB A2 ;不低于3AH则转A2
SUB AL,30H ;低于3AH则取ASCII码低4位
JB A2 ;低于30H则转A2
MOV BL,AL ;否则AL内容送入BL,取代FFH
A2: MOV AL,BL ;结果或错误标志送入AL
MOV [DI+0AH],AL
INC DI
LOOP A1
A3: JMP A3
CODE ENDS
END START
实验步骤
(1)输入程序并检查无误,经汇编,连接后装入系统。
(2)在3500-3504H单元中存放五位十进制数的ASCII码,即:E3500↙,并输入31 32 33
34 35。
(3)G=0000:2000↙,运行以上程序。
(4)用D3510↙查看结果,显示结果应为:
0000:350A 00 01 02 03 04 05 CC …
(5)反复试几组数,考察程序的正确性。
四.思考题
程序2将一个五位十进制数转换为二进制数(十六位)时,这个十进制数最小可为多少,最大可为多少为什么
实验三运算类编程实验
一、实验目的
1.掌握使用运算类指令编程及调试方法。
2.掌握运算类指令对各状态标志位的影响及其测试方法。
二、实验设备
TDN86/51教学实验系统一台
三、实验内容及步骤
8086/8088指令系统提供了实现加、减、乘、除运算的基本指令,可对表3-1所示的数
00
04 02 01 … X
3500 3501 3502 3503 3510 3511
地址
存储器 Z Y 据类型进行算术运算。
1.十进制数的BCD 码减法运算
计算下X-Y=Z ,其中,X 、Y 、Z 均为BCD 码。 实验程序及流程如下: STACK SEGMENT STACK DW 64 DUP() STACK ENDS
DATA SEGMENT
X DW ;请在此处给X 赋值 Y DW ;请在此处给X 赋值 Z DW
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA MOV DS,AX MOV AH,00H SAHF
MOV CX,0002H MOV SI,OFFSET X MOV DI,OFFSET Z A1: MOV AL,[SI] SBB AL,[SI+02H] DAS PUSHF
AND AL,0FH
POPF MOV [DI],AL INC DI INC SI LOOP A1 A2: JMP A2 CODE ENDS END START
实验步骤
(1) 输入实验程序并检查无误,经汇编,连接后装入系统。(设CS:0000H ,IP :2000H ) (2) 用U0000:2000查看MOV AX,XXXX(DATA)语句,即得到数据段段地址DS:XXXX 。用E
命令EXXXX:0000↙给X ,Y 赋值存入40和12的BCD 码:00 04 02 01。
(3) G=0000:2000↙,运行以上程序。
(4) DXXXX:0004↙,显示计算结果:08 02 CC …。 (5) 反复试几组数,考察程序的正确性。 四、思考题
编写两个数值长度不等的BCD 码相加的程序。
实验四 分支程序设计实验
一、实验目的
1.掌握分支程序的结构。
2.掌握分支程序的设计、调试方法。 二、实验设备
TDN86/51教学实验系统一台 三、实验内容及步骤
设计一数据块间的搬移程序。
设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(成为目的数据块)。源数据块和目的数据块在存储中可能有三种情况,如图4-1所示。
图4-1
对于两个数据块分离的情况,如图4-1(a),数据的传送从数据块的首址开始,或者从数据块的末址开始均可。但对于有部分重迭的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏,可以得到以下结论:
当源数据块首址>目的块首址时,从数据块首地址开始传送数据。 当源数据块首址<目的块首址时,从数据块末地址开始传送数据。
实验程序及流程如下:
STACK SEGMENT STACK
源数 据块 目的数据块 FFFFFH
00000H (a )
00000H (b )
FFFFFH
源数据块
目的数据块
00000H (c )
FFFFFH
目的数据块
源数据块
DW 64 DUP()
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV CX,0010H;
MOV SI,3100H ;
MOV DI,3200H ;
CMP SI,DI ;
JA A2 ;是,转移
ADD SI,CX ;
ADD DI,CX
DEC SI
DEC DI
A1: MOV AL,[SI];
MOV [DI],AL
DEC SI
DEC DI
DEC CX
JNE A1
JMP A3
A2: MOV AL,[SI]
MOV [DI],AL
INC SI
INC DI
DEC CX
JNE A2
A3: JMP A3
CODE ENDS
END START
实验步骤
(1)按实验流程图设计编写实验程序。
(2)输入实验程序并检查无误,经汇编,连接后装入系统。(设CS:0000H,IP:2000H)
(3)用E命令在以SI为起址的单元中填入16个数。
(4)G=0000:2000↙,运行以上程序。
(5)用D命令查看DI为起址的单元中的数据是否与SI单元中数据相同。
(6)试改变SI、DI的取值,观察在三种不同的数据块情况下程序的运行。
四、思考题
为什么当源数据块首址>目的块首址时,应从数据块首址开始传送数据;而当源数据块
首址<目的块首址时,应从数据块末地址开始传送数据
实验五循环程序设计
一、实验目的
1.加深对循环结构的理解。
2.掌握循环结构程序设计的方法。
3.熟练掌握调试循环程序的方法。
二、实验设备
TDN86/51教学实验系统一台
三、实验内容及步骤
1.编制程序使S=1+2×3+3×4+4×5+…+N(N+1),直到N(N+1)项大于200为止。
实验程序及流程如下:
DW 64 DUP()
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,0001H
MOV BL,02H
A1: MOV AL,BL
INC BL
MUL BL
ADD DX,AX
CMP AX,00C8H
JNA A1
A2: INT 03H
CODE ENDS
END START
实验步骤
(1)按流程图编制实验程序。
(2)输入实验程序并检查无误,经汇编,连接后装入系统。(设CS:0000H,IP:2000H)(3)G=0000:2000↙,运行以上程序。
(4)RAX↙,显示结果。
2.求某数据区内复数的个数
设数据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得区内所包含负数的个数。
实验程序及流程如下:
STACK SEGMENT STACK Array DW 64 DUP()
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DI,3000H ;设数据区首址
MOV CL,[DI] ;送数据个数
XOR CH,CH ;CH清0
MOV BL,CH ;BL清0
INC DI ;指针指向第一个数据
A1: MOV AL,[DI]
TEST AL,80H;数据首位是否为1
JE A2
INC BL ;负数个数累加
A2: INC DI
LOOP A1
MOV [DI],BL ;存结果
INT 03H
CODE ENDS
END START
实验步骤
(1)按流程图编制实验程序。
(2)输入实验程序并检查无误,经汇编,连接后装入系统。(设CS:0000H,IP:2000H)(3)E3000↙输入数据如下:
3000=06(数据个数)
3001=12、88、82、90、22、33。
G=0000:2000↙,运行以上程序。
(4)D=3007↙,显示结果03。
(5)反复试几组数,考察程序的正确性。
四.思考题
修改程序2,使其能分别求出数据区中正数、零和负数的个数。
实验六 子程序设计实验
一、实验目的
1.学习子程序的定义和调用方法。
2.掌握子程序、子程序的嵌套、递归子程序的结构。 3.掌握子程序的程序设计、编制及调用。 二、实验设备
TDN86/51教学实验系统一台
三、实验内容及步骤
1.求无符号字节序列中的最大值和最小值 设有一字节序列,其存储首址为3000H ,字节数为08H 。 利用子程序的方法编程求出该序列中的最大值和最小值。 实验程序及流程如下:
STACK SEGMENT DW 64 DUP() STACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV SI,3000H
MOV CX,0008H CALL branch INT 03H
branch: JCXZ A4
PUSH SI
PUSH CX
PUSH BX MOV BH,[SI] MOV BL,BH
A1: LODSB
CMP AL,BH
JBE A2
MOV BH,AL JMP A3 A2: CMP AL,BL JAE A3 MOV BL,AL
A3: LOOP A1
MOV AX,BX
POP BX
POP CX
子程序
POP SI
A4: RET
CODE ENDS
END START
实验步骤
(1)根据流程图编写出相应的程序。
(2)输入实验程序并检查无误,经汇编,连接后装入系统。(设CS:0000H,IP:2000H)(3)E30000↙,输入8个字节的数据:D9、07、8B、C5、EB、04、9D、F9。
(4)G=0000:2000↙,运行以上程序。
(5)RAX↙,显示结果,AX=F9 04,AH中为最大值,AL中为最小值。
程序说明:该程序使用BH和BL暂存现行的最大值和最小值,开始时初始化成首字节的内容,然后进入循环操作,从字节序列中逐个取出一个字节的内容与BH和BL比较,若取出的字节内容比BH的内容大或比BL的内容小,则修改之。当循环操作结束时,将BH送AH,将BL送AL,作为返回值,并恢复BX原先内容。
四、思考题
1.若求有符号字节型序列中的最大值和最小值,如何修改程序
2.子程序执行完毕后要返回程序调用,它返回调用程序的什么地方,是靠什么指令、什么方法返回的
实验七存储器扩展实验
一、实验目的
1.学习掌握存储器扩展方法和存储器读/写。 2.了解6264RAM特性。
二、实验设备
TDN86/51教学实验系统一台
三、实验内容及步骤
(一)系统中的存储器扩展单元
1.6264RAM介绍
静态RAM是由MOS管组成的触发器电路,每个触发器可以存放1位信息。只要不掉电,所存储的信息就不会丢失。因此,静态RAM工作稳定,不需要外加刷新电路,使用方便。但一般SRAM的每一个触发器是由6个晶体管组成,SRAM芯片的集成度不会太高,目前较常用的有6216(2K*8位),6264(8K*8位),62256(32K*8位)。6264RAM有8192个存储单元,每个单元为8位字长。6264的引脚如图7-1所示,WE、OE、CE1、CE2的共同作用决定了芯
所示。
表7-1 6264运行方式
WE CE1CE2OE方式D0~D7×H××未选中(掉电)高阻××L×未选中(掉电)高阻
H L H H输出禁止高阻
H L H L读OUT
L L H H写IN L L H L写IN
2.系统实验单元中的6264线路如图7-1所示
图7-1 6264引脚及实验单元中的6264
(二)存储器扩展实验
按图7-2所示实验线路编写程序,将6264直接挂至总线进行存储器扩展。
图7-2 实验线路
实验程序如下:
STACK SEGMENT STACK
DW 64 DUP()
STACK ENDS
DATA SEGMENT
TABLE DB 0AH DUP()
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA ;程序装入后用U命令查看此语句可
MOV DS,AX ;知数据段地址,以便于用E命令修
MOV CX,000AH ;改变量参数
MOV BX,OFFSET TABLE
MOV SI,0000H
A1: MOV AL,[BX]
PUSH DS
PUSH AX
MOV AX,2000H
MOV DS,AX
POP AX
MOV [SI],AL
POP DS
INC SI
INC BX
LOOP A1
A2: JMP A2
CODE ENDS
END START
实验步骤
(1)按图7-2所示实验线路连接。
(2)输入实验程序并检查无误,经汇编,连接后装入系统。
(3)用U命令查看程序第一、二句找出原数据区段地址XXXX,用E命令在XXXX:0000-XXXX:0009中分别放入10个数。
(4)运行以上程序。
(5)用D命令检查2000:0000-2000:0009单元内容是否与原数据区放入的10个数一致。
实验八中断特性及8259应用编程实验
一、实验目的
1.认识TDN86/51系统的中断特性。
2.掌握8259中断控制器的工作原理。
3.掌握8259可编程中断控制器的应用编程。
4.学习在接口实验单元上构造连接实验电路的方法。
二、实验设备
TDN86/51教学实验系统一台排线、导线若干
三、实验内容及步骤
(一)系统中的8259A芯片
1.系统中的8259A芯片
系统中的8259A芯片工作于单片方式,但可由用户扩展成级连方式。其线路如图8-1所示。图中的圈点表示此为排针形式引出脚。(注:以下线路图中的圈点均为排针形式引出脚以后不再另作说明。)
图8-1 系统中的8259A芯片
系统启动时,8259A被初始化,其初始化是通过系统中的初始化程序设置初始化命令字ICW 来实现的。系统初始化时,规定IRQ0和IRQ4中断源分别提供给实时时钟和与PC微机联机的串口通讯,用户可以使用其余的中断源。在进入监控后,只有IRQ4中断源处于开启状态,其他中断源被屏蔽了。中断矢量地址与中断号之间的关系如下表。
中断序号01234567
功能调用08H09H0AH0BH0CH0DH0EH0FH
矢量地址20H
|
23H
24H
|
27H
28H
|
2BH
2CH
|
2FH
30H
|
33H
34H
|
37H
38H
|
3BH
3CH
|
3FH
说明实时时钟可用可用可用串口1可用可用可用
除系统中的8259A芯片外,在接口实验单元中专门提供了另一片8259A芯片,以便进行8259连接实验。其线路如图8-2所示。
3.接口实验单元中的R-S触发器电路,如图8-3所示。
(二)实验内容
1.8259应用实验(1)
按图8-4所示实验线路编写程序,使每次响应外部中断IRQ7时,显示字符“7”,中断10次后,程序退出。实验程序及流程如下:
图8-2 接口实验单元中的级联用8259A芯片线路
图8-3 R-S触发器电路
图8-4 实验(1)线路
主程序 STACK SEGMENT DW 64 DUP() STACK ENDS CODE SEGMENT ASSUME CS:CODE START: PUSH DS MOV AX,0000H MOV DS,AX MOV AX,OFFSET IRQ7 ADD AX,2000H MOV SI,003CH MOV [SI],AX MOV AX,0000H MOV SI,003EH MOV [SI],AX CLI POP DS
;保存数据段
;数据段清零
;取中断程序入口地址(相对地址) ;加装载时IP=2000H 地址(绝对地址)
;填8259中断7中断矢量
;填偏移量矢量
;段地址CS=0000H
;填段地址矢量
;关中断 ;弹栈 IN AL,21H AND AL,7FH OUT 21H,AL MOV CX,000AH A1: CMP CX,0000H JNZ A2 IN AL,21H OR AL,80H OUT 21H,AL STI HLT A2: STI JMP A1 IRQ7:MOV AX,0137H INT 10H MOV AX,0120H INT 10H
DEC CX
MOV AL,20H
OUT 20H,AL
CLI
IRET CODE ENDS
END START ;读8259中断屏蔽字 ;开8259中断7
; 读8259中断屏蔽字 ;开8259中断7
;中断程序入口
实验步骤
(1) 按图8-4连接实验线路。
(2) 输入实验程序并检查无误,经汇编,连接后装入系统。(设CS:0000H ,IP :2000H )
IRQ7中断服务处理
(3)G=0000:2000↙,运行以上程序。(注意:程序中8259中断矢量地址为绝对地址,已定义为段地址CS=0000H,偏移量地址IP=2000H,故装载时一定按此填入CS和IP 地址,后面实验不再重述。)
(4)重复按KK2微动开关,显示屏上应用“7”来响应,直到按10次后,系统处于停机状态,用CTRL+C返回监控。
2.8259应用实验(2)
图8-5 实验(2)线路
按图8-5所示实验线路,编写程序,完成下面的要求:
当无中断请求时,执行主程序,延时显示“main”,若有中断请求,则执行其中断服务程序,显示该中断号“6”或“7”;若正在执行较低级的中断服务程序,则允许比它优先级高的中断被响应(IRQ6>IRQ7)。主程序在执行过程中,每显示一个“main”,空一格。实验程序如下:
STACK SEGMENT STACK
DW 64 DUP()
STACK ENDS
DATA SEGMENT
TABLE DB 4DH,41H,49H,4EH,20H,00H DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
PUSH DS
MOV AX,0000H
MOV DS,AX
MOV AX,OFFSET IRQ6
ADD AX,2000H
MOV SI,0038H
MOV [SI],AX
MOV AX,0000H
MOV SI,003AH
MOV [SI],AX
MOV AX,OFFSET IRQ7
ADD AX,2000H
MOV SI,003CH
MOV [SI],AX
MOV AX,0000H ;定义堆栈段
;定义数据段
;定义代码段
;主程序开始
;填数据段地址
;保存数据段
;数据段清零
;取中断程序入口地址(相对地址)
;加装载时IP=2000H地址(绝对地址);填8259中断6中断矢量
;填中断6偏移量矢量
;段地址CS=0000H
;填中断6段地址矢量
;取中断程序入口地址(相对地址)
;加装载时IP=2000H地址(绝对地址);填8259中断7中断矢量
;填中断7偏移量矢量
;段地址CS=0000H
MOV SI,003EH
MOV [SI],AX
POP DS
MOV AL,13H
OUT 20H,AL
MOV AL,08H
OUT 21H,AL
MOV AL,09H
OUT 21H,AL
MOV AL,3DH
OUT 21H,AL
STI
A1: MOV CX,0007H
MOV AX,010DH
INT 10H
A2: MOV AH,06H
MOV BX,OFFSET TABLE
INT 10H
CALL DALLY
LOOP A2
JMP A1
IRQ6: STI
CALL DALLY
MOV AX,0136H
INT 10H
MOV AL,20H
OUT 20H,AL
IRET
IRQ7: STI
CALL DALLY
MOV AX,0137H
INT 10H
MOV AL,20H
OUT 20H,AL
IRET
DALLY: PUSH CX
PUSH AX
MOV CX,0040H
A3: MOV AX,056CH
A4: DEC AX
JNE A4
LOOP A3
POP AX
POP CX ;填中断7段地址矢量
;弹栈
;回车换行
;取数据段中ASCII码存放地址;调字符串显示“main”
;调延时子程序
;到7次换行
;8259中断6程序入口
;显示“6”
;显示空格
;中断返回
;8259中断7程序入口
;显示“7”
;显示空格
;中断返回
;延时子程序入口