查看: 360|回复: 0
打印 上一主题 下一主题

大虾帮忙一下

[复制链接] qrcode

4

主题

8

帖子

22

积分

新手上路

Rank: 1

积分
22
楼主
跳转到指定楼层
发表于 2015-12-9 11:33 AM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不知道有没有大虾帮忙改一下这个电子表的程序,小弟急用,万分感激!
程序如下:
DATA SEGMENT
DISPLAY DB ?
MSG DB "PRESS 'ESC' TO EXIT...",10H,13H
BKCOLOR DW 6D6DH
MCOLOR DW 0030H
SCOLOR DW 0028H
MEM DW ?
NUBTBL DB 1, 1, 1, 0, 1, 1, 1 ; 0
DB 0, 0, 1, 0, 0, 1, 0 ; 1
DB 1, 0, 1, 1, 1, 0, 1 ; 2
DB 1, 0, 1, 1, 0, 1, 1 ; 3
DB 0, 1, 1, 1, 0, 1, 0 ; 4
DB 1, 1, 0, 1, 0, 1, 1 ; 5
DB 1, 1, 0, 1, 1, 1, 1 ; 6
DB 1, 0, 1, 0, 0, 1, 0 ; 7
DB 1, 1, 1, 1, 1, 1, 1 ; 8
DB 1, 1, 1, 1, 0, 1, 1 ; 9
PTSEG DW 7,2,35,10
DW 2,7,10,35
DW 32,7,40,35
DW 7,32,35,40
DW 2,37,10,65
DW 32,37,40,65
DW 7,62,35,70
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
MOV AX,0A000H
MOV ES,AX

MOV AH,0FH
INT 10H
MOV DISPLAY,AL ;save display

MOV AX,0013H
INT 10H ;set display

CLD
MOV AX,BKCOLOR
XOR DI,DI
MOV CX,08000H
REP STOSW
_WAIT:
MOV AH,2CH
INT 21H ;read time

PUSH CX
PUSH DX
CALL MYTIME

MOV AH,1
INT 16H ;read buffer of keyboard

PUSH AX
MOV DL,0FFH
MOV AX,0C06H ;clear keyboard buffer
INT 21H

POP AX
SUB AL,1BH
JNZ _WAIT

MOV AL,DISPLAY
MOV AH,00
INT 10H ;resume the model of displing

MOV AX,4C00H
INT 21H ;return to dos

;************* End Of Main() *************************

;------------ my three process ---------------------
;------------ proc 0:
MYTIME PROC NEAR PASCAL USES AX BX CX DX DI SI,
hm:word,sec:word
MOV CX,HM ;hour
XOR AX,AX
MOV AL,CH
AAM
PUSH AX
MOV CL,8
SHR AX,CL
MOV DX,20
PUSH DX
MOV DX,50
PUSH DX
PUSH MCOLOR
PUSH AX
CALL DISPLAYDIGIT

POP AX
AND AX,0FH
MOV DX,62
PUSH DX
MOV DX,50
PUSH DX
PUSH MCOLOR
PUSH AX
CALL DISPLAYDIGIT
MOV CX,HM ;mintute
XOR AX,AX
MOV AL,CL
AAM
PUSH AX
MOV CL,8
SHR AX,CL
MOV DX,116
PUSH DX
MOV DX,50
PUSH DX
PUSH MCOLOR
PUSH AX
CALL DISPLAYDIGIT

POP AX
AND AX,0FH
MOV DX,158
PUSH DX
MOV DX,50
PUSH DX
PUSH MCOLOR
PUSH AX
CALL DISPLAYDIGIT
MOV CX,SEC ;second
XOR AX,AX
MOV AL,CH
AAM
PUSH AX
MOV CL,8
SHR AX,CL
MOV DX,212
PUSH DX
MOV DX,50
PUSH DX
PUSH SCOLOR
PUSH AX
CALL DISPLAYDIGIT

POP AX
AND AX,0FH
MOV DX,254
PUSH DX
MOV DX,50
PUSH DX
PUSH SCOLOR
PUSH AX
CALL DISPLAYDIGIT

RET
MYTIME ENDP

;------------ proc 1:
DISPLAYDIGIT PROC NEAR PASCAL USES AX BX CX DX DI SI,
x:word,y:word,color:word,num:word
LEA SI,NUBTBL
MOV BX,7
MOV AX,NUM
MUL BX
ADD SI,AX ;choise a number
LEA DI,PTSEG
XOR CX,CX
_FOR:
MOV BX,BKCOLOR
CMP BYTE PTR DS:[SI],0
JE DISPL
MOV BX,COLOR
DISPL:
MOV DX,X
ADD DX,DS:[DI]
PUSH DX

MOV DX,Y
ADD DX,DS:[DI+2]
PUSH DX

MOV DX,X
ADD DX,DS:[DI+4]
PUSH DX

MOV DX,Y
ADD DX,DS:[DI+6]
PUSH DX
PUSH BX
CALL DRAWSIXGON

INC SI
ADD DI,8
INC CX
CMP CX,7
JNE _FOR

RET
DISPLAYDIGIT ENDP


;------------ proc 2:
DRAWSIXGON PROC NEAR PASCAL USES AX BX CX DX DI SI,
startX:word,startY:word,endX:word,endY:word,color:word
LOCAL FLAG:word

MOV FLAG,1
MOV BX,startX
MOV SI,startY
MOV AX,320
MUL SI
ADD AX,BX
MOV MEM,AX ;mem=320*startY+startX
MOV AX,endY
SUB AX,startY
MOV DX,endX
SUB DX,startX
MOV CX,DX

CMP AX,DX
JC DRAW
MOV FLAG,320 ;direct
MOV CX,AX
DRAW:
XOR BX,BX
XOR SI,SI
MOV DX,3
MOV BX,COLOR
SUB CX,8 ;length of line - 8
PUSH CX
ABOVE:
MOV DI,SI ;retive point of starting
PUSH DX
MOV AX,FLAG
MUL DX
POP DX
ADD SI,AX
ADD SI,MEM
L1:
MOV BYTE PTR ES:[SI],BL
ADD SI,FLAG ;next pix
DEC CX ;bx-->next line
JNZ L1
POP CX
ADD CX,2
PUSH CX
CMP FLAG,1
JNE L2
ADD DI,320
JMP $+3
L2:
INC DI
MOV SI,DI ;next line
DEC DX
JNZ ABOVE
DOWN:
MOV DI,SI ;retive point of starting
PUSH DX
MOV AX,FLAG
MUL DX
POP DX
ADD SI,AX
ADD SI,MEM
L3:
MOV BYTE PTR ES:[SI],BL
ADD SI,FLAG
DEC CX
JNZ L3
POP CX
SUB CX,2
PUSH CX
CMP FLAG,1
JNE L4
ADD DI,320
JMP $+3
L4:
INC DI
MOV SI,DI
INC DX
CMP DX,4
JNZ DOWN

POP CX
RET
DRAWSIXGON ENDP
CODE ENDS
END START
回复

使用道具 举报

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

本版积分规则

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