[ Assembler ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by !_filin_!, 25 May 2007.

  1. SEKTOR3A

    SEKTOR3A New Member

    Joined:
    2 May 2009
    Messages:
    36
    Likes Received:
    1
    Reputations:
    0
    плиз помогите разобраться в написание криптора ,исходники по адресу http://webfile.ru/4339401 при компиляции выдает следующею ошибку or [edi].characteristics,80000000h ;can write ,а когда убераю эту строку компелит но крипт после не криптует,(исходники с wasm.ru).


    для себя для изучения сорцов
     
  2. Jino

    Jino New Member

    Joined:
    27 Sep 2007
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    Начал изучать ассемблер по книге Крупника и столкнулся с проблемой.
    Написал программу:
    Затем, смотрю через OllyDbg как оно работает... Но при запуске, через Олли, программа не закрывается, а отладчик пишет: "Process terminated, exit code 5"
    Что это значит?

    P.S. Знаю, что вопрос глупый...
     
  3. fluffylion

    fluffylion Member

    Joined:
    22 Feb 2010
    Messages:
    55
    Likes Received:
    10
    Reputations:
    0
    Jino, это значит, что программа завершилась, а 5 - код возврата

    to SEKTOR3A, не нашел такой строки в коде, попробуй напиши название поля структуры с большой буквы, т.е. Characteristics
     
    #703 fluffylion, 4 Mar 2010
    Last edited: 5 Mar 2010
  4. Jino

    Jino New Member

    Joined:
    27 Sep 2007
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    Хм... а почему тогда окно с приложением не закрывается?
     
  5. SEKTOR3A

    SEKTOR3A New Member

    Joined:
    2 May 2009
    Messages:
    36
    Likes Received:
    1
    Reputations:
    0
    сори в сорцах сам изменил код да забыл код на место поставить вот оригинал исходник скачать http://webfile.ru/4340200 ну всеровно ошибка в этих строках

    or [edi].characteristics,80000000h ;can write
    тем кому не знает отредактировать путь k mz_procs.inc
    и бантик

    часть кода
    ;//////////////////////////////////
    ;// Crypt C0de //
    ;//////////////////////////////////
    pushad
    invoke GetTickCount
    invoke nseed,eax
    invoke nrandom,255
    mov dwCryptKey,al
    mov esi,pFileHeader
    assume esi:ptr IMAGE_FILE_HEADER
    mov cx,[esi].NumberOfSections
    mov edi,pSectionTable
    assume edi:ptr IMAGE_SECTION_HEADER
    .while cx != 0
    invoke CanCrypt,pPE,edi
    test eax,eax
    jnz @F
    or [edi].characteristics,80000000h ;can write
    lea ebx,[edi].PointerToLinenumbers
    mov word ptr [ebx],Sign
    mov edx,[edi].PointerToRawData
    add edx,hMap
    xor eax,eax
    .while eax <= [edi].SizeOfRawData
    push eax
    mov ah,dwCryptKey
    xor byte ptr [edx],ah
    pop eax
    inc eax
    inc edx
    .endw
     
    #705 SEKTOR3A, 5 Mar 2010
    Last edited: 5 Mar 2010
  6. fluffylion

    fluffylion Member

    Joined:
    22 Feb 2010
    Messages:
    55
    Likes Received:
    10
    Reputations:
    0
    Jino какое окно? Я так понимаю, ты говоришь про окно отладчика, так оно и не должно закрываться...

    to SEKTOR3A, я ж написал в своем посте - напиши Characteristics (название данного поля структуры IMAGE_SECTION_HEADER пишется с большой буквы)
     
    #706 fluffylion, 5 Mar 2010
    Last edited: 5 Mar 2010
  7. SEKTOR3A

    SEKTOR3A New Member

    Joined:
    2 May 2009
    Messages:
    36
    Likes Received:
    1
    Reputations:
    0

    спасиб,вот еще вопрос собрал с кусков программку и решил сделать жойнер,но при компиляции выдает такую ошибку RT_VERSION,versions

    а если убераю эту строку то выкидывает на ресурсы и выдает вот что
    dd type,80000000h+label-root@resource
    подправьте плиз
    сам код

    PHP:
    format PE GUI 4.0
    entry start

    include 'include\win32a.inc'


     
    IDD_DLG11000
     IDC_EDT1
    1001
     IDC_BTN1
    1002
     IDC_BTN2
    1003
     IDC_EDT2
    1004
     IDC_GRP1
    1005
     IDC_GRP2
    1006
     IDC_BTN3
    1007
     IDC_BTN5
    1009
     IDC_BTN4
    1008
    IDR_PICT
    1010







    section 
    '.data' data readable writeable

      hInstance dd 
    ?
      
    hIc dd ?
      
    fOneBf rb 129h
      fTwoBf rb 129h
      outBuf rb 129h

      file_one_opn  OPENFILENAME sizeof
    .OPENFILENAME,0,0,FileFltr,0,0,1,fOneBf,127,0,0,0,0,0,0,0,0,0,0,0
      file_two_opn  OPENFILENAME sizeof
    .OPENFILENAME,0,0,FileFltr,0,0,1,fTwoBf,127,0,0,0,0,0,0,0,0,0,0,0
      fout OPENFILENAME sizeof
    .OPENFILENAME,0,0,exefiltr,0,0,1,outBuf,127,0,0,0,0,0,0,0,0,0,0,0
      FileFltr db 
    'All files',0,'*.*',0,0
      exefiltr db 
    'EXE files',0,'*.EXE',0,0
      error db 
    'ERROR',0
      fnf db 
    "Patch is not set!",0
      outName  db 
    'Joined.exe',0
      finished db 
    'Finished',0
      crok     db 
    'Created successfully!',0
      fnfon db 
    'File not found!',0
      unkn  db  
    'Processing error',0
      cantop db 
    "Can't open file.",0
      cantcr db 
    "Can't create file!",0
      Inf db 
    'Information',0
      filalr db 
    'File already exists. Replace?',0
      about db 
    'About',0
      aboutd db 
    '================================',0dh,0ah
             db 
    '=========[  version 0.1 ]=========',0dh,0ah
             db 
    '========[......... ]========',0dh,0ah
             db 
    '=======[ ........... ]=======',0dh,0ah
             db 
    '================================',0
      fHandle1 dd 
    ?
      
    fHandle2 dd ?
      
    fs1 dd ?
      
    fs2 dd ?
      
    fPone dd ?
      
    fPtwo dd ?
      
    cread dd ?
      
    cwritten dd ?
      
    hFileOut dd ?
      
    hRes dd ?
      
    hFnRes dd ?
      
    ResSz dd ?
      
    pModule dd ?
      
    hRES dd ?






    section '.code' code readable executable

      start
    :

            
    invoke  GetModuleHandle,0
            mov 
    [hInstance],eax
             mov 
    [hIc],eax
             invoke LoadIcon
    ,[hInstance],17
            invoke  DialogBoxParam
    ,[hInstance],1000,HWND_DESKTOP,DialogProc,0
            invoke  ExitProcess
    ,0
     jmp  finish

    proc DialogProc hwnd
    ,msg,wparam,lparam
            push    ebx esi edi
            cmp     
    [msg],WM_INITDIALOG
            je      intd
            cmp     
    [msg],WM_CLOSE
            je      wmclose
            cmp     
    [msg],WM_COMMAND
            je      goi
            cmp     
    [msg],WM_INITDIALOG
            je      intd
            
    xor     eax,eax
            jmp     finish



    intd
    :


      
    invoke SendMessage,[hwnd],WM_SETICON,0,[hIc],ICON_SMALL,eax
           jmp  finish



    goi
    :
          
    cmp     [wparam],BN_CLICKED shl 16 1002
          je      file_one_open
          cmp     
    [wparam],BN_CLICKED shl 16 1003
          je      file_two_open
          cmp     
    [wparam],BN_CLICKED shl 16 1009
          je      wmclose
          cmp     
    [wparam],BN_CLICKED shl 16 1007
          je      build
          cmp     
    [wparam],BN_CLICKED shl 16 1008
          je      abd
          jmp     finish

    abd
    :
        
    invoke MessageBox,HWND_DESKTOP,aboutd,about,MB_OK
        jmp     finish





    file_one_open
    :
           
    invoke RtlZeroMemory,fOneBf,128h
           invoke GetOpenFileName
    ,file_one_opn
           cmp eax
    ,0
           je  NoSelFo
           invoke  SetDlgItemText
    ,[hwnd],1001,fOneBf,128h
      NoSelFo
    :
           
    jmp    finish



    file_two_open
    :
           
    invoke RtlZeroMemory,fTwoBf,128h
           invoke GetOpenFileName
    ,file_two_opn
           cmp eax
    ,0
           je  NoSelFt
           invoke  SetDlgItemText
    ,[hwnd],1004,fTwoBf,128h
      NoSelFt
    :
           
    jmp    finish


    build
    :
        
    cmp dword[fOneBf],0
        jne f1ok
        invoke MessageBox
    ,HWND_DESKTOP,fnf,error,MB_OK+MB_ICONWARNING
        jmp finish
      f1ok
    :
        
    cmp dword[fOneBf],0
        jne f2ok
        invoke MessageBox
    ,HWND_DESKTOP,fnf,error,MB_OK+MB_ICONWARNING
        jmp finish
      f2ok
    :
         
    invoke RtlZeroMemory,fOneBf,128h
         invoke RtlZeroMemory
    ,fTwoBf,128h
         invoke GetDlgItemText
    ,[hwnd],1001,fOneBf,128h
         invoke GetDlgItemText
    ,[hwnd],1004,fTwoBf,128h
    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\
         
    mov  [fHandle1],0
         invoke CreateFile
    ,fOneBf,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
         cmp eax
    ,INVALID_HANDLE_VALUE
         je fErrorO
         mov 
    [fHandle1],eax
         invoke GetFileSize
    ,eax,fs1
         mov 
    [fs1],eax
    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\
         
    mov  [fHandle2],0
         invoke CreateFile
    ,fTwoBf,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
         cmp eax
    ,INVALID_HANDLE_VALUE
         je fErrorO
         mov 
    [fHandle2],eax
         invoke GetFileSize
    ,eax,fs2
         mov 
    [fs2],eax
    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\
         
    invoke GlobalAlloc,GPTR,[fs1]
         
    mov [fPone],eax
         invoke GlobalAlloc
    ,GPTR,[fs2]
         
    mov [fPtwo],eax
         invoke ReadFile
    ,[fHandle1],[fPone],[fs1],cread,NULL
         invoke ReadFile
    ,[fHandle2],[fPtwo],[fs2],cread,NULL
         invoke CloseHandle
    ,[fHandle1]
         
    invoke CloseHandle,[fHandle2]
    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\
         
    invoke lstrcpy,[fout.lpstrFile],outName
     _
    @next:
         
    invoke GetSaveFileName,fout
         cmp eax
    ,0
         je finish
         invoke CreateFile
    ,outBuf,GENERIC_WRITE or GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL
         cmp eax
    ,INVALID_HANDLE_VALUE
         jne 
    @next
          invoke MessageBox
    ,HWND_DESKTOP,cantcr,error,MB_OK+MB_ICONERROR
        jmp finish
     
    @next:
         
    mov [hFileOut],eax
         invoke FindResource
    ,[hInstance],5000,RT_RCDATA
         mov 
    [hFnRes],eax
         invoke LoadResource
    ,[hInstance],eax
         mov 
    [hRes],eax
         invoke SizeofResource
    ,[hInstance],[hFnRes]
         
    mov [ResSz],eax
         invoke LockResource
    ,[hRes]
         
    mov  [pModule],eax
         invoke WriteFile
    ,[hFileOut],[pModule],[ResSz],cwritten,FALSE
         cmp eax
    ,0
         je error

         invoke SetFilePointer
    ,[hFileOut],400h,0,FILE_BEGIN
         stdcall get_file_name
    ,fOneBf
         invoke WriteFile
    ,[hFileOut],ebx,32h,cwritten,FALSE
         invoke SetFilePointer
    ,[hFileOut],432h,0,FILE_BEGIN
         stdcall get_file_name
    ,fTwoBf
         invoke WriteFile
    ,[hFileOut],ebx,32h,cwritten,FALSE




         invoke CloseHandle
    ,[hFileOut]
    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


         
    invoke BeginUpdateResource,outBuf,FALSE
         cmp eax
    ,0
         je  Error
         mov 
    [hRES],eax
         invoke UpdateResource
    ,[hRES],RT_RCDATA,2001,0,[fPone],[fs1]
         
    invoke UpdateResource,[hRES],RT_RCDATA,2002,0,[fPtwo],[fs2]
         
    invoke EndUpdateResource,[hRES],FALSE
         invoke MessageBox
    ,HWND_DESKTOP,crok,finished,MB_OK+MB_ICONINFORMATION
         invoke GlobalFree
    ,[fPone]
         
    invoke GlobalFree,[fPtwo]

         
    jmp finish




     fErrorO
    :
         
    cmp  [fHandle1],0
         je fhcl
         invoke CloseHandle
    ,[fHandle1]
      
    fhcl:
         
    cmp  [fHandle2],0
         je fh2cl
         invoke CloseHandle
    ,[fHandle2]
      
    fh2cl:
         
    invoke GetLastError
         cmp eax
    ,2
         jne 
    @2ok
         invoke MessageBox
    ,HWND_DESKTOP,fnfon,error,MB_OK+MB_ICONWARNING
         jmp finish
      
    @2ok:
         
    invoke MessageBox,HWND_DESKTOP,cantop,error,MB_OK+MB_ICONWARNING
         jmp finish




      Error
    :
           
    invoke MessageBox,HWND_DESKTOP,unkn,error,MB_OK+MB_ICONERROR
           jmp finish

      wmclose
    :
            
    invoke  EndDialog,[hwnd],0

      finish
    :
            
    pop     edi esi ebx
            ret
    endp


    proc get_file_name bf

          mov eax
    ,[bf]
          
    invoke lstrlen,eax
          mov ebx
    ,[bf]
          
    add ebx,eax
     
    @_@next:
          
    dec ebx
          cmp byte
    [ebx],'\'
          jne @_@next
          inc ebx
    ret

    endp


    section '
    .idata' import data readable writeable

      library kernel32,'
    KERNEL32.DLL',\
              user32,'
    USER32.DLL',\
              COMDLG32,'
    COMDLG32.dll'

      include '
    include\api\kernel32.inc'
      include '
    include\api\user32.inc'


            import  COMDLG32,\
             GetOpenFileName,'
    GetOpenFileNameA',\
             GetSaveFileName,'
    GetSaveFileNameA'






    section '
    .rsrc' resource data readable
        IDR_PICT = 27

      directory  RT_DIALOG,dialogs,\
                  RT_BITMAP,bitmaps,\
                 RT_ICON,icons,\
                 RT_GROUP_ICON,group_icons,\
                 RT_RCDATA,rdata


          resource icons,\
    1,LANG_NEUTRAL,icon_data
    resource group_icons,\
    17,LANG_NEUTRAL,main_icon
    resource versions,\
    2,LANG_ENGLISH+SUBLANG_DEFAULT,version

    resource bitmaps,\
    IDR_PICT,LANG_NEUTRAL,pict

       resource dialogs,\
        1000,LANG_ENGLISH+SUBLANG_DEFAULT,dialog0



     dialog dialog0,'
    Senator version 0.1 ',10,20,213,240,WS_VISIBLE+WS_POPUP+WS_CAPTION+WS_SYSMENU+DS_CENTER+DS_MODALFRAME

        dialogitem "Edit","",IDC_EDT1,24,10,188,10,WS_CHILD OR WS_VISIBLE OR WS_TABSTOP OR ES_AUTOHSCROLL,WS_EX_CLIENTEDGE
        dialogitem "Edit","",IDC_EDT2,24,32,188,10,WS_CHILD OR WS_VISIBLE OR WS_TABSTOP OR ES_AUTOHSCROLL,WS_EX_CLIENTEDGE
        dialogitem "Button","+++",IDC_BTN1,6,10,15,9,WS_CHILD or WS_VISIBLE or  WS_TABSTOP
        dialogitem "Button","+++",IDC_BTN2,6,32,15,9,WS_CHILD or WS_VISIBLE or WS_TABSTOP
        dialogitem "Button","File 2",IDC_GRP1,2,24,232,22,WS_CHILD or WS_VISIBLE or BS_GROUPBOX
        dialogitem "Button","File 1",IDC_GRP2,2,1,232,22,WS_CHILD or WS_VISIBLE or BS_GROUPBOX
        dialogitem "Button","Crypt",IDC_BTN3,10,48,54,15,WS_CHILD or WS_VISIBLE or WS_TABSTOP
        dialogitem "Button","Exit",IDC_BTN5,152,48,58,15 ,WS_CHILD or WS_VISIBLE or WS_TABSTOP
        dialogitem "Button","About",IDC_BTN4,86,48,56,15 ,WS_CHILD or WS_VISIBLE or WS_TABSTOP
       dialogitem '
    STATIC',IDR_PICT,1,1,99,0,1,WS_VISIBLE+SS_BITMAP
      enddialog
        bitmap pict,'
    map.bmp'
    icon main_icon,icon_data,'
    611.ico'
    versioninfo version,VOS__WINDOWS32,VFT_APP,VFT2_UNKNOWN,LANG_ENGLISH+SUBLANG_DEFAULT,0,\
    '
    FileDescription','Bitmap example',\
     '
    LegalCopyright',<'Copyright ',0A9h,' BarMentaLisk 2009'>,\
    '
    FileVersion','0.1',\
    '
    ProductVersion','0.1',\
    '
    OriginalFilename','bmp_example'
     
    #707 SEKTOR3A, 5 Mar 2010
    Last edited: 5 Mar 2010
  8. Tor Bel

    Tor Bel New Member

    Joined:
    13 Dec 2008
    Messages:
    12
    Likes Received:
    0
    Reputations:
    0
    А после RT_VERSION,versions запятую или обратный слеш не пропустил?

    А висходнике именно так
    Code:
    LANG_E  NGLISH
     
  9. SEKTOR3A

    SEKTOR3A New Member

    Joined:
    2 May 2009
    Messages:
    36
    Likes Received:
    1
    Reputations:
    0



    а ты сам пробовал скомпелировать,





    исходник я уже 10 раз изменил под себя ,а оригинальный исходник рабочий это я сам типо вписал сам вот эти коды и он перестал работать
    PHP:
    section '.idata' import data readable writeable

      library kernel32
    ,'KERNEL32.DLL',\
              
    user32,'USER32.DLL',\
              
    COMDLG32,'COMDLG32.dll'

      
    include 'includeapikernel32.inc'
      
    include 'includeapiuser32.inc'


            
    import  COMDLG32,\
             
    GetOpenFileName,'GetOpenFileNameA',\
             
    GetSaveFileName,'GetSaveFileNameA'






    section '.rsrc' resource data readable
        IDR_PICT 
    27

      directory  RT_DIALOG
    ,dialogs,\
                  
    RT_BITMAP,bitmaps,\
                 
    RT_ICON,icons,\
                 
    RT_GROUP_ICON,group_icons,\
                 
    RT_RCDATA,rdata


          resource icons
    ,\
    1,LANG_NEUTRAL,icon_data
    resource group_icons
    ,\
    17,LANG_NEUTRAL,main_icon
    resource versions
    ,\
    2,LANG_ENGLISH+SUBLANG_DEFAULT,version

    resource bitmaps
    ,\
    IDR_PICT,LANG_NEUTRAL,pict

       resource dialogs
    ,\
        
    1000,LANG_ENGLISH+SUBLANG_DEFAULT,dialog0
    PHP:
     bitmap pict,'map.bmp'
    icon main_icon,icon_data,'611.ico'
    versioninfo version,VOS__WINDOWS32,VFT_APP,VFT2_UNKNOWN,LANG_E  NGLISH+SUBLANG_DEFAULT,0,\
    'FileDescription','Bitmap example',\
     
    'LegalCopyright',<'Copyright ',0A9h,' BarMentaLisk 2009'>,\
    'FileVersion','0.1',\
    'ProductVersion','0.1',\
    'OriginalFilename','bmp_example  

    PHP:
    intd:


      
    invoke SendMessage,[hwnd],WM_SETICON,0,[hIc],ICON_SMALL,eax
           jmp  finish
    PHP:
    mov [hInstance],eax 
    эти строки кода были добавлены мной, оригинальный исходник в полном рабочем состоянии ,хотел добавит картинку в деологовое окно да не вышло.
    ---------------------------------------------------
    и еще по первому посту к fluffylion (название данного поля структуры IMAGE_SECTION_HEADER пишется с большой буквы В исходниках так и есть с большой буквы но не выходит не по первому моему вопросу не по второму,спс
     
    #709 SEKTOR3A, 5 Mar 2010
    Last edited: 5 Mar 2010
  10. Jino

    Jino New Member

    Joined:
    27 Sep 2007
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    Нет, когда начинаешь смотреть Олей программу открывается окно консольного приложения - оно не закрывается... так и должно быть?
     
  11. SEKTOR3A

    SEKTOR3A New Member

    Joined:
    2 May 2009
    Messages:
    36
    Likes Received:
    1
    Reputations:
    0

    Спасибо разобрался сам должно выйти так как было задумано
    [​IMG]
     
  12. Fl0dER

    Fl0dER New Member

    Joined:
    22 Dec 2008
    Messages:
    81
    Likes Received:
    3
    Reputations:
    0
    Люди добрые обьясните как компилить в masm последней версии открываю простейший проэкт из папки tutorial , жмякаю project -> built_all и ввижу в коммандной строке



    Code:
    Microsoft (R) Macro Assembler Version 6.14.8444
    Copyright (C) Microsoft Corp 1981-1997.  All rights reserved.
    
     Assembling: C:\masm32\tutorial\console\demo1\hello.asm
    Microsoft (R) Incremental Linker Version 5.12.8078
    Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
    
    LINK : fatal error LNK1181: cannot open input file "C:\masm32\tutorial\console\d
    emo1\hello.obj"
    _
    Link error
    Для продолжения нажмите любую клавишу . . .
     
  13. dr.Pilulkin

    dr.Pilulkin Elder - Старейшина

    Joined:
    3 Jun 2007
    Messages:
    42
    Likes Received:
    16
    Reputations:
    0
    Code:
    C:\Masm32\Bin\ML.EXE /c /coff /Cp /nologo /I"C:\Masm32\Include" "hello.asm"
    C:\Masm32\Bin\LINK.EXE /SUBSYSTEM:WINDOWS /RELEASE /VERSION:4.0 /LIBPATH:"C:\Masm32\Lib" /OUT:"hello.exe" "hello.obj"
    
    Создай батник в папке с hello.asm.
    Если не получается тогда не знаю. У тебя похоже не создается .obj файл. Возможно ошибки в коде.
     
    #713 dr.Pilulkin, 24 Mar 2010
    Last edited: 24 Mar 2010
  14. wm2

    wm2 New Member

    Joined:
    12 Mar 2008
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    вычислить сумму чисел меньше 6

    Code:
    data segment
    max dw ?
    mass dw 1,14,4,9,5,21,3,17,12,100
    data ends
    code segment
    assume cs: code, ds: data
    		start: 	mov ax, data
    		mov ds, ax 		; Загрузить сегментный адрес данных
    		  		lea bx, mass 	; Загрузить адрес смещения массива
    		 		mov cx, 10 	; Установить счетчик повторений цикла
    		 		mov ax, 6;      Первый элемент массива в Аккумулятор
    		  	beg: 	cmp [bx],ax	; Сравнить текущий элемент 
    		; массива с максимальным
    		 		jg no 	; он больше
    		add dx, [bx]		; сумма
    
    	no:  inc bx 	
    	             inc bx		; Следующий элемент
    				 ; массива
    			loop beg                                
     	quit:	mov ax,4C00h 		; Код завершения 0
    int 21h 			; Выход в DOS
    	code ends
    	end start
    
    подскажите пожалуйста как сделать что бы работало в байте ?
     
  15. fluffylion

    fluffylion Member

    Joined:
    22 Feb 2010
    Messages:
    55
    Likes Received:
    10
    Reputations:
    0
    wm2, что значит в байте?Ты имеешь в виду чтобы программа работала с переменными, размерностью в байт, а не слово?
     
  16. wm2

    wm2 New Member

    Joined:
    12 Mar 2008
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    fluffylion, именно... у нас практика в универе страдает :-D
     
  17. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Code:
    data segment
    mass db 1,14,4,9,5,21,3,17,12,100
    data ends
    code segment
    assume cs: code, ds: data
    		start: 	mov ax, data
    		mov ds, ax 		; Загрузить сегментный адрес данных
                            xor dx, dx; обнулим сумму
    		  		lea bx, mass 	; Загрузить адрес смещения массива
    		 		mov cx, 10 	; Установить счетчик повторений цикла
    		 		mov al, 6;      Первый элемент массива в Аккумулятор
    		  	beg: 	cmp [bx],al	; Сравнить текущий элемент 
    		; массива с максимальным
    		 		jg no 	; он больше
    		add dx, byte [bx]		; сумма
    
    	no:  
    	             inc bx		; Следующий элемент
    				 ; массива
    			loop beg                                
     	quit:	mov ax,4C00h 		; Код завершения 0
    int 21h 			; Выход в DOS
    	code ends
    	end start
    
     
    1 person likes this.
  18. wm2

    wm2 New Member

    Joined:
    12 Mar 2008
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    slesh, получается ответ 0x183D а должно 0x000D
     
  19. fluffylion

    fluffylion Member

    Joined:
    22 Feb 2010
    Messages:
    55
    Likes Received:
    10
    Reputations:
    0
    Code:
    data segment 
    mass db 1,14,4,9,5,21,3,17,12,100
    data ends
    code segment  assume cs:code, ds:data 
    start:
    mov ax, data
    mov ds, ax	; Загрузить сегментный адрес данных
    lea bx, mass	; Загрузить адрес смещения массива
    mov cx, 10	; Установить счетчик повторений цикла
    mov al, 6	; Первый элемент массива в Аккумулятор
    xor dx, dx
    beg:
    cmp byte [bx], al	; Сравнить текущий элемент массива с максимальным
    jg no	; он больше
    add dl, byte [bx]	; сумма
    jnc no ; если сумма укладывается в размерность байт, то переход на no
    adc dh, 0 ; иначе корректируем сумму
    no:
    inc bx	; Следующий элемент массива
    loop beg
    quit:
    mov ax, 4C00h	; Код завершения 0
    int 21h	; Выход в DOS
    code ends
    end start
    
    может где ошибся, не тестировал
     
    #719 fluffylion, 1 Apr 2010
    Last edited: 1 Apr 2010
  20. wm2

    wm2 New Member

    Joined:
    12 Mar 2008
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Cпасибо большое обоим :) помогли разобраться :) +1