汇编语言8086交通灯代码
时间: 2023-07-09 08:30:55 浏览: 111
下面是汇编语言8086实现交通灯控制程序的示例代码:
```
; 交通灯控制程序
.MODEL SMALL
.STACK 100H
.DATA
; 定义三个灯的显示字符
RED DB 'R'
YELLOW DB 'Y'
GREEN DB 'G'
.CODE
MAIN PROC
MOV AX, @DATA ; 初始化数据段寄存器
MOV DS, AX
; 初始化控制端口
MOV DX, 378H
MOV AL, 00000000B
OUT DX, AL
; 循环控制交通灯的变化
MOV CX, 10
MOV BX, 0
LOOP:
; 红灯亮
MOV AL, 00000001B
OUT DX, AL
MOV AH, 2CH
INT 21H ; 延时2秒
; 红灯闪烁
MOV AH, 9H
MOV DX, OFFSET RED
INT 21H
MOV AH, 2CH
INT 21H ; 延时1秒
; 黄灯亮
MOV AL, 00000010B
OUT DX, AL
MOV DX, OFFSET YELLOW
MOV AH, 9H
INT 21H
MOV AH, 2CH
INT 21H ; 延时1秒
; 绿灯亮
MOV AL, 00000100B
OUT DX, AL
MOV DX, OFFSET GREEN
MOV AH, 9H
INT 21H
MOV AH, 2CH
INT 21H ; 延时2秒
; 绿灯闪烁
MOV AH, 9H
MOV DX, OFFSET GREEN
INT 21H
MOV AH, 2CH
INT 21H ; 延时1秒
; 黄灯闪烁
MOV AH, 9H
MOV DX, OFFSET YELLOW
INT 21H
MOV AH, 2CH
INT 21H ; 延时1秒
; 红灯亮
MOV AL, 00000001B
OUT DX, AL
MOV DX, OFFSET RED
MOV AH, 9H
INT 21H
MOV AH, 2CH
INT 21H ; 延时2秒
; 循环计数
INC BX
CMP BX, CX
JNE LOOP
MOV AH, 4CH ; 退出程序
INT 21H
MAIN ENDP
END MAIN
```
需要说明的是,这段代码使用了中断21H来实现延时,具体实现方法是在AH寄存器中传入2CH,然后调用中断21H。这段代码中的循环次数是10次,可以根据需要进行修改。另外,控制端口的地址是378H,可以根据实际情况进行调整。
阅读全文