已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
32位微机原理与接口技术实验指导微机原理与应用实验指导书目录 实验一 调试工具debug的使用及基本指令用法2实验二 宏汇编程序的基本语法及运算类程序编制4实验三 系统功能调用7实验四 汇编语言码制转换程序设计9实验五 简单I/O接口的操作12实验六 可编程并行接口芯片8255A的使用14实验七 查询方式的串行通讯接口实验21实验八 A/D、DA转换实验2237实验一 调试工具debug的使用及基本指令用法1、实验目的(1)掌握debug调试工具的使用方法。(2)测试8086的各种基本指令的用法。2、实验设备PC机一台或QTH-2008PC实验设备一套。3、实验内容(1)debug的使用 debug的进入和退出c:masmdebug- 这是debug的提示符,在此可以输入debug的命令-q 退出debug 及修改CPU内部的各寄存器-r 观察各寄存器的内容AX=0000 BX=0000 CX=0000 DX=0000 SP=CFDE BP=0000 SI=0000 DI=0000DS=10DD ES=10DD SS=10DD CS=10DD IP=0100 NV UP DI PL NZ NA PO NC10DD:0100 7C0A JL 010C -r ax 显示并修改AX的内容AX 0000:1234 将AX的内容改为1234H-rf 显示并修改标志寄存器的内容NV UP DI PL NZ NA PO NC -ov dn 将标志寄存器的OF置为OV;DF置为DN。 观察观察和修改内存单元的内容-d 2000 查看从地址DS:2000H开始的128个单元的内容10DD:2000 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .10DD:2010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .10DD:2020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .10DD:2030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .10DD:2040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .10DD:2050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .-e 2000 修改从地址DS:2000H开始内存单元的内容10DD:2000 00.01 00.02 划线数字为键入的内容,连续修改按空格键 输入程序-a 100 从CS:100H处开始输入程序(默认的程序起始地址)10DD:0100 mov ax,1234 输入汇编指令10DD:0103 mov 2002,ax10DD:0106 回车退出程序输入-a 103 修改103处的指令10DD:0103 mov 2000,ax 输入汇编指令10DD:0106- 单步执行程序-t=100 执行CS:100H处的一条指令,自动显示寄存器内容及下一条指令。AX=1234 BX=0000 CX=0000 DX=0000 SP=CFDE BP=0000 SI=0000 DI=0000DS=10DD ES=10DD SS=10DD CS=10DD IP=0103 OV DN DI PL NZ NA PO NC10DD:0103 A30020 MOV 2000,AX DS:2000=0201-t 继续执行下一条指令 反汇编程序-u 100 从CS:100H处开始反汇编10DD:0100 B83412 MOV AX,123410DD:0103 A30020 MOV 2000,AX 刚才输入的两条指令10DD:0106 36 SS: 乱码10DD:0107 A22C41 MOV 412C,AL10DD:010A EB22 JMP 012E10DD:010C 83F906 CMP CX,+0610DD:010F 750D JNZ 011E10DD:0111 807C0A2C CMP BYTE PTR SI+0A,2C10DD:0115 7505 JNZ 011C10DD:0117 FF36A22C PUSH 2CA210DD:011B 41 INC CX10DD:011C EB10 JMP 012E10DD:011E 83F909 CMP CX,+09 执行一段程序-g=100 106 从CS:100H开始,执行到CS:106处停止。AX=1234 BX=0000 CX=0000 DX=0000 SP=CFDE BP=0000 SI=0000 DI=0000DS=10DD ES=10DD SS=10DD CS=10DD IP=0106 OV DN DI PL NZ NA PO NC10DD:0106 36 SS:10DD:0107 A22C41 MOV 412C,AL SS:412C=00(2)基本指令的用法在debug中输入一些基本指令并执行,观察并记录指令的执行情况。4、实验步骤(1) 启动Debug调试工具,根据实验内容,验证Debug命令及指令执行情况。(2) 观察调试过程中指令执行后各寄存器及数据区的内容。5、实验问题探讨(1)如何利用Debug去观察中断向量表?(2)机器复位后执行的第一条指令在哪儿?是什么指令?(3)在debug中输入16进制数时,需要键入H吗?(4)从当前位置开始执行指令到CS:0212H处,在Debug中应该使用什么命令?实验二 宏汇编程序的基本语法及运算类程序编制1、实验目的(1) 学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。(2) 熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。(3) 掌握利用汇编实现简单、分支、循环结构设计2、实验设备PC机一台或QTH-2008PC实验设备一套。3、实验内容(1)编制包含多种数据定义伪指令的完整程序,经汇编、连接后,装入DEBUG, 观察数据的存储情况,从而掌握常用伪指令的作用。举例:原始:X1 DB 12H, ABX2 DW 12H, ABNUM=$-X1X3 DD 12H;以上数据在内存中如何存放?PUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV AL,X1;翻译成机器指令是什么格式?MOV AX,X2 ;?MOV BL,NUM ;?在debug中执行完MOV DS,AX指令后(为什么?),使用-d 0 观察数据段的存储单元的数据存储情况。自己修改后的代码如下:DATA SEGMENTX1 DB 12H,AB;数据段,定义变量x1,因为是DB,所以A和B单独作为ASCII码看X2 DW 12H,AB;在内存中存贮为:12 00 42 41(因为DW双字,所以AB,A是高地址,放在后面)NUM =$-X1 ;$地址计数器X3 DD 12H ;占用4字DATA ENDSCODE SEGMENTASSUME CS:CODE ,DS:DATASTART:PUSH DSXOR AX,AXPUSH AXMOV AX,DATA ;因为DATA不能直接赋给DSMOV DS,AXMOV AL,X1 ;翻译成机器指令是什么格式?mov AL,0000 DS:0000=0012MOV AX,X2MOV BL,NUM ;num=07CODE ENDSEND START(2)在内存BUF开始的单元中,存放着一组无符号字节数据,编程查找其中最大值并存于MAX单元中。4、编程指导利用循环程序实现查找最大值,取出第一个数作为最大值初值,以次和后续数据进行比较比次数大则替换,否则保持不变.比较次数为个数减1.注意使用汇编、连接、调试的方法,尤其是DEBUG的使用。在DEBUG状态下执行程序并设置断点,通过察看内存,看程序是否执行正确。所编写的汇编程序,要注意结构,只有结构完整,汇编才能通过。5、实验步骤方法一、非集成开发环境(1) 使用EDIT或WINDOWS下的记事本或写字板输入你的程序并保存到c:masm目录下,命名为t3.asm(后缀必须是asm).(2) 汇编过程:c:masmmasm t3; 如果没有错误,将生成t3.obj文件(3) 连接过程:c:masmlink t3;如果没有连接错误,将生成t3.exe文件(4) 调试程序:c:masmdebug t3.exe将该程序装入debug进行调试。方法二、使用QTHPC2008集成开发环境,建立项目文件、输入源程序、编译、连接、调试。6、参考程序图3-1 查找最大值程序流程图DATA SEGMENT ;数据段定义 BUF DB 30,25,56,100,78,97,45,34,44 COUNT EQU $-BUF MAX DB ? MIN DB ?DATA ENDS STACK SEGMENT PARA STACK STA ;堆栈段 DB 100 DUP(?)STACK ENDSCODE SEGMENT ;代码段定义 ASSUME CS:CODE,DS:DATA,SS:STACKMAIN PROC FARSTART: PUSH DS ;前三句构造返回指针 MOV AX,0 PUSH AX MOV AX,DATA ;对数据段赋值 MOV DS,AX MOV CX,COUNT ;数据个数 MOV SI,OFFSET BUF MOV AL,SI DEC CX ;循环次数为个数减1AGA: INC SI CMP AL,SI JA NEXT MOV AL,SINEXT: LOOP AGA MOV MAX,AL ;结果处理 EXIT: RET MAIN ENDPCODE ENDS END START AX值为64H,十进制就是100,正确7 实验问题探讨(1) 伪指令中的表达式是在什么阶段进行运算得出结果的?汇编2(2) 如果数据为一组有符号数,如何修改?修改跳转即可,无符号数与有符号数的比较跳转指令不同(3) 如果在查找最大值的同时查找最小值并存于MIN单元中,应如何实现?课本139实验三 系统功能调用1. 实验目的(1) 掌握系统调用的方法, 包括入口参数设置,功能号设置,系统调用和出口参数获得。(2) 进一步熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法,尤其是对带有中断调用的汇编程序的调试。(3) 掌握利用汇编实现键盘输入,屏幕显示的程序设计。2、实验仪器PC机一台或QTH-2008PC实验设备一套。 3. 实验内容 (1) 利用汇编语言实现以下过程:首先在屏幕显示What is your name: 然后等待用户从键盘输入姓名存入内存指定区间,输出回车换行后,显示ok!。(2) 从键盘输入一串字符以空格为结束标记,并按逆序显示输出。4. 编程指导DOS 功能调用的一般步骤为: 如有必要,装入入口参数到规定的寄存器; 装入功能号到 AH 中;如有必要,装入子功能号到 AL 中; 调用 DOS 相应功能的中断 ( 这里一般指 INT 21H ); 如有必要,取出返回结果或出错信息利用DOS系统功能调用可以实现读键盘、显示,对磁盘、文件的操作、输入输出操作、时间的设置和读取等。注意对于包含有系统功能调用的汇编程序的调试方法,在单步调试时当遇到 INT 21H 指令时不能用 T 命令跟踪,因为会进入到中断服务程序内部,这并不是我们所关心的。解决的方法为:在单步执行INT 21H 时,可用G命令代替T命令,G 不用接起始地址,断点为INT 21H 的下一句地址。或者,有一些DEBUG 工具包含V 或 B 命令可以不进入中断服务程序内部,而实现单步运行。图3-2 逆序输出流程图5编程参考(1) 程序流程图(2) 实验内容(1)参考程序DATA SEGMENT ;数据段定义 STR1 DB What is you name:$ STR2 DB OK!$ STR3 DB 20 DB ? DB 20 DUP(?)DATA ENDS STACK SEGMENT PARA STACK STA ;堆栈段 DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK MAIN PROC FARSTART: PUSH DS ;前三句构造返回指针 MOV AX,0 PUSH AX MOV AX,DATA ;对数据段赋值 MOV DS,AX MOV DX,OFFSET STR1 ;显示 MOV AH,9 INT 21H MOV DX,OFFSET STR3 ;接受输入字符 MOV AH,10 INT 21H MOV DL,0DH ;输出回车换行 MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H MOV DX,OFFSET STR2 ;显示ok! MOV AH,9 INT 21HEXIT: RET MAIN ENDPCODE ENDSEND START如果直接运行到程序结尾:(3) 实验内容(2)参考程序DATA SEGMENT ;数据段定义 BUF DB 100 DUP(?)DATA ENDS STACK SEGMENT PARA STACK STA ;堆栈段 DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK MAIN PROC FARSTART: PUSH DS ;前三句构造返回指针 MOV AX,0 PUSH AX MOV AX,DATA ;对数据段赋值 MOV DS,AX MOV SI,OFFSET BUF MOV CX,0 AGA: MOV AH,1 ; 接受字符 INT 21H CMP AL, ;是否是空格 JZ NEXT MOV SI,AL ;存入字符 INC SI INC CX JMP AGA NEXT: MOV DL,0DH ;输出回车换行 MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H LOP1: DEC SI ; 逆序输出 MOV DL,SI MOV AH,2 INT 21H LOOP LOP1EXIT: RET MAIN ENDPCODE ENDS END START6思考题 (1) 利用堆栈实现程序2的要求。(2) 利用9号调用编写DOS界面下的简易菜单项。实验四 汇编语言码制转换程序设计1. 实验目的与要求 (1) 掌握码制转换的基本原理及相应的转换程序的编写。(2) 进一步掌握利用DOS系统功能调用实现键盘输入,屏幕显示的功能。2、实验设备PC机一台或QTH-2008PC实验设备一套。 3. 实验内容 (1) 键盘输入一字符,以二进制形式显示其ASCII值。例如:输入字符A 在屏幕显示0100 0001。(2) 键盘输入一串数字串,以空格为结束标记,统计其中数字字符的个数存入CX中,求这些数字之和存入BX中。例如:输入1234 则 CX=4 BX=0AH.(3) 键盘输入十进制整数(假定范围为0-32767),然后转换成二进制格式存储。4. 编程指导在程序设计中,经常需要进行代码转换。常用的代码转换有:BCD码转二进制码,二进制码转BCD码;ASCII码转 BCD码, BCD码转ASCII码;二进制码转ASCII码,ASCII码转二进制码等。实验(1)是将二进制表示的数据显示,对应每位二进制数0,1的ASCII分别为30H和31H,将其转换后在用2号系统功能调用在屏幕上显示出来。要注意2号调用的出口参数为AL,AL为1调用成功,AL为0调用不成功。实验(2)实验(3)都要注意从键盘输入的数字实际上是数的ASCII码,必需先将其转换为0-9的数后才能运算,实验(2)将其相加,实验(3)要分别乘各自得权后累加在一起。5流程框图和参考程序(1) 实验内容(1)参考程序STACK SEGMENT PARA STACK STA ; 堆栈段 DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACK START:MOV AH,1 INT 21H MOV BL,AL ;AL放输入字符的ASCII MOV CX,8 AGA: SHL BL,1 ;循环左移一位 MOV DL,30H ADC DL,0 ;30H加ASCII左移出的CF位 MOV AH,2 ;显示的ASCII就在DL中 INT 21H LOOP AGAEXIT: MOV AX,4C00H INT 21HCODE ENDSEND START(2) 实验内容(2)参考程序STACK SEGMENT PARA STACK STA ; 堆栈段 DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACK START:MOV CX,0 MOV BX,0 INPUT:MOV AH,1 INT 21H CMP AL, ;空格结束 JZ EXIT CMP AL,30H ;下限 JB INPUT ;小于下限,不是数字字符 CMP AL,39H JA INPUT ;大于上限,不是数字字符 INC CX ;计数增1 SUB AL,30H ;得到输入的数的真值 MOV AH,0 ;高位清零(16位的加法) ADD BX,AX ;累加和 JMP INPUT EXIT: MOV AX,4C00H INT 21H CODE ENDSEND START(3) 实验内容(3)参考程序图3-4 ASCII码转换为二进制数DATA SEGMENT ;数据段定义 KEY_BUF DB 10 DB ? DB 10 DUP(?) ;定义缓冲区保存10个字符 DATA1 DW ? ;保存十进制转换后的二进制 DATA ENDS STACK SEGMENT PARA STACK STA ; 堆栈段定义 DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK MAIN PROC FARSTART: PUSH DS ;前三句构造返回指针 MOV AX,0 PUSH AX MOV AX,DATA ;对数据段赋值 MOV DS,AXMOV DX,OFFSET KEY_BUF ; MOV AH,0AH ;键盘输入字符串,存到buf中,回车结束 INT 21HMOV SI,OFFSET KEY_BUF+1 ;DB ?的地址 MOV BL,SI ;BL中是输入字符的个数 INC SI MOV AX,0TRANS: MOV DX,10 MUL DX ;AX*DX MOV DH,0 ;高四位清零比如输入1234,31H,(1*10+2)*10+3.。 MOV DL,SI AND DL,0FH ; ADD AX,DX ;得到真正的数 INC SI DEC BL JNZ TRANS MOV DATA1,AX ;CALL OUTPUT ;调用输出显示的子程序 RETMAIN ENDPCODE ENDS END START 6思考题 (1) 将实验一中的最大值结果以十六进制形式显示。(2) 在屏幕上连续输出0-98的十进制数字。实验五 简单I/O接口的操作1、实验目的(1) 掌握接口操作的基本方法,掌握数据输入输出程序编制的方法。2、实验设备QTH-2008PC实验设备一台,键盘、鼠标、显示器各一件。3、实验内容(1) 利用74LS244作为输入口,读取开关状态,并将此状态通过74LS273驱动发光二极管显示出来。(2) 控制8个LED,实现流水灯的功能。4、实验说明(1) 74LS244是一种三态输出的8总线缓冲驱动器,无锁存功能,当G为低电平时,Ai信号传送到Yi,当为高电平时,Yi处于禁止高阻状态。(2) 74LS273是一种8位D触发器,当CLR为高电平且CLK端电平正跳变时,D0D7端数据被锁存到8D触发器中。(3) 端口地址范围: IOY0:180H18FH IOY1: 190H19FHIOY2:1A0H1AFH IOY3: 1B0H1BFH。图4-1 74LS244与74LS273扩展I/O口原理图5、实验原理图6、实验步骤(1) 实验连线:(确保电源关闭) 244的CSPC104总线接口模块的IOY0,Y7Y0开关K01K08。 273的CSPC104总线接口模块的IOY1,Q7Q0发光二极管L1L8。 该模块的WR、RD分别连到PC104总线接口模块的IOWR、IORD。图4-2扩展I/O口连线图 该模块的数据(AD0AD7)连到PC104总线接口模块的数据(D0D7)。(2) 连线检查无误后,开机上电。(3) 利用debug中的i或o命令,测试一下端口是否好用。(4) 编制程序(略)(5) 拨动开关,观察发光二极管的变化。7、参考程序LS244 EQU 0180H ;244片选信号LS273 EQU 01a0H;273片选信号MY_STACK SEGMENT PARA STACK DB 100 DUP(?)MY_STACK ENDSMY_CODE SEGMENT PARA CODEMY_PROC PROC FARASSUME CS:MY_CODE,DS:MY_DATAASSUME SS:MY_STACKMAIN: MOV AX, MY_DATAMOV DS, AX READ1: MOV DX, LS244 ;读取开关状态INAL,DXMOVDX,LS273OUTDX,AL ;送LED显示CALLBREAKJMPREAD1MY_PROC ENDp; BREAK PROC NEAR ;按任意键退出PUSHFPUSHAXPUSHDXMOV AH,06HMOV DL,0FFHINT 21HJE RETURNMOV AX,4C00HINT 21HRETURN: POPDXPOPAXPOPFRETBREAK ENDPMY_CODE ENDSEND MAIN8、思考题(1) 如果IOWR没有连接或线断了,会出现什么现象?(2) 如果指示灯不亮,你如何排查解决此问题?(3) 如果74LS244和74LS273使用同一个端口地址?能行么?为什么?实验一下。(4) 假定244或273的CS接IOY0,用端口地址181H或182H去访问244或273可以么?为什么?实验六 可编程并行接口芯片8255A的使用1、实验目的(1) 了解可编程并行接口芯片8255的内部结构、工作方式、初始化编程及应用。2、实验设备QTH-2008PC实验设备一台,键盘、鼠标、显示器各一件。3、实验内容(以下3个实验任选一个)(1) 流水灯实验:利用8255的A口、B口循环点亮16只发光二极管。(2) 交通灯实验:利用8255的A口模拟交通信号灯。(3) I/O输入输出实验:利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示。4、实验说明(1) 8255A的内部结构: 数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。输入输的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。 三个端口A,B和C:A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。C端口包含一个8位数据输出锁存器及缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。 A组和B组控制电路:这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。方式控制字的高5位决定A组工作方式,低3位决定B组的工作方式。对C口按位复位命令字可对C口的每一位实现置位或复位。A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部。 读写控制逻辑:用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。(2) 8255A的工作方式方式0基本输入输出方式;方式1选通输入输出方式;方式2双向选通输入输出方式。(3) 8255A的控制字:表4-1 8255A方式控制字1D6D5D4D3D2D1D0特征位A组方式00=方式 01=方式11X=方式2A口0=输出1=输入C口高4位0=输出1=输入B组方式0=方式01=方式1B口0=输出1=输入C口低4位0=输出1=输入表4-2 C口按位置位/复位控制字0D6D5D4D3D2D1D0特征位不用位选择000=C口0位111=C口7位0=复位1=置位图4-3可编程并行接口8255电路5、实验原理图6 实验步骤(1) 流水灯实验: 实验连线图4-4流水灯实验接线图 该模块的WR、RD分别连到PC104总线接口模块的IOWR、IORD。 该模块的数据(AD0AD7)、地址线(A0A7)分别连到PC104总线接口模块的数据(D0D7)、地址线(A0A7)。 8255模块选通线CE连到PC104总线接口模块的IOY0。 8255的PA0PA7连到发光二极管的L1L8;8255的PB0PB7连到发光二极管的L9L16。 编写程序,实现流水灯功能。(2) 交通灯实验 实验连线:图4-5交通灯实验接线图 该模块的WR、RD分别连到PC104总线接口模块的IOWR、IORD。选通线CE连到IOY0。 该模块的数据(AD0AD7)、地址线(A0A7)分别连到PC104总线接口模块的数据(D0D7)、地址线(A0A7)。 8255的PA0-L7、PA1-L6、PA2-L5、PA3-L3、PA4-L2、PA5-L1。 编制程序。(3) I/O输入输出实验: 实验连线图4-6 I/O输入输出实验接线图 该模块的WR、RD分别连到PC104总线接口模块的IOWR、IORD。 该模块的数据(AD0AD7)、地址线(A0A7)分别连到PC104总线接口模块的数据(D0D7)、地址线(A0A7)。 8255模块选通线CE连到PC104总线接口模块的IOY0。 8255的PA0PA7接开关K0K7,8255的PB0PB7接发光二极管L1L8。 编制程序。7、参考程序(1)流水灯参考程序P8255_A EQU 0180H ;Base Address Register2P8255_B EQU 0181HP8255_C EQU 0182HP8255_MODE EQU 0183HDELAY_SETEQU 40H ;延时常数MY_STACKSEGMENTPARA STACK DB100 DUP(?)MY_STACKENDSMY_DATA SEGMENTPARA DATALADB?LBDB ?MY_DATAENDSMY_CODE SEGMENT PARA CODEMY_PROCPROCFARASSUME CS:MY_CODE,DS:MY_DATA ASSUMESS:MY_STACKMAIN:MOVAX,MY_DATAMOVDS,AX MOV DX,P8255_MODE MOV AL,80H OUT DX,AL MOV DX,P8255_A MOV AL,7FH OUT DX,AL MOV LA,AL MOV DX,P8255_B MOV AL,0FEH OUT DX,AL MOV LB,ALCALL DELAY A1: MOV AL,LA ROR AL,1 MOV LA,AL MOV DX,P8255_A OUT DX,AL MOV AL,LB ROL AL,1 MOV LB,AL MOV DX,P8255_B OUT DX,AL CALL DELAY CALL BREAK JMP A1MY_PROC ENDPDELAYPROC NEAR MOV CX,DELAY_SETD1: MOV AX,-1D2:DEC AX JNZ D2 LOOPD1 RETDELAYENDpBREAKPROC NEAR MOV AH,06H MOV DL,0FFH INT 21H JE RETURN MOV AX,4C00H INT 21HRETURN:RETBREAK ENDPMY_CODE ENDSEND MAIN (2) 交通灯参考程序MY_STACK SEGMENT PARA STACK DB 100 DUP(?)MY_STACK ENDSMY_DATA SEGMENT PARA DATAP8255_A DW 0180H P8255_B DW 0181HP8255_C DW 0182HP8255_MODE DW 0183HDELAY_SET0EQU05FFH ;延时常数DELAY_SET1EQU5FFH ;延时常数MY_DATA ENDSMY_CODE SEGMENT PARA CODEMY_PROC PROC FARASSUME CS:MY_CODE,DS:MY_DATA,SS:MY_STACKSTART:MOV AX,MY_DATAMOV DS,AXMOV DX,P8255_MODE MOV AL,80H;3个口全部为输出 OUT DX,ALMOV DX,P8255_ACALL ST0;全为红灯TRAFFIC1:CALL ST1;南北绿灯,东西红灯CALL ST2;南北红灯闪烁,东西红灯CALL ST3;南北红灯,东西为绿灯CALL ST4;南北红灯,东西黄灯闪烁CALL BREAKJMP TRAFFIC1MY_PROC ENDp;/*初始状态全为红灯*/ST0PROC NEARMOVAL,1BHOUTDX,ALCALLDELAYRETST0ENDp; /*南北为绿灯,东西为红灯子程序*/ST1PROC NEARMOVDX,P8255_AMOVAL,33HOUTDX,ALMOVCX,5DELY1:CALLDELAY1LOOPDELY1RETST1ENDp;/*南北红灯闪烁,东西为红灯子程序*/ST2PROC NEARMOVCL,5HST20:MOVAL,2BHOUTDX,ALCALLDELAY1MOVAL,3BHOUTDX,AlCALLDELAY1LOOPST20RETST2ENDp;/*南北为红灯,东西为绿灯子程序*/ST3PROC NEARMOVAL,1EHOUTDX,ALMOVCX,5DELY2:CALLDELAY1LOOPDELY2RETST3ENDp;/*南北为红灯,东西黄灯闪烁子程序*/ST4PROC NEARMOVCL,5HST40:MOVAL,1DHOUTDX,ALCALLDELAY1MOVAL,1FHOUTDX,ALCALLDELAY1LOOPST40RETST4ENDp;/*延时子程序*/DELAY PROC NEAR;延时程序PUSHFPUSH DXPUSH CXMOV DX,DELAY_SET0D1: MOV CX,-1D2: DEC CX JNZ D2 DECDX JNZD1 POPCX POPDX POPF RETDELAYENDpDELAY1PROC NEAR ;延时程序PUSHFPUSHDXPUSHCXMOV DX,DELAY_SET1D11: MOV CX,-1D12: DEC CX JNZ D12 DECDX JNZD11 POPCX POPDX POPF RETDELAY1 ENDpBREAKPROC NEAR ;按任意键退出PUSHFPUSH AXPUSH DX MOV AH,06H MOV DL,0FFH INT 21H JE RETURN MOV AX,4C00H INT 21HRETURN:POPDXPOPAXPOPFRETBREAKENDPMY_CODE ENDS END START(3)I/O输入输出参考程序LS244 EQU 0180H ;244片选信号LS273 EQU 01a0H ;273片选信号MY_STACK SEGMENT PARA STACK DB 100 DUP(?)MY_STACK ENDSMY_CODE SEGMENT PARA CODEMY_PROC PROC FARASSUME CS:MY_CODE,DS:MY_DATA,SS:MY_STACKMAIN: MOV AX,MY_DATAMOV DS,AXREAD1: MOV DX,LS244 ;读取开关状态IN AL,DXMOV DX,LS273OUT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年压力管道操作试题及答案
- 江苏版小学六年级语文下期末测试卷2025-2026
- 办公绿植课件
- 2026年髋关节置换模拟试卷及参考答案
- 2026年中介服务行业管理能力测试模拟试卷及参考答案
- 2026年教师资格信息素养实践模拟试卷(含答案)
- 2026年品种法模拟试卷及答案
- 2026年中国地理与气候知识竞赛模拟试卷及答案
- 2026年口腔医师执业资格考试模拟试卷及答案
- 2026年三级安全教育安全培训模拟试卷带答案
- 咖啡厅服务标准与质量管理手册(标准版)
- 交通银行审计总监面试题库及解析
- 无人机通信与导航课件
- T-CITS 606-2025 临床检验报告单规范化编写指南
- 民办学校理事会会议纪要范本
- 和面机操作安全培训课件
- 质量体系文件宣贯课件
- 2025年小学道德与法治教师专业考试试题及答案
- 石墨产品仓库管理制度
- 酸菜购销合同协议
- 维修钳工知识培训课件
评论
0/150
提交评论