STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7fh,6fh
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV SI,3000H
MOV AL,09H
MOV [SI],AL
MOV [SI+1],AL
MOV [SI+2],AL
MOV [SI+3],AL
MOV DI,3003H
MOV AL,81H
OUT 63H,AL ;初始化完毕
test1: MOV CX ,30 ;;测试
mov BH,0FEH
mov al,bh
out 60h,al
baochi: push si
call dis
pop si
CALL TOW ;检查是否有 开始键
LOOP baochi
JMP STOP
Begin:call subb
push si
call dis
pop si
CALL PCONE ;检查是否有暂停键按下
LOOP BEGIN
JMP STOP
TOW :in al,62h
test al,01h ;为开始减法
jnz begin
ret ;保持现在的数
pcone: in al ,62h
test al,02h ;是否停止键按下
JNZ baochi
ret ;停止
subb:
mov al,[si]
add al,[si+1]
add al,[si+2]
add al,[si+3]
cmp al,0
MOV DL,09H
jz stop
jmp a1
a1: mov ah,[si]
dec ah
mov [si],ah
INC AH
cmp AH,00H
jNZ over
mov [si],DL
jmp a2
a2: mov ah,[si+1]
dec ah
mov [si+1],AH
INC AH
cmp AH,00H
jNZ over
mov [si+1],DL
jmp a3
a3: mov ah,[si+2]
dec ah
mov [si+2],AH
INC AH
cmp AH,00H
jNZ over
mov [si+2],DL
jmp a4
a4: mov ah,[si+3]
dec ah
mov [si+3],AH
INC AH
cmp AH,00H
jNZ over
mov [si+3],DL
jmp OVER
over:ret
DIS: PUSH AX
MOV SI,3000H
MOV DL,0F7H
MOV AL,DL
AGAIN: OUT 60H,AL
MOV AL,[SI]
MOV BX,OFFSET TABLE
AND AX,00FFH
ADD BX,AX
MOV AL,[BX]
OUT 61H,AL
CALL DALLY
INC SI
MOV AL,DL
TEST AL,01H
JZ tOUT
ROR AL,1
MOV DL,AL
JMP AGAIN
TOUT: POP AX
RET
DALLY: PUSH CX
MOV CX,0005H
T1: MOV AX,0010H
T2: DEC AX
JNZ T2
LOOP T1
POP CX
RET
stop:int 03h
CODE ENDS
END START
广东工业大学自动化学院汇编实验程序
4星 · 超过85%的资源 需积分: 10 201 浏览量
2009-01-04
00:32:37
上传
评论 1
收藏 136KB RAR 举报
r4141496091
- 粉丝: 6
- 资源: 8