Задать вопрос
@Retr0Hacker

Как продублировать все буквы в строке?

Задача вот такая: "Вызвать функцию 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
  • Вопрос задан
  • 125 просмотров
Подписаться 2 Средний 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы