微机原理实验指导书(反编译码).doc_第1页
微机原理实验指导书(反编译码).doc_第2页
微机原理实验指导书(反编译码).doc_第3页
微机原理实验指导书(反编译码).doc_第4页
微机原理实验指导书(反编译码).doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

微机原理实验指导书商丘师范学院物理与信息工程系编实验一二进制多位加法运算实验- 2 -一、实验目的- 2 -二、实验仪器- 2 -三、实验原理- 2 -四、实验步骤- 3 -五、问题思考- 3 -实验二 数码显示实验- 4 -一、实验目的- 4 -二、实验仪器- 4 -三、实验原理- 4 -四、实验步骤- 6 -五、问题思考- 6 -实验三 数据块移动实验- 8 -一、实验目的- 8 -二、实验仪器- 8 -三、实验原理- 8 -四、实验步骤- 9 -五、问题思考- 9 -实验四 多分支程序实验- 11 -一、实验目的- 11 -二、实验仪器- 11 -三、实验原理- 11 -四、实验步骤- 12 -五、问题思考- 12 -实验五 8255A并行口实验- 14 -一、实验目的- 14 -二、实验仪器- 14 -三、实验原理- 14 -四、实验步骤- 16 -五、问题思考- 17 -实验六 8259单级中断控制器实验-19 -一、实验目的- 19 -二、实验仪器- 19 -三、实验原理- 19 -四、实验步骤- 23 -五、问题思考- 23 -实验一二进制多位加法运算实验一、实验目的(1)学习使用加法类运算指令编程及调试方法(2)理解程序、数据在存储器中的存储方式二、实验仪器微机、微机原理接口实验仪三、实验原理计算XYZ?(X、Y、Z为16位二制数)。由于本实验是三个十六位二制数相加运算,因此,当XY时要考虑用ADC指令,把进位C加到结果的高16位中,当(XY)Z时,再把进位C加到结果的高16位中,本实验设定三个加数0FFFFH,计算结果应为2FFFDH。数据X、Y、Z存放在内存4000H4005H单元中。运算结果保留在内存4100H4102H单元中,其中4102H单元存放进位。程序流程图: 实验程序:CODE SEGMENT ;程序段开始 ASSUME CS:CODE ;定义CS为程序段段寄存器 ORG 2CA0H;程序从存储器地址2CA0H开始存放START: CLC;清除进位标志 MOV SI,4000H;把数4000H存入SI寄存器 MOV SI,0ffffH;被加数0ffffH(X)存入SI指定的存储器单元(4000H、4001H)10000 MOV SI+2,0ffffH;加数0ffffH(Y)存入SI+2指定的存储器单元(4002H、4003H)20000 MOV SI+4,0ffffH;加数0ffffH(Z)存入SI+4指定的存储器单元(4004H、4005H)30000 MOV AX,0000H;清除和的进位存储单元(4102H单元=0) MOV SI+102H,AX; MOV AX,SI;从存储器中取出被加数(X), ADD AX,SI+2;从存储器中取出加数(Y),实现X+Y,和在AX寄存器中,进位在CY中 ADC SI+102H,0000;把进位存入4102H单元,SI+102H+0+CY ADD AX,SI+4;(X+Y)+Z MOV SI+100H,AX;X+Y+Z和的低16位存入4100H、4101H中 ADC SI+102H,0000;(X+Y)+Z和的进位存入4102H单元中 JMP $;循环执行JMP指令,程序完成 CODE ENDS;程序段结束 END START;程序结束四、实验步骤(1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开8kAsm文件夹,点击S1.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。(2)运算结果保留在内存4100H4102H单元中,点击DICE-8086K软件中存贮器RAM窗口,输入RAM的起始地址4100、4101、4102,单元内容应为FD、FF、02。(3)连续运行程序,从程序、数据存储器相应地址查看程序代码、运算数据、运算结果。(4)修改运算数据X=10000、Y=20000、Z=30000,单步运行程序,观察存储器窗口、查看运行结果。2710 4E20 7530五、问题思考(1)能不能直接把变量X、Y、Z放入内存?(2)怎样修改运算数据?(3)查看运行结果时应注意什么问题?实验1二进制多位加法运算程序反编译代码地址 存储值 反编译的指令2CA0 F8 CLC2CA1 BE0040 MOVSI,40002CA4 C704FFFF MOVWORD PTR SI,FFFF2CA8 C74402FFFF MOVWORD PTR SI+02,FFFF2CAD C74404FFFF MOVWORD PTR SI+04,FFFF2CB2 B80000 MOVAX,00002CB5 89840201 MOVSI+0102,AX2CB98B04 MOVAX,SI2CBB 034402 ADDAX,SI+022CBE 8394020100 ADCWORD PTR SI+0102,+002CC3034404 ADDAX,SI+042CC6 89840001 MOVSI+0100,AX2CCA 8394020100 ADCWORD PTR SI+0102,+002CCF EBFE JMP2CCF实验二 数码显示实验一、实验目的(1)了解LED数码管动态显示的工作原理及编程方法。(2)理解显示缓冲器、字型码,掌握查表方法。二、实验仪器微机、微机原理接口实验仪三、实验原理实验箱数码显示电路如图所示,驱动数码管需要两个条件,一是通过字形代码端口输出字形代码,二是通过位型代码端口输出位型代码。字形代码放在字形代码表中,使用DB指令建立表格,位型代码由右移指令实现。显示数据由内存中的显示缓冲区提供,经过查表指令取出字形显示代码输出显示,采用使用动态显示方式,循环输出显示代码。程序流程图:实验程序:CODE SEGMENT ;程序段开始ASSUME CS:CODE;定义CS为程序段段寄存器 ORG 2DF0H;程序从存储器地址2DF0H开始存放START:JMP START0;跳到程序开始处 PA EQU 0FF21H ;把PA字符定义给字位口地址0FF21H,使程序中的PA代表0FF21H PB EQU 0FF22H;把PB字符定义给字形口地址0FF22HPC EQU 0FF23H ;把PC字符定义给键入口地址0FF23HBUFDB ?,?,?,?,?,?;在存储器中预定6个存储单元,作为6位数码管的显示缓冲区data1: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h;定义显示字型码 db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0ffh,0ffh,0ffhSTART0:CALL BUF1;程序开始,调用BUF1子程序CON1: CALL DISP;调用显示子程序 JMP CON1;跳转到CON1,进行主程序循环DISP: MOV AL,0FFH;把0FFH放入AX寄存器的低8位AL寄存器MOV DX,PA;字位口地址0FF21H存入DX寄存器 OUT DX,AL;把0FFH送到字位口,准备把所有数码管熄灭 MOV CL,0DFH;6位数码管最高位的字位码存入CL寄存器 MOV BX,OFFSET BUF;把显示缓冲区首地址存入BX寄存器DIS1: MOV AL,BX;从显示缓冲区中取出一个显示码存入AX的低8位AL MOV AH,00H;AX寄存器高八位清零 PUSH BX;把BX寄存器的值存入堆栈存储器,以用于新的场合 MOV BX,OFFSET DATA1;把字型码表的首地址存入BX寄存器 ADD BX,AX;显示码+字型码表首地址=表内单元地址 MOV AL,BX;查表,把某个显示码的字型码从存储器取出 POP BX;恢复原来BX的值 MOV DX,PB;字形口地址0FF22H存入DX寄存器 OUT DX,AL;把字型码输出到字形口地址0FF22H MOV AL,CL;把字位码存入AL寄存器 MOV DX,PA;字位口地址0FF21H存入DX寄存器 OUT DX,AL;把字位码输出到字位口地址0FF21H PUSH CX;把CX寄存器的值存入堆栈存储器,以用于新的场合DIS2: MOV CX,00A0H;把数00A0H存入寄存器CX,作为定时常数 LOOP $;如果CX10,重复执行指令LOOP,延时 POP CX;恢复原来CX的值 CMP CL,0FEH ;比较CL寄存器的值是否等于0FEH JZ LX1;等于则跳转到LX1处,6位数码管显示完毕 INC BX;没有显示完就让BX+1,指向显示缓冲区的下一位 ROR CL,1 ;循环右移CL寄存器的值,把显示位形码修改成下一位 JMP DIS1;跳转到DIS1LX1: MOV AL,0FFH;熄灭所有数码管 MOV DX,PB OUT DX,AL RET;子程序返回BUF1: MOV BUF,0DH ;2把DICE88显示码存入显示缓冲区子程序 MOV BUF+1,01H 0 MOV BUF+2,0CH 0 MOV BUF+3,0EH 8 MOV BUF+4,08H 10 MOV BUF+5,08H 10 RET;- CODE ENDS;程序段结束 END START;程序结束四、实验步骤(1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开8kAsm文件夹,点击S6.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。(2)数码管显示“DICE 88”字样。(3)连续运行程序,从程序数据存储器相应地址查看程序代码、显示缓冲区、字型码表。(4)修改参数,使数码管显示2008字样,单步运行程序,观察寄存器窗口、查看运行结果。五、问题思考(1)分析程序中BX、DX寄存器的作用。(2)怎样控制数码管循环点亮的循环方式?实验2数码显示实验程序反编译代码2DF0 EB23 JMP2E152DF2 90 NOP2DF3 0000 ADDBX+SI,AL2DF5 0000 ADDBX+SI,AL2DF7 0000 ADDBX+SI,AL2DF9 C0 DBC02DFA F9 STC2DFB A4 MOVSB2DFC B099 MOVAL,992DFE 92 XCHGDX,AX2DFF 82F880 CMPAL,802E02 90 NOP2E03 8883C6A1 MOVBP+DI+A1C6,AL2E07 868EFF0C XCHGCL,BP+0CFF2E0B 89DE MOVSI,BX2E0D C78CF3BF8FFF MOVWORD PTR SI+BFF3,FF8F2E13 FFFF ?DI2E15 E83F00 CALL2E572E18 E80200 CALL2E1D2E1B EBFB JMP2E182E1D B0FF MOVAL,FF2E1F BA21FF MOVDX,FF212E22 EE OUTDX,AL2E23 B1DF MOVCL,DF2E25 BBF32D MOVBX,2DF32E28 8A07 MOVAL,BX2E2A B400 MOVAH,002E2C 53 PUSHBX2E2D BBF92D MOVBX,2DF92E30 03D8 ADDBX,AX2E32 8A07 MOVAL,BX2E34 5B POPBX2E35 BA22FF MOVDX,FF222E38 EE OUTDX,AL2E39 8AC1 MOVAL,CL2E3B BA21FF MOVDX,FF212E3E EE OUTDX,AL2E3F 51 PUSHCX2E40 B9A00F MOVCX,0FA02E43 E2FE LOOP2E432E45 59 POPCX2E46 80F9FE CMPCL,FE2E49 7405 JZ2E502E4B 43 INCBX2E4C D0C9 RORCL,12E4E EBD8 JMP2E282E50 B0FF MOVAL,FF2E52 BA22FF MOVDX,FF222E55 EE OUTDX,AL2E56 C3 RET2E57 2E CS:2E58 C606F32D0D MOVBYTE PTR 2DF3,0D2E5D 2E CS:2E5E C606F42D01 MOVBYTE PTR 2DF4,012E63 2E CS:2E64 C606F52D0C MOVBYTE PTR 2DF5,0C2E69 2E CS:2E6A C606F62D0E MOVBYTE PTR 2DF6,0E2E6F 2E CS:2E70 C606F72D08 MOVBYTE PTR 2DF7,082E75 2E CS:2E76 C606F82D08 MOV BYTE PTR 2DF8,082E7B C3 RET实验三 数据块移动实验一、实验目的(1)了解内存中数据块移动方法(2)掌握分支程序的设计方法二、实验仪器微机、微机原理接口实验仪三、实验原理程序要求把内存中一数据区(称为源数据块)传送到内存另一数据区(称为目的数据块)。源数据块和目的数据块在存贮中可能有三种情况,如下图所示。对于两个数据块分离的情况,如图(a),数据的传送从据块的首址开始,或者从数据块的末址开始均可。但对于有部分重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏。可以得出如下结论:当源数据块首址大于目的块首址时,从数据块首地址开始传送数据。当源数据块首址小于目的块首址时,从数据块末址开始传送数据。程序流程图: 实验程序:CODE SEGMENT ;程序段开始 ASSUME CS:CODE;定义CS为程序段段寄存器 ORG 2EF0H;程序从存储器地址2EF0H开始存放START: MOV CX,0100H;数据传送个数0100H存放CX寄存器 MOV SI,4000H 4100H;源地址4000H存入源地址寄存器SI MOV DI,4100H 4000H;目的地址4100H存入目的地址寄存器DI CMP SI,DI;比较SI和DI的值的大小,判断 JA FADR;SIDI则跳转到FADR处,从地址的头部开始传送数据 ADD SI,CX;SIDI则地址的尾部开始传送数据,SI+CX形成尾部源地址 ADD DI,CX;DI+CX形成尾部目的地址 DEC SI;指向第一个数据源地址 DEC DI;指向第一个数据目的地址CON1: MOV AL,SI;从源地址取出一个数据存入AL寄存器,地址减量传送 MOV DI,AL;把数据存入目的地址 DEC SI;减量修改源地址指针 DEC DI;减量修改目的地址指针 DEC CX;修改数据个数 JNE CON1;标志ZF0(CX10)则跳转到CON1,移动下一个数据 JMP $;标志ZF=0(CX1=0)则传送结束FADR: MOV AL,SI;从源地址取出一个数据存入AL寄存器,地址增量传送MOV DI,AL;把数据存入目的地址 INC SI;增量修改源地址指针 INC DI;增量修改目的地址指针 DEC CX;修改数据个数 JNE FADR;标志ZF0(CX10)则跳转到FADR,移动下一个数据 JMP $;标志ZF=0(CX1=0)则传送结束CODE ENDS;程序段结束 END START;程序结束四、实验步骤(1)在源数据块4000H40FFH中首址、末址几个单元,填入几个标志性数据。(2)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开8kAsm文件夹,点击S8.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。(3)复位RST键,查看目的数据块4100H41FFH数据是否和源数据块4000H40FFH单元相一致。(4)让目的地址DI和源地址SI的值对调,重新在源地址填入几个标志性数据,执行程序,查看运行结果。五、问题思考(1) 程序是怎样实现循环控制的?(2) 分析SI、DI寄存器的作用。实验3数据块移动程序反编译代码地址 存储值 反编译的指令2EF0 B90001 MOVCX,01002EF3 BE0040 MOVSI,40002EF6 BF0042 MOVDI,41002EF9 3BF7 CMPSI,DI2EFB 7711 JA2F0E2EFD 03F1 ADDSI,CX2EFF 03F9 ADDDI,CX2F01 4E DECSI2F02 4F DECDI2F03 8A04 MOVAL,SI2F05 8805 MOVDI,AL2F07 4E DECSI2F08 4F DECDI2F09 49 DECCX2F0A 75F7 JNZ2F032F0C EBFE JMP2F0C2F0E 8A04 MOVAL,SI2F10 8805 MOVDI,AL2F12 46 INCSI2F13 47 INCDI2F14 49 DECCX2F15 75F7 JNZ2F0E2F17 EBFE JMP2F17实验四 多分支程序实验一、实验目的(1)掌握程序散转的方法,实现程序的多分支转移二、实验仪器微机、微机原理接口实验仪三、实验原理多分支程序一般用于实现键盘功能的实现,当按键的键值被读入内存指定单元后,为实现键的功能需要根据键值跳往对应程序完成相应功能。方法是把每个程序的首地址先存放在一个表格中,利用键值查表把查得的值作为地址再利用跳转指令就可实现。程序流程图:实验程序:CODE SEGMENT ;程序段开始 ASSUME CS:CODE;定义CS为程序段段寄存器 ORG 2F40H ;程序从存储器地址2F40H开始存放START: JMP START0;程序开始ADDR DW DP0,DP1,DP2,DP3,DP4,DP5,DP6,DP7,DP8,DP9,DPA;把程序段DP0、DP1等地址的值放入表格START0: MOV SI,4000H;存储器4000H处存放分支代码(比如键盘送来的数字) MOV AL,SI;取出分支代码,存入AL寄存器 SUB AH,AH;清除AH寄存器的值,AH、AL构成AX SHL AL,1;AL寄存器的值左移一位 MOV BX,OFFSET ADDR;把表格首地址放入BX寄存器 ADD BX,AX;形成分支地址 JMP BX;跳转到分支代码指定的程序段执行程序DP0: MOV BL,0c0H;DISP 0;DP0程序段,把显示0的字型码放入显示子程序入口参数BL寄存器 JMP disp;跳转到显示子程序DP1: MOV BL,0f9 H ;DISP 1 JMP dispDP2: MOV BL,0a4 H ;DISP 2 JMP dispDP3: MOV BL,0b0 H ;DISP 3 JMP dispDP4: MOV BL,99 H ;DISP 4 JMP dispDP5: MOV BL,92 H ;DISP 5 JMP dispDP6: MOV BL,82 H ;DISP 6 JMP dispDP7: MOV BL,0f8 H ;DISP 7 JMP dispDP8: MOV BL,80 H ;DISP 8 JMP dispDP9: MOV BL,90 H ;DISP 9DPA: MOV BL, 88H;DISP “A” JMP dispdisp: MOV AH,0DF H;把数码管最高位显示位形码放入AHdisp0: MOV DX,0ff22 H;把字形码端口地址放入DX寄存器 MOV AL,BL;取出字型码 OUT DX,AL;送出字形码 MOV DX,0ff21H;把位形码端口地址放入DX寄存器 MOV AL,AH; OUT DX,AL;送出位形码CALL DLY;调用延时子程序 ROR AH,01H;修改位形码,指向下一个数码管 JMP disp0;跳转到显示子程序开始,重复显示DLY: MOV CX,0003H 0006H;延时子程序,设置外层循环延时常数dly1: PUSH CX;保存 MOV CX,0ffffH;设置内层循环延时常数disp1: LOOP disp1;循环判断(CX1=0?) POP CX;取出外层循环延时常数 LOOP dly1;判断外层循环次数 RET;返回 CODE NDS;程序段结束 END START;程序结束四、实验步骤(1)在4000H单元写入00,01,09中任一个数。(2)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开8kAsm文件夹,点击S9.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。(3)数码管应根据4000H单元中内容作不同的循环显示。(4)修改程序,使数码管显示A,并使延时程序延时加倍。五、问题思考(1) 为什么能看到数码管的循环点亮?(2) 分析SI、CX寄存器的作用。实验4多分支程序反编译代码地址 存储值 反编译的指令2F40 EB15 JMP2F572F42 90 2F43 67 (ADDR) 2F44 2F (DP0地址值)2F45 6C 2F46 2F (DP1地址值)2F47 712F482F (DP2地址值)2F49 762F4A2F (DP3地址值)2F4B 7B2F4C2F (DP4地址值)2F4D 802F4E2F (DP5地址值)2F4F85 2F50 2F (DP6地址值)2F51 8A2F522F (DP7地址值)2F53 8F2F542F (DP8地址值)2F55 94 2F56 2F (DP9地址值)(start0)2F57 BE0040 MOVSI,40002F5A8A04 MOVAL,SI2F5C 2AE4 SUBAH,AH2F5E D0E0 SHLAL,12F60 BB432F MOVBX,2F432F63 03D8 ADDBX,AX2F65 FF27 JMPBX2F67 B3C0(DP0) MOVBL,C02F69 EB2E JMP2F992F6B 90 NOP2F6C B3F9(DP1) MOVBL,F92F6E EB29 JMP2F992F70 90 NOP2F71 B3A4(DP2) MOVBL,A42F73 EB24 JMP2F99地址 存储值 反编译的指令2F75 90 NOP2F76 B3B0(DP3) MOVBL,B02F78 EB1F JMP2F992F7A 90 NOP2F7B B399(DP4) MOVBL,992F7D EB1A JMP2F992F7F 90 NOP2F80 B392(DP5) MOVBL,922F82 EB15 JMP2F992F84 90 NOP2F85 B382(DP6) MOVBL,822F87 EB10 JMP2F992F89 90 NOP2F8A B3F8(DP7) MOVBL,F82F8C EB0B JMP2F992F8E 90 NOP2F8F B380(DP8) MOVBL,802F91 EB06 JMP2F992F93 90 NOP2F94 B390(DP9) MOVBL,902F96 EB01 JMP2F992F98 90 NOP2F99 B4DF (disp) MOVAH,DF2F9B BA22FF MOVDX,FF222F9E 8AC3 MOVAL,BL2FA0 EE OUTDX,AL2FA1 BA21FF MOVDX,FF212FA4 8AC4 MOVAL,AH2FA6 EE OUTDX,AL2FA7 E80400 CALL2FAE2FAA D0CC RORAH,12FAC EBED JMP2F9B2FAE B90100(Dly) MOVCX,00032FB1 51 PUSHCX2FB2 B9FFFF MOVCX,FFFF2FB5 E2FE LOOP2FB52FB7 59 POPCX2FB8 E2F7 LOOP2FB12FBA C3 RET实验五 8255A并行口实验一、实验目的(1)掌握通过8255A并行口传输数据的方法,以控制发光二极管的亮与灭二、实验仪器微机、微机原理接口实验仪三、实验原理通过8255A控制发光二极管,PB4-PB7对应黄灯,PC0-PC3对应红灯,PC4-PC7对应绿灯, 以模拟交通路灯的管理。要完成本实验,必须先了解交通路灯的亮灭规律,设有一个十字路口l、3为南北方向,2、4为东西方向,初始状态为四个路口的红灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。延时一段时间后,l、3路口的绿灯熄灭,而l、3路口的黄灯开始闪烁,闪烁若干次以后,l、3路口红灯亮,而同时2、4路口的绿灯亮,2、4路口方向通车,延时一段时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到l、3路口方向,之后,重复上述过程。程序中设定好8255A的工作模式及三个端口均工作在方式0,并处于输出状态。各发光二极管共阳极,使其点亮应使8255A相应端口的位清0。程序流程图:实验程序:CODE SEGMENT ;H8255-2.ASM ASSUME CS:CODEIOCONPT EQU 0FF2BH;8255控制口地址IOAPT EQU 0FF28H;8255 PA口地址IOBPT EQU 0FF29H;8255 PB口地址, 高4位接黄灯IOCPT EQU 0FF2AH;8255 PC口地址,低4位接红灯,高4位接绿灯 ORG 11e0HSTART: MOV AL,82H;82H控制字送AL, MOV DX,IOCONPT;8255控制口地址送DX寄存器 OUT DX,AL;送出控制字,PA、PC输出,PB输入 MOV DX,IOBPT;PB口地址送DX IN AL,DX;从PB口取数据(PB口低4位别处在用) MOV BYTE PTR DS:0601H,AL ;保存到0601H单元 MOV DX,IOCONPT;取8255控制口地址 MOV AL,80H;设置成PA、PC、PB输出 OUT DX,AL MOV DX,IOBPT;取PB口地址 MOV AL,DS:0601H;取0601H单元的数 OR AL,0F0H;屏蔽低4位 OUT DX,AL;送到PB口(恢复PB口低4位状态) MOV DX,IOCPT;取PC口地址 MOV AL,0F0H;把0FH送PC口,4个红灯全亮(0亮1熄灭) OUT DX,AL CALL DELAY1;延时 IOLED0: MOV AL,10100101B;1、3路口绿灯亮,2、4路口红灯亮 MOV DX,IOCPT;取PC口地址 OUT DX,AL;送出 CALL DELAY1;延时 CALL DELAY1 OR AL,0F0H;熄灭1、3路口绿灯 OUT DX,AL MOV CX,8H 16H;设置黄灯闪烁次数 IOLED1: MOV DX,IOBPT;取PB口地址 MOV AL,DS:0601H;取PB口原来状态 AND AL,10101111B;点亮1、3路口黄灯,保持PB口低4位 OUT DX,AL CALL DELAY2;延时 OR AL,01010000B;熄灭1、3路口黄灯,保持PB口低4位 OUT DX,AL; CALL DELAY2;延时 LOOP IOLED1;CX-1不等于0,到IOLED1循环 MOV DX,IOCPT;取PC口地址 MOV AL,0F0H;4个红灯全亮 OUT DX,AL CALL DELAY2;延时 MOV AL,01011010B;2、4路口绿灯亮,1、3路口红灯亮 OUT DX,AL CALL DELAY1;延时 CALL DELAY1 OR AL,0F0H;4个红灯亮 OUT DX,AL MOV CX,8H16H;设置黄灯闪烁次数 IOLED2: MOV DX,IOBPT;取PB口地址 MOV AL,DS:0601H;取PB口原来状态 AND AL,01011111B;点亮2、4路口黄灯,保持PB口低4位 OUT DX,AL CALL DELAY2;延时 OR AL,10100000B;熄灭2、4路口黄灯,保持PB口低4位 OUT DX,AL CALL DELAY2;延时 LOOP IOLED2;CX-1不等于0,到IOLED2循环 MOV DX,IOCPT;取PC口地址 MOV AL,0F0H;4个红灯全亮 OUT

温馨提示

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

评论

0/150

提交评论