找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 673|回复: 0
打印 上一主题 下一主题
收起左侧

单片机汇编语言红绿灯程序

[复制链接]
跳转到指定楼层
楼主
ID:1125253 发表于 2024-6-25 17:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
name "traffic"
menu_text db ' input:', 0Dh, 0Ah
          db '1.normal', 0Dh, 0Ah
          db '2.accident', 0Dh, 0Ah
          db '3.construction', 0Dh, 0Ah
          db '4.malfunction', 0Dh, 0Ah
          db '5.exit', 0Dh, 0Ah
          db '$'
menu:
    mov ah, 09h
    lea dx, menu_text
    int 21h
    ; 获取用户输入
    mov ah, 01h
    int 21h
    ; 根据用户输入执行相应操作
    cmp al, '1'
    je normal_traffic
    cmp al, '2'
    je road_accident
    cmp al, '3'
    je road_construction
    cmp al, '4'
    je signal_fault
    cmp al, '5'
    je exit_program
    jmp menu

normal_traffic:
mov ax, all_red
out 4, ax
mov si, offset situation
mov ah, 9
lea dx, msg1
int 21h
first:
mov ax, [si]
out 4, ax
; wait 5 seconds (5 million microseconds)
mov     cx, 4Ch    ;    004C4B40h = 5,000,000
mov     dx, 4B40h
mov     ah, 86h
int     15h
add si, 2 ; next situation
cmp si, sit_end
jb  first
mov si, offset situation
jmp menu
situation        dw      0000_0011_0000_1100b
s1               dw      0000_0110_1001_1010b
s2               dw      0000_1000_0110_0001b
s3               dw      0000_1000_0110_0001b
s4               dw      0000_0100_1101_0011b
sit_end = $
road_accident:
mov ax, all_red
out 4, ax
mov si, offset situation2
mov ah, 9
lea dx, msg2
int 21h
second:
mov ax, [si]
out 4, ax
; wait 5 seconds (5 million microseconds)
mov     cx, 4Ch    ;    004C4B40h = 5,000,000
mov     dx, 4B40h
mov     ah, 86h
int     15h
add si, 2 ; next situation
cmp si, sit_end1
jb  second
mov si, offset situation2
jmp menu
situation2       dw       0000_0011_0000_1100b
s5               dw       0000_0110_1000_1010b
s6               dw       0000_1000_0100_1001b
s7               dw       0000_1000_0100_1001b
s8               dw       0000_0100_1100_1001b
sit_end1 = $
road_construction:
mov ax, all_red
out 4, ax
mov si, offset situation3
mov ah, 9
lea dx, msg3
int 21h
thrid:
mov ax, [si]
out 4, ax
; wait 5 seconds (5 million microseconds)
mov     cx, 4Ch    ;    004C4B40h = 5,000,000
mov     dx, 4B40h
mov     ah, 86h
int     15h
add si, 2 ; next situation
cmp si, sit_end3
jb  thrid
mov si, offset situation3
jmp menu
situation3      dw      0000_0011_0000_1001b
s10             dw      0000_0110_1001_1001b
s11             dw      0000_1000_0110_0001b
s12             dw      0000_1000_0110_0001b
s13             dw      0000_0100_1101_0001b            
sit_end3 = $
signal_fault:
mov ax, all_red
out 4,ax
mov ah, 9
lea dx, msg4
int 21h
jmp menu
exit_program:
mov ah, 9
lea dx, msg5
int 21h   
mov ax, 4C00h
int
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表