Advertisement
Guest User

Untitled

a guest
Nov 8th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Title Форма
  2. include C:\masm32\include\irvine32.inc
  3. includelib c:\masm32\lib\user32.lib
  4. includelib c:\masm32\lib\kernel32.lib
  5. includelib c:\masm32\lib\Irvine32.lib
  6. str_copyn PROTO,
  7.             source:ptr byte,
  8.             target:ptr byte,
  9.             count:dword
  10. Str_concat PROTO,
  11.             source:ptr byte,
  12.             target:ptr byte
  13.  
  14. .data
  15.     targetstr    byte    "ABCDE",10 dup(0)
  16.     sourcestr    byte    "FGH",0
  17.  
  18.  
  19. ;________________
  20. .code
  21. ;mov ax,@data
  22. ;mov ds,ax
  23.  
  24. main PROC
  25. start:
  26.  
  27.  
  28.  
  29. invoke str_concat, addr sourcestr, addr targetstr
  30.    
  31.  
  32.  
  33.  
  34. call QUIT
  35. main ENDP
  36. Str_concat PROC USES ecx esi edi,   ;Соединняет строки, из 1 дописывает в 2
  37.                 source:ptr byte,    ;Адрес исходной (1)
  38.                 target:ptr byte     ;Адрес выходной строки(сюда дописывает)
  39.  
  40.     mov edi, target                 ; ищем символ 0 в конечной строке
  41.     mov al,0                        ; //
  42.     mov ecx, lengthof target        ; счетчик
  43.     cld        
  44.     repne scasb
  45.  ;jnz
  46.     dec edi                         ;в EDI адрес искомого символа(0) в строке target (получатель)
  47.  ;cld
  48.     mov ecx,lengthof source           ;счетчик, КОличество символов в копируемой, исходная
  49.     mov esi,source                  ;Здесь копируемая строка, источик
  50.     rep movsb
  51.    ret
  52. Str_concat ENDP
  53.  
  54. str_copyN proc uses eax ecx esi edi,    ; N символов копирует из 1 в 2 ?
  55.             source:ptr byte,
  56.             target:ptr byte,
  57.             count:dword
  58.  
  59.     invoke str_length,source
  60.     mov ecx,count
  61.   ; inc ecx
  62.     mov esi,source
  63.     mov edi,target
  64.     cld
  65.     rep movsb
  66.     ret
  67. str_copyN endp
  68.  
  69.  
  70. ;***********************************
  71. ;********* выход из проги ***
  72. quit PROC
  73.     call dumpregs
  74.     call waitmsg
  75.     exit
  76. quit ENDP    
  77. ;*****************************
  78. end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement