
.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
=====================
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)