微机原理实验参考答案(航大)
- 格式:doc
- 大小:76.00 KB
- 文档页数:11
《微机原理》实验参考答案实验1 汇编基本指令及顺序程序设计实验实验2 分支与DOS中断功能调用程序设计实验实验3 循环结构程序设计实验实验4 存储器扩展实验实验5 8259应用编程实验实验1汇编基本指令及顺序程序设计实验一、实验目的1、掌握汇编语言的开发环境和上机过程;2、掌握DEBUG命令;3、掌握顺序程序设计方法;4、掌握寻址方式;5、理解和掌握汇编基本指令的功能。
二、实验内容1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。
要求:用3种方法实现。
答:方法一CODE SEGMENTASSUME CS:CODESTART: MOV AX,3000HMOV BX,5000HMOV CX,AXMOV AX,BXMOV BX,CXCODE ENDSEND START方法二CODE SEGMENTASSUME CS:CODESTART: MOV AX,3000HMOV BX,5000HXCHG AX,BXCODE ENDSEND START方法三CODE SEGMENTASSUME CS:CODESTART: MOV AX,3000HMOV BX,5000HPUSH AXPUSH BXPOP AXPOP BXCODE ENDSEND START2、分别执行以下指令,比较寄存器寻址,寄存器间接寻址和相对寄存器寻址间的区别。
MOV AX,BX 寄存器寻址,将BX内容送AXMOV AX,[BX] 寄存器间接寻址,将DS:BX内存单元内容送AXMOV AX,10[BX] 寄存器相对寻址,将DS:BX+10内存单元内容送AX 在DEBUG调试模式,用A命令直接编辑相应指令并用T命令单步执行,执行后查询相应寄存器的值并用D命令查内存。
3、已知有如下程序段:MOV AX,1234HMOV CL,4在以上程序段的基础上,分别执行以下指令:ROL AX,CL AX=2341HROR AX,CL AX=4123HSHL AX,CL AX=2340HSHR AX,CL AX=0123HSAR AX,CL AX=0123HRCL AX,CL 带进位标志位的循环左移RCR AX,CL 带进位标志的循环右移4、设有以下部分程序段:TABLE DW 10H,20H,30H,40H,50HENTRY DW 3┇LEA BX,TABLEADD BX,ENTRYMOV AX,[BX]┇要求:(1)将以上程序段补充成为一个完整的汇编程序。
微机原理与接口技术实验报告实验环境: Windows XP SP3实验软件:masm, link, debug, edit。
Test 1: debug命令及汇编指令和寻址的应用。
NO.1设堆栈指针SP=2000H, AX=3000H, BX=5000H;请编一程序段将AX和BX的内容进行交换。
要求:用3种方法实现。
方法一CODE SEGMENT ASSUME CS:CODE START: MOV AX,3000HMOV BX,5000H MOV CX,AX MOV AX,BX MOV BX,CX CODE ENDS END START 方法二CODE SEGMENTASSUME CS:CODESTART: MOVAX,3000HMOV BX,5000HXCHG AX,BXCODE ENDSEND START方法三CODE SEGMENTASSUME CS:CODESTART: MOVAX,3000HMOV BX,5000HPUSH AXPUSH BXPOP AXPOP BXCODE ENDSEND STARTNO.2分别执行以下指令, 比较寄存器寻址,寄存器间接寻址和相对寄存器寻址间的区别。
MOV AX,BX 寄存器寻址, 将BX内容送AXMOV AX,[BX] 寄存器间接寻址, 将DS:BX内存单元内容送AXMOV AX,10[BX] 寄存器相对寻址, 将DS:BX+10内存单元内容送AXNO.3已知有如下程序段:MOV AX, 1234HMOV CL, 4在以上程序段的基础上, 分别执行以下指令:ROL AX, CL AX=4123HROR AX, CL AX=3412HSHL AX, CL AX=4120HSHR AX, CL AX=0412HSAR AX, CL AX=0041HRCL AX, CL AX=0410HRCR AX, CL AX=0041HNO.4设有以下部分程序段:TABLE DW 10H,20H,30H,40H,50HENTRY DW 3┇LEA BX,TABLEADD BX,ENTRYMOV AX,[BX]┇要求: (1)将以上程序段补充成为一个完整的汇编程序。
南航微机原理课后练习及答案书后习题解答第一章计算机基础一、选择题1、在计算机机内部,一切信息的存取、处理和传送都是以( D )形式进行的。
A)EBCDIC码B)ASCII码C)十六进制编码D)二进制编码2、下列数据中,可能是八进制数的是( B )。
A)488 B)317 C)597 D)1893、与十进制数56等值的二进制数是( A )。
A)111000 B)111001 C)101111 D)1101104、十进制数36.875转换成二进制数是( B )。
A)110100.01 B)100100.111 C)100110.11 D)100101.1015、二进制数10101转换成十进制数是( C )。
A)25 B)23 C)21 D)226、二进制数1101.01转换成十进制数是( C )。
A)17.256 B)13.5 C)13.25 D)17.57、二进制数111010.11转换成十六进制数是( B )。
A)3ACH B)3A.CH C)3A3H D)3A.3H8、十进制正数43的八位二进制原码( B )。
A)00110101 B)00101011 C)10110101 D)101010119、十进制负数-61的八位二进制原码是( B )。
A)10101111 B)10111101 C)10101011 D)0011010110、十进制正数38的八位二进制补码是( D )。
A)00011001 B)10100110 C)10011001 D)0010011011、十进制负数-38的八位二进制补码是( B )。
A)01011011 B)11011010 C)10011001 D)0010011012、有一个八位二进制数补码是11111101,其相应的十进制数是( A )。
A)-3 B)-2 C)509 D)25313、十进制数-75用二进制数10110101表示,其表示方式是( C )。
A)原码 B)补码 C)反码 D)ASCII码14、数字字符4的ASCII码为十进制数52,数字字符9的ASCII 码为十进制数( A )。
硬件实验2.1 静态存储器扩展实验2.4 8255并行接口实验实验四 8253方波实验实验五(2)8259A中断控制器实验2.3 8254定时/计数器应用实验2.1 静态存储器扩展实验2.1.1 实验目的1. 了解存储器扩展的方法和存储器的读/写。
2. 掌握CPU对16位存储器的访问方法。
2.1.2 实验设备PC机一台,TD-PITE实验装臵一套,示波器一台。
2.1.3 实验内容编写实验程序,将0000H~000FH共16个数写入SRAM的从0000H起始的一段空间中,然后通过系统命令查看该存储空间,检测写入数据是否正确。
2.1.4 实验原理存储器是用来存储信息的部件,是计算机的重要组成部分,静态RAM 是由MOS 管组成的触发器电路,每个触发器可以存放1位信息。
只要不掉电,所储存的信息就不会丢失。
因此,静态RAM 工作稳定,不要外加刷新电路,使用方便。
但一般 图2.1 62256引脚图SRAM 的每一个触发器是由6个晶体管组成,SRAM 芯片的集成度不会太高,目前较常用的有6116(2K ×8位),6264(8K ×8位)和62256(32K ×8位)。
本实验平台上选用的是62256,两片组成32K ×16位的形式,共64K 字节。
62256的外部引脚图如图4.1所示。
本系统采用准32位CPU ,具有16位外部数据总线,即D0、D1、…、D15,地址总线为BHE #(#表示该信号低电平有效)、BLE #、A1、A2、…、A20。
存储器分为奇体和偶体,分别由字节允许线BHE #和BLE #选通。
存储器中,从偶地址开始存放的字称为规则字,从奇地址开始存放的字称为非规则字。
处理器访问规则字只需要一个时钟周期,BHE #和BLE #同时有效,从而同时选通存储器奇体和偶体。
处理器访问非规则字却需要两个时钟周期,第一个时钟周期BHE #有效,访问奇字节;第二个时钟周期BLE #有效,访问偶字节。
完整版微机原理课后习题参考答案.doc2篇微机原理课后习题参考答案(一)微机原理课后习题是帮助学生巩固所学知识,提高学习效果的一种重要方式。
通过解答习题,学生可以检验自己的理解程度和掌握技能,同时也能发现知识的不足之处,以便及时调整学习方法和加强练习。
以下是微机原理课后习题的参考答案,供学生参考:1. 请简述微机的基本组成部分。
答:微机的基本组成部分包括中央处理器(CPU)、内存、输入输出设备和总线。
其中,中央处理器是微机的控制中心,负责数据的处理和指令的执行;内存是用于存储数据和程序的地方,包括随机访问存储器(RAM)和只读存储器(ROM);输入输出设备用于与外部设备进行信息交换,包括键盘、显示器、打印机等;总线是连接中央处理器、内存和输入输出设备的通道,用于数据传输和控制信号传递。
2. 什么是存储器的地址空间?答:存储器的地址空间是计算机可寻址的存储单元的集合。
每个存储单元都有一个唯一的地址,用于在存储器中定位该存储单元。
地址空间的大小决定了计算机可以寻址的最大存储容量。
常见的存储器地址空间包括物理地址空间和逻辑地址空间。
物理地址空间是实际存在的存储单元的集合,由硬件决定;逻辑地址空间是程序员或操作系统所见到的地址空间,它可以比物理地址空间大或小,具体取决于使用的地址转换机制。
3. 简述中央处理器的主要功能。
答:中央处理器的主要功能包括指令的执行和数据的处理。
指令的执行是指根据程序中的指令,按照特定的指令集进行操作,包括数据传输、算术运算、逻辑运算等。
数据的处理是指对输入的数据进行处理,可以进行各种运算和逻辑操作,生成相应的结果。
除了执行指令和处理数据外,中央处理器还负责控制系统的运行,包括控制信号的发出和时序的控制,以确保各个组成部分协调工作。
4. 什么是总线?答:总线是微机中各个组成部分之间进行数据传输和控制信号传递的通道。
它可以看作是计算机内部各个部分之间进行信息交换的公共通道。
总线通常分为数据总线、地址总线和控制总线三种类型。
姓名:王鹏飞学号:111142222指导教师:谈娴茹实验一Debug命令及汇编指令和寻址的应用一、实验目的:1、掌握DEBUG的基本命令及其功能,学会用DEBUG调试程序;2、掌握8086CPU的指令功能,体会寄存器的作用;3、了解数据在内存的存放方式和内存操作数的几种寻址方式;4、了解指令的执行过程。
二、实验内容:1、设堆栈段指针SP=1000H,AX=4000H,BX=8000H;请编写一段程序将AX 和BX的内容进行交换。
要求:用三种不同的方法。
方法一:DATA SEGMENTBUF DB ?DATA ENDSSTACK SEGMENT STACKDB 10 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,4000HMOV BX,8000HMOV CX,AXMOV AX,BXMOV BX,CXCODE ENDSEND START方法二:DATA SEGMENTBUF DB ?DATA ENDSSTACK SEGMENT STACKDB 10 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,4000HMOV BX,8000HXCHG AX,BXCODE ENDSEND START方法三:DATA SEGMENTBUF DB ?DATA ENDSSTACK SEGMENT STACKDB 10 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,4000HMOV BX,8000HPUSH AXPUSH BXPOP AXPOP BXCODE ENDSEND START2、分别执行以下指令,比较寄存器寻址,寄存器间接寻址和相对寄存器寻址间的区别。
微型计算机原理及应用习题集专业班级学号姓名目录第 1 章概述 (1)第 2 章计算机中的数制与编码 (2)第 3 章微处理器及其结构 (4)第 4 章 8086/8088CPU 指令系统 (8)第 5 章汇编语言程序设计 (16)第 6 章存储器系统 (27)第 7 章中断技术 (30)第 8 章输入 /输出接口技术 (36)第 9 章串行通信技术及其接口芯片 (41)模拟试题(一)............................................................................................................................................... 错误!未定义书签。
参考答案................................................................................................................................................................. 错误!未定义书签。
模拟试题(二)............................................................................................................................................... 错误!未定义书签。
参考答案................................................................................................................................................................. 错误!未定义书签。
微型计算机原理与应用实验指导书实验程序报告学院:信息工程学院班级:电子 11-1 班姓名:LXY学号:2011202030实验一编辑、汇编、连接、调试程序的使用程序设计A设计要求(1)将FFFFH 送到AX,SI,DI,BP,DS,ES 寄存器(2)编程(利用DEBUG 调试程序,每执行一次T 命令后,记录相关寄存器内容,并判断是否正确。
)程序如下:CODE SEGMENTASSUME CS:CODESTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AX;==============================MOV AX,0FFFFHMOV SI,AXMOV DI,AXMOV BP,AXMOV DS,AXMOV ES,AX;==============================RETSTART ENDPCODE ENDSEND STTB、设计要求(1)将1,2,3,4,5 分别送到数据段偏移地址为1000H,1001H,1002H,1003H,1004H,单元中。
(2)编程DATA SEGMENTORG 1000HDATA ENDSCODE SEGMENTASSUME CS:CODESTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AX;==============================MOV AL,1MOV DS:[1000H],ALMOV AL,2MOV DS:[1001H],ALMOV AL,3MOV DS:[1002H],ALMOV AL,4MOV DS:[1003H],ALMOV AL,5MOV DS:[1004H],ALRETSTART ENDPCODE ENDSEND STT实验二、加法程序设计设计内容 A、设计要求(1)在数据段偏移地址1000H 处开始,连续存放有3 字节的数据(高位对应高地址,低位对应低地址),1003H 处开始连续存放有两字节的数据(高对高,低对低),求这两数据之和,并将结果放在流量数据之后。
第一章2、完成下列数制之间的转换。
(1) 01011100B=92D(3)135D=10000111B(5)10110010B=262Q=B2H3、组合型 BCD 码和非组合型 BCD 码有什么区别?写出十进制数254 的组合型 BCD数和非组合型数。
答:组合型 BCD码用高四位和低四位分别对应十进制数的个位和十位,其表示范围是0~99;非组合型 BCD码用一个字节的低四位表示十进制数,高四位则任意取值,表示范围为0~9 。
组合型: 254=( 001001010100 )BCD非组合型: 254=(00000010 00000101 00000100 )BCD7、计算机为什么采用补码形式存储数据?当计算机的字长n=16,补码的数据表示范围是多少?答:在补码运算过程中,符号位参加运算,简化了加减法规则,且能使减法运算转化为加法运算,可以简化机器的运算器电路。
+32767~ -32768。
9、设计算机字长n=8,求下列各式的[X+Y]补和 [X-Y]补,并验证计算结果是否正确。
(1) X=18, Y=89 [X+Y]补 =00010010+01011001=01101011B=107D 正确[X-Y]补 =10111001B=00010010+10100111= ( -71D)补正确(2) X=-23, Y=-11 [X+Y]补 =11101001+11110101=11011110B= ( -34D)补正确[X-Y] =11101001+00001011=11110100B= ( -12D)补正确补(3) X=18, Y=-15 [X+Y]补=00010010+11110001=00000011B= ( 3D)补正确[X-Y] =00010010+00001111=00100001B= ( 33D)补正确补(4) X=-18, Y=120 [X+Y]补 =11101110+01111000=01100110B= ( 102D)补正确[X-Y] =11101110+10001000=01110110B= ( 123D)补由于 X-Y=-138 超出了机器数补范围,因此出错了。
《微机原理》实验参考答案实验1 汇编基本指令及顺序程序设计实验实验2 分支与DOS中断功能调用程序设计实验实验3 循环结构程序设计实验实验4 存储器扩展实验实验5 8259应用编程实验实验1汇编基本指令及顺序程序设计实验一、实验目的1、掌握汇编语言的开发环境和上机过程;2、掌握DEBUG命令;3、掌握顺序程序设计方法;4、掌握寻址方式;5、理解和掌握汇编基本指令的功能。
二、实验内容1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。
要求:用3种方法实现。
答:方法一CODE SEGMENTASSUME CS:CODESTART: MOV AX,3000HMOV BX,5000HMOV CX,AXMOV AX,BXMOV BX,CXCODE ENDSEND START方法二CODE SEGMENTASSUME CS:CODESTART: MOV AX,3000HMOV BX,5000HXCHG AX,BXCODE ENDSEND START方法三CODE SEGMENTASSUME CS:CODESTART: MOV AX,3000HMOV BX,5000HPUSH AXPUSH BXPOP AXPOP BXCODE ENDSEND START2、分别执行以下指令,比较寄存器寻址,寄存器间接寻址和相对寄存器寻址间的区别。
MOV AX,BX 寄存器寻址,将BX内容送AXMOV AX,[BX] 寄存器间接寻址,将DS:BX内存单元内容送AXMOV AX,10[BX] 寄存器相对寻址,将DS:BX+10内存单元内容送AX 在DEBUG调试模式,用A命令直接编辑相应指令并用T命令单步执行,执行后查询相应寄存器的值并用D命令查内存。
3、已知有如下程序段:MOV AX,1234HMOV CL,4在以上程序段的基础上,分别执行以下指令:ROL AX,CL AX=2341HROR AX,CL AX=4123HSHL AX,CL AX=2340HSHR AX,CL AX=0123HSAR AX,CL AX=0123HRCL AX,CL 带进位标志位的循环左移RCR AX,CL 带进位标志的循环右移4、设有以下部分程序段:TABLE DW 10H,20H,30H,40H,50HENTRY DW 3┇LEA BX,TABLEADD BX,ENTRYMOV AX,[BX]┇要求:(1)将以上程序段补充成为一个完整的汇编程序。
答:DATA SEGMENTTABLE DW 10H,20H,30H,40H,50HENTRY DW 3DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART: MOV AX,DATAMOV DS,AXLEA BX,TABLEADD BX,ENTRYMOV AX,[BX]MOV AH,4CHINT 21HCODE ENDSEND START(2)AX=3000H实验2 分支与DOS中断功能调用程序设计实验一、实验目的1、掌握条件转移、无条件转移指令的功能及应用;2、掌握分支程序的设计、编写、调试和运行方法。
3、掌握1号、2号和9号功能调用及其程序设计方法。
二、实验内容1、编程求|X-Y|,结果放在RESULT单元中。
X和Y都为16位操作数。
DA TA SEGMENTX DW 1234HY DW 5678HRESULT DW ?DA TA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART: MOV AX,DATAMOV DS,AXMOV AX,XSUB AX,YJAE NEXT;设X,Y是不带符号数,X>=Y转移MOV AX,YSUB AX,XNEXT: MOV RESYLT,AXMOV AH,4CHINT 21HCODE ENDSEND START2、编写一程序,实现从键盘输入一个字符,判断其是不是大写字母,如果是则请输出这个大写字母,如果不是,请输出“这不是一个大写字母”的英文信息(要求:能连续输入)。
DATA SEGMENTMS1 DB ‘IT IS A BIG CAPITAL$’MS2 DB ‘IT IS NOT A BIG CAPITAL$’DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AX,DATAMOV DS,AXNEXT: MOV DX,OFFSET MS2MOV AH,1INT 21H; 1号功能调用CMP AL,0DHJZ EXITCMP AL, ‘A’JB NOCMP AL, ‘Z’JA NOMOV DX,OFFSET MS1NO: MOV AH,9INT 21HIMP NEXTEXIT:MOV AH,4CHINT 21HCODE ENDSEND START3、请编写一程序,实现将大写字母字符串转换成小写字母字符串。
设字符串的首地址为STRING,字符串的长度在N单元内。
DA TA SEGMENTSTRING DB 'I AM A STUDENT!$'N EQU $-STRINGDA TA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV BX,OFFSET STRINGMOV CX,NNEXT: MOV AL,[BX]CMP AL,'A'JB NEXT1CMP AL,'Z'JA NEXT1ADD AL,20HMOV [BX],ALNEXT1:INC BXLOOP NEXTMOV AH,9MOV DX,OFFSET STRINGINT 21HMOV AH,4CHINT 21HCODE ENDSEND START4、编程显示任一寄存器(如BX)的最高位。
即若BX的最高位为1,则在屏幕上输出“1”;若BX的最高位为0,则在屏幕上输出“0”。
CODE SEGMENTASSUME CS:CODESTART: MOV DL,'1'MOV BX,8234HCMP BX,0JS SHOWMOV DL,'0'SHOW: MOV AH,2INT 21HMOV AH,4CHINT 21HCODE ENDSEND START实验3 循环结构程序设计实验一、实验目的1、掌握循环指令LOOP、LOOPZ、LOOPNZ指令的功能及使用方法。
2、掌握循环程序的设计、编写、调试和运行方法。
二、实验内容1、循环结构程序设计编写一个程序,将内存1000H开始的连续100个字节送往2000H开始的连续100个内存单元中。
要求使用三种不同的方法(不用串操作指令、用单一的串操作指令、用带重复前缀的串操作指令),下面已给出一种实现方法,请给出另外两种实现方法的源程序清单:实验程序参考清单:方法一带重复前缀的串操作指令DATA SEGMENTORG 1000HDB 100 DUP(…A‟)ORG 2000HDB 100 DUP(…B‟)DA TA ENDSCODE SEGMENTASSUME DS:DATA,ES:DATA,CS:CODESTART: MOV AX,DA TAMOV DS,AXMOV ES,AXMOV SI,1000HMOV DI,2000HMOV CX,100CLDREP MOVSBMOV AH,4CHINT 21HCODE ENDSEND START方法二不带重复前缀的串操作指令DATA SEGMENTORG 1000HDB 100 DUP(…A‟)ORG 2000HDB 100 DUP(…B‟)DA TA ENDSCODE SEGMENTASSUME DS:DATA,ES:DATA,CS:CODE START: MOV AX,DA TAMOV DS,AXMOV ES,AXMOV SI,1000HMOV DI,2000HMOV CX,100CLDNEXT: MOVSBLOOP NEXTMOV AH,4CHINT 21HCODE ENDSEND START方法三不用串操作指令,而用MOV指令DATA SEGMENTORG 1000HDB 100 DUP(…A‟)ORG 2000HDB 100 DUP(…B‟)DA TA ENDSCODE SEGMENTASSUME DS:DATA,ES:DATA,CS:CODE START: MOV AX,DA TAMOV DS,AXMOV SI,1000HMOV DI,2000HMOV CX,100NEXT: MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP NEXTMOV AH,4CHINT 21HCODE ENDSEND START2、编程计算1+2+3+…+100的和。
答:用AX存放结果CODE SEGMENTASSUME CS:CODESTART: MOV AX,0MOV BX,1MOV CX,100NEXT: ADD AX,BXINC BXLOOP NEXTMOV AH,4CHINT 21HCODE ENDSEND START如果想以十进制输出显示AX中的结果则需要增加显示输出程序(感兴趣同学参考,不要求):DA TA SEGMENTMS DB 5 DUP(?)DB '$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AX,DATAMOV DS,AXMOV AX,0MOV BX,1MOV CX,100NEXT: ADD AX,BXINC BXLOOP NEXTMOV SI,OFFSET MSADD SI,4NEXT1:MOV DX,0MOV BX,10DIV BXADD DL,30HMOV [SI],DLDEC SICMP AX,0JZ EXITJMP NEXT1EXIT: MOV AH,9MOV DX,OFFSET MSINT 21HMOV AH,4CHINT 21HCODE ENDSEND START实验4 存储器扩展实验code segmentassume cs:codeorg 1000hStart: mov bx,8000h ;外部存储器起始地址BXmov cx,2048 ;初始化计数器RamWR: mov [bx],55aah ;将数据写入外部存储器inc bx ;地址+2inc bxloop RamWR ;地址不到8FFF则继续jmp $ ;结束code endsend Start实验5 8259应用编程实验outseg equ 0ffdch ;字形控制口outbit equ 0ffddh ;字位控制口m8259 equ 0ffe0h ;8259控制口c8259 equ 0ffe1h ;8259命令口code segmentassume cs:codeorg 1000hstart: cli ;清中断标志call intsvr ;分配中断向量call init ;8259初始化sti ;置中断标志mov dx,outbit ;选中LED第6位mov al,000001bout dx,alcall show_p ;显示"P."jmp $ ;循环等待;设置中断向量,写N=15的中断向量,中断向量表003CH-003FH单元intsvr: mov ax,0000hmov es,axmov di,003chlea ax,irq7stoswmov ax,0000hstoswret;8259初始化init: mov dx,m8259mov al,13hout dx,al ;边沿触发mov dx,c8259mov al,08hout dx,al ;基地址mov al,09hout dx,al ;写命令字mov al,7fhout dx,al ;设置IMR,只开放IQR7,屏蔽其他ret;显示"0"show_p: mov al,0 ;'0'call disp ;显示ret;查表显示子程序disp: mov dx,outseg ;字形控制口mov bx,offset ledxlat ;查表out dx,al ;送显示ret;IRQ7中断服务程序irq7: cli ;清中断标志,关中断inc al ;加一计数and al,0fh ;只保留低4位,清零高位push ax ;AX进栈保存call disp ;显示mov dx,m8259mov al,20hout dx,al ;写结束字pop ax ;恢复AXsti ;置中断标志,开中断iret ;从中断返回;字形代码表led db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h ; 0 1 2 3 4 5 6 7 db 80h,90h,88h,83h,0c6h,0a1h,86h,8eh ;8 9 A B C D E Fdb 0ch ;'P.'code endsend start。