汇编实现交通灯控制模拟程序的设计说明

上传人:l**** 文档编号:145309155 上传时间:2020-09-19 格式:DOC 页数:16 大小:62KB
返回 下载 相关 举报
汇编实现交通灯控制模拟程序的设计说明_第1页
第1页 / 共16页
汇编实现交通灯控制模拟程序的设计说明_第2页
第2页 / 共16页
汇编实现交通灯控制模拟程序的设计说明_第3页
第3页 / 共16页
汇编实现交通灯控制模拟程序的设计说明_第4页
第4页 / 共16页
汇编实现交通灯控制模拟程序的设计说明_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《汇编实现交通灯控制模拟程序的设计说明》由会员分享,可在线阅读,更多相关《汇编实现交通灯控制模拟程序的设计说明(16页珍藏版)》请在金锄头文库上搜索。

1、. . . 使用方法:使用win-masm运行后,首先输入个任意的两位数表示红灯亮的时间如05或99,然后输入个其他任意字符来作为分隔,接着输入个任意的小于红灯的两位数表示红灯亮的时间如03或98等等来表示黄灯亮的时间,绿灯亮的时间为红灯的时间减去黄灯的时间。输入后开始工作。 当输入9时进入手动控制状态,接着可分别输入1,2,3,4,5,6,来点亮各方向的灯,输入a,b,c,d,e,f分别灭各方向灯。输入7时返回自动控制状态。当输入0时,则进入夜间状态,黄灯开始闪烁。当输入8时进入紧急状态,个方向红灯亮起。后两个状态没有做返回到自动控制的功能。STACK SEGMENT STACKDW 64

2、DUP(0)STACK ENDS DATA SEGMENTSTRING0 DB 13,10,3 DUP(9,20H),6 DUP(20H),+,12 DUP(20H),+$STRING1 DB 13,10,3 DUP(9,20H),= * =$ ;上面一行STRING2 DB 13,10,3 DUP(9,20H),6 DUP(20H),*,12 DUP(20H),*$;一个制表等于7个空格STRING3 DB 13,10,3 DUP(9,20H),= * * * * =$ ;下面一行STRTIME DB 13,10,4 DUP(9,20H),TIME: S$;显示时间的格式STRSHOW DB

3、 13,10,2 DUP(9,20H),SHOW TIME:$STRRED DB 13,10,2 DUP(9,20H),RED LIGHT(S),YELLOW LIGHT(S):$STRBLUE DB 13,10,2 DUP(9,20H),BLUE LIGHT(S)=RED LIGHT(S)-YELLOW LIGHT(S)$RED DB 35H,30H ;红灯亮的时间BLUE DB 33H,30H ;绿灯亮的时间YELLOW DB 32H,30H ;黄灯亮的时间SAVE DB 35H,30H,?,32H,30H ;初始红,黄两种灯亮的时间COLOUR_CHANGE DB 01H;COLOUR_

4、CHANGE为1时,表示南北红灯亮。为0表示东西SAVE_RED_NB DB ? ;南北方向SAVE_YELLOW_NB DB ?SAVE_BLUE_NB DB ?SAVE_RED_DX DB ? ;东西方向SAVE_YELLOW_DX DB ?SAVE_BLUE_DX DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AXMOV BYTE PTR SAVE_RED_NB,04H;红色MOV BYTE PTR SAVE_YELLOW_NB,07H;白色MOV BYTE PTR S

5、AVE_BLUE_NB,07HMOV BYTE PTR SAVE_RED_DX,07HMOV BYTE PTR SAVE_YELLOW_DX,0EH;黄色MOV BYTE PTR SAVE_BLUE_DX,07HMOV SI,OFFSET STRING0 MOV CX,3 ROAD1:CALL SHOW ;设置南北方向的道路LOOP ROAD1 MOV SI,OFFSET STRING1 CALL SHOW MOV SI,OFFSET STRING2 MOV CX,5 NEXT:CALL SHOW LOOP NEXT MOV SI,OFFSET STRING3CALL SHOWMOV SI,O

6、FFSET STRING0 MOV CX,3 ROAD2:CALL SHOW ;设置南北方向的道路LOOP ROAD2MOV SI,OFFSET STRTIMECALL SHOWMOV SI,OFFSET STRSHOWCALL SHOWMOV SI,OFFSET STRREDCALL SHOWMOV SI,OFFSET STRBLUECALL SHOWCALL NORTH_RED ;设置北边的红灯CALL NORTH_YELLOW;设置北边的黄灯CALL NORTH_BLUE;设置北边的绿灯CALL WEST_BLUE;设置西边的绿灯CALL WEST_YELLOW;设置西边的黄灯CALL

7、WEST_RED;设置西边的红灯CALL EAST_RED;设置东边的红灯CALL EAST_YELLOW;设置东边黄灯CALL EAST_BLUE;设置东边的绿灯CALL SOUTH_BLUE;设置南边绿灯CALL SOUTH_YELLOW;设置南边的黄灯CALL SOUTH_RED;设置南边的红灯MOV DH,16MOV DL,46MOV AH,02H;设置光标位置INT 10HMOV AH,00H;从键盘读入字符INT 16H MOV AH,09 ;按当前指定属性显示MOV BH,0 MOV BL,SAVE_RED_NB;红色MOV CX,01 ;字符重复一次INT 10HMOV BYT

8、E PTR SAVE+1,AL;输入红灯亮时间十位放在高地址 MOV CX,0FFFFH DELAY:LOOP DELAYMOV DH,16MOV DL,47MOV AH,2;设置光标位置INT 10HMOV AH,00HINT 16H MOV AH,09 MOV BH,0 MOV BL,SAVE_RED_NB;红色MOV CX,01INT 10HMOV BYTE PTR SAVE,AL;输入红灯点亮时间的个位放在低地址MOV CX,0FFFFH DELAY1:LOOP DELAY1MOV DH,16MOV DL,48MOV AH,2INT 10HMOV AH,00HINT 16H MOV A

9、H,09 MOV BH,0 MOV BL,SAVE_RED_NB;红色MOV CX,01 INT 10HMOV BYTE PTR SAVE+2,AL;在红黄亮灯时间中间可以输入字符加以区分 MOV CX,0FFFFH DELAY2:LOOP DELAY2MOV DH,16MOV DL,49MOV AH,2INT 10HMOV AH,00HINT 16H MOV AH,09 MOV BH,0 MOV BL,SAVE_RED_NB;红色MOV CX,01 ;字符重复一次INT 10HMOV BYTE PTR SAVE+4,AL;输入黄灯点亮时间的十位放在高地址MOV CX,0FFFFH DELAY

10、3:LOOP DELAY3MOV DH,16MOV DL,50MOV AH,2INT 10HMOV AH,00HINT 16H MOV AH,09 MOV BH,0 MOV BL,SAVE_RED_NB;红色MOV CX,01 ;字符重复一次INT 10HMOV BYTE PTR SAVE+3,AL;输入黄灯点亮时间的个位放在低地址MOV AL,SAVEMOV BYTE PTR RED,AL;将输入红灯点亮的时间送入红灯亮的时间 MOV AL,SAVE+1MOV BYTE PTR RED+1,ALMOV AL,SAVE+3MOV BYTE PTRYELLOW,AL;将黄灯点亮的时间送入红灯亮的

11、时间MOV AL,SAVE+4MOV BYTE PTR YELLOW+1,ALMOV BYTE PTR SAVE+3,30H;将输入黄灯点亮时间清零MOV BYTE PTR SAVE+4,30HA1:MOV DI,OFFSET RED;红灯亮的时间送DIMOV SI,OFFSET SAVECOUNT:MOV AH,01H;读取键盘状态INT 16HJNZ CONTRL ;如果有键盘输入,进入手动控制AUTO:MOV DH,14;如果没有键盘输入,进入自动状态MOV DL,38MOV AH,2INT 10H ;置光标位置MOV AH,09 ;在当前光标处按指定属性显示MOV AL,DI+1;将红

12、灯点亮时间高位送AL并显示MOV BH,0 MOV BL,09H ;设置颜色MOV CX,01 INT 10HMOV DH,14;时间的位置MOV DL,39MOV AH,2INT 10H MOV AL,DI;将红灯点亮时间低位送AL并显示MOV AH,09 INT 10HMOV AH,01H ;隐藏光标MOV CX,2000HINT 10HPUSH AXPUSH BXPUSH DXPUSH CXMOV AH,00HINT 1AHADDDL,18;18是一秒跳的次数MOVBL,DLLOP: MOVAH,00H;读取当前DL中的值INT1AHCMPDL,BLJNZLOP;小于一秒,继续计数INC

13、 WORD PTRSI+3;每过一秒,黄灯亮的时间加1MOVCX,WORD PTRSI+3CMPWORD PTRYELLOW,CX;将当前黄灯时间与设定黄灯时间比较JZBIANLV;若相等,绿灯变绿BACK1:DECBYTE PTRDI;倒计时减一CMP BYTE PTRDI, 30H ;红灯时间的个位和0比较JBCARRY_RED;小于0,转到借位POP CXPOP DXPOP BXPOP AXJMP COUNT;读取键盘状态BIANLV:TEST BYTE PTRCOLOUR_CHANGE,00000001BJZ NB_BLUE;为0,表示南北绿灯亮MOV BYTE PTR SAVE_BLUE_DX,0AH;为1时,东西方向绿灯亮MOV BYTE PTR SAVE_BLUE_NB,07HMOV BYTE PTR SAVE_YELLOW_DX,07HMOV BYTE PTR SAVE_YELLOW_NB,07HNEW_BLUE:CALL NORTH_BLUE;设置北边的绿灯CALL

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号