📄 asc16.asm
字号:
code segment
org 100h
assume cs:code,ds:code
Start: push cs
pop ds
cld
mov ax,0013h
int 10h
call DrawDot
call wrap
mov ah,08h
int 21h
mov ax,0003h
int 10h
mov ax,4c00h
int 21h
DrawDot proc near
mov ah,11h
mov al,30h
mov bh,06
int 10h
mov ax,es
mov ds,ax
mov si,bp
mov bh,32 ;char color
mov ax,0a000h
mov es,ax
mov di,20*320+20
mov dh,8
DotLoop2:
push di
mov dl,32
DotLoop1:
mov bl,16
DotLoop0:
lodsb
mov ah,al
mov al,bh
mov cx,8
DotLoop:
rol ah,1
jc NoDot
inc di
jmp DotNext
NoDot: stosb
DotNext:loop DotLoop
add di,320-8
dec bl
jnz DotLoop0
sub di,320*16-8
dec dl
jnz DotLoop1
pop di
add di,320*16
dec dh
jnz DotLoop2
ret
DrawDot endp
wrap proc near
mov ah,32
mov al,31
Wrap_color:
mov di,320*1
mov cx,320*198
LoopWrap:
cmp es:[di],al
jbe No_Wrap
mov bx,320
cmp es:[bx+di],al
ja Wrap_next1
mov es:[bx+di],al
Wrap_next1:
cmp es:[di+1],al
ja Wrap_next2
mov es:[di+1],al
Wrap_next2:
cmp es:[di-1],al
ja Wrap_next3
mov es:[di-1],al
Wrap_next3:
neg bx
cmp es:[bx+di],al
ja Wrap_next4
mov es:[bx+di],al
Wrap_next4:
No_Wrap:
inc di
loop loopWrap
dec al
cmp al,16
ja Wrap_Color
ret
wrap endp
code ends
end Start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -