8086单片机七段数码管显示8位16进制计数器的汇编语言程序

8086单片机七段数码管显示8位16进制计数器的汇编语言程序,第1张

8255参考程序

.486

DATA SEGMENT AT 0 USE16

PORTA EQU 203H A口

PORTB EQU 207H B口

PORTC EQU 20BH C口

CONTROL EQU 20FH 控制口

PORT1 EQU 340H 七段码段地址

PORT2 EQU 360H 七段码位地址

ORG 4200H

DATA1 DB 6 DUP (?) 输入数据

ORG 4210H

DATA2 DB 6 DUP (?) 显示缓宴伍冲区

DATAENDS

CODESEGMENT USE16

ASSUME CS:CODE,DS:DATA,ES:DATA

ORG 2000H

BEG: JMP START

TAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH

DB 67H,77H,7CH,39H,5EH,79H,71H 段码表

START: MOV AX,DATA 初始化

MOV DS,AX

MOV ES,AX

MOV AX,0

MOV SS,AX

MOV SP,1000H

LEA DX,CONTROL ...8255初始化

MOV AL,10001001B ...

OUT DX,AL ..清显示

MOV DX,PORTA....

MOV AL,00H ....

OUT DX,AL...

LP:

LEA DX,PORTC ...AL= 读数据

IN AL,DX ...

LEA SI,DATA1 ...存数据

MOV [SI],AL ...

CALL CZ 调用拿者拆字子程序

CALL DISP 调用显示子程序

JMP LP 循环取数显示

CZ PROC

PUSH CX

LEA SI,DATA1 SI= 拆字,取数

LEA DI,DATA2 DI= 显示缓冲区首消祥薯址

CZ0:

MOV BL,[SI]

AND BL,0F0H BL=

MOV CL,4

ROL BL,CL

MOV [DI],BL (DI)=

INC DI

MOV BL,[SI]

AND BL,0FH BL=

MOV [DI],BL

INC SI

INC DI

CMP SI, 08H....

JBE CZ0

POP CX

RET

CZ ENDP

DISP PROC 显示子程序

PUSH CX

PUSH DX

LEA BX,TAB

LEA SI,DATA2

MOV AH,0C1H

DISP1:

MOV DX,PORT2

MOV AL,AH

OUT DX,AL AL= , AL= 位输出

MOV DX,PORT1

MOV AL,[SI]

XLAT

OUT DX,AL AL=,AL= 段输出

MOV CX,0200H

LOOP $

INC SI

SAL AH,1

OR AH,0C0H

CMP AH,0C0H

JNZ DISP1

POP DX

POP CX

RET

DISP ENDP

CODE ENDS

END BEG

用8255扩展I/O口显示6位的显示码。希望对你有帮助,

======================

DISP_STR MACRO X 宏定义.

MOV DX, OFFSET X

MOV AH, 9

INT 21H

ENDM

----------------------

DATA SEGMENT 数据段.

MSG1 DB 13, 10, 'Please Input : $'雹念告

MSG3 DB 13, 10, 'The HEX is : $'

x DW ? 存放新输入数据.

DATA ENDS

----------------------

CODE SEGMENT 代码段.

ASSUME CS: CODE, DS: DATA

START:

MOV AX, DATA

MOV DS, AX

--------------------------------

IN_LOOP:

DISP_STR MSG1 宏调用,提示 Please Input :

--------------------------------

MOV x, 0 数据清零.

_INX:

MOV AH, 1 输高咐入字符.

INT 21H

--------------------------------

CMP AL, 13回车?

JE _IN_END 是则结束输入.

CMP AL, '0'

JB IN_LOOP 小于'0',不是数字.

CMP AL, '9'

JA IN_LOOP 大于'9',不是数字.

SUB AL, '0'

MOV CL, AL

MOV CH, 0

MOV AX, x

MOV BX, 10老数据乘源明以10

MUL BX

ADD AX, CX加上新数据.

MOV x, AX保存.

CMP AX, 99

JA IN_LOOP

JMP _INX

--------------------------------

_IN_END:

DISP_STR MSG3 宏调用,提示 The HEX is :

MOV AX, x

MOV BX, 16

MOV CX, 0

D_1:MOV DX, 0

DIV BX

ADD DL, '0'

CMP DL, 3AH

JB ZZZ

ADD DL, 7

ZZZ:

PUSH DX

INC CX

CMP AX, 0

JNE D_1

MOV AH, 2

D_2:POP DX

INT 21H

LOOP D_2

--------------------------------

MOV AH, 4CH

INT 21H

--------------------------------

CODE ENDS

END START

=====================


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12352564.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存