汇编流水灯实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告学院(系)名称:计算机与通信工程学院
【实验过程记录(源程序、测试用例、测试结果及心得体会等)】///////////////////////////////////////////////////////流水灯;自己改的
IOY0 EQU 3000H ;片选IOY0对应的端口始地址MY8255_A EQU IOY0+00H*2 ;8255的A口地址
MY8255_B EQU IOY0+01H*2 ;8255的B口地址
MY8255_C EQU IOY0+02H*2 ;8255的C口地址
MY8255_MODE EQU IOY0+03H*2 ;8255的控制寄存器地址
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,MY8255_MODE ;初始化8255工作方式MOV AL,82H ;工作方式0,A口输出,B口输入
OUT DX,AL
LOOP1:MOV DX,MY8255_A ;写A口
MOV AL,00000001B
OUT DX,AL
CALL DALL Y
MOV DX,MY8255_A ;写A口
MOV AL,00000010B
OUT DX,AL
CALL DALL Y
MOV DX,MY8255_A ;写A口
MOV AL,00000100B
OUT DX,AL
CALL DALL Y
MOV DX,MY8255_A ;写A口
MOV AL,00001000B
OUT DX,AL
CALL DALL Y
MOV DX,MY8255_A ;写A口
MOV AL,00010000B
OUT DX,AL
CALL DALL Y
MOV DX,MY8255_A ;写A口
MOV AL,00100000B
OUT DX,AL
CALL DALL Y
MOV DX,MY8255_A ;写A口
MOV AL,01000000B
OUT DX,AL
CALL DALL Y
MOV DX,MY8255_A ;写A口
MOV AL,10000000B
OUT DX,AL
CALL DALL Y
MOV AH,1 ;判断是否有按键按下
INT 16H
JZ LOOP1 ;无按键则跳回继续循环,有则退出
QUIT: MOV AX,4C00H ;结束程序退出
INT 21H
DALL Y PROC NEAR ;软件延时子程序
PUSH CX
PUSH AX
MOV CX,0FFFH
D1: MOV AX,0FFFFH
D2: DEC AX
JNZ D2
LOOP D1
POP AX
POP CX
RET
DALL Y ENDP
CODE ENDS
END START
模拟交通灯(实验现象在代码后面:6个灯实验)
IIOY0 EQU 3000H ;片选IOY0对应的端口始地址MY8255_A EQU IOY0+00H*2 ;8255的A口地址
MY8255_B EQU IOY0+01H*2 ;8255的B口地址
MY8255_C EQU IOY0+02H*2 ;8255的C口地址
MY8255_MODE EQU IOY0+03H*2 ;8255的控制寄存器地址
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,MY8255_MODE ;初始化8255工作方式
MOV AL,80H ;工作方式0,A口输出,B口输入
OUT DX,AL
MOV DX,MY8255_A ;写A口
MOV AL,00010001B //初始状态:两个红灯亮;
OUT DX,AL
CALL DALL Y
LOOP1: MOV DX,MY8255_A ;写A口
MOV AL,00010010B //接着一个路口红灯不变,另一个路口变黄灯;
OUT DX,AL
CALL DALL Y
MOV DX,MY8255_A ;写A口
MOV AL,00010100B //一个路口红灯不变,另一个路口由黄灯变绿灯;
OUT DX,AL
CALL DALL Y
MOV DX,MY8255_A ;写A口
MOV AL,00100010B //接着两个黄灯亮;
OUT DX,AL
CALL DALL Y
MOV DX,MY8255_A ;写A口
MOV AL,01000001B //然后刚才的红灯由黄灯变绿灯,绿灯由黄灯变红灯,如此循环;
OUT DX,AL
CALL DALLY
MOV AH,1 ;判断是否有按键按下
INT 16H
JZ LOOP1 ;无按键则跳回继续循环,有则退出
QUIT: MOV AX,4C00H ;结束程序退出
INT 21H
DALL Y PROC NEAR ;软件延时子程序
PUSH CX
PUSH AX
MOV CX,09FFFH
D1: MOV AX,0FFFFH
D2: DEC AX
JNZ D2
LOOP D1
POP AX
POP CX
RET
DALL Y ENDP
CODE ENDS
END START