微机实验源程序_第1页
微机实验源程序_第2页
微机实验源程序_第3页
微机实验源程序_第4页
微机实验源程序_第5页
已阅读5页,还剩101页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录TOC\o"1-2"\h\z\u第一章TD-PIT++实验系统的硬件环境 1一.概述 1二.系统总线单元电路 3第二章32位微机原理软件实验 15实验一四那么运算 15实验二均值滤波 18实验三代码转换 22实验四字符串冒泡排序 26实验五描述符和描述符表实验 29实验六局部描述符表实验 33第三章32位微机接口硬件实验 36实验一地址译码电路与I/O接口 36实验二8254定时/计数器 41实验三8259中断控制器 47实验四8255并口控制器 56实验五A/D与D/A转换实验 65第四章32位微机接口课程设计 72课程设计一数据采集系统一 72课程设计二数据采集系统二〔查询法〕 76课程设计三数据采集系统三〔中断法〕 80课程设计四信号发生器 85课程设计五交通灯实时控制系统设计 93课程设计六步进电机控制系统设计 99附录1常用DOS系统功能(INT21H) 105第一章TD-PIT++实验系统的硬件环境一.概述TD-PIT++实验系统硬件主要由PCI总线扩展卡和TD-PIT++实验平台构成,其硬件系统的连接接如图1-1a所示。USB总线USB总线PCI总线内存总线总线AGP总线CPU北桥芯片显卡显示器内存PCI槽PCI槽南桥芯片IED接口硬盘键盘鼠标FlashBIOSUSB设备PCI卡微机实验箱...图1-1a硬件系统的连接PCI总线扩展卡包括PCI总线接口电路和系统配置电路以及扩展总线插座。主要实现PCI总线接口以及将32位高速总线从PC机引出。PCI总线扩展卡结构如图1-1所示。图1-1PCI总线扩展卡结构TD-PIT++实验平台上的电路结构主要分两局部:系统总线单元电路和实验单元电路。是32位微机接口实验的主要操作平台。实验平台结构如图1-2所示。图1-2实验平台结构二.系统总线单元电路准系统总线单元实现了面向80x86微机系统的32位系统总线,符合80x86总线时序标的接口电路均可以直接连接到该总线上。总线信号说明如表1-1所示。表1-1总线信号实验系统向PC机申请了接口实验所需的配置资源。其中包括16MB的存储地址空间、255字节的I/O地址空间和一个中断请求线。中断请求线是映射到PC机内15个中断线中的一个。系统总线单元将地址空间进行了译码,各提供4个片选信号,片选信号同偏移地址空间对应关系如表1-2所示。表1-2片选信号同偏移地址空间对应关系用PC机分配的I/O或存储器空间始地址加上这个偏移地址,就是实验系统中端口占用的实际地址,I/O和或存储器地址电原理如图1-2A所示。PC机分配的起始地址可以在Tdpit软件中查看或由实验系统附带的配置资源检查程序CHECK.EXE获得。图1-2A1.地址译码单元该单元提供一片开放的译码器74LS138,用于学习地址译码方法。其线路连接如图1-3所示。图1-3地址译码单元2.32位I/O接口单元该单元通过4片三态缓冲器和4片锁存器组成32位的I/O接口,并根据32位总线时序设计了译码电路,可以8/16/32位不同字节宽度来访问该接口。用于学习8位和32位I/O接口设计及编程。其线路连接如图1-4所示。图1-432位I/O接口单元3.32位存储器单元该单元提供32位存储器及其连接电路,并针对32位系统总线提供了存储器译码电路,可以任意完成8位、16位及32位不同字节宽度的存储器操作。其线路连接如图1-5所示。图1-532位存储器单元4.FLASHROM单元该单元提供一片开放的FLASH存储器,用于学习FLASH存储器的编程操作方法。其线路连接如图1-6所示。图1-6FLASHROM单元5.8259单元该单元提供中断控制器8259的连接电路,用于学习中断控制器的操作方法。其线路连接如图1-7所示。图1-78259单元6.8237单元该单元提供DMA控制器8237的连接电路,用于学习DMA传送应用编程方法。其线路连接如图1-8所示。图1-88237单元7.8255单元该单元提供一片开放的并口控制器8255,用于学习并行接口8255的编程方法。其线路连接如图1-9所示。图1-98255单元8.8251单元该单元提供串行控制器8251的连接电路,用于学习串行通讯编程方法。其线路连接如图1-10所示。图1-1016550单元9.串行接口单元该单元提供用来将串行通讯信号引出到实验箱体后侧的接口插座,包含USB和RS232接口。使用USB接口插座时将VDD、D-、D+和GND四个信号连接到标有USB的插座上。使用RS232串口时将TXD、RXD信号连接到标有RS-232的插座上。其电路结构如图1-11所示。图1-1116550单元10.8254单元该单元提供一片开放的定时/计数器8254,用于学习定时/计数器的应用编程方法。其线路连接如图1-12所示。图1-128254单元11.A/D转换单元该单元提供模/数转换器ADC0809的连接电路,用于学习A/D转换原理及编程操作方法。其线路连如图1-13所示。图1-1312.D/A转换单元该单元提供数/模转换器DAC0832的连接电路,用于学习D/A转换原理及编程操作方法。其线路连接1-14所示。图1-14D/A转换单元13.电子发声单元该单元提供一个微型扬声器,控制和驱动电路已经连接好。在控制输入端输入一定频率的波形信号即可发声。其线路连接电路如图1-15所示。图1-15电子发声单元14.键盘及数码管显示单元该单元提供4×4的小键盘矩阵及6位七段数码管,电路连接为扫描电路形式。其线路连接如图1-16所示。图1-16键盘及数码管显示单元15.点阵LED显示单元该单元使用4片8×8的点阵LED构成了一个16×16点阵显示模块,点阵LED的行列控制已经连接好。行控制为R0~R15,列控制为L0~L15。其线路连接如图1-17所示。图1-17点阵LED显示单元16.驱动电路和直流电机单元这两个单元由ULN2803驱动芯片、一台DC12V直流电机及霍尔测速电路构成,N为一组反相驱动信号输入端。其线路连接如图1-18所示。图1-18驱动电路和直流电机单元17.温度控制单元该单元由7805芯片产生+5V的稳定电压和一个24欧的电阻构成回路。其线路图连接如图1-19所示。图1-19温度控制单元18.步进电机单元该单元提供一个四项八拍的步进电机,如图1-20所示。图1-20步进电机单元19.开关及LED显示单元该单元包括十六组拨动开关及LED显示灯,用于输出和指示逻辑电平(正逻辑)。当显示灯亮时表示逻辑高电平,灭时表示逻辑低电平。其电路连接如图1-21所示。图1-21开关及LED显示单元20.时钟源单元该单元提供一个1.8432MHz的晶振电路,主要作为16550时钟输入。另外还有两个十分频电路,将1.8432MHz分频得到184.32KHz和18.432KHz,如图1-22所示。图1-22时钟源单元21.PWM转换电路该单元提供了一个PWM脉冲产生电路,在IN端输入0~5V电压,OUT输出脉冲的占空比会跟随产生相应的变化。其线路如图1-23所示。图1-23PWM转换电路22.扩展单元该单元由假设干组排针、单股导线插座和电源引出插座组成,用于将排针形式的电路引脚和单股导线形式的引脚相互转换。从而为各实验单元的相互配合使用提供方便。另外,还提供了一块面包板,用户可以自己在上面搭接电路,通过小圆孔和排针与实验平台上的单元连接,扩展灵活。23.LCD显示单元〔选件〕在实验平台上的LED显示单元区域可以插接扩展板。其中一个可选的扩展板就是LCD显示单元。该单元采用型号为MSC-G12864-5W,一种128×64的图形点阵液晶,LCD类型为STN,内置控制器,配置有LED背光。板上微调电位器可以调节液晶的比照度。其连接电路如图1-24所示。图1-24LCD显示单元第二章32位微机原理软件实验实验一四那么运算一.实验目的熟悉汇编语言上机操作过程。熟悉Tddebug调试环境和TurboDebugger的使用。3.熟悉汇编语言程序的框架结构,掌握顺序结构的编程方法。二.实验内容无符号数的32位加法,32位减法,16位乘以16位,32位除以16位除法的四那么运算练习。实验源程序DATA SEGMENTA DW1234H,5678H ;被加数B DW0FEDCH,123AH ;加数C DW2DUP(?) ;预留和AD DW0FEDCH,0BA98H ;被减数BD DW1234H,789AH ;减数CD DW2DUP(?) ;预留差A1 DW0D678H ;被乘数B1 DW0012H ;乘数C1 DW2DUP(?) ;预留积A2 DW5678H,0234H ;被除数B2 DW0F234H ;除数C2 DW2DUP(?) ;预留商,余数DATA ENDSSTACK1 SEGMENT STACKDB100DUP(?)STACK1 ENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1STARTPROC FAR PUSH DSMOV AX,0;标准序PUSH AXMOV AX,DATAMOV DS,AXMOV AX,A ADD AX,BMOV C,AXMOV AX,A+2;32位加32位ADC AX,B+2MOV C+2,AXMOV AX,AD SUB AX,BDMOV CD,AX;32位减32位MOV AX,AD+2SBB AX,BD+2MOV CD+2,AXMOV AX,A1 MUL B1;16位乘16位MOV C1,AXMOV C1+2,DXMOV AX,A2 MOV DX,A2+2DIV B2;32位除16位MOV C2,AXMOV C2+2,DXRETSTARTENDPCODEENDSENDSTART实验歩骤1翻开实验箱电源开关,实验箱电源指示灯亮。2输入源程序:单击文件\新建,在光标处输入源程序,输完源程序后,单击工具栏或文件\另存为,选择存放路径,输入文件名.ASM。3编译程序:单击工具栏,链接程序,在屏幕下方的信息栏窗口显示编译信息,假设有语法错误,逐一双击该行,系统将自动定位错误行,並有红色的箭头指向错误行,逐一修改后存盘,再编译,直到错误为零。4连接程序:单击工具栏,在屏幕下方的信息栏窗口显示连接信息。5调试程序:单击工具栏,单击View\Cpu,在代码显示区单击右键\点击MixedBoth,为MixedNo,按F7单歩执行,当执行完MOVDS,AX后,单击View\Cpu,使屏幕下方的数据显示区为DS的内容:(1)单歩执行:按F7,,观察调试过程中,指令执行后各存放器及数据区的内容变化。(2)执行到光标处:将光标移到所需处並单击,使之成为兰底白字的光带,按F4,观察执行最后一条指令执行后存放器及数据区的内容。(3)连续执行:按F9,观察最后一条指令执行后存放器及数据区的内容。实验报告内容1.实验目的和实验内容。2.记录数据段存放的原始数据,和程序执行结束后的数据。DS:0000DS:0008DS:0010DS:0018DS:0020DS:00283.写岀和、差、积、商、余数运算结果。如:56781234H+123AFEDCH=0BA98FEDCH-789A1234H= 0D687H×0012H= 02345678H÷0F234H=4.心得体会和建议。实验二均值滤波一.实验目的1.掌握在数据表中找最大、最小数的方法。2.学会子程序的使用方法,参数传递的方法,掌握分支程序,循环程序的设计方法。3.熟悉Tddebug调试环境和TurboDebugger的使用。二.实验内容均值滤波算法:对N(2<N<256)个无符号数,去掉一个最大值、最小值,然后求其平均值,其中最大值,最小值的査找通过分别调用子程序SMAX和SMIN实现。三.程序流程图主程序流程图如下图2-2-1,SMAX子程序流程图如图2-2-2所示,SMIN子程序流程图与SMAX类似。图图2-2-2图2-2-1主程序流程是否N否是开始找最大值,找最小值CALLSMAX,SMIN求N个数之和减去最大值,最小值除以(N-2),求平均值结束初始化AL=[SI]保存最大值CX-1=0?SI=SI+1AL≥[SI]?返回四.参考源程序STACK1SEGMENTSTACKDB100DUP(?)STACK1ENDSDATASEGMENTAVERAGEDB?NUMDB12H,34H,56H,78H,90H,21H,43H,65H,87H,09HL_NUMEQU$-NUMMAXNUMDB?MINNUMDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1STARTPROC FARPUSH DS;标准序XOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV SI,OFFSETNUMMOV DI,OFFSETMAXNUM;求最大数MOV CX,L_NUMCALL SMAX MOV SI,OFFSETNUMMOV DI,OFFSETMINNUM;求最小数MOV CX,L_NUMCALL SMINMOV CX,L_NUMXOR AX,AXMOV SI,OFFSETNUMNEXT:ADD AL,[SI];求N𠆤数之和ADC AH,0INC SILOOP NEXTMOV BH,0 MOV BL,MAXNUM;减去最大值SUB AX,BXMOV BL,MINNUM ;减去最小值SUB AX,BXMOV CL,L_NUM SUB CL,2;求均值DIV CLMOV AVERAGE,AL ;平均值存放在AVERAGE中RETSTARTENDPSMAXPROC MOV AL,0 NEXT1:CMP AL,[SI]JNC NEXT2MOV AL,[SI];求最大数子程序NEXT2:INC SILOOP NEXT1MOV [DI],ALRETSMAXENDPSMINPROC MOV AL,0FFH NEXT3:CMP AL,[SI]JC NEXT4MOV AL,[SI];求最小数子程序NEXT4:INC SILOOP NEXT3MOV [DI],ALRETSMINENDPCODEENDSEND START五.实验歩骤1同实验一实验歩骤1~4。2调试程序:单击工具栏,单击View\Cpu,在代码显示区单击右键\点击MixedBoth,为MixedNo,按F7单歩执行,当执行完MOVDS,AX后,单击View\Cpu,使屏幕下方的数据显示区为DS的内容:(1)用单歩和执行到光标处相结合,调试求最大值子程序,观察指令执行后各存放器及数据区的内容。(2)用执行到光标处,调试求最小值子程序,观察指令执行后数据区最小值的内容。(3)用连续执行方式调试求平均值。3修改源程序,用同一个子程序求出最大值、最小值。六.实验报告1、实验目的和实验内容。2、记录主程序、子程序SMAX、子程序SMIN的起始地址和结束地址。地址主程序子程序SMAX子程序SMIN起始地址结束地址3、记录数据段中存放的的10个原始数据、最大数、最小数及平均数。DS:0000DS:00084、记录刚进入SMAX时,压入堆栈的内容,它就是从子程序SMAX返回主程序的地址。执行CALLSMAX前IP=SP执行CALLSMAX后IP=SP执行RET前IP=SP执行RET后IP=SP执行CALLSMAX前IP=SP执行CALLSMAX前IP=SP执行RET前IP=SP执行RET后IP=SP5、最大值=?最大值=?平均值=?6、心得体会和建议。实验三代码转换一.实验目的1.掌握代码转换的根本方法。2.学会INT21功能调用,掌握人机对话的设计方法。3.进一歩熟悉Tddebug调试环境和TurboDebugger的使用。二.实验内容从键盘输入小写字母(最多20个),以“.〞号作为结束标志,在屏幕上输岀相应的大写字母。用INT21中的09H号功能实现输出对话,0AH号功能实现输入对话。输入小写字母用INT21的0AH号功能,将读入的数据存放在缓冲区SMALL中,其中SMALL的笫一个字节指岀缓冲区能容纳的字符数,不能为0(程序暂定为50),第二个字节保存,以用作存放实际键入的输入字符的个数;从笫三个字节开始存放从键盘上接受的字符,所以转换时要从SMALL的笫三个字节,即SMALL+2开始。SMALL中存放的是小写字母的ASSII码,将此值减去20H,即为大写字母的ASSII码,将其依次存放在名为CAPITAL的数据段中,然后用INT21中的09H功能输出。三.程序流程图主程序流程图如下图2-3-1。否否否是输岀提示信息从键盘输入小写字母回车换行CX=20字符=“·〞?变换成大写字母存入输岀缓冲区CX-1=0?输岀缓冲区以“$〞结尾显示大写字母返回DOS是图2-3-1四.源程序CRLFMACRO MOV DL, 0DHMOV AH, 02H INT 21HMOV DL, 0AH ;宏定义了回车,换行的ASCII码MOV AH, 02HINT 21HENDMDATASEGMENTMES1DB'PLEASEINPUTTHESMALLLETTER,ENDEDWITH".":$'MES2DB'THECAPTALLETTERIS:$'SMALL1DB50 ;预留键盘输入缓冲区长度为50个DB? ;预留实际键盘输入字符的个数DB50DUP(?)CAPITALDB50DUP(?);预留大写字母缓冲区长度为50个DATAENDSSTACK1SEGMENTSTACKDB100DUP(?)STACK1ENDSCODESEGMENTSTARTPROC FARPUSH DSMOV AX, 0PUSH AXMOV AX, DATAMOV DS, AXMOV AH, 9 MOV DX, OFFSETMES1;输岀提示信息EMS1INT 21HCRLF ;宏调用MOV AH, 0AHMOV DX,OFFSETSMALL1 ;接收小写字符串INT 21HCRLFMOV BX, OFFSETSMALL1MOV DI, OFFSETCAPITALMOV CX, 20NEXT:MOV AL,[BX+2]MOV AH, ALCMP AL, 2EH ;小写字母ASCII码字符串JE KE;转换成大写字母ASCII码字符串SUB AL, 20HMOV [DI],ALINC BXINC DILOOP NEXTKE:INC DI MOV AL, '$';大写字符串后加“$〞MOV [DI],ALMOV DX, SEGMES2 MOV DS, DXMOV DX, OFFSETMES2;输岀提示信息EMS2MOV AH, 9INT 21HCRLFMOV DX, OFFSETCAPITALMOV AH, 9;输岀大写字符串INT 21HRETSTARTENDPCODEENDSEND START五.实验歩骤1同实验一实验歩骤1~4;注意:(1)本程序在结构上不完整,需自行修改源程序后才能汇编通过;(2)程序正确运行应是根据屏幕提示信息,从键盘输入小写字母,且“.〞号作为结束标志,然后在屏幕上输岀大写字母提示信息和相应的大写字母,但源程序不能按这种方式运行,需自行修改源程序后才能正确运行。2调试程序:单击工具栏,单击View\Cpu,在代码显示区单击右键\点击MixedBoth,为MixedNo,按F7单歩执行,当执行完MOVDS,AX后,单击View\Cpu,使屏幕下方的数据显示区为DS的内容:3.分别用执行到光标处,连续执行二种方法调试,观察调试过程中,指令执行后各存放器及数据区的内容。4.修改源程序,对输入的非法字符进行处理。六.实验报告1、实验目的和实验内容。2、显示MES1的信息修改后的局部源程序。3、数据段存放的键盘输入的小写字母的ASCII码和转换成大写字母的ASCII码。DS:040DS:048DS:050DS:058DS:078DS:080DS:088DS:0904、在屏幕显示相应的大写字母。5、心得体会和建议。实验四字符串冒泡排序一.实验目的1.进一歩掌握主、子程序设计方法。2.掌握人机对话的设计方法。3.进一歩熟悉Tddebug调试环境和TurboDebugger的使用。4.掌握冒泡排序的一种方法。二.实验内容试设计名为“TITLEBOBBLESORT〞冒泡程序,当屏幕上显示一行“PLESAEENTRYSTR1NG〞提示信息,屏幕上立即在下一行输入字符串;程序用冒泡法对字符串以ASCII码的值按升序来排序,屏幕在下一行显示这个排序好的字符串。三.程序思路冒泡法排序有多种算法,本程序采用的是循环次数固定法,设有N个元素串,首先把笫一个元素送入AL,並设定其为“当前最小值〞单元,然后和剩下的(N-1)个元素值比拟,假设有一个元素比它小,那么两个元素互换,经(N-1)次比拟,“当前最小值〞单元是N个元素的最小值,之后再把它写回到笫一个元素的位置,即冒出了一个最轻的泡,如此下去,顺序冒出(N-1)个泡后,N个元素就排序好了。四.程序清单;TITLEBUBBLFSORTSTACK1SEGMENTSTACKDB64DUP(0)STACK1 ENDSDATA SEGMENTPROMPTDB0DH,0AH,'PLEASEENTRYSTRING',0DH,0AH,'$';显示提示信息CRLFDB0DH,0AH,'$' ;回车,换行,显示数据CHARLABELBYTE ;输入缓冲区结构CHARHDB60 ;缓冲区大小CHARNDB? ;字符记数CHARFDB60DUP(?) ;缓冲区空间DATAENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1BEGINPROCFARPUSH DSMOV AX, 0PUSH AXMOV AX, DATAMOV DS, AXAGAIN: LEA DX, PROMPT MOV AH, 9;9号功能调用,显示提示信息INT 21HLEA DX, CHAR MOV AH, 0AH ;0AH号功能调用INT 21HMOV CL, CHARN ;输入字符数送CLOR CL, CL ;假设字符数为0,那么退回DOS系统JZ DONECALL SORT ;否那么,排序並显示JMP AGAINDONE: RETBEGIN ENDPSORT PROC ;冒泡法排序子程序XOR CH, CH ;字符串长度为CL值MOV BX, CXMOV SI, OFFSETCHARF MOV BYTEPTR[SI+BX],'$';在输入缓冲区的串后参加一个$CLDBIGLOOP:MOV AL,[SI] ;以AL为“当前最小值〞单元DEC CX ;CX为比拟计数𠾖JCXZ EXIT ;假设CX为0,表示已排好序PUSH CX ;保存CXINC SI ;取下一单元地址PUSH SISMALLOOP:CMPAL, [SI] ;取一个元素与“当前最小值〞单元比拟JBE NEXT ;假设该元素值小,那么交换位置XCHG AL, [SI]NEXT: INC SILOOP SMALLOOP;循环,使“当前最小值〞确实为最小POP SI ;SI为余下的笫一个字符MOV [SI-1], AL ;冒岀一个泡,写回队列中POP CX ;CX为余丈的字符个数JMP BIGLOOP ;继续求余下字符中的最小值EXIT: MOV DX,OFFSETCRLF ;巳排好序,先回车换行MOV AH,9INT 21HMOV DX,OFFSETCHARF ;显示排好序的字符串MOV AH,9INT 21HRETSORTENDPCODEENDSENDBEGIN五.实验要求1、同实验一实验歩骤1~4。2、对实验程序进行汇编、连接。3、调试程序,分别用执行到光标处,连续执行二种方法调试,观察调试过程中,指令执行后数据区的内容。4、连续执行程序,观察运行结果。六.实验报告1、实验目的和实验内容。2、数据段存放的键盘输入的ASCII码和屏幕显示的字符串。3、在屏幕显示排好序的字符串。4、心得体会和建议。实验五描述符和描述符表实验一.实验目的(1)熟悉保护模式的编程格式。(2)掌握描述符的声明方法。(3)掌握使用选择符访问段的寻址方法。二.实验内容实现在一个0级代码段中将源数据段中的一段数据复制到目标数据段中。其中所有段的段描述符均放置在GDT中。1.实验分析为了实现在0级代码段中完成数据传输,实验程序中需要安排一个0级代码段和两个0级数据段〔可以是0~3级任一级别的数据段〕。在程序开始声明一个数据段‘DSEG’,来描述这三个段的描述符,其中有代码段描述符Scode,源数据段描述符DataS和目标数据段描述符DataD,将它们相应的选择子分别定义为Scode_Sel,DataS_Sel,DataD_Sel。按照实验程序编写格式的约定及描述符的格式定义,为这三个段分别定义描述符:(1)代码段描述符:ScodeDesc<Clen,CSEG,,ATCE,,>;段属性说明:G: 0;以字节为段界限粒度D: 0;是16位的段P: 1;描述符对地址转换有效/该描述符对应的段存在DPL:0;0级段DT:1;描述符描述的是存储段TYPE:0x8;只执行段段基地址说明:定义代码段的标号为CSEG,那么在段基地址处填写CSEG,为调试器提供重定位信息。段界限说明:段界限定义为Clen。(2)源数据段描述符:DataSDesc<DLEN,DSEG1,,ATDW,,>;段属性说明:G: 0;以字节为段界限粒度D: 0;是16位的段P:1;描述符对地址转换有效/该描述符对应的段存在DPL:0;0级段DT:1;描述符描述的是存储段TYPE:0x2;可读写段段基地址说明:定义源数据段标号为DSEG1,那么在段基地址处填写CSEG,为调试器提供重定位信息。段界限说明:定义段界限为DLEN。(3)目标数据段描述符:DatadDesc<BUFLEN,DSEG2,,ATDW,,>目标数据段描述符的内容根本与源数据段的内容相同,只要修改段基地址和段界限的定义即可。为了给装入程序提供重定位信息,三个存储段描述符中地址的低16位,用每个描述符对应段的标号来填写。在程序装入内存时,调试系统会根据地址的低16位定位该段对应的真实物理地址,并将该地址写入描述符中〔系统没有使用分页机制,线性地址等价于物理地址〕。在实验中可查询GDT表来确定每个段的真实物理地址。在程序定义过程中,首先使用一个全“F〞的描述符作为定义的开始,然后定义代码段描述符Scode、源数据段的描述符DSEG1和目标数据段描述符DSEG2。为了区分LDT表和GDT表的定义,再使用一个全“F〞的描述符作为界限。由于本实验中不使用LDT表,那么再使用一个全“F〞的描述符结束描述符的声明。本程序可实现将一个数据段中数据搬移到另一个数据段的过程。传输过程中可使用DS,ES两个段存放器,其中DS装入源数据段的选择符DataS_Sel,ES装入目标数据段的选择符DataD_Sel。在实验程序的最后使用“INT0FFH〞指令,正常结束程序运行。三.实验步骤(1)进入纯DOS环境,运行Tddebug集成操作软件。(2)运行Tddebug软件,使用Alt+E选择Edit菜单项进入程序编辑环境。按实验要求编写程序。实验参考流程图如图2-5-1.(3)程序编写完后保存退出,使用Alt+C选择Compile菜单中的Compile和Link命令对实验程序进行编译、连接。(4)编译输出信息表示无误后,使用Alt+P选择Pmrun命令装入实验程序,如果装入成功,屏幕上会显示“LoadOK!〞,否那么,会给出相应的错误提示信息。(5)假设程序装入成功,那么进入保护模式调试环境。在命令输入行使用GDT命令查询系统的GDT表,并且查看实验程序中声明的代码段、数据段描述符在GDT表中的位置以及对应段的物理地址、段属性、段界限等。(6)使用F7单步执行程序,执行LLDTAX语句后,使用LDT命令查看LDT局部描述符表的内容。(7)根据LDT内容使用D命令查看源数据区的数据和目的数据区数据内容。(8)按F9运行程序,如果程序正常运行结束,命令显示区中将显示“CorrectRunning〞。(9)运行结束后,再次查看目的数据区内容,观察数据传输是否正确。四.程序流程图全局描述符表实验参考流程图见图2-5-1描述GDT表项描述GDT表项声明各数据段描述符输在0级代码段中实现数据传输调用INT0FFH返回调试系统结束图2-5-1五.参考实验程序.386PDESCSTRUC ;定义描述符结构 LIMITL DW0 BASEL DW0 BASEM DB0 ATTR DB0 LIMITH DB0 BASEH DB0DESCENDS ATCE=98H ;定义特殊常量 ATDR=90H ATDW=92HDSEG SEGMENT USE16 ;声明开始初始化GDT表中的描述符 GDT LABEL BYTE ID1 DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>;标记1 ID2 DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>;标记2 ID3 DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>;标记3 SCODE DESC<0FFFFH,CSEG,,ATCE,,> ;代码段描述符 DATAS DESC<D1LEN,DSEG1,,ATDW,,> ;源数据段描述符 DATAD DESC<BUFLEN-1,DSEG2,,ATDW,,>;目标数据段描述符 GDTLEN=$-GDT ;目标数据段描述符 SCODE_SEL=SCODE-GDT ;代码段选择子 DATAS_SEL=DATAS-GDT ;源数据段选择子 DATAD_SEL=DATAD-GDT ;目标数据段选择子DSEG ENDSDSEG1 SEGMENT USE16 ;定义源数据段 BUF DB00H,11H,22H,33H,44H,55H,66H,77H DB88H,99H,0AAH,0BBH,0CCH,0DDH,0EEH,0FFH DB240DUP(0) D1LEN=$-1DSEG1 ENDSDSEG2 SEGMENT USE16 ;定义目标数据段 BUFLEN=256 BUFFER DB BUFLENDUP(0)DSEG2ENDSCSEG SEGMENT USE16ASSUMECS:CSEG, DS:DSEGSTART PROC MOVAX,DATAS_SEL ;装入源数据段选择子 MOVDS,AX MOVAX,DATAD_SEL ;装入目标数据段选择子 MOVES,AX CLD XORSI,SI XORDI,DI MOVCX,32M1: MOVSB LOOPM1 INT0FFH ;返回调试系统STARTENDPCLEN=$-1CSEGENDSENDSTART实验六局部描述符表实验一.实验目的: 熟悉编程格式,掌握通过ldt表访问段的编程方法本实验与上一实验所完成的功能相同,但要求将代码段安排在全局描述符表中,而将数据段安排在局部描述符表中。二.实验分析本实验需要为代码段和数据段分别声明描述符,由于要求将数据段的描述符放入LDT表中,所以实验程序需要建立一张局部描述符表,并在GDT表中声明LDT表对应的描述符。描述符声明完成,还需要为它们定义相应的选择子。实验程序在DSEG段中描述GDT表中的描述符。先用一个全“F〞的描述符作为定义的开始,然后定义主程序段和LDT表描述符,然后使用一个全“F〞的描述符作为区分于LDT表的界限。在DSEG段后,用DSEG1段来描述LDT表中的描述符,其中包括源数据段描述符目标数据段描述符。在DSEG1段的末尾再使用一个全“F〞描述符作为描述符声明的结尾。由于主代码段需要访问的段是在LDT表中声明的,所以在程序的初始需要执行装载LDTR的指令。装载LDT表使用的指令如下:MOVAX,LDT_SelLLDTAX(1)LDT表对应段描述符:LDTableDesc<LDTLen-1,DSEG1,,ATLDT,,>段属性说明:G:0;以字节为段界限粒度D:0;是16位的段P:1;描述符对地址转换有效/该描述符对应的段存在DPL:0;0级段DT:0;描述符描述的是系统段或门描述符TYPE:0x8;LDT表段基地址说明:需要在重定位后确定,但可以知道,该描述符对应的数据段是DSEG1段界限说明:段界限为LDTLen-1ATLDTEQU82h;局部描述符表段类型值(2)数据段选择子实验中的两个数据段均在LDT表中声明,那么描述符对应的段选择符应该标记出来TILEQU04hDataS_Sel=DataS-LDT+TILDataD_Sel=DataD-LDT+TIL三.实验步骤(1)进入纯DOS环境,运行Tddebug集成操作软件。(2)运行Tddebug软件,使用Alt+E选择Edit菜单项进入程序编辑环境。按实验要求编写程序。实验参考流程图如下图2-6-1。(3)程序编写完后保存退出,使用Alt+C选择Compile菜单中的Compile和Link命令对实验程序进行编译、连接。(4)编译输出信息表示无误后,使用Alt+P选择Pmrun命令装入实验程序,如果装入成功,屏幕上会显示“LoadOK!〞,否那么,会给出相应的错误提示信息。(5)假设程序装入成功,那么进入保护模式调试环境。在命令输入行使用GDT命令查询系统的GDT表,并且查看实验程序中声明的代码段、数据段描述符在GDT表中的位置以及对应段的物理地址、段属性、段界限等。(6)使用F7单步执行程序,执行LLDTAX语句后,使用LDT命令查看LDT局部描述符表的内容。(7)根据LDT内容使用D命令查看源数据区的数据和目的数据区数据内容。(8)按F9运行程序,如果程序正常运行结束,命令显示区中将显示“CorrectRunning〞。(9)运行结束后,再次查看目的数据区内容,观察数据传输是否正确。四.程序流程图描述符GDT表项描述符GDT表项描述符LDT表项声明各数据段描述符在0级主代码段中装载LDT在0级代码段中实现数据传输调用INT0FFH返回调试系统结束图2-6-1五.参考实验程序;实验结果: 可以用dump命令检查数据区,验证程序的运行结果;编程考前须知: ldt表所在段对应的描述符必须在gdt表中声明,程序起始代码段对应描,述符也应该在gdt表中声明INCLUDE 386SCD.INCDSEG SEGMENTuse16GDT LABELBYTE ;全局描述符表ID1 Desc<0ffffh,0ffffh,0ffh,0ffh,0ffh,0ffh>;空描述符Mcode Desc<0ffffh,CSEG,,ATCE,,> ;代码段描述符LDTable Desc<LDTLen-1,DSEG1,,ATLDT,,> ;局部描述符表段的描述符GDTLen =$-GDT ;全局描述符表长度MCode_Sel =MCode-GDTLDT_Sel =LDTable-GDT ;局部描述符表段的选择子ID2 Desc<0ffffh,0ffffh,0ffh,0ffh,0ffh,0ffh>DSEG ENDS ;数据段定义结束DSEG1 SEGMENTuse16LDT LABEL BYTE ;局部描述符表DataS Desc<0ffffh,0,11h,ATDW,,> ;源数据段描述符DataD Desc<0ffffh,Dseg2,,ATDW,,> ;目标数据段描述符DataS_Sel =DataS-LDT+TILDataD_Sel =DataD-LDT+TILLDTLen =$-LDT;局部描述符表长度ID3 Desc<0ffffh,0ffffh,0ffh,0ffh,0ffh,0ffh>DSEG1 ENDSDseg2 Segmentuse16BufLen =256;缓冲区字节长度Buffer DBBufLenDUP(0);缓冲区Dseg2 endsCSEG SEGMENTuse16;16位代码段ASSUMECS:CSEGStart PROC mov ax,LDT_Sel lldt axmovax,DataS_Selmovds,ax;加载源数据段描述符movax,DataD_Selmoves,ax;加载目标数据段描述符cldxorsi,sixordi,di;设置指针初值movcx,BufLen/4;设置4字节为单位的缓冲区长度repzmovsd;传送 int 0ffhStartENDPCSEGENDS;代码段定义结束ENDStart第三章32位微机接口硬件实验实验一地址译码电路与I/O接口一、实验目的(1)学习3-8译码器在接口电路中的应用。(2)掌握地址译码电路的一般设计方法。二、实验设备PC微机一台、TD-PIT++实验系统一套。三、实验内容用74LS138译码器设计地址译码电路,Y7作为根本输入/输出单元的片选信号。1.读入74LS245输入的八位数据,在74LS574上输出,用八位LED显示开关状态。2.当有键按下,且读入的数字量为1,那么八位LED从右向左依次循点亮,否那么重读数字量。3.再有键按下,且读入的数字量为2,那么八位LED交替亮,否那么重读数字量。4.再有键按下返回。四、实验原理微机接口电路中,常采用74LS138译码器来实现I/O端口或存储器的地址译码。74LS138有3个输入引脚、3个控制端A、B、C及8个输出引脚,其管脚信号如下图3-1-1。当3个控制信号有效时,来确定那个输出端为低电平,而其它输出端为高电平,该低电平信号即可作为片选信号。32位扩展系统总线上有一个/IOM信号,该信号为低电平时表示当前操作为I/O操作,为高电平指示当前操作为存储器操作,它和译码器不同的连接可以用来区分是I/O端口译码还是存储器端口译码。32位总线地址是由A2开始,所以地址是以4字节边界对齐的。实验系统的I/O地址空间共有256字节,偏移地址一般从00H~FFH。起始地址由PC机系统分配,可以用CHECK程序读出。所以设计地址译码电路,主要是针对低8位地址线译码,得到偏移在00H~FFH之间的端口。本实验要求不使用总线上的片选信号,自行设计端口偏移地址分别为0C0H~0DFH和0E0H~0FFH的译码电路,然后用译码输出作为根本输入输出单元的片选。编写程序,完成I/O数据操作。实验电原理框图如下图3-1-1。图3-1-四、流程图及实验步骤地址译码电路与I/O接口设计流程图如下图3-1-2。YNYNYNYNNNNYNNYNN𥘉初始化读入八位开关量输岀八位数据有键按下吗?结束读入八位开关量有键按下吗?AL=1?AL=2?读入八位开关量八位LED左循环点亮有键按下吗?八位LED交替亮图3-1-实验步骤:1.按图3-1-1所示连接实验线路。2.32位I/O接囗单元自检(1)点击工具栏c:\(2)C:\TangDu\PitPP\Asm1>DEBUGI30E0;读入当前八位开关状态,改变八位开关状态,开关量亦不同O30E0FF;八位LED全亮Q;退岀自检(3)返回WINDOWSC:\TangDu\PitPP\Asm1>EXIT3.编译链接。4.运行程序,拨动开关,观看LED显示是否正确。五、参考程序IOY0 EQU3000H ;片选IOY0对应的端口始地址Y7 EQUIOY0+0E0H;译码电路输出Y7对应的端口地址DATASEGMENTNUM DB 01HDATA ENDSSTACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSCODE SEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX, DATA MOV DS, AXMOV DX, Y7;读入开关量IN AL, DXOUT DXMOV DL,0FFHMOV AH, 6;判断是否有按键按下INT 21HJZ START;无按键那么跳回继续循环,有那么退出 L1: MOV DX,Y7 IN AL,DX;读入开关量,判断是否为1CMP AL,1 JNE L1L2: MOV DX,Y7 MOV AL,NUM OUT DX,AL;八位LED从右向左依次循点亮 ROL AL,1 MOV NUM CALL DELAY MOVDL,0FFHMOV AH, 6;判断是否有按键按下INT 21HJZ L2;无按键那么跳回继续循环,有那么退出L3: MOV DX,Y7 IN AL,DX;读入开关量,判断是否为2 CMP AL,2 JNE L3MOV NUM,55HL4: MOV DX,Y7 MOV AL,NUM OUT DX,AL;八位LED交替亮 NOT AL MOV NUM CALL DELAY MOVDL,0FFHMOV AH, 6;判断是否有按键按下INT 21HJZ L4 ;无按键那么跳回继续循环,有那么退出 MOV AX, 4C00H;结束程序退出INT 21HDELAY PROC MOV BX,8FFHDELAY1:MOV CX,0FFFFH LOOP $;延时子程序 DEC BX JNZ DELAY1 RETDELAY ENDPCODEENDSENDSTART六、实验报告1.实验目的和实验内容。2.简要的电原理框图。3.流程图。4.实验结果。5.心得体会和建议。实验二8254定时/计数器一.实验目的(1)掌握8254的工作方式及应用编程。(2)掌握8254的典型应用电路接法。二.实验设备PC微机一台、TD-PIT++实验系统一套,示波器一台。三.实验内容1.计数器0工作在方式3,初值为4800H,OUT0分两路输出,一路外接2位LED,使其以亮0.5秒灭0.5秒闪亮,另一路作为计数器1的计数脉冲CLK1.。2.计数器1工作在方式2,初值为4,OUT1的输出外接2位LED,使其以亮3秒灭1秒闪亮。3.计数器2工作在方式0,初值为0FH,按压开关产生的脉冲作为计数器2的计数脉冲,按压开关的次数将在屏幕上显示,当按压开关到17次时,观察OUT2电平的变化。四.实验原理8254是Intel公司生产的可编程间隔定时器。是8253的改良型,比8253具有更优良的性能。8254具有以下根本功能:(1)有3个独立的16位计数器;(2)每个计数器可按二进制或十进制〔BCD〕计数;(3)每个计数器可编程工作于6种不同工作方式;(4)8254每个计数器允许的最高计数频率为10MHz〔8253为2MHz〕;(5)8254有读回命令〔8253没有〕,除了可以读出当前计数单元的内容外,还可以读出状态存放器的内容。(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为:n=Fclk÷Fout其中Fclk是输入计数脉冲的频率,Fout是输出信号频率。图3-2-1是8254的内部结构框图和引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。8254的工作方式如下:(1)方式0:计数到0结束输出正跃变信号方式。(2)方式1:硬件可重触发单稳方式。(3)方式2:频率发生器方式。(4)方式3:方波发生器。(5)方式4:软件触发选通方式。(6)方式5:硬件触发选通方式。图3-2-18254的内部接口和引脚8254的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。控制字格式如表3-2-1所示。读回控制字格式如表3-2-2所示。当读回控制字的D4位为0时,由该读回控制字D1~D2位指定的计数器的状态存放器内容将被锁存到状态存放器中。状态字格式如表3-2-3所示。表3-2-18254的方式控制字格式表3-2-28254读出控制字格式表3-2-38254状态字格式五.实验说明及流程图根据计数初值公式n=n=Fclk÷Fout,可计算计数器0,,的初值:N0=18432=4800H8254定时/计数器电原理图如下图3-2-2,流程图如图3-2-3所示。图3-2-28254定时/计数器电原理图实验步骤如下。1.首先运行CHECK程序,查看I/O空间始地址。2.编译链接。3.参考图3-2-3所示连接实验线路。4.8254单元自检(1)点击工具栏c:\(2)C:\TangDu\PitPP\Asm1>DEBUGO300C36;计数器0O300000;计数器0低八位初值O300090;计数器2高八位初值,执行后LED一灭一亮计数器1,2自检类似Q ;退岀自检(3)返回WINDOWSC:\TangDu\PitPP\Asm1>EXIT5.可以改变计数初值,从而实现不同要求的计数。YYN初始化计数器0方式3,初值=4800H计数器1方式2,初值=`4计数器2方式0,初值=0FH有键按下吗?结束读计数器2当前值调用屏幕显示子程序图3-2-38254定时/计数器参考程序流程图六.参考程序IOY0EQU3000HTIMER0EQU IOY0+00H*4;8254计数器0端口地址TIMER1EQU IOY0+01H*4;8254计数器1端口地址TIMER2EQU IOY0+02H*4;8254计数器2端口地址TCTLEQU IOY0+03H*4;8254控制存放器端口地址STACK1SEGMENTSTACKDW 256DUP(?)STACK1ENDSDATASEGMENTMES0DB‘Pressed:$’MES1DB ‘Pressanykeytoexit!’,0DH,0AH,’$’NUM DB ?DATA ENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART: MOV AX,DATA MOV DS, AX MOV DX,OFFSETMES1 MOV AH,9 INT 21H MOV DX,TCTLMOV AL,00110110B;计数器0初始化,方式3OUT DX,MOV DX,TIMER0MOV AL,00HOUT DX,AL;计数器0初值=4800HMOV AL,48HOUT DXMOV DX,TCTLMOV AL,01010101B;计数器1初始化,方式2OUT DX,MOV DX,TIMER1MOV AL,04H;计数器1初值=04HOUT DX,MOV DX,TCTLMOV AL,10010001B;计数器2初始化,方式0OUT DX,MOV DX,TIMER2MOV AL,0FH;计数器0初值=0FHOUT DX,ALL1: MOV DX,TIMER2 IN AL,DX;读入计数器2值保存 MOV NUM CALL DISPMOV AL, NUM;当按压开关17次时退出 CMP AL, 0 JZ QUITMOV DL,0FFH MOV AH,6;判主键盘有无键按下INT 21H JZ L1 ;有键按下跳转QUIT: MOV AX,4C00H;结束程序退出INT 21HDISP PROC;显示子程序 MOV DX,OFFSETMES0 MOV AH,9;显示MES0 INT 21H MOV AL,NUM CMP AL, 9;判断是否<=9 JLE L2;假设是那么为'0'-'9',ASCII码加30H ADD AL,7;否那么为'A'-'F',ASCII码加37HL2: ADD AL,30H MOV DL,ALMOV AH,2;在显示器上显示按压开关的次数 INT 21H MOV DL,0DH INT 21H RETDISP ENDPCODE ENDSEND START七、改变计数器0、计数器1初值,使OUT0输出5KHZ方波,OUT输出1KHZ脉冲波。八、实验报告1.实验目的和实验内容。2.简要的电原理框图。3.流程图。4.实验结果。5.心得体会和建议。实验三8259中断控制器一.实验目的(1)学习中断控制器8259的工作原理。(2)掌握可编程控制器8259的应用编程方法。二.实验设备PC微机一台、TD-PIT+实验系统一套。三.实验内容用KK1+和KK2+模拟两个中断源,在IR0对应的效劳程序中显示字符“0〞,在IR1对应的效劳程序中显示字符“1〞。四.实验原理1.8259控制器的介绍中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先级排队、区分中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需增加其他电路的情况下,通过多片8259A的级连,能构成多达64级的矢量中断系统。它的管理功能包括:1〕记录各级中断源请求,2〕判别优先级,确定是否响应和响应哪一级中断,3〕响应中断时,向CPU传送中断类型号。8259A的内部结构和引脚如下图3-3-1。8259A的命令共有7个,一类是初始化命令字,另一类是操作命令。8259A的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令存放器组和操作命令存放器组。ICW1-ICW4的命令字格式如下图3-3-2,OCW1-OCW3的命令字格式如图3-3-3所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和中断结束方式的操作命令字,OCW3用于设置和撤销特殊屏蔽方式、设置中断查询方式以及设置对8259内部存放器的读出命令。图3-3-18259内部结构和引脚图图3-3-2图3-3-2图3-3-2图3-3-2图3-3-32.8259存放器及命令的控制访问在硬件系统中,8259仅占用两个外设接口地址,在片选有效的情况下,利用A0来寻址不同的存放器和命令字。对存放器和命令的访问控制如表3-3-1所示。表3-3-18259存放器及命令的控制访问3.PC微机系统中的8259在80x86系列PC微机系统中,系统中包含了两片8259A中断控制器,经级连可以管理15级硬件中断,但其中局部中断号已经被系统硬件占用,具体使用情况如表3-3-2示。两片8259A的端口地址为:主片8259使用020H和021H两个端口;从片使用0A0H和0A1H两个端口。系统初始化两片8259的中断请求信号均采用上升沿触发,采用全嵌套方式,优先级的排列次序为0级最高,依次为1级、8级~15级,然后是3级~7级。在扩展系统总线上的INTR对应的中断线就是PC机保存中断其中的一个。对INTR中断的初始化PC机已经完成,在使用时主要是将其中断屏蔽翻开,修改中断向量。表3-3-2四.实验说明及流程图本实验要求实现8259控制器IR0、IR1两路中断。用KK1+和KK2+模拟两个中断源,在IR0对应的效劳程序中显示字符“0〞,在IR1对应的效劳程序中显示字符“1〞。电原理框图如下图3-3-4。实验程序参考流程如图3-3-5所示。图3-3-48259中断控制器电原理图图3-3-58259中断控制器参考流程图五.参考程序;8259扩充中断应用实验INTR_IVADD EQU01C8H ;INTR对应的中断矢量地址INTR_OCW1EQU0A1H ;INTR对应PC机内部8259的OCW1地址INTR_OCW2EQU0A0H ;INTR对应PC机内部8259的OCW2地址INTR_IM EQU0FBH ;INTR对应的中断屏蔽字IOY0 EQU3000H ;片选IOY0对应的端口始地址MY8259_ICW1EQUIOY0+00H ;实验系统中8259的ICW1端口地址MY8259_ICW2EQUIOY0+04H ;实验系统中8259的ICW2端口地址MY8259_ICW3EQUIOY0+04H ;实验系统中8259的ICW3端口地址MY8259_ICW4EQUIOY0+04H ;实验系统中8259的ICW4端口地址MY8259_OCW1 EQUIOY0+04H ;实验系统中8259的OCW1端口地址MY8259_OCW2 EQUIOY0+00H ;实验系统中8259的OCW2端口地址MY8259_OCW3 EQUIOY0+00H ;实验系统中8259的OCW3端口地址STACK1SEGMENTSTACKDW 256 DUP(?)STACK1ENDSDATASEGMENTMESDB'Pressanykeytoexit!',0AH,0DH,0AH,0DH,'$'CS_BAKDW? ;保存INTR原中断处理程序入口段地址的变量IP_BAKDW? ;保存INTR原中断处理程序入口偏移地址的变量IM_BAKDB? ;保存INTR原中断屏蔽字的变量DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOV DS, AXMOV DX, OFFSETMES MOV A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论