📄 生成花指令.asm
字号:
.386
cseg segment use16
assume cs:cseg,ds:cseg
org 100h
start:
jmp begin
f1 db 'aaa',0 ;源文件名固定为aaa,生成的花指令目标文件名固定为bbb.asm
f2 db 'bbb.asm',0
h1 dw ?
h2 dw ?
buf db 10000 dup (?)
buf2 db 1000 dup (?)
flag db 0
count db 0
begin:
push cs
pop ds
push cs
pop es
mov dx,offset f1
mov ax,3d00h
int 21h
jc exit
mov h1,ax
mov dx,offset f2
mov cx,0
mov ah,3ch
int 21h
jc exit
mov h2,ax
cld
mov di,offset buf2
m00:
mov dx,offset buf
mov bx,h1
mov cx,10000
mov ah,3fh
int 21h
mov si,offset buf
mov cx,ax
cmp cx,4
jb m9
inc cx
m0:
dec cx
cmp cx,4
jb m4
cmp dword ptr [si],'!!!;'
jne @f
not flag
@@:
lodsb
stosb
cmp al,0ah
jne m0
cmp flag,0
je m3
mov al,9
stosb
mov al,'d'
stosb
mov al,'b'
stosb
mov al,' '
stosb
mov al,'0'
stosb
mov al,'e'
stosb
mov al,'b'
stosb
mov al,'h'
stosb
mov al,','
stosb
in al,40h
and al,3
or al,al
jnz @f
inc al
@@:
mov dl,al
add al,'0'
stosb
mov al,','
stosb
mov al,'0'
stosb
mov al,'9'
stosb
mov al,'a'
stosb
mov al,'h'
stosb
m1:
dec dl
jz m2
mov al,','
stosb
mov al,'0'
stosb
in al,40h
;mov al,9h
and al,0fh
add al,'0'
cmp al,'9'
jbe @f
add al,7
@@:
stosb
in al,40h
;mov al,0ah
and al,0fh
add al,'0'
cmp al,'9'
jbe @f
add al,7
@@:
stosb
mov al,'h'
stosb
jmp m1
m2:
mov al,13
stosb
mov al,10
stosb
m3:
sub di,offset buf2
push cx
mov cx,di
mov bx,h2
mov dx,offset buf2
mov ah,40h
int 21h
pop cx
mov di,offset buf2
jmp m0
m4:
jcxz @f
neg cx
mov dx,cx
mov cx,-1
mov bx,h1
mov ax,4201h
int 21h
@@:
jmp m00
m9:
push cx
rep movsb
mov dx,offset buf2
pop cx
mov bx,h2
mov ah,40h
int 21h
mov bx,h1
mov ah,3eh
int 21h
mov bx,h2
mov ah,3eh
int 21h
exit:
mov ah,4ch
int 21h
cseg ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -