WriteConsoleOutputCharacterA proto
CreateFileA proto
WriteFile proto
ReadConsoleA proto
ExitProcess proto
GetStdHandle proto
SetConsoleCursorPosition proto
CloseHandle proto
big proto
.data
FILE_BEGIN = 0
FILE_CURRENT = 1
CREATE_ALWAYS = 2
DO_NOT_SHARE = 0
GENERIC_WRITE = 40000000h
NULL = 0
STD_OUTPUT_HANDLE = -11
STD_INPUT_HANDLE = -10
FILE_ATTRIBUTE_NORMAL = 80h
STD_INPUT_HANDLE = -10
COORD STRUCT
X WORD 0
Y WORD 0
COORD ENDS
nb qword 0
MMM COORD <0,0>
hhh qword 0
filehandle qword ?
max = 50;最大输入字符数加2
dta byte max dup (0)
fn byte "myfile.txt",0
ddd byte "ID:"
byte "lastname:"
byte "firstname:"
byte "birthday:"
consoleOutHandle qword ?
consoleInHandle qword ?
dat qword 0
.code
main proc
sub rsp,40
mov rcx,STD_OUTPUT_HANDLE
call GetStdHandle
mov consoleOutHandle,rax
mov rcx,STD_INPUT_HANDLE
call GetStdHandle
mov consoleInHandle,rax
mov rcx,2;输入学生人数
call sr
add rsp,40
mov ecx,0
call ExitProcess
main endp
sr proc
sub rsp,72
mov r12,rcx
mov rcx,offset fn
mov rdx,GENERIC_WRITE
mov r8,DO_NOT_SHARE
mov r9,NULL
mov qword ptr [rsp + 4 * SIZEOF qword],CREATE_ALWAYS
mov qword ptr [rsp + 5 * sizeof qword],FILE_ATTRIBUTE_NORMAL
mov qword ptr [rsp + 6 * sizeof qword],0
call CreateFileA
mov filehandle,rax
mov rbx,offset ddd
L3:
mov rcx,4
L2:
push rcx
push rbx ;设置rdi即前缀字数
call big
pop rbx
mov rcx,consoleOutHandle
mov rdx,rbx
mov r8,rdi
mov rbp,offset MMM
mov r9,[rbp]
mov rbp,offset hhh
mov qword ptr [rsp + 4 * sizeof qword],rbp
call WriteConsoleOutputCharacterA
mov ax,word ptr hhh
add MMM.X,ax
mov rcx,consoleOutHandle
mov rbp,offset MMM
mov rdx,[rbp]
call SetConsoleCursorPosition
inc MMM.Y
mov MMM.X,0
mov rcx,consoleInHandle
mov rdx,offset dta
mov r8,max
mov r9,offset dat
mov qword ptr [ rsp + 4 * sizeof qword ],0
call ReadConsoleA
mov rcx,filehandle
mov rdx,rbx
mov r8,rdi
mov r9,offset hhh
mov qword ptr [rsp + 4 * sizeof qword],0
call WriteFile
mov rcx,filehandle
mov rdx,offset dta
mov r8,max
mov r9,offset hhh
mov qword ptr [ rsp + 4 * sizeof qword ],0
call WriteFile
call big ;设置rbx即前缀偏移量
pop rcx
dec rcx
jne L2
mov rbx,offset ddd
dec r12
jne L3
mov rcx,filehandle
call CloseHandle
add rsp,72
ret
sr endp
big proc ;获得前缀数量和偏移量
mov rdi,0
L4:
mov cl,[rbx]
cmp cl,':'
je L5
inc rdi
inc rbx
jmp L4
L5:
inc rdi
inc rbx
ret
big endp
end
汇编语言提示输入个人信息并写入文本文档,人数不限
最新推荐文章于 2022-10-28 21:13:23 发布