微机接口实验.doc_第1页
微机接口实验.doc_第2页
微机接口实验.doc_第3页
微机接口实验.doc_第4页
微机接口实验.doc_第5页
已阅读5页,还剩179页未读 继续免费阅读

下载本文档

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

文档简介

32位微机原理与接口技术实验教程 启东计算机厂有限公司第二部分 微机接口实验一、说明 1下面的实验程序是根据我们设计的实验模块电路编写的,供用户参考。2所有的实验程序均可以在DVCC32JHP软件集成环境下运行和调试。 3在实验前必须先仔细阅读随机配备的用户手册,以便对整个系统的硬件结构和设计思想有所了解,特别要仔细阅读软件安装和使用部分,以便了解DVCC32JHP集成软件运行环境和操作方法,为后面顺利进行编程实验做好充分准备。 4图中虚线框内的电路为我们设计的模块电路。虚线框外的电路为系统部分。模块电路和系统电路之间需要用单个导线或排线连接。通常控制线都是单个的,数据总线D0D7(JD1JD4)、地址总线A0A7(JA1)、A8A15(JA2)等用排线连接。若模块内部有连线时,需要学生根据模块电路原理图进行连接。 5模块上的工作电源(+5V、GND)在实验时从系统板接入(用二芯连线),当用到12V电源时,还需从系统板接入12V电源(用四芯连线)。在下面的实验程序中电路接线部分省略了电源接入这一步。6实验中凡是用到A/D或D/A电路,在运行程序前,必须先将其基准电压调到+5V。7程序的退出是按PC机的ESC键。8实验程序的C语言源文件在安装目录下面的CPP目录下。二、实验程序目录1PortrASM 端口读写方式获取PCI板卡资源2Portr1ASM 中断方式获取PCI板卡资源3YmqASM I/O地址译码4D273ASM 简单并行接口扩展输出5D244ASM 简单并行接口扩展输入6D8253_1ASM 8253计数器实验7D8253_2ASM 8253分频器实验8D8255_1ASM 可编程并行I/O接口实验9DA_1ASM 用D/A转换器产生锯齿波实验10DA_2ASM 用D/A转换器产生正弦波实验11AD_1ASM A/D模数转换实验12INT_1ASM 单中断实验13INT_2ASM 扩展8259中断实验14D8251ASM 串行通信实验(8251)15DRAM ASM 静态RAM读写实验16DMA_1 ASM DMA传送实验(1)17DMA_2 ASM DMA传送实验(2)18DMA_3 ASM DMA传送实验(3)19D8255_2ASM 可编程并行接口、中断综合应用实验(1)20D8255_3ASM 可编程并行接口、中断综合应用实验(2)21LED_1ASM 七段数码管静态显示实验22LED_2ASM 七段数码管动态显示实验23JDQASM 继电器控制实验24QDQASM 竞赛抢答器设计实验25JTDASM 十字路口交通灯控制实验26BJDJASM 步进电机转速控制实验27ZLDJASM 直流电机转速控制实验28DZQASM 电子琴设计实验29LYJASM 数字录音机设计实验30JPXSHASM 键盘显示控制实验31D16C550_1ASM 新型串行控制器16C550应用实验32D16C550_2ASM 新型串行控制器16C550应用实验33DLCDASM 12864 图形点阵液晶显示控制实验34DLED8.ASM 88 点阵LED显示实验35DLED16.ASM 1616 点阵LED汉字显示实验36. DRAM32.ASM 32位数据宽度存储器读写实验37DMA32_1.ASM 32位数据宽度DMA传送实验38DMA32_2.ASM 32位数据宽度DMA传送实验通过模块的组合还可以组成很多设计性、创新性、综合性实训项目,例如:1数字钟,2频率计,3温度测量控制,4出租车计费,5站点报站等。三、实验的一般步骤(1) 运行DVCC32JHP软件,选择编辑 Edit 菜单,根据实验内容的描述编写实验程序或选择Open菜单直接打开程序。(2) 使用“ASM编译”菜单中“编译+连接+运行”选项,对实验程序进行汇编、连接。汇编、连接无误的话,就直接运行程序。观察运行结果。 (3) 或使用动态调试,进入调试环境,观察调试过程中,指令执行情况,包括各寄存器及数据区内容的变化等。 (4) 查看实验结果,考察程序的正确性。 预备实验 PCI设备查询和配置空间的读取一、实验目的1 学会使用IO端口查找PCI板卡的硬件资源。2 学会使用中断调用方式查找PCI板卡的硬件资源。二、实验内容1根据配置空间原理使用IO端口方式编写一个读PCI板卡配置空间的程序,该程序能够获得本机上DVCC板卡或所有PCI板卡的硬件资源,包括IO、内存、中断占用情况。2根据配置空间原理使用中断调用方式编写一个读PCI配置空间的程序,该程序能够获得本机上DVCC板卡或所有PCI板卡的硬件资源,包括IO、内存、中断占用情况。以上两个实验都要纯在DOS状态下运行。三、实验步骤1 了解并熟悉PCI 即插即用配置空间原理。2 了解并熟悉IO方式或中断方式获取配置空间的方法。3 编写端口读写方式或中断方式获取DVCC板卡或所有PCI板卡的硬件资源的程序。四、参考流程图1端口读写方式流程图如图1。2中断方式流程图如图2。五、参考程序1端口读写方式源程序文件名:Portr.ASM(在文件夹“ASM_汇编程序”中)源程序清单如下(纯dos下才能使用):datasegmentio_port_addre equ 0cf8h ;32位配置地址端口io_port_data equ 0cfch ;32位配置数据端口io_plx_id equ 0540610b5h;DVCC卡设备及厂商IDio_9054base_address db 4 DUP(0);DVCC卡9054芯片I/O基地址暂存空间io_base_address db 4 DUP(0);DVCC卡I/O基地址暂存空间memory_base_address db 4 DUP(0);DVCC卡MEMORY基地址暂存空间interrupt_line db 2 DUP(0);DVCC卡中断号暂存空间pcicardnotfind db 0dh,0ah,DVCC pci card not find or address/interrupt error !,0dh,0ah,$io9054baseaddress db 0dh,0ah,DVCC pci card 9054 Chip I/O Base Address : ,$iobaseaddress db 0dh,0ah,DVCC pci card I/O Base Address : ,$memorybaseaddressdb 0dh,0ah,DVCC pci card Memory Base Address : ,$intnumber db 0dh,0ah,DVCC pci card Interrupt Line : ,$enter_return db 0dh,0ah,$dataendscode segmentassume cs:code,ds:data,es:datastart:mov ax,datamov ds,axmov es,ax.386;386模式编译mov ebx,080000000hnext:add ebx,100hcmp ebx,081000000hjnz continuemov dx,offset pcicardnotfind;显示未找到DVCC卡提示信息mov ah,09hint 21hmov ah,4chint 21h;退出continue:mov dx,io_port_addremov eax,ebxout dx,eax ;写地址口mov dx,io_port_datain eax,dx ;读数据口cmp eax,io_plx_idjnz next ;检查是否发现DVCC卡mov dx,io_port_addremov eax,ebx add eax,14hout dx,eax ;写地址口mov dx,io_port_datain eax,dx ;读数据口mov dword ptr io_9054base_address,eaxand eax,1jz next ;检查是否为i/o基址信息 mov eax,dword ptr io_9054base_addressand eax,0fffffffeh mov dword ptr io_9054base_address,ea ;去除i/o指示位并保存mov dx,io_port_addre mov eax,ebxadd eax,18hout dx,eax;写地址口mov dx,io_port_datain eax,dx;读数据口mov dword ptr io_base_address,eaxand eax,1jz next;检查是否为i/o基址信息mov eax,dword ptr io_base_addressand eax,0fffffffehmov dword ptr io_base_address,eax;去除i/o指示位并保存mov dx,io_port_addremov eax,ebxadd eax,1chout dx,eax;写地址口mov dx,io_port_datain eax,dx;读数据口mov dword ptr memory_base_address,eaxand eax,1hjnz next;检查是否为memory基址信息mov eax,dword ptr memory_base_addressand eax,0fffffff0hmov dword ptr memory_base_address,eax;去除memory指示位并保存mov dx,io_port_addremov eax,ebxadd eax,3chout dx,eax;写地址口mov dx,io_port_datain eax,dx;读数据口and eax,0ffhmov word ptr interrupt_line,ax ;去除interrupt其它指示位并保存 mov dx,offset io9054baseaddress ;显示i/o提示信息mov ah,09hint 21h mov ax,word ptr io_9054base_addresscall disp ;显示i/o基地址mov dx,offset iobaseaddress;显示i/o提示信息mov ah,09hint 21hmov ax,word ptr io_base_addresscall disp;显示i/o基地址mov dx,offset memorybaseaddress;显示memory提示信息mov ah,09hint 21hmov ax,word ptr memory_base_address+2call disp;显示memory基地址高16位mov ax,word ptr memory_base_addressshr ax,16call disp;显示memory基地址低16位mov dx,offset intnumber;显示interrupt提示信息mov ah,09hint 21hmov ax,word ptr interrupt_linecall disp;显示interrupt号mov dx,offset enter_return;加回车符,换行符mov ah,09hint 21hmov ah,4chint 21h;退出disp proc near;显示子程序push dxpush cxpush bxmov cx,4mov bx,16loop1:push axpush cxsub bx,4mov cx,bxshr ax,cland al,0fh;首先取低四位mov dl,alcmp dl,9;判断是否=9jle num;若是则为0-9,ASCII码加30Hadd dl,7;否则为A-F,ASCII码加37Hnum:add dl,30hmov ah,02h;显示int 21hpop cxpop axloop loop1pop bxpop cxpop dxret;子程序返回disp endpcode endsend startYYYYYYYYNNNNNNNYYNNNYYNNY开始设置配置地址口超出地址范围否?读取厂商设备IDID号吻合否?读取9054芯片IO基地址是IO地址吗?保存基地址值读取DVCC卡IO基地址是IO地址吗?保存基地址值读取DVCC卡MEMORY基地址是MEMORY地址吗?保存基地址值结束返回读取并保存DVCC卡中断号HHAOHAO号卡中断号保存基地址值保存基地址值显示IO.内存.中断号开始PCI BIOS存在否?设备.厂商号相同否?否?子设备.厂商号相同?否?有9054芯片IO基址?址?有DVCC卡IO地址吗?吗??有MEMORY地址吗?保存基地址值有中断号?保存DVCC卡中断号显示IO.内存.中断号结束返回图1 图22中断方式源程序文件名:Portr1.ASM(在文件夹“ASM_汇编程序”中)源程序清单如下(纯dos下才能使用):datasegmentio_plx_device_idequ 05406h;DVCC卡设备IDio_plx_vendor_idequ 010b5h;DVCC卡厂商IDio_plx_sub_idequ 0905410B5H;DVCC卡子设备及厂商IDio_9054base_addressdb 4 DUP(0);DVCC卡9054芯片I/O基地址暂存空间io_base_addressdb 4 DUP(0);DVCC卡I/O基地址暂存空间memory_base_addressdb 4 DUP(0);DVCC卡MEMORY基地址暂存空间interrupt_linedb 2 DUP(0);DVCC卡中断号暂存空间pcicardnotfinddb 0dh,0ah,DVCC pci card not find or address/interrupt error !,0dh,0ah,$io9054baseaddress db 0dh,0ah,DVCC pci card 9054 Chip I/O Base Address : ,$iobaseaddressdb 0dh,0ah,DVCC pci card I/O Base Address : ,$memorybaseaddressdb 0dh,0ah,DVCC pci card Memory Base Address : ,$intnumberdb 0dh,0ah,DVCC pci card Interrupt Line : ,$enter_returndb 0dh,0ah,$dataendscode segmentassume cs:code,ds:data,es:datastart:mov ax,datamov ds,axmov es,ax.386;386模式编译MOV AX,0B101HINT 1AHJC EXIT;检查PCI BIOS是否存在MOV AX,0B102HMOV CX,io_plx_device_idMOV DX,io_plx_vendor_idMOV SI,0INT 1AHJC notfind;检查DVCC卡是否安装,设备号、厂商号MOV AX,0B10AHMOV DI,02CHINT 1AHJC notfindCMP ECX,IO_PLX_SUB_IDJNZ notfind;检查DVCC卡是否安装,子设备号、厂商号MOV AX,0B10AHMOV DI,14HINT 1AHJC notfind;读DVCC卡9054芯片I/O基址信息Mov dword ptr io_9054base_address,ecxAnd ecx,1Jz notfind;检查是否为i/o基址信息Mov ecx,dword ptr io_9054base_addressAnd ecx,0fffffffehMov dword ptr io_9054base_address,ecx ;去除i/o指示位并保存MOV AX,0B10AHMOV DI,18HINT 1AHJC notfind;读DVCC卡I/O基址信息Mov dword ptr io_base_address,ecxAnd ecx,1Jz notfind;检查是否为i/o基址信息Mov ecx,dword ptr io_base_addressAnd ecx,0fffffffehMov dword ptr io_base_address,ecx;去除i/o指示位并保存MOV AX,0B10AHMOV DI,1CHINT 1AHJC notfind;读DVCC卡MEMORY基址信息Mov dword ptr memory_base_address,ecxAnd ecx,1hJnz notfind;检查是否为memory基址信息Mov ecx,dword ptr memory_base_addressAnd ecx,0fffffff0hMov dword ptr memory_base_address,ecx;去除memory指示位并保存MOV AX,0B10AHMOV DI,3CHINT 1AHJC notfind ;读DVCC卡中断信息And cx,0ffhMov word ptr interrupt_line,cx ;去除interrupt其它指示位并保存 Mov dx,offset io9054baseaddress;显示i/o提示信息Mov ah,09hInt 21h Mov ax,word ptr io_9054base_addressCall disp;显示i/o基地址Mov dx,offset iobaseaddress;显示i/o提示信息Mov ah,09hInt 21hMov ax,word ptr io_base_addressCall disp;显示i/o基地址Mov dx,offset memorybaseaddress;显示memory提示信息Mov ah,09hInt 21hMov ax,word ptr memory_base_address+2Call disp;显示memory基地址高16位Mov ax,word ptr memory_base_addressShr ax,16Call disp;显示memory基地址低16位Mov dx,offset intnumber;显示interrupt提示信息Mov ah,09hInt 21hMov ax,word ptr interrupt_lineCall disp;显示中断号Mov dx,offset enter_return;加回车符,换行符Mov ah,09hInt 21hJmp exitnotfind:mov dx,offset pcicardnotfind;显示未找到DVCC卡提示信息mov ah,09hint 21hexit:mov ah,4chint 21h;退出disp proc near;显示子程序push dxpush cxpush bxmov cx,4mov bx,16loop1:push axpush cxsub bx,4mov cx,bxshr ax,cland al,0fh ;首先取低四位mov dl,alcmp dl,9 ;判断是否=9jle num ;若是则为0-9,ASCII码加30Hadd dl,7 ;否则为A-F,ASCII码加37Hnum: add dl,30hmov ah,02h ;显示int 21hpop cxpop axloop loop1pop bxpop cxpop dxret ;子程序返回disp endpcode endsend start实验一I/O地址译码一、实验目的掌握I/O地址译码电路的工作原理。二、实验原理和内容实验电路如图1-1所示,图中线路两端有节点的信号线需要用户用实验导线连接起来。其中74LS74为D触发器,可直接使用实验台上部系统板上的D触发器。74LS138为地址译码器。译码输出端Y0Y7在实验台中间系统板上引出,每个输出端包含8个地址,即:Y0:280H287H;Y4:2A0H2A7H;Y1:288H28FH;Y5:2A8H2AFH;Y2:290H297H;Y6:2B0H2B7H;Y3:298H29FH;Y7:2B8H2BFH;当CPU执行I/ O指令且地址在280H2BFH范围内,译码器选中,必有一根译码线输出负脉冲。 例如:执行下面两条指令,对应的译码输出脚输出一个负脉冲。 MOV DX,PORT1 OUT DX,AL(或IN AL,DX) 执行下面两条指令,对应的译码输出脚输出一个负脉冲。 MOV DX,PORT2 OUT DX,AL(或IN AL,DX)利用这个负脉冲控制发光二极管L0闪烁发光(亮灭循环),时间间隔通过软件延时实现。注意:命令中的端口地址PORT1、PORT2 是根据DVCC卡的I/O基址再加上偏移量计算出来的,不同的微机DVCC卡的I/O基址可能不同,需要事先查找出来,详细见用户手册第五章节5.3中第1012点介绍的查找方法。计算公式如下: PORT1 = 查找出的DVCC卡的I/O基址 + 偏移量 其中:偏移量 = Y0Y7中所选定的任意一个译码地址值-280H。下面的程序用到Y4,即2A0H。假设DVCC卡的I/O基地址=0C400H,经计算PORT1= 0C420H。三、编程提示1实验电路中D触发器的CLK 端输入脉冲时,上升沿使Q端输出高电平,L0发光,CLR端加低电平L0灭。2由于DVCC卡使用PCI总线,所以分配的IO地址每台微机可能都不同,编程时需要了解当前的微机使用那段IO地址并进行设置,获取方法见用户手册第五章节5.3第1012点中的介绍。下面的程序YMQ.ASM(在文件夹“ASM_汇编程序”中)是需要用户自己根据查找到的DVCC卡的I/O基址替换到程序中带下划线的位置(0C400H);程序YMQ.ASM(在文件夹“ASM_汇编程序_自动”中)是通过程序自动获取DVCC卡资源分配的实验程序。图 1-1四、参考程序1手动替换I/O基址的源程序文件名: YMQ.ASM(在文件夹“ASM_汇编程序”中)源程序清单如下:ioportequ 0C400H-0280houtport1equ ioport+2a0houtport2equ ioport+2a8hcode segmentassume cs:codestart:mov dx,outport1out dx,alcall delay ;调延时子程序mov dx,outport2out dx,alcall delay ;调延时子程序mov ah,1int 16hje startmov ah,4chint 21hdelay proc near ;延时子程序mov bx,2000lll: mov cx,0ll: loop lldec bxjne lllretdelay endpcode endsend start2自动获取DVCC卡资源的源程序文件名:YMQ.ASM(在文件夹“ASM_汇编程序_自动”中)源程序清单如下:outport1equ 2a0h-0280h outport2equ 2a8h-0280h io_port_addreequ 0cf8h ;32位配置地址端口 io_port_dataequ 0cfch ;32位配置数据端口 io_plx_id equ 0540610b5h ;DVCC卡设备及厂商IDdata segment io_9054base_address db 4 DUP(0);DVCC卡9054芯片I/O基地址暂存空间 io_base_address db 4 DUP(0);DVCC卡I/O基地址暂存空间 memory_base_address db 4 DUP(0);DVCC卡MEMORY基地址暂存空间 interrupt_line db 2 DUP(0);DVCC卡中断号暂存空间 pcicardnotfind db 0dh,0ah,DVCC pci card not find or address/interrupt error !,0dh,0ah,$ io9054baseaddress db 0dh,0ah,DVCC pci card 9054 Chip I/O Base Address : ,$ iobaseaddress db 0dh,0ah,DVCC pci card I/O Base Address : ,$ memorybaseaddress db 0dh,0ah,DVCC pci card Memory Base Address : ,$ intnumber db 0dh,0ah,DVCC pci card Interrupt Line : ,$ enter_return db 0dh,0ah,$ data ends stacks segment db 100 dup(?) stacks ends code segment assume cs:code,ds:data,SS:STACKS,es:data.386start:mov ax,datamov ds,axmov es,axmov ax,stacksmov ss,axcall findDVCC1;查找DVCC卡资源并显示start1:mov dx,word ptr io_base_addressadd dx,outport1out dx,alcall delay ;调延时子程序mov dx,word ptr io_base_addressadd dx,outport2out dx,alcall delay ;调延时子程序mov ah,1int 16hje start1mov ah,4chint 21hdelay proc near ;延时子程序mov bx,2000lll: mov cx,0ll: loop lldec bxjne lllretdelay endpfindDVCC1 proc near;查找DVCC卡资源并显示pushadpushfdmov ebx,080000000hfindDVCC1_next:add ebx,100hcmp ebx,081000000hjnz findDVCC1_continuemov dx,offset pcicardnotfind;显示未找到DVCC卡提示信息mov ah,09hint 21hmov ah,4chint 21h;退出findDVCC1_continue:mov dx,io_port_addremov eax,ebxout dx,eax ;写地址口mov dx,io_port_datain eax,dx ;读数据口cmp eax,io_plx_idjnz findDVCC1_next ;检查是否发现DVCC卡mov dx,io_port_addremov eax,ebxadd eax,14hout dx,eax ;写地址口mov dx,io_port_datain eax,dx ;读数据口mov dword ptr io_9054base_address,eaxand eax,1jz findDVCC1_next ;检查是否为i/o基址信息mov eax,dword ptr io_9054base_addressand eax,0fffffffehmov dword ptr io_9054base_address,eax ;去除i/o指示位并保存mov dx,io_port_addremov eax,ebxadd eax,18hout dx,eax ;写地址口mov dx,io_port_datain eax,dx ;读数据口mov dword ptr io_base_address,eaxand eax,1jz findDVCC1_next;检查是否为i/o基址信息mov eax,dword ptr io_base_addressand eax,0fffffffehmov dword ptr io_base_address,eax;去除i/o指示位并保存mov dx,io_port_addremov eax,ebxadd eax,1chout dx,eax ;写地址口mov dx,io_port_datain eax,dx;读数据口mov dword ptr memory_base_address,eaxand eax,1hjnz findDVCC1_next;检查是否为memory基址信息mov eax,dword ptr memory_base_addressand eax,0fffffff0hmov dword ptr memory_base_address,eax ;去除memory指示位并保存mov dx,io_port_addremov eax,ebxadd eax,3chout dx,eax;写地址口mov dx,io_port_datain eax,dx;读数据口and eax,0ffhmov word ptr interrupt_line,ax;去除interrupt其它指示位并保存mov dx,offset io9054baseaddress ;显示i/o提示信息mov ah,09hint 21hmov ax,word ptr io_9054base_addresscall findDVCC1_disp;显示i/o基地址mov dx,offset iobaseaddress;显示i/o提示信息mov ah,09hint 21hmov ax,word ptr io_base_addresscall findDVCC1_disp;显示i/o基地址mov dx,offset memorybaseaddress;显示memory提示信息mov ah,09hint 21hmov ax,word ptr memory_base_address+2call findDVCC1_disp;显示memory基地址高16位mov ax,word ptr memory_base_addressshr ax,16call findDVCC1_disp;显示memory基地址低16位mov dx,offset intnumber;显示interrupt提示信息mov ah,09hint 21hmov ax,word ptr interrupt_linecall findDVCC1_disp;显示interrupt号mov dx,offset enter_return;加回车符,换行符mov ah,09hint 21hpopfdpopadretfindDVCC1 endpfindDVCC1_disp proc near;显示子程序push dxpush cxpush bxmov cx,4mov bx,16findDVCC1_disp_loop1:push axpush cxsub bx,4mov cx,bxshr ax,cland al,0fh;首先取低四位mov dl,alcmp dl,9;判断是否=9jle findDVCC1_disp_num;若是则为0-9,ASCII码加30Hadd dl,7 ;否则为A-F,ASCII码加37HfindDVCC1_disp_num:add dl,30hmov ah,02h;显示int 21hpop cxpop axloop findDVCC1_disp_loop1pop bxpop cxpop dxret;子程序返回findDVCC1_disp endp code endsend start实验二 简单并行接口扩展输出一、实验目的掌握简单并行接口扩展的工作原理及使用方法。二、实验内容1按下面图2-1连接简单并行输出接口电路图,74LS273和74LS32在模块32IO上, 74LS273为8通道下降延触发锁存器,8个D输入端通过JD1分别接系统数据总线D0D7,8个Q输出端接开关量输出显示电路L0L7。CLK引脚为锁存控制信号,下降延有效。当下降延到来时,输出数据线琐存输入端数据线上的数据。CLR引脚为输出端清零信号,低电平有效,图中接低电平复位脚/RST。2编程从键盘输入一个字符或数字,将其ASC码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。当输入ESC键时,程序运行结束。图2-1三、编程提示1上述并行输出接口的地址为2A8H,通过上述并行接口电路输出数据需要3条指令: MOV AL,数据 MOV DX,2A8H OUT DX,AL2由于DVCC卡使用PCI总线,所以分配的IO地址每台微机可能都不同,编程时需要了解当前的微机使用那段IO地址并进行设置,获取方法见用户手册第五章节5.3第1012点中的介绍。下面的程序D273.ASM(在文件夹“ASM_汇编程序”中)是需要用户自己根据查找到的DVCC卡的I/O基址替换到程序中带下划线的位置(0C400H)。四、参考流程图 如图2-2所示NY等待键盘输入是ESC? 开始结束从端口2A8H输出其ASC码图2-2五、参考程序 源程序文件名:D273.ASM(在文件夹“ASM_汇编程序”中)源程序清单如下:ioportequ 0C400H-0280hls273equ ioport+2a8hcode segment assume cs:codestart:mov ah,2 ;回车符mov dl,0dhint 21hmov ah,1 ;等待键盘输入int 21hcmp al,27 ;判断是否为ESC键je exit ;若是则退出mov

温馨提示

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

评论

0/150

提交评论