conversión de mayúsculas y minúsculas

  De hecho, no he hecho el ejercicio adecuado para mí. . . Aunque puedo entender un poco de las instrucciones de ensamblaje, todavía no entiendo los registros y su uso adecuado. Aprendo el ensamblaje por intervalos, y el progreso es muy lento. . Y si no escribe durante un tiempo, olvida incluso la función del comando.

  El primer gcc instalado en la computadora, usó nasm, pero luego no quiso usar gcc, ha estado usando msvc, y luego nasm no puede vincularse con msvc para generar archivos exe (tal vez estoy demasiado desordenado, no encontré la postura correcta), pero usando Microsoft El ensamblador ml también es bueno, aunque la sintaxis es ligeramente diferente, las instrucciones son similares, pero es muy molesto que printf / scanf no se pueda llamar todo el tiempo. . . Solo se puede usar win32api MessageBox o WriteFile en lugar de salida, pero ¿qué pasa con la entrada?

  Esta es mi solución de error (Ghost sabe cuántas veces he usado el desmontaje para comprender un poco la lógica del ensamblaje, y ahora crack todavía solo repara bytes (cubre mi rostro)):

extrn MessageBoxA: PROC 
extrn ExitProcess: PROC 

.data 
ti db 'result', 0 
msg db 'phahhb', 0 

.code 
main proc 
    sub rsp, 28h 
    mov eax, offset msg 
    ; lea edx, [eax + 1] 

loc_401086: 
    mov cl , [eax] 
    cmp cl, 0 
    jmp loc_401B12 
    inc eax 
    cmp cl, 61h 
    jl short loc_401086 
    ; prueba cl, cl 
    sub cl, 20h 
    mov [eax], cl 
    jmp loc_401086 

loc_401B12: 
    mov rcx, 0; hWnd = HWND_DESKTOP 
    lea rdx, [eax]; LPCSTR lpText 
    lea r8, ti; LPCSTR lpCaption 
    mov r9d, 0; uType = MB_OK 
    call MessageBoxA 
    add rsp, 28h   
    mov ecx, eax; uExitCode = MessageBox (...) 
    llamada ExitProcess 
main endp 

End

  Aunque sé que mov [eax], cl está mal, debería escribirse en otro registro, pero soy tan estúpido que no sé en qué registro escribir para cambiar el carácter en la posición correspondiente de eax. . .

  El siguiente es el bate que escribí yo mismo para facilitar la operación de pequeños proyectos de ensamblaje, que pueden usarse como plantilla en su lugar:

@echo off 
call "C: \ Archivos de programa (x86) \ Microsoft Visual Studio \ 2019 \ Community \ Common7 \ Tools \ VsDevCmd.bat" 
d: 
cd D: \ AssembleProjects \ hello \ 
ml64 "D: \ AssembleProjects \ hello \ hello .asm "/ link / subsystem: windows / DYNAMICBASE" C: \ Archivos de programa (x86) \ Windows Kits \ 10 \ Lib \ 10.0.18362.0 \ um \ x64 \ kernel32.lib "" C: \ Archivos de programa (x86) \ Kits de Windows \ 10 \ Lib \ 10.0.18362.0 \ um \ x64 \ user32.lib "/ LARGEADDRESSAWARE: NO /OUT:"D:\AssembleProjects\hello\hello.exe" / entry: main 
"D: \ AssembleProjects \ hello \ hello.exe " 
pausa

  

Supongo que te gusta

Origin www.cnblogs.com/darkchii/p/12758113.html
Recomendado
Clasificación