Задача вот такая: "Вызвать функцию GetDriveType. Проверить результат функции, если результат “Сменный диск”, вывести на экран объединение результатов функций GetComputerName и GetCurrentDirectory, в противном случае вывести на экран объединение результатов функций GetUserName и GetWindowsDirectory. Написать функцию, которая дублирует все буквы в результирующей строке и применить ее на результате."
Прошу помощи с последним пунктом: "Написать функцию, которая дублирует все буквы в результирующей строке и применить ее на результате
Вот как примерно это должно работать: "изначально = "abcdef"; результат ="aabbccddeeff"
Расскажите как вообще создавать функции в ассемблере и как продублировать все буквы(важное уточнение ТОЛЬКО БУКВЫ) в строке
P.S. для написания кода использую RadASM IDE
First.in
include WINDOWS.inc
include user32.inc
include kernel32.inc
include advapi32.inc
includelib user32.lib
includelib kernel32.lib
includelib advapi32.lib
includelib irvine32.lib
.data
hello_title db 'Lab_1', 0
size_buf1 dd 256
res db 1000 dup(0)
szbuf1 db 100 dup(0)
szbuf2 db 255 dup(0)
szformat_1 db'Computer Name: %s', 13,10
db'Current Dir: %s', 0
szbuf3 db 100 dup(0)
szbuf4 db 255 dup(0)
szformat_2 db'User Name: %s', 13,10
db'Windows Dir: %s', 0
drive db "C:\\", 0
First.asm
.386
.model flat, STDCALL
option casemap :none
include First.inc
include RADbg.inc
.code
Start:
call main
invoke ExitProcess,NULL
main proc
invoke GetDriveType, addr drive
cmp eax, DRIVE_REMOTE
jne l1
invoke GetComputerName, addr szbuf1, addr size_buf1
invoke GetCurrentDirectory, addr size_buf1, addr szbuf2
invoke wsprintf, addr res, addr szformat_1, addr szbuf1, addr szbuf2
invoke MessageBox, 0, addr res, addr hello_title, MB_OK
jmp l2
l1: invoke GetUserName, addr szbuf3, addr size_buf1
invoke GetWindowsDirectory,addr szbuf4, addr size_buf1
invoke wsprintf, addr res, addr szformat_2, addr szbuf3, addr szbuf4
invoke MessageBox, 0, addr res, addr hello_title, MB_OK
l2:
ret
main endp
end Start