|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- assume cs:code
- code segment
- start:
- ;0 清屏,1 前景色 2 背景色 3 上滚动
- ;ah 功能 al 颜色
- MOV AH,1
- MOV AL,01010000b
- INT 7ch
- mov ax,4c00h
- int 21h
- code ends
- end start
复制代码
- assume cs:code
- code segment
- start:
- MOV AX,CS
- MOV DS,AX
- MOV SI,offset int7chStart
-
- MOV AX,0
- MOV ES,AX
- MOV DI,200h
- MOV CX,offset int7chEnd-offset int7chStart
- CLD
- REP movsb
- MOV AX,0
- MOV DS,AX
- MOV WORD ptr DS:[7ch*4],200h
- MOV WORD ptr DS:[7ch*4+2],0
- mov ax,4c00h
- int 21h
-
- int7chStart:
- JMP short ok
- ;qingping标记这里偏移是根据 当前cs:0 偏移位置,而我们要把这段程序写到 o:200的位置去,所以要-a+202h 为什么不是加+200h是因为 jmp short ok这里占了2个字节
- ; 也可以这样写 a DW qingping-int7chStart+200h,qianjingse-int7chStart+200h,beijingse-int7chStart+200h,shanggundong-int7chStart+200h
- a DW qingping-a+202h,qianjingse-a+202h,beijingse-a+202h,shanggundong-a+202h
- ok:
- PUSH AX
- PUSH DS
- PUSH bx
- PUSH AX
-
- MOV AX,CS
- MOV DS,AX
-
- POP AX
-
-
- MOV BH,0
- ADD AH,AH
- MOV BL,AH
-
- CALL WORD ptr CS:[bx+202h]
- POP bx
- POP DS
- POP AX
- IRET
-
- ;清屏
- qingping:
- PUSH AX
- PUSH ES
- PUSH SI
- PUSH CX
-
- MOV AX,0b800h
- MOV ES,AX
- MOV SI,0
- MOV CX,2000
- s:
- MOV BYTE ptr ES:[si],' '
- ADD SI,2
- LOOP s
- POP CX
- POP SI
- POP ES
- POP AX
- RET
- ;前景色
- qianjingse:
- PUSH AX
- PUSH ES
- PUSH SI
- PUSH CX
- PUSH AX
- MOV AX,0b800h
- MOV ES,AX
- MOV SI,1
- POP AX
- MOV CX,2000
- s1:
- AND BYTE ptr ES:[si],11111000b
- OR ES:[SI],AL
- ADD SI,2
- LOOP s1
-
- POP CX
- POP SI
- POP ES
- POP AX
- RET
- ;背景色
- beijingse:
- PUSH AX
- PUSH ES
- PUSH SI
- PUSH CX
- PUSH AX
- MOV AX,0b800h
- MOV ES,AX
- MOV SI,1
- POP AX
- MOV CX,2000
- s2:
- AND BYTE ptr ES:[si],10001111b
- OR ES:[SI],AL
- ADD SI,2
- LOOP s2
-
- POP CX
- POP SI
- POP ES
- POP AX
- RET
- ;上滚动
- shanggundong:
- PUSH AX
- PUSH DS
- PUSH ES
- PUSH SI
- PUSH DI
- PUSH CX
-
- MOV AX,0b800h
- MOV DS,AX
- MOV ES,AX
-
- MOV SI,160
- MOV DI,0
- MOV CX,24
- CLD
- s3:
- PUSH CX
- MOV CX,160
-
- REP movsb
- POP CX
- LOOP s3
- MOV CX,160
- s4:
- MOV BYTE ptr [di],' '
- ADD DI,2
- LOOP s4
- POP CX
- POP DI
- POP SI
- POP ES
- POP DS
- POP AX
- RET
- int7chEnd:nop
- code ends
- end start
复制代码
|
|