资源描述:
《微机原理与接口技术实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
实验一熟悉汇编语言环境及建立汇编的过程一、实验目的1.熟悉汇编语言环境。2.掌握汇编语言的上机过程。3.了解汇编语言程序的编程格式。4.学习数据传送和算术运算指令的用法。5.熟悉在PC机上建立汇编链接调试和运行汇编语言程序的过程。二、实验要求1.通过一个小程序的编写达到以上的实验目的。2.并完成两个多位十进制数相加的实验。三、实验原理1.汇编语言程序的上机过程用汇编语言编写的程序称为源程序,源程序也不能由机器直接执行,而必须翻译成机器代码组成的目标程序,这个翻译过程称为汇编。在微型机中,当前绝大多数情况下,汇编过程是通过软件自动完成的,用来把汇编语言编写的程序自动翻译成目标的软件叫汇编程序,汇编过程如下:汇编语言源程序汇编目标程序汇编程序2.汇编、连接过程将两个多位十进制数相加。要求加数和被加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。3.ADC带进位相加指令的功能和指令格式AAA、DAA、AAS、DAS指令的功能和指令格式4.伪指令SEGMENT、ENDS、ASSUME、MACRO、ENDM的使用子程序的定义(PROCNEAR/FARENDP),以及子程序调用和返回指令:CALL、RET的使用5.循环指令LOOP的格式以及退出循环的条件6.中断指令的使用四、实验步骤一、学习汇编过程1.打开编辑环境-57- 2.输入程序CODESEGMENTASSUMECS:CODESTART:MOVAL,01HMOVBL,40HADDAL,BLMOVDL,ALMOVAH,02HINT21HMOVAH,4CHINT21HCODEENDSENDSTART3.保存源程序,以.ASM为扩展名。C:MASM1.ASM4.建立汇编过程(1)用宏汇编程序汇编源程序C:MASM>MASM1.ASM汇编程序有3个输出文件【.obj】文件,【.LST】文件,【.CRF】文件,.OBJ文件是我们所需要的文件。汇编程序还有另外一个重要功能:可以给出源程序中的错误信息。(2)用连接程序将OBJ文件转换为可执行的EXE文件C:MASM>LINK1.OBJ4.执行程序:C:MASM>1.EXE二、完成两个多位十进制数的加法1.程序框图2.实验原理实验参考程序CRLFMACRO;建立回车换行宏MOVDL,0DHMOVAH,02HINT21HMOVDL,0AHMOVAH,02HINT21HENDMDATASEGMENT;数据段DATA1DB33H,39H,31H,37H,34H;第一个数据(作为加数)DATA2DB36H,35H,30H,38H,32H;第二个数据(作为被加数)DATAENDSCODESEGMENT;代码段-57- ASSUMECS:CODE,DS:DATA,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,OFFSETDATA2MOVBX,05CALLDISPL;显示被加数28056CRLFMOVSI,OFFSETDATA1MOVBX,05CALLDISPL;显示加数47193CRLFMOVDI,OFFSETDATA2CALLADDA;加法运算MOVSI,OFFSETDATA1MOVBX,05CALLDISPL;显示结果CRLFMOVAX,4C00HINT21HDISPL PROCNEAR;显示子程序段DS1:MOVAH,02HMOVDL,[SI+BX-1];显示字符串中的一个字符 INT21HDECBX;修改偏移量-57- JNZDS1 RETDISPL ENDPADDA PROCNEARMOVDX,SIMOVBP,DIMOVBX,05AD1:SUBBYTEPTR[SI+BX-1],30H;将ASCII码表示的数字串SUBBYTEPTR[DI+BX-1],30H;转化位十六进制的字符串DECBXJNZAD1MOVSI,DXMOVDI,BPMOVCX,05;包括进位位共5位CLC;清进位位AD2:MOVAL,[SI]MOVBL,[DI]ADCAL,BL;带进位相加AAA;非组合BCD码的加法调整MOV[SI],AL;结果送加数区INCSIINCDI;指向下一位LOOPAD2;循环MOVSI,DXMOVDI,BPMOVBX,05AD3:ADDBYTEPTR[SI+BX-1],30H;十六进制的数字串转化ADDBYTEPTR[DI+BX-1],30H;为ASCII码表示的数字串DECBXJNZAD3RET-57- ADDAENDPCODEENDSENDSTART开始显示被加数和加数被加数和加数以ASCII码表示的数字串形式转化为由十六进制表示的数字串形式计数值5=CX清除最低位进位执行ADC带进位相加AAA调整结果送加数区调整偏移量CX-1=0?十六进制的结果转化为ASCII码表示的数字串显示结果结束3.汇编连接程序生成可执行文件4.执行程序观察结果六、拓展练习编写程序完成两个多位十进制数相减。要求显示结果格式为:被减数减数相减结果-57- 实验二汇编语言程序设计一、实验目的:1.掌握显示提示信息的方法及接收键盘输入信息的方法,完成字符串匹配程序。2.掌握字符和数据的显示方法,完成字符和数据的显示程序。3.了解小写字母和大写字母在计算机内的表示方法,并掌握如何进行转换,完成将键盘输入的小写字母转换成大写字母。二、实验内容:1.编写程序,实现两个字符串的比较。如相同,则显示“MATCH”,否则,显示”NOMATCH”。2.先显示信息“INPUTSTRING,THEENDFLAGIS$”,再接收字符。如为非数字字符即非“0——9”,则计数器加1,并显示字符。如为数字,则直接显示,但不计数。3.接收键盘字符(以^-C为结束),并将其中的小写字母转变为大写字母,然后进行显示。三、实验原理1.DB、DUP、EQU等伪指令的功能以及使用格式;INT21H的09H子功能的功能、工作情况以及使用格式;INT21H的0AH子功能的功能、工作情况以及使用格式;串扫描指令SCASB的功能以及使用格式;入栈、出栈指令PUSH、POP的使用情况。2.程序跳转指令JMP的功能及用法;比较指令CMP、JB、JBE等指令的功能及用法;循环移位指令ROL的用法及功能;逻辑指令AND的功能及用法。3.比较指令JA的功能及用法;减法指令SUB的功能及用法。四、程序框图五、实验参考程序1.CRLFMACROMOVAH,02HMOVDL,0DHINT21HMOVAH,02HMOVDL,0AHINT21HENDMDATASEGMENTMESS1DB'MATCH',0DH,0AH,'$'MESS2DB'NOMATCH',0DH,0AH,'$'MESS3DB'INPUTSTRING1:',0DH,0AH,'$'MESS4DB'INPUTSTRING2:',0DH,0AH,'$'入口段寄存器初始化非数字字符计数器BX清0显示提示信息INT21H的01子功能接收键入字符是“$”字符?是回车键?非0——9?计数器BX加1回车换行调用DISP,显示计数结果返回DOS入口段寄存器及堆栈初始化显示“请输入字符串1“使用INT21H的0AH号子功能,接收键入的字符串显示“请输入字符串2“指针SI指向串1的首字符SI指向的字符和串2中所有字符作比较相等SI加1,指向串1中下一字符串1中的字符已取完显示“NOMATCH”显示“MATCH”返回DOS-57- YNYN入口段寄存器和堆栈初始化BX指向字符行缓冲区首址偏移指针SI清0INT21H的01H号子功能接收键入字符^-C键?是回车键?是小写字母?小写字母的ASCII码值转化为大写字母的ASCII码值存入字符缓冲区[BX+SI]单元SI加1指向下一单元显示转换后的字符行缓冲区内容返回NYNNY-57- MAXLEN1DB81ACTLEN1DB?STRING1DB81DUP(?)MAXLEN2DB81ACTLEN2DB?STRING2DB81DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,DATAMOVES,AX;段寄存器及堆栈初始MOVAH,09HMOVDX,OFFSETMESS3INT21H;示输入提示MOVAH,0AHMOVDX,OFFSETMAXLEN1INT21H;接收键入的字符串1CRLF;回车换行MOVAH,09HMOVDX,OFFSETMESS4INT21H;显示输入提示2MOVAH,0AHMOVDX,OFFSETMAXLEN2INT21H;接收键入的字符串2CRLFCLDMOVSI,OFFSETSTRING1MOVCL,[SI-1]MOVCH,00H;字符串的实际字符数送CXMOVDI,OFFSETSTRING2REPZcmpsb;将串1中的一个字符和串2中的所有字符作比较JNZGGG;比较相等转GGGMOVAH,09HMOVDX,OFFSETMESS1-57- INT21H;显示‘MATCH'JMPPPPGGG:MOVAH,09HMOVDX,OFFSETMESS2INT21H;显示'NOMATCH'PPP:MOVAX,4C00HINT21H;返回DOSCODEENDSENDSTART2.CRLFMACROMOVAH,02HMOVDL,0DHINT21HMOVAH,02HMOVDL,0AHINT21HENDMDATASEGMENTMESS1DB'INPUTSTRING,THEENDFLAGIS$'MESS2DB'NON-DIGITALCHARCOUNT=$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVES,AX;;初始化MOVBX,0000H;;计数值清0MOVAH,09HMOVDX,OFFSETMESS1;;显示提示信息INT21HMOVAH,02HMOVDL,'$'INT21HCRLFXXX:MOVAH,01HINT21H;;接收键入字符CMPAL,'$';JZUUU;;是‘$’字符则转UUUCMPAL,0DH;JNZIIICRLF;;是回车则回车换行JMPVVV;III:CMPAL,30HJBYYY-57- CMPAL,39HJBEVVV;;非‘0’——‘9’转YYYYYY:INCBX;;计数值加1VVV:JMPXXXUUU:CRLFMOVAH,09HMOVDX,OFFSETMESS2INT21H;;显示表头MOVAX,BXCALLDISP;;显示结果MOVAH,02HMOVDL,'H'INT21H;;十六进制数标志MOVAH,4CHINT21HDISPPPROCNEAR;;显示子程序,按十六进制数方式显示AL中的数MOVBL,AL;;AL中数送BLKKK:MOVDL,BLMOVCL,04ROLDL,CLANDDL,0FHCALLDISPL;;显示字节高位MOVDL,BLANDDL,0FHCALLDISPL;;显示字节低位RET;DISPPENDPDISPLPROCNEARADDDL,30H;;将数值转为对应的ASCII码CMPDL,3AHJBDDD;;是‘0’——‘9’转DDDADDDL,27H;;是‘A’——‘F’DDD:MOVAH,02HINT21H;;显示DL中字符RETDISPLENDPDISPPROCNEAR;;显示子程序,按十六进制数方式显示AX中的数PUSHAX;;入栈保存MOVAL,AHCALLDISPP;;显示高字节POPAXCALLDISPP;;显示低字节RET;DISPENDPCODEENDSENDSTART-57- 3.DATASEGMENTBUFDB82DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVES,AX;;段寄存器初始化MOVBX,OFFSETBUF;;BX指向字符行缓冲区首址KKK:MOVSI,00H;;指针SI清0GGG:MOVAH,01H;;接收键入字符INT21HCMPAL,03HJZPPP;;是CTRL-C键则转结束CMPAL,0DHJZBBB;;是回车键则转BBBCMPAL,61HJBTTTCMPAL,7AHJATTT;;不是小写字母转TTTSUBAL,20H;;小写字母转化为大写字母TTT:MOV[BX+SI],AL;;存入字符行缓冲区中INCSI;;指针加1JMPGGGBBB:MOV[BX+SI],ALMOVAL,0AHMOV[BX+SI+1],AL;;加入换行符MOVAL,'$'MOV[BX+SI+2],AL;;再加一个'$'标志字符MOVAH,09HMOVDX,BXINT21H;;显示转换后的字符串JMPKKK;PPP:MOVAH,4CHINT21HCODEENDSENDSTART六、实验步骤1.按实验要求编写程序2.汇编连接程序生成可执行文件3.执行程序观察结果七、拓展练习1.-57- 编写程序,实现两个字符串的比较。如字符长度相同并且对应字符顺序相同,则显示“MATCH”,否则,显示“NOMATCH”。2.编写程序,先显示信息“INPUTSTRING,THEENDFLAGIS$”,再接收字符。如为数字字符即为“0——9”,则计数器加1,并显示数据。如为数字,则直接显示,但不计数。3.编写程序,接收键盘字符(以^-C为结束),并将其中的大写字母转变为小写字母,然后进行显示。-57- 实验三系统认识实验一、实验目的1、熟悉实验设备,了解THWJ-1型微机原理实验箱的性能特点,熟悉实验环境。2、掌握基本电路的电路原理、硬件操作的各功能键的使用方法;熟悉实验的软件系统,能对该实验平台进行熟练的操作。3、了解实验中的连线方法、基本的硬件电路的调试方法。二、实验内容及步骤:1、系统概述1.1系统主要特点仪器运行环境:本仪器在直流5V、±12V电源驱动下单机运行。仪器性能特点:采用主频4.77MHz的8088为CPU,并以最小工作方式构建系统。系统基本内存为一片62256,地址范围00000~07FFFH,其中00000~00FFFH2K字节为监控占用,监控程序和软硬件实验程序存放于一片27512,地址范围F8000~FFFFFH。自带键盘、显示器、单机运行。仪器配有常用I/O接口芯片,如A/D转换芯片0809、D/A转换芯片0832、定时/计数器芯片8253、中断控制芯片8259、串行口芯片8250、8251、并行可编程I/O芯片8255、并行I/O芯片如D触发器和驱动器以及直接存贮芯片8237等。掌握通用电路的工作原理,并完成以下内容:由逻辑开关电平控制LED灯的亮灭,观察开关状态的高低电平变化,LED亮灭分别需要获得何种电平信号。单次脉冲电路控制LED,通过观察LED的亮灭分析两种单次脉冲的高低电平变换情况。掌握试验箱上功能键的使用:监控程序控制仪器以键盘操作方式运行调试实验程序。仪器一经上电后,数码显示器显示监控提示符“P.”。1.2系统资源分配8088有1兆存储空间,系统提供用户使用的空间为00000H-0FFFFH,用于存放、调试实验程序。2系统硬件组成(1)LED发光二极管指示电路:实验台上包括16只发光二极管及相应驱动电路。见图2-6,Ll-L16为相应发光二极管驱动信号输入端,该输入端为低电平“0”时发光二极管亮。(箱式实验机简化为12只发光二极管)-57- 图2-1(2)逻辑电平开关电路:见图2-7。实验台上有8只开关Kl-K8,与之相对应的K1-K8各引线孔为逻辑电平输出端。开关向上拨相应插孔输出高电平“l”,向下拨相应插孔输出低电平“0”。图2-2(3)单脉冲电路:实验台上单脉冲产生电路如图2-8,标有“”和“”的两个引线插孔为正负单脉冲输出端。AN0为单脉冲产生开关,每拨动一次来回产生一个单脉冲。图2-3(4)分频电路:该电路由一片74LS393组成,见图2-9。T0-T7为分频输出插孔。该计数器在加电时由RESET信号清零。当脉冲输入为8.0MHZ时,T0-T7输出脉冲频率依次为4.0MHZ,2.0MHZ,1.0MHZ,500KHZ,250KHZ,125KHZ,62500HZ,31250HZ。-57- 图2-4(5)脉冲发生电路:实验台上提供8MHZ的脉冲源,见图2-10,实验台上标有8MHZ的插孔,即为脉冲的输出端。图2-5(6)485接口电路:图2-6(7)系统通讯接口电路图2-7(8)数码管显示电路-57- 图2-8(9)键盘电路图2-91、键盘监控程序的功能和操作方法3.1键盘显示⑴ 系统配备6位LED显示器,左边4位显示地址,右边2位显示该地址内容。⑵ 系统具有24个注塑键盘,左边l6个是数字键,右边8个是功能键。在键盘监控状态下用户可以通过一组键命令完成下列操作· 读写寄存器内容-57- · 读写存储器内容· EPROM传送· 断点设置/清除· 通过单步、断点、连续等功能来调试运行实验程序。3.2功能键操作说明一缆表3.3 监控程序命令及操作具体的键操作过程监控指示符“P.”状态下,寄存器的初始值如下:SP=0683H,CS=0000H,DS=0000H,SS=0000H,ES=0000H,IP=1000H,FL=0000H。“P.”状态下,监控命令才会有效,此时段地址缺省值为0000H。(1)存贮器单元内容的显示及修改操作:××××MRW●“P.”状态下,输入4位存贮单元地址,按MRW键,则显示2位该单-57- 元内容;●按数键可修改内容;●按NEXT键,地址加1,地址单元内容刷新;●按LAST键,地址减1,地址单元内容刷新;●按MON键,返回“P.”状态。(2)寄存器内容的显示及修改操作:×REG●“P.”状态下,先输入寄存器代号,再按REG键,显示寄存器名及其内容;●按数键可修改寄存器的内容;●按NEXT键,依次显示下一个寄存器名及其内容;●按LAST键,依次显示上一个寄存器名及其内容;●按MON键,返回“P.”状态。代号0123456789ABCD寄存器名AXBXCXDXSPBPSIDICSDSSSESIPFL数据寄存器名AbcdSPBPSIDICSDSSSESIPFL(3)I/O口读操作:××××IOR●“P.”状态下,输入4位口地址,再按IOR键,则显示其状态数据;●按IOR键再次读入该口地址的状态数据;●按NEXT键,口地址加1,状态数据刷新;●按LAST键,口地址减1,状态数据刷新;●按MON键,返回“P.”状态。(4)I/O写操作:××××IOW-57- ●“P.”状态下,先输入4位口地址,再按IOW键,则显示其内容为00,此时输入数据,I/O状态会随写入的内容而变化;●按NEXT键,口地址加1;●按LAST键,口地址减1;●按MON键,返回“P.”状态。(5)数据块移动操作:××××F1××××F2××××MOVE●“P.”状态下,先输入4位源首址,再按F1键,再输入4位源末址,按F2键,再输入4位目标块首地址,按MOVE键,则开始数据传送,传送结束返回监控“P.”状态。(6)单步运行操作:有三种状态都可以执行单步操作(段地址固定为0000H)。●“P.”状态下,按STEP键,从起始地址IP=1000H开始,单步执行一条指令;●存储器读写状态,按STEP键,从当前存贮器地址开始单步执行一条指令;●在输入4位起始地址的状态下,按STEP键则从起始地址开始单步执行一条的指令,然后显示下一条指令的地址及其内容。(7)断点运行操作:××××F2××××EXEC●“P.”状态下,先输入4位断点地址,按F2键,再输入4位起始地址,按EXEC键,程序从起始地址开始运行,显示器显示“┏”执行符,程序停在断点处后显示断点地址和其内容,同时保护所有寄存器的值。当程序不能运行到断点(俗称“跑飞”)。可按STOP键,中止程序运行,从显示器确定程序运行到何处,同时必须用存贮器读写功能键MRW来恢复断-57- 点处的一字节内容。注意EPROM中的实验程序不能以断点方式运行。(8)连续运行操作:有三种状态,可以进入连续运行●“P.”状态下,按EXEC键,从地址CS=0000H,IP=1000H开始连续执行程序;●存储器读写状态下,按EXEC键,从当前存贮器地址开始,连续执行程序(开始时CS=0000H);●先输入4位起始地址,按F1键,再输入4位偏移地址,最后按EXEC键,则从设定的段地址和偏移地址开始程序,当用户返回监控,可用MON键或Reset键。注意Reset键会初始化各寄存器。一、实验电路的硬件调试1)测发光二极管电路紧锁线一端接地,另一端点击L1~L16插座,点击时发光二极管亮。紧锁线一端接Ki(Ki下拨),另一端点击L1~L16插座,现象同上。2)数码显示器与键盘电路开机显示“P.”,按数字键,功能键,观察显示是否正确。3)测拨动开关电路用扁平电缆线连K1~K8与L1~L8,观察开关与发光二极管的关系。4)可调电压可调电压两组,一组是0~5V可调,另一组是-12V~+12V可调,可调电压输出端连直流电压表,观察调压结果。注意:-12V~+12V输出电压,不用时调至0V,以免与TTL信号线不慎相碰。5)12V风扇电路DJ1插座连+12V(开关旁),风扇正常启动。6)单路输出电路Vin插座连地,开关在BELL处、蜂鸣器响;在LED处、发光二极管亮。-57- 7)脉冲发生器电路插座用紧锁线连直流电压表指示0V,按AN键,电压指示3.5V。插座用紧锁线连直流电压表指示3.5V,按AN键,电压指示0V。注意事项及实验要求:注意事项:本实验箱有两个电源信号,±12V电源仅在做D/A实验,直流电机实验时需接入,做其它实验时只需单个+5V电源,千万注意别把TTL电平的信号线误触±12V电源!-57- 实验四、8255并行口实验一、实验目的1.掌握8255与微机的接口方法。2.掌握8255的工作方式和编程方法。3.掌握用8255并行口输出不同数据来控制发光二极管的亮与灭。二、实验原理1、8255芯片简介8255是可编程并行接口芯片,具有ABC三个并行口,有三种工作方式即方式0的基本I/O方式、方式1的选通I/O方式、方式2的双向选通I/O方式。本实验系统中8255的ABC和命令寄存器的端口地址分别是0FF28H、0FF29H、0FF2AH、0FF2BH。2、硬件原理图实验内容1图实验内容2图三、实验内容及步骤1.8255的A口为方式0的输入口,B口为方式0的输出口,开关量用发光二极管指示。(1)8255的A口与开关量K1~K8相连。(2)8255的B口与发光二极管的L1~L8相连。(3)运行程序“P.”状态下,先输入F000后按F1键,再输入90C0按EXEC键,系统显示“┏”-57- ,拨动开关K1~K8,那么L1~L8会跟着亮灭。2.8255控制发光二极管,模拟交通灯运行情况。(1)PB4~PB7对应4只黄灯,PC4~PC7对应4只绿灯,PC0~PC3对应的4红灯。(2)交通灯亮灭规则,假设有个十字路口,东西南北两个方向,南北方向的为1、3路口,东西方向的为2、4路口。从框图可知初始状态4路口红灯全亮,不准通行。之后1、3路口绿灯亮,2、4路口红灯不灭,则1、3路口南北方向通行,延时一段时间后,1、3路口绿灯灭,黄灯闪烁8次,而后红灯亮,同时2、4路口红灯灭,绿灯亮,2、4路口东西方向通行,延时一段时间后,2、4路口绿灯灭,黄灯闪烁8次,而后红灯亮,同时1、3路口红灯灭,绿灯亮,循环上述过程。(3)各发光二极管共阳极接法,8255端口“0”电平发光二极管点亮。(4)程序流程图。(5)硬件连线。黄红绿方向1:PB4~L1PC4~L2PC0~L3方向2:PB5~L5PC5~L6PC1~L7方向3:PB6~L9PC6~L10PC2~L11方向4:PB7~L13PC7~L14PC3~L15(6)运行实验程序“P.”状态下,先输入F000,按F1键后,再输入90E0,按EXEC键,系统显示“┏”,L1-L3,L5-L7,L9-L11,L13-L15,12只发光二极管模拟十字路口交通灯的工作情况。四、注意事项1.注意8255控制字的写法2.做实验之前要测试逻辑开关电路和LED电路,确保本实验中使用的电路部分是完好,否则会影响到实验结果。-57- 实验五、8253定时器/计数器实验一、实验目的1.掌握8253芯片与微机接口原理与方法。2.掌握8253的工作方式和编程方法。二、实验内容1.芯片介绍8253是有三个16位计数器的可编程定时器/计数器,其计数频率为0~2MHz,用+5V单电源供电。8253的功能用途:延时中断、频率发生器、事件计数器、二进制倍频器,实时时钟,数字单稳态,电机控制器。8253的6种工作方式:方式0的计数结束中断;方式1的可编程单个脉冲发生器;方式2的分频器;方式3的对称方波发生器;方式4的软件触发选通信号;方式5的硬件触发选通信号。2.硬件原理图如图。3.硬件连线(1)8253的GATE0接+5V插孔。(2)8253的CLK0接T2插孔,时钟频率2MHz。(3)8253的CS3接EX0。(4)分频电路的T插孔连8MHz插孔。4.编程提示8253通道0(定时器/计数器)工作方式3,产生对称方波。三、实验步骤1.按图连好线路。2.运行实验程序。-57- “P.”状态下,先输入F000按F1键,再输入9180,按EXEC键。3.用示波器观察OUT0插孔的输出方波,或用直流电压表测得OUT0输出电压2.5V。四、注意事项-57- 实验六、8259中断控制器实验一、实验目的1.掌握8259中断控制器与微机的接口方法。2.掌握8259中断控制器的编程。二、实验内容1.硬件线路原理图如图。2.(1)8259芯片介绍8259是专用控制中断优先级而设计的集成电路,可对中断源的优先级排队、识别、及提供中断矢量。单块8259可编程实现8级中断管理,并可选择优先模式及中断请求方式。另外由多片8259级联,可构成多达64级的矢量中断系统。中断序号01234567变量地址20H24H28H2CH30H34H38H3CH23H27H2BH2FH33H37H3BH3FH(2)程序方框图主程序IR3中断服务程序IR7中断服务程序(3).初始化编程:由CPU向8259A送初始化命令字ICW。在8259A开始正常工作前,必须写初始化命令字使-57- 其处于开始状态。操作命令编程:由CPU向8259A送操作命令字OCW,可以在8259A初始化后,根据需要在程序的任何地方写入。 用ICW1设置:是否级联?
请求信号的触发方式
后面是否用ICW4用ICW2设中断类型码是否为级联方式?本片为主片吗?设ICW3各位对应
IR0~IR7的连接状况 设ICW3高5位为0;
低3位为标识码用ICW4吗?用ICW4设:为特殊全嵌套方式?
为缓冲方式?
为自动EOI方式?
为8086/8088系统?ENDNYNNY(4).初始化流程图4.硬件连线及实验结果:(1)8259的CS6插孔连线EX1插孔。(2)8259的INT插孔连线INTR插孔。(3)8259的INTA插孔连线INTA插孔。(4)8259的IR3插孔连线插孔。(5)D0~7数据线用扁平电缆连接数据总线。本实验用3号中断源IR3,与插孔线连,中断方式为边沿触发方式。程序每按一次AN键产生一次中断,满5次中断,显示“8259Good”。如果中断触发信号不符号要求,则自动转到7号中断,显示“Err”,以示出错。例IBMPC/XT系统初始化中,设ICW1=13H,表示系统中8259A为单片方式,上升沿触发,要求设置ICW4。指令为:MOVAL,13HOUT20H,AL-57- IC4SNGL0LTIM1A5A6A70D0D1D2D3D4D5D6D7A0ICW1
的地址1:需要ICW4
0:不设ICW41:8259A单片方式
0:8259A级联方式ICW1的标志位8080/8085用触发方式1:高电平触发
0:上跳沿触发中断类型号基值,即IR0的类型号。其中低3位初始时为0,高5位由用户设定。工作过程中,低3位值由IR0~IR7中响应哪级中断(对应000~111)来确定。在IBMPC/XT系统中,T7~T3=00001,所以对应8个中断的类型号为08H~0FH。端口地址为21H。设置ICW2的指令为:MOVAL,8OUT21H,ALS0S1S2S3S4S5S6S71D0D1D2D3D4D5D6D7A00:表示IRi端上未接8259A从片
1:表示IRi端上接有8259A从片Si=1:8086/8088方式
0:8080/8085方式1:中断自动结束
0:非自动结束1:特殊全嵌套方式
0:完全嵌套方式PMAEOIM/SBUFSFNM0001D0D1D2D3D4D5D6D7A0非缓冲方式0´
缓冲方式/从片10
缓冲方式/主片11ID0ID1ID2000001D0D1D2D3D4D5D6D7A08259A从片格式:从片8259A的识别地址8259A主片格式:000T3T4T5T6T71D0D1D2D3D4D5D6D7A0中断类型的高5位实验七8251串行通信实验-57- 一、实验目的1.了解串行通信的一般原理和8251A的工作原理。2.初步了解RS-232串行接口标准与TTL电路的连接方法。3.掌握8251A编程方法。二、实验内容(1)利用实验机内的8253芯片的分频作为8251的收发时钟频率。(2)利用实验机内小键盘,每按动一次任一数字键,就把该键值通过8251发送给PC机接收,并在PC机屏幕上显示出该键值。三、实验接线图(1)TxCLK和RxCLK是8251的发送时钟和接收时钟,由8253的OUT1提供。(2)8251片选信号CS由GAL2译码器输出,地址为3F8~3FFH。(3)CTS端必须接“0”电平,8251才可对外发送数据。(4)RxRDY和TxRDY是收、发就绪信号,采用中断方式时可作中断申请信号,本系统采用查询方式通信,这两个信号不用。四、编程指南(1)8251状态口地址:03F9H,8251数据口地址:03F8H;(2)8253控制口地址:43H,8253计数器#1口地址:41H;(3)8255控制口地址:0FF23H,字位口:0FF20H,键入口PC:0FF22H,字形口PB:0FF21H;(4)通讯约定:异步方式,字符8位,一个起始位,一个停止位,波特率因子为16,波特率为9600;-57- (5)计算T/RXC,收发时钟fc,fc=16*9600=153.6K;(6)8253分频系数:1843.2K/153.6K=12。五、实验步骤1.准备好2台实验仪器,确定1#机发送,2#机接收。2.2台仪器的TXD、RXD交叉相连,且共地,2#机实行3线通信。3.2#机“P.”状态下,输入F000,F1、9500、EXEC进入等待接收状态,显示“8251-2”。4.1#机“P.”状态下,输入F000、F1、9300、EXEC进入串行发送状态,显示“8251-1”。5.在1#机键盘上按动数字键,2#机显示出对应数字,1#机上,按动0、1、2、3、A、B键则2#机上显示“0123Ab”。当1#机按MON键时,1#机显示“Good”,此时可退出程序运行。实验八8237DMA传送实验-57- 一、实验目的1.掌握DMA方式的工作原理和8237DMA控制器的编程使用方法。2.掌握如何在实验系统环境下,使用DMA的CH0进行数据传送。二、实验内容利用本实验系统提供的8237A-5DMA控制的CH0,实现DMA的内存到内存的读、写传送,采用DMA软件请求,把内存中3000H~4FFFH单元内容传送到5000H~6FFFH单元中。三、编程指南1、8237A引脚图2、8237A的内部寄存器格式⑴8237A控制寄存器格式(2)8237A模式寄存器格式-57- (3)8237A状态寄存器格式(4)请求寄存器和屏蔽寄存器格式(5)多通道屏蔽寄存器格式(6)8237A端口地址-57- 3、8237A的初始化编程⑴命令字写入控制寄存器⑵方式字写入模式寄存器⑶屏蔽字写入屏蔽寄存器⑷写先/后触发器⑸写入基地址和当前地址寄存器以及基字节和当前字节计数器。⑹写入请求寄存器如果采用软件DMA请求,在适当的时候令通道的请求触发器置1。四、实验接线图-57- 五、实验步骤连CS10到FF80H,在系统内存3000H~4FFFH单元中填充10,11,12,13……,运行程序8237·ASM或在实验系统处于P态下,按SCAL键,然后在系统内存3000H~4FFFH单元中填充10,11,12,13……,输入2860,按EXEC键即可,当系统显示“8237——good”表示DMA传送结束,按RST钮,返回P态,用内存读写命令检查5000H~6FFFH单元内容是否和3000H~4FFFH单元内容相一致,验证其正确性。六、实验参考程序;8237.ASM,MOV:RAMFROM3000HTO5000H;BYTE-MOVCODESEGMENTASSUMECS:CODEPCTLEQU0FF23H;控制口PAEQU0FF20H;字位口PBEQU0FF21H;字形口PCEQU0FF22H;键入口CLEARFEQU0FF8CHCH0AEQU0FF80hCH1AEQU0FF82HCH1CEQU0FF83HMODEEQU0FF8BHCMMDEQU0FF88HMASKSEQU0FF8FHREQEQU0FF89HSTATUSEQU0FF88Hrstequ0FF8dh-57- LATCHEQU9000HORG2860H;FORMEPROMFILE(.COM),SETORG=0100HSTART:JMPSTART0BUFDB?,?,?,?,?,?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FHSTART0:MOVSI,3000HMOVDI,5000HMOVCX,1FFFHMOVAL,00MOVDX,LATCHOUTDX,ALNOPNOPmovdx,rstoutdx,alMOVDX,CLEARFOUTDX,ALMOVAL,0FH;MASK_CH_0-3MOVDX,MASKSOUTDX,ALNOPNOPMOVDX,CH0A;L-SADMOVAX,SIOUTDX,ALMOVAL,AHOUTDX,ALNOPNOPMOVDX,CH1A;L-DADMOVAX,DIOUTDX,ALMOVAL,AHOUTDX,ALNOPNOPMOVAX,CX;COUNTMOVDX,CH1COUTDX,ALMOVAL,AHOUTDX,ALMOVAL,48H;P_MODEMOVDX,MODEOUTDX,ALMOVAL,45HOUTDX,AL-57- MOVAL,01H;ON-8237MOVDX,CMMDOUTDX,ALL1:MOVAL,0EH;UNMASK_CH_0MOVDX,MASKSOUTDX,ALMOVAL,04H;START_DMA_TRANSFERMOVDX,REQOUTDX,ALMOVDX,STATUSNOPNOPWAIT1:INAL,DXTESTAL,03HJZWAIT1MOVDX,CH1CINAL,DXMOVAH,ALINAL,DXCMPAX,0FFFFHJNZL1CALLBUF1MOVCX,0080HL2:PUSHCXCALLDISPPOPCXLOOPL2CALLBUF2L3:CALLDISPJMPL3CMP1:MOVDX,CH0ACALLCMP10MOVSI,AXMOVDX,CH1ACALLCMP10MOVDI,AXMOVAX,[SI]CMP[DI],AXRETCMP10:INAL,DXMOVBL,ALINAL,DXMOVAH,ALMOVAL,BLDECAXRETERR:CALLBUF3ERR0:CALLDISP-57- JMPERR0DISP:MOVAL,0FFH;00HMOVDX,PAOUTDX,ALMOVCL,0DFH;20H;显示子程序,5msMOVBX,OFFSETBUFDIS1:MOVAL,[BX]MOVAH,00HPUSHBXMOVBX,OFFSETDATA1ADDBX,AXMOVAL,[BX]POPBXMOVDX,PBOUTDX,ALMOVAL,CLMOVDX,PAOUTDX,ALPUSHCXDIS2:MOVCX,00A0HDELAY:LOOPDELAYPOPCXCMPCL,0FEHJZLX1INCBXRORCL,1JMPDIS1LX1:MOVAL,0FFHMOVDX,PBOUTDX,ALRETBUF1:MOVBUF,08HMOVBUF+1,02HMOVBUF+2,03HMOVBUF+3,07HMOVBUF+4,17HMOVBUF+5,17HRETBUF2:MOVBUF,09HMOVBUF+1,00HMOVBUF+2,00HMOVBUF+3,0DHMOVBUF+4,10HMOVBUF+5,10HRETBUF3:MOVBUF,08HMOVBUF+1,02HMOVBUF+2,03H-57- MOVBUF+3,07HMOVBUF+4,18HMOVBUF+5,18HRETCODEENDSENDSTART八、学生编程、连线完成实验-57- 实验九D/A转换实验一、实验目的了解数/模转换的基本原理,掌握DAC0832芯片的使用方法。二、实验内容利用0832通过D/A转换交替产生方波和锯齿波。三、实验接线图图12-1四、编程指南⑴ 首先须由CS片选信号确定量DAC寄存器的端口地址,然后锁存一个数据通过0832输出,典型程序如下:MOVDX,DAPORT;0832口地址MOVAL,DATA;输出数据到0832OUTDX,AL⑵ 产生波形信号的周期由延时常数确定。五、实验程序框图-57- 六、实验步骤脱机步骤:⒈0832片选信号CS5插孔和译码输出FF80H插孔相连。⒉连JX2→JX0。⒊运行实验程序在系统显示监控提示符“P.”时,按SCAL键,待系统返P后,输入10D0,再按EXEC键,在系统上显示执行符“┌”。⒋用示波器测量0832左侧AOUT插孔,应有方波和锯齿波交替输出。联机步骤:1.将通讯线的一端插入系统通讯口,另一端插入PC机的COM口,打开实验箱。双击桌面上‘DJ-8086k’快捷图标,即可运行DJ-8086k软件,屏幕显示DJ-8086k软件的工作窗口。2.0832片选信号CS5插孔和译码输出FF80H插孔相连。3.连JX2→JX0。4.打开H0832-1.ASM程序,装载程序,连续执行程序。-57- 七、实验参考程序CODESEGMENT;H0832-1.ASMASSUMECS:CODEDAPORTEQU0FF80hORG10D0hSTART:MOVAL,0FFHMOVCX,0800HDACON1:MOVDX,DAPORTOUTDX,ALPUSHCXMOVCX,0400HLOOP$POPCXNOTALLOOPDACON1MOVDX,DAPORTMOVAL,00HMOVCX,0008HMOVBX,0FFFFHDACON2:OUTDX,ALINCALDECBXCMPBX,0000HJNZDACON2LOOPDACON2JMPSTARTCODEENDSENDSTART八、学生编程、连线完成实验-57- 实验十A/D转换实验一、实验目的了解模/数转换基本原理,掌握ADC0809的使用方法。二、实验内容利用实验系统上电位器提供的可调电压作为0809模拟信号的输入,编制程序,将模拟量转换为数字量,通过数码管显示出来。三、实验接线图图13-1四、编程指南⑴ADC0809的START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号,实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换,其输入控制信号为CS和WR,故启动A/D转换只须如下两条指令:MOVDX,ADPORT ; ADC0809端口地址OUTDX,AL ;发CS和WR信号并送通道地址⑵用延时方式等待A/D转换结果,使用下述指令读取A/D转换结果。MOVDX,ADPORT; ADC0809端口地址IN AL,DX-57- ⑶循环不断采样A/D转换的结果,边采样边显示A/D转换后的数字量。五、实验程序框图六、实验步骤脱机步骤1.将0809CS4插孔连到译码输出FF80H插孔、连JX6→JX17。2.将通道0模拟量输入端IN0连电位器W1的中心插头AOUT1(0-5V)插孔,8MHZ→T。3.运行实验程序:8086K系统显示监控提示符“P.”时,用户段地址固定为0000(省略输入),按SCAL键,输入起始偏移地址1000,按EXEC键,在系统上显示“0809XX”。“XX”表示输入模拟量转换后的数字量。4.调节电位器Wl,显示器上会不断显示新的转换结果。模拟量和数字量对应关系的典型值为:0V→00H+2.5V→80H+5V→FFH5.按RST键退出。联机步骤:1.将通讯线的一端插入系统通讯口,另一端插入PC机的COM口,打开实验箱。双击桌面上‘DJ-8086k’快捷图标,即可运行DJ-8086k软件,屏幕显示DJ-8086k软件的工作窗口。2.将0809CS4插孔连到译码输出FF80H插孔、连JX6→JX17。3.将通道0模拟量输入端IN0连电位器W1的中心插头AOUT1(0-5V)插孔,8MHZ→T。4.打开程序H0809.ASM,装载程序,连续执行。5.调节电位器Wl,显示器上会不断显示新的转换结果。-57- 模拟量和数字量对应关系的典型值为:0V→00H+2.5V→80H+5V→FFH七、实验参考程序CODESEGMENT;H0809.ASMASSUMECS:CODEADPORTEQU0FF80hPAEQU0FF20H;字位口PBEQU0FF21H;字形口PCEQU0FF22H;键入口ORG1000HSTART:JMPSTART0BUFDB?,?,?,?,?,?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FHSTART0:CALLBUF1ADCON:MOVAX,00MOVDX,ADPORTOUTDX,ALMOVCX,0500H;DELAY:LOOPDELAYMOVDX,ADPORTINAL,DXCALLCONVERSCALLDISPJMPADCONCONVERS:MOVAH,ALANDAL,0FHMOVBX,OFFSETBUFMOV[BX+5],ALMOVAL,AHANDAL,0F0HMOVCL,04HSHRAL,CLMOV[BX+4],ALRETDISP:MOVAL,0FFH;00HMOVDX,PAOUTDX,ALMOVCL,0DFH;20H;显示子程序,5msMOVBX,OFFSETBUFDIS1:MOVAL,[BX]MOVAH,00HPUSHBXMOVBX,OFFSETDATA1-57- ADDBX,AXMOVAL,[BX]POPBXMOVDX,PBOUTDX,ALMOVAL,CLMOVDX,PAOUTDX,ALPUSHCXDIS2:MOVCX,00A0HLOOP$POPCXCMPCL,0FEHJZLX1INCBXRORCL,1JMPDIS1LX1:MOVAL,0FFHMOVDX,PBOUTDX,ALRETBUF1:MOVBUF,00HMOVBUF+1,08HMOVBUF+2,00HMOVBUF+3,09HMOVBUF+4,00HMOVBUF+5,00HRETCODEENDSENDSTART八、学生自己编程完成实验实验十一温度控制实验-57- 一、实验目的1、了解集成温度传感器AD590的工作原理和应用,熟悉小信号放大器的工作原理和零点、增益的调整方法。2、了解微机对温度采样控制的基本方法。二、实验内容设定单点温度控制点为30ºC,当小于30ºC时,L1指示灯亮,模拟电热器加热,当大于30ºC时L1灭,L2亮,模拟关掉电热器。三、实验接线图四、编程指南AD590是电流输出型温度传感器,工作电压4~30V,检测温度范围-55ºC~+150ºC,它有非常好的线性,灵敏度为1μA/K。AD590传感器输出信号通过10K电阻取出的电压信号,经零点调整,小信号放大后,输出的电压信号VT,供ADC0809采样用。AD590温度与有关参数一览表-57- 五、实验程序框图六、实验步骤脱机步骤:1.备一温度计,根据室温调整AD590的输出电压,假如室温为25ºC,则调整VR1使LM324(下)14脚输出为2.982V,再调VR2,使LM324(下)8脚输出为-0.25V,再调VR3,使VT为1.25。2.连JX6→JX17,CS4→F880H,IN0→VT,PA0→L1,PA1→L2,8MHZ→T。3.在P态下,按SCAL键,输入2C20,接EX/FV键,显示“AD59XX”,“XX”为当前温度对应的十六进制值(对应关系见上表)。4.用手温摸测AD590的外壳,观察L1、L2灯的亮灭情况。联机步骤:1.将通讯线的一端插入系统通讯口,另一端插入PC机的COM口,打开实验箱。双击桌面上‘DJ-8086k’快捷图标,即可运行DJ-8086k软件,屏幕显示DJ-8086k软件的工作窗口。-57- 2.备一温度计,根据室温调整AD590的输出电压,假如室温为25ºC,则调整VR1使LM324(下)14脚输出为2.982V,再调VR2,使LM324(下)8脚输出为-0.25V,再调VR3,使VT为1.25。3.连JX6→JX17,CS4→F880H,IN0→VT,PA0→L1,PA1→L2,8MHZ→T。4.打开程序T.ASM,装载程序,连续执行。5.用手温摸测AD590的外壳,观察L1、L2灯的亮灭情况。七、实验参考程序CODESEGMENT;T.ASMASSUMECS:CODEADPORTEQU0ff80hPAEQU0FF20H;字位口PBEQU0FF21H;字形口PCEQU0FF22H;键入口P2CTLEQU0FF2BHP2AEQU0FF28HP2BEQU0FF29HP2CEQU0FF2AHORG2C20HSTART:JMPSTART0BUFDB?,?,?,?,?,?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FHSTART0:CALLBUF1MOVDX,P2CTLMOVAL,80HOUTDX,ALADCON:MOVAX,00MOVDX,ADPORTOUTDX,ALMOVCX,0500HDELAY:LOOPDELAYMOVDX,ADPORTINAL,DXPUSHAXcmpal,4dhjncct1MOVAL,0FEHCON:MOVDX,P2A;pa0-->l1OUTDX,ALPOPAXCALLCONVERS-57- CALLDISPJMPADCONCT1:MOVAL,0FDH;pa1-->l2JMPCONCONVERS:MOVAH,ALANDAL,0FHMOVBX,OFFSETBUFMOV[BX+5],ALMOVAL,AHANDAL,0F0HMOVCL,04HSHRAL,CLMOV[BX+4],ALRETDISP:MOVAL,0FFH;00HMOVDX,PAOUTDX,ALMOVCL,0DFH;20H;显示子程序,5msMOVBX,OFFSETBUFDIS1:MOVAL,[BX]MOVAH,00HPUSHBXMOVBX,OFFSETDATA1ADDBX,AXMOVAL,[BX]POPBXMOVDX,PBOUTDX,ALMOVAL,CLMOVDX,PAOUTDX,ALPUSHCXDIS2:MOVCX,00A0HLOOP$POPCXCMPCL,0FEH;01HJZLX1INCBXRORCL,1;SHRCL,1JMPDIS1LX1:MOVAL,0FFHMOVDX,PBOUTDX,ALRETBUF1:MOVBUF,0AHMOVBUF+1,0DHMOVBUF+2,05HMOVBUF+3,09H-57- MOVBUF+4,00HMOVBUF+5,00HRETCODEENDSENDSTART八、学生编程、连线完成实验-57- 实验十二 设计一个键盘控制发音系统一、实验目的l、进一步掌握定时器编程和应用。2、了解微机利用定时器产生音乐的基本方法。3、掌握8255A的编程和应用。4、了解放大器的工作原理5、了解计数器74LS393的工作原理6、熟悉微机系统的硬件设计方法二、实验内容利用实验仪键盘,使数字键1、2、3、4、5、6、7作为电子琴键,按下数字键发出相应的音调,PB0作为定时器门控信号,OUT1发出音频信号,驱动喇叭。三、实验接线图图15-1四、编程指南1、根据音阶频率表,利用定时器可以产生相应频率的脉冲信号,不同频率的脉冲信号经驱动电路放大后,就会发生不同的音调。2、对于每个按键的音调发音时间由软件延时控制,如键一直按下,就会连续发音各音阶标称频率值:-57- 五、实验程序框图六、实验步骤⑴8253的CLK1接分频输出端T2。⑵GATE1接PB0。⑶OUT1接VIN。⑷8MHZ→T。⑸JP向下短接。⑹在P.态,按SCAL键,输入18F0,按EXEC键,显P.,按1、2……7键,依次发出1、2……7音调声。七、实验参考程序CODESEGMENT;DZQ.ASMASSUMECS:CODE,DS:CODECONTROLEQU43H-57- COUNT0EQU40HCOUNT1EQU41HCOUNT2EQU42HIOCONPTEQU0FF2BHIOBPTEQU0FF29HIOAPTEQU0FF28HPAEQU0FF20H;字位口PBEQU0FF21H;字形口PCEQU0FF22H;键入口ORG18F0HSTART:JMPSTART0BUFDB?,?,?,?,?,?KZDB?LTIMEDB?LKEYDB?ZPDW?DATA1:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1HDB86H,8EH,0FFH,0CH,89H,0DEH,0C7H,8CH,0F3H,0BFH,8FH,0F1HDATA3:DW2273,2024,1805,1704DW1517,1353,1205,1136START0:MOVAX,CSMOVDS,AXCALLBUF1MOVAL,88HMOVDX,IOCONPTOUTDX,ALMOVDX,IOBPTMOVAL,00OUTDX,ALMOVZP,OFFSETBUFREDIKEY:CALLDISPKEYCMPKZ,09HJNCREDIKEYCMPKZ,01HJCREDIKEYMOVBX,ZPMOVAL,KZMOV[BX],ALCMPBX,OFFSETBUF+5JZZP1INCBXMOVZP,BXJMPOUTTONEZP1:MOVZP,OFFSETBUFOUTTONE:MOVDX,IOBPTMOVAL,0FFHOUTDX,AL-57- MOVAL,KZMOVAH,00HDECAXSHLAX,1MOVBX,OFFSETDATA3ADDBX,AXMOVAX,[BX]CALLT8253MOVCX,20HCON1:PUSHCXCALLDISPPOPCXLOOPCON1MOVDX,IOBPTMOVAL,00OUTDX,ALJMPREDIKEYT8253:PUSHAXMOVAL,76H;计数器1,16位二进制,方式3。MOVDX,CONTROLOUTDX,ALPOPAXMOVDX,COUNT1OUTDX,ALMOVAL,AHOUTDX,ALRETDISPKEY:CALLDISPCALLKEYMOVAH,AL;NEWKEYMOVBL,LTIME;LTIMEMOVBH,LKEY;LKEYMOVAL,01HMOVDX,PA;0FF21HOUTDX,ALCMPAH,BHMOVBH,AH;BH=NEWKEYMOVAH,BL;AL=TIMEJZDISK4MOVBL,88HMOVAH,88HDISK4:DECAHCMPAH,82HJZDISK6CMPAH,0EHJZDISK6CMPAH,00HJZDISK5-57- MOVAH,20HDECBLJMPDISK7DISK5:MOVAH,0FHDISK6:MOVBL,AHMOVAH,BHDISK7:MOVLTIME,BLMOVLKEY,BHMOVKZ,BHMOVAL,AHRETKEY:MOVAL,0FFHMOVDX,PBOUTDX,ALMOVBL,00HMOVAH,0FEHMOVCX,08HKEY1:MOVAL,AHMOVDX,PAOUTDX,ALROLAL,01HMOVAH,ALNOPNOPNOPNOPNOPNOPMOVDX,PCINAL,DXNOTALNOPNOPANDAL,0FHJNZKEY2INCBLLOOPKEY1JMPNKEYKEY2:TESTAL,01HJEKEY3MOVAL,00HJMPKEY6KEY3:TESTAL,02HJEKEY4MOVAL,08HJMPKEY6KEY4:TESTAL,04HJEKEY5-57- MOVAL,10HJMPKEY6KEY5:TESTAL,08HJENKEYMOVAL,18HKEY6:ADDAL,BLCMPAL,10HJNCFKEYMOVBL,ALMOVBH,0HMOVSI,OFFSETDATA2MOVAL,[BX+SI]RETNKEY:MOVAL,20HFKEY:RETDATA2:DB07H,04H,08H,05H,09H,06H,0AH,0BHDB01H,00H,02H,0FH,03H,0EH,0CH,0DHDISP:MOVAL,0FFH;00HMOVDX,PAOUTDX,ALMOVCL,0DFH;20H;显示子程序,5MSMOVBX,OFFSETBUFDIS1:MOVAL,[BX]MOVAH,00HPUSHBXMOVBX,OFFSETDATA1ADDBX,AXMOVAL,[BX]POPBXMOVDX,PBOUTDX,ALMOVAL,CLMOVDX,PAOUTDX,ALPUSHCXDIS2:MOVCX,0A0HLOOP$POPCXCMPCL,0FEHJZLX1INCBXRORCL,1JMPDIS1LX1:MOVAL,0FFHMOVDX,PBOUTDX,ALRETBUF1:MOVBUF,11H-57- MOVBUF+1,10HMOVBUF+2,10HMOVBUF+3,10HMOVBUF+4,10HMOVBUF+5,10HRETCODEENDSENDSTART八、学生编程、连线完成实验-57-