找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于这段汇编程序 求讲解

[复制链接]
跳转到指定楼层
楼主
ID:434518 发表于 2018-12-18 15:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1黑币
大家好,我刚刚接触汇编,那个大佬能够简单给我讲一讲这个程序。
CTRW EQU 06H;28EH
PORTA EQU 00H;288H
PORTB EQU 02H;289H
PORTC EQU 04H;28AH
STACK SEGMENT STACK
STP DW 100 DUP(?) ; 预先定义的堆栈深度
STACK ENDS
DATA    SEGMENT 'DATA'
LEDDATA DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
COUNT DB 00H
DATA    ENDS
CODE SEGMENT 'CODE'
ASSUME DS:DATA,CS:CODE,SS:STACK
START:  
MOV AX,DATA ;初始化数据段
MOV DS,AX
MOV DX,CTRW;设置8255的PA,PB和PC口为输出
MOV AL,80H
OUT DX,AL
LEA DI,LEDDATA;获取变量地址
MAINLOOP:
CALL NORMAL;交通灯控制程序
JMP MAINLOOP
;数码管显示程序
DISPLAY PROC NEAR
MOV AL,0FDH;点亮第一个数码管
MOV DX,PORTB;将AL的数据送到PA口
OUT DX,AL
MOV AH,00H
MOV AL,COUNT
MOV BL,10
DIV BL
MOV AL,AH;取商,十位
MOV BX,DI;获取变量地址至BX
XLAT;查表将[BX+AL]数据赋值给AL
MOV DX,PORTA;将AL的数据送到PA口
OUT DX,AL
CALL DELAYMS
MOV AL,00H
MOV DX,PORTA;将AL的数据送到PA口
OUT DX,AL
CALL DELAYMS
   
MOV AL,0FEH;第二个数码管
MOV DX,PORTB;将AL的数据送到PA口
OUT DX,AL
MOV AH,00H
MOV AL,COUNT
MOV BL,10
DIV BL;AL中存余数,个位
MOV BX,DI;获取变量地址至BX
XLAT;查表将[BX+AL]数据赋值给AL
MOV DX,PORTA;将AL的数据送到PA口
OUT DX,AL
CALL DELAYMS
MOV AL,00H
MOV DX,PORTA;将AL的数据送到PA口
OUT DX,AL
CALL DELAYMS
RET
DISPLAY ENDP
;交通灯控制
NORMAL PROC NEAR
MOV DX,PORTC
MOV AL,0BEH;南北绿灯亮,东西红灯亮1011,1110
OUT DX,AL
CALL DELAY20S
MOV DX,PORTC
MOV AL,0DEH;南北黄灯亮,东西红灯亮1101,1110
OUT DX,AL
CALL DELAY5S

MOV DX,PORTC
MOV AL,0EBH;南北红灯亮,东西绿灯亮1110,1011
OUT DX,AL
CALL DELAY20S

MOV DX,PORTC
MOV AL,0EDH;南北红灯亮,东西黄灯亮1110,1101
OUT DX,AL
CALL DELAY5S
RET
NORMAL ENDP
;20S延时
DELAY20S PROC NEAR
MOV CX,20
MOV AL,20
MOV COUNT,AL
DLY60: CALL DELAY1S
MOV AL,COUNT
DEC AL
MOV COUNT,AL
LOOP DLY60
RET
DELAY20S ENDP
;5S延时
DELAY5S PROC NEAR
MOV CX,5
MOV AL,5
MOV COUNT,AL
DLY5: CALL DELAY1S
MOV AL,COUNT
DEC AL
MOV COUNT,AL
LOOP DLY5
RET
DELAY5S ENDP
;1S延时
DELAY1S PROC NEAR
PUSH CX
MOV CX,200
DLYM1S: CALL DISPLAY
LOOP DLYM1S
POP CX
RET
DELAY1S ENDP
;MS级延时
DELAYMS PROC NEAR
PUSH CX
PUSH BX
MOV BL,02H
DLYM2: MOV CX,8AH
DLYM1:  NOP
  NOP
  LOOP DLYM1
  DEC BL
  JNZ DLYM2
  POP BX
  POP CX
  RET
DELAYMS ENDP
CODE ENDS
END START
虽然有讲解,但是还是有点懵逼。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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