找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1986|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

關(guān)于這段匯編程序 求講解

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:434518 發(fā)表于 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(?) ; 預(yù)先定義的堆棧深度
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 ;初始化數(shù)據(jù)段
MOV DS,AX
MOV DX,CTRW;設(shè)置8255的PA,PB和PC口為輸出
MOV AL,80H
OUT DX,AL
LEA DI,LEDDATA;獲取變量地址
MAINLOOP:
CALL NORMAL;交通燈控制程序
JMP MAINLOOP
;數(shù)碼管顯示程序
DISPLAY PROC NEAR
MOV AL,0FDH;點(diǎn)亮第一個數(shù)碼管
MOV DX,PORTB;將AL的數(shù)據(jù)送到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]數(shù)據(jù)賦值給AL
MOV DX,PORTA;將AL的數(shù)據(jù)送到PA口
OUT DX,AL
CALL DELAYMS
MOV AL,00H
MOV DX,PORTA;將AL的數(shù)據(jù)送到PA口
OUT DX,AL
CALL DELAYMS
   
MOV AL,0FEH;第二個數(shù)碼管
MOV DX,PORTB;將AL的數(shù)據(jù)送到PA口
OUT DX,AL
MOV AH,00H
MOV AL,COUNT
MOV BL,10
DIV BL;AL中存余數(shù),個位
MOV BX,DI;獲取變量地址至BX
XLAT;查表將[BX+AL]數(shù)據(jù)賦值給AL
MOV DX,PORTA;將AL的數(shù)據(jù)送到PA口
OUT DX,AL
CALL DELAYMS
MOV AL,00H
MOV DX,PORTA;將AL的數(shù)據(jù)送到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
雖然有講解,但是還是有點(diǎn)懵逼。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表