📄 console.asm
字号:
.386p
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
.data
lpexistingfilename db 40 dup (?)
lpnewfilename db 40 dup (?)
bfailifexists db 'FALSE',0
caption db '汇编语言-文件拷贝',0
first db '输入源文件名',0
second db '输入目标文件名',0
third db '成功拷贝',0
forth db '出错',0
text db '演示',0
.data?
align 4
num dd ?
written dd ?
hcs dd ?
hStdIn dd ?
hStdOut dd ?
inter db ?
.code
trim proc
mov eax,0dh
@@: mov ecx,ds:[ebx]
and ecx,0ffh
cmp eax,ecx
jz @f
add ebx,1
jmp @b
@@: mov eax,0
mov ds:[ebx],eax
ret
trim endp
start:
main proc
invoke SetConsoleTitleA,offset caption
invoke GetStdHandle,STD_INPUT_HANDLE
mov hStdIn,eax
invoke GetStdHandle,STD_OUTPUT_HANDLE
mov hStdOut,eax
invoke WriteConsole,hStdOut,offset first,offset second-offset first,\
offset num,NULL
invoke ReadConsole,hStdIn,offset lpexistingfilename,\
offset lpnewfilename-offset lpexistingfilename,offset num,NULL
invoke WriteConsole,hStdOut,offset second,\
offset third-offset second,offset num,NULL
invoke ReadConsole,hStdIn,offset lpnewfilename,\
offset bfailifexists-offset lpnewfilename,offset num,NULL
mov ebx,offset lpexistingfilename
invoke trim
mov ebx,offset lpnewfilename
invoke trim
invoke CopyFile,addr lpexistingfilename,addr lpnewfilename,0
cmp eax,0
jne OK
invoke WriteConsole,hStdOut,offset forth,\
offset text-offset forth,offset num,NULL
invoke CloseHandle,hStdIn
invoke ExitProcess,1
OK: invoke WriteConsole,hStdOut,offset third,\
offset forth-offset third,offset num,NULL
invoke CloseHandle,hStdIn
invoke CloseHandle,hStdOut
invoke ExitProcess,0
ret
main endp
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -