Студентам с вопросами о лабораторных работах сюда

Тема в разделе "WASM.BEGINNERS", создана пользователем IceStudent, 11 ноя 2006.

  1. TcDiamond

    TcDiamond New Member

    Публикаций:
    0
    Регистрация:
    12 янв 2009
    Сообщения:
    6
    ввод - вывод осуществляются прерыванием int 21h. к примеру ввод символа ф-ия 01h в прерывании int 21h
     
  2. TcDiamond

    TcDiamond New Member

    Публикаций:
    0
    Регистрация:
    12 янв 2009
    Сообщения:
    6
    Подскажите плиз как загрузить текст из текстового файла в уже заданный массив байт...
     
  3. altcore

    altcore New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2006
    Сообщения:
    22
    Ребята, помогите решить задание, которое служит допуском к экзамену, который будет послезавтра! Заранее спасибо!

    1) Воспользоваться подходящей директивой EQU и предложить более короткий вариант записи директивы:
    S DB "abcdefhg=abcdef+k"

    2) Дано описание :
    A DW ? ; число со знаком
    B DW ?
    Вычислить: B:=(A div 1000)(A mod 1000)

    3) Дано описание:
    X DD ?
    Напечатать значение Х в виде беззнакового десятичного числа. (Обратить особое внимание на возможность переполнения в команде DIV.)
     
  4. altcore

    altcore New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2006
    Сообщения:
    22
    глюкает инет...
     
  5. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    1)Наверное так
    Код (Text):
    1. a equ 'abcdef'
    2. s db a,'hg=',a,'+k'
    2)
    Код (Text):
    1. mov ax,[A]
    2. xor dx,dx
    3. mov cx,1000
    4. div cx
    5. mul dx
    6. mov [b],ax
    3) Уже в который раз
     
  6. TcDiamond

    TcDiamond New Member

    Публикаций:
    0
    Регистрация:
    12 янв 2009
    Сообщения:
    6
    подскажите, плиз, как удалить символ по определенному номеру, в уже имеющейся строке... оч надо!((
     
  7. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    TcDiamond
    Так попробуй
    Код (Text):
    1. lea esi,[text+number] ;number - номер символа
    2. lea edi,[esi-1]
    3. mov ecx,[length]      ;length - длина строки
    4. sub ecx,number
    5. rep movsb
     
  8. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
     
  9. xROM

    xROM New Member

    Публикаций:
    0
    Регистрация:
    30 сен 2008
    Сообщения:
    21
    читай посимвольно от начало_строки+номер, записывай его в текущий_символ-1, сравнивай его с концом строки(для asciiz 00h, для unicode читай вордами, для дос '$')

    если для номера символа 1 - это первый символ строки, то что-то вроде того:

    mov bx, number
    lp:
    mov al, byte ptr:[string+bx]
    dec bx
    mov byte ptr:[string+bx],al
    add bx,2
    cmp al,'$'
    jnz lp
     
  10. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    max7C4
    Ну я предполагал, что number считается с 1 (хотя не по-дзенски это).
     
  11. Max_Cohen

    Max_Cohen New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2009
    Сообщения:
    19
    Адрес:
    Где-то здесь
    Помогите. Написал так. Не работает. TASM 5

    [ code ]
    .486
    .model flat, stdcall
    SPI_SETDESKWALLPAPER = 20
    SPIF_UPDATEINIFILE = 1
    extern ExitProcess:Proc
    extern SystemParametersInfo:Proc
    includelib tasm\lib\import32.lib
    .data
    pFile db 'a.bmp', 0
    .code
    begin: push SPIF_UPDATEINIFILE
    push offset pFile
    push 0
    push SPI_SETDESKWALLPAPER
    call SystemParametersInfo
    push 0
    call ExitProcess
    end begin
     
  12. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    SystemParametersInfoA :)
     
  13. TcDiamond

    TcDiamond New Member

    Публикаций:
    0
    Регистрация:
    12 янв 2009
    Сообщения:
    6
    спасибо всем))
     
  14. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Max_Cohen
    вместо push 0/call ExitProcess можно поставить retn
     
  15. Teddy

    Teddy New Member

    Публикаций:
    0
    Регистрация:
    25 дек 2008
    Сообщения:
    2
    НУЖНО ПРОПИСАТЬ ПРАВИЛО

    на лабах писали фаервол,который пропускает все пакеты если IP совпадает с прописанным нами , а иначе блокирует их
    Код (Text):
    1. .386
    2. .model flat, stdcall
    3.  
    4. include c:\masm32\include\w2k\ntstatus.inc
    5. include c:\masm32\include\w2k\ntddk.inc
    6. include c:\masm32\include\w2k\pfhook.inc
    7. include c:\masm32\include\w2k\ntoskrnl.inc
    8. include c:\masm32\Macros\Strings.mac
    9. includelib c:\masm32\lib\w2k\ntdll.lib
    10. includelib c:\masm32\lib\w2k\ntoskrnl.lib
    11.  
    12. set_hook PROTO:PacketFilterExtensionPtr
    13.  
    14. .data
    15. CCOUNTED_UNICODE_STRING "\\Device\\IPFILTERDRIVER",drvsmbl,4
    16. ipfilter_name UNICODE_STRING <>
    17. hook_nfo PF_SET_EXTENSION_HOOK_INFO <>
    18. status NTSTATUS ?
    19. devobj PDEVICE_OBJECT ?
    20. isb IO_STATUS_BLOCK <>
    21. fileobj PFILE_OBJECT NULL
    22. myirp PIRP NULL
    23.  
    24. .code
    25.  
    26. DriverEntry proc pDriverObject:PDRIVER_OBJECT, pusRegistryPath:PUNICODE_STRING
    27.   mov eax,offset hookproc
    28.   invoke set_hook, eax
    29.    .if eax != STATUS_SUCCESS
    30.        ret
    31.      .endif
    32.  
    33.  
    34.       mov eax,pDriverObject
    35.       assume eax:ptr DRIVER_OBJECT
    36.  
    37.       mov [eax].DriverUnload,offset Unload
    38.       assume eax:nothing
    39.       mov eax,STATUS_SUCCESS
    40.    ret
    41. DriverEntry endp
    42.  
    43. Unload proc p1DriverObject:PDRIVER_OBJECT
    44.   invoke set_hook,NULL
    45.   ret
    46. Unload endp
    47.  
    48. set_hook proc hook_fn:PacketFilterExtensionPtr
    49.   invoke IoGetDeviceObjectPointer,addr drvsmbl,STANDARD_RIGHTS_ALL, addr fileobj, addr devobj
    50.   mov status, eax
    51.    .if eax != STATUS_SUCCESS
    52.      jmp exit
    53.    .endif
    54.   mov eax,hook_fn
    55.   mov hook_nfo.ExtensionPointer,eax
    56.   invoke IoBuildDeviceIoControlRequest, IOCTL_PF_SET_EXTENSION_POINTER (), devobj, addr hook_nfo, sizeof hook_nfo, NULL, 0, FALSE, NULL, addr isb
    57.   mov myirp,eax
    58.     .if eax == NULL
    59.      mov status, STATUS_INSUFFICIENT_RESOURCES
    60.      jmp exit
    61.     .endif
    62.   invoke IoCallDriver,devobj,myirp
    63.   mov myirp,NULL
    64.   mov eax,STATUS_SUCCESS
    65.   ret
    66. exit:
    67.     .if fileobj!=NULL
    68.        invoke ObDereferenceObject,fileobj
    69.     .endif
    70.     mov eax,status
    71.     ret
    72. set_hook endp
    73.  
    74. hookproc proc PacketHeader:PTR BYTE, Packet:PTR BYTE, PacketLength:WORD, RecvInterfaceIndex:WORD, SendInterfaceIndex:WORD, RecvLinkNextHop:DWORD, SendLinkNextHop:DWORD
    75.     mov eax,PF_DROP
    76.   ret
    77. hookproc endp
    78.  
    79.  
    80. end DriverEntry
    нужно прописать новое правило,чтобы при возрастании портов он записывал изменения в файл
    помогите пожалуйста,буду очень благодарна
     
  16. amduser

    amduser New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    7
    Код (Text):
    1. org 100h
    2. MOV AX,12H
    3. INT 10H
    4. MOV DX, MESS1
    5. MOV AH, 9
    6. INT 21H
    7.  
    8. MOV BX,10
    9. XOR SI,SI
    10. MOV CX,4
    11. MOREIN: MOV AH, 1  
    12.     INT 21H
    13.     SUB AL,48
    14.     JL  DONE
    15.     CMP AL,9
    16.     JG  DONE
    17.     CBW
    18.     XCHG    SI,AX
    19.     MUL BX
    20.     ADD SI,AX
    21. LOOP    MOREIN
    22. DONE:
    23.  
    24. MOV DX,MESS2
    25. MOV AH,9
    26. INT 21H
    27.  
    28. XOR DI,DI
    29. NXTPT:  MOV [TEMP1],1
    30.     MOV CX,SI
    31.     FLDZ
    32.     ADMORE: MOV AX,DI
    33.         SHR AX,1
    34.         MOV DX,[TEMP1]
    35.         SHL DX,1
    36.         SUB DX,1
    37.         MOV [TEMP2],DX
    38.         MUL [TEMP2]
    39.         DIV [REDUCE]
    40.         MOV [TEMP3],DX
    41.         FILD    [TEMP3]
    42.         FMUL    [RADIAN]
    43.         FSIN
    44.         FIMUL   [MULTIP]
    45.         FIDIV   [TEMP2]
    46.         FADDP
    47.         INC [TEMP1]
    48.     LOOP    ADMORE
    49.     FISTP   [ISINE+DI]
    50.     ADD DI,02
    51.     CMP DI,720
    52. JNG NXTPT
    53.  
    54. MOV CX,140
    55. MOV AX,0C0Fh
    56. DOALL:  MOV DX,240
    57.     SUB DX,[ISINE+DI-2]
    58.     INT 10H
    59.     INC CX
    60.     SUB DI,2
    61. JNE DOALL
    62. ;*******************************************************************
    63.  
    64. MOV AH,07
    65. INT 21H
    66. MOV AX,3
    67. INT 10H
    68. RET
    69.  
    70. MULTIP  DW  200
    71. RADIAN  DQ  0.017453292519943295769236907684886
    72. REDUCE  DW  360
    73. TEMP1   DW  ?
    74. TEMP2   DW  ?
    75. TEMP3   DW  ?
    76. ISINE   DW  361 DUP (0)
    77. MESS1   DB  ' Введите число гармоник: $',13H
    78. MESS2   DB  ' Вычисления...$'
     
  17. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    А каким должен быть результат работы? Вот переписал на FASM выводится каккая-то хрень, но красво.
    Код (Text):
    1. org 100h
    2. MOV AX,12H
    3. INT 10H
    4. MOV DX, MESS1
    5. MOV AH, 9
    6. INT 21H
    7.  
    8. MOV BX,10
    9. XOR SI,SI
    10. MOV CX,4
    11. MOREIN: MOV AH, 1  
    12.     INT 21H
    13.     SUB AL,48
    14.     JL  DONE
    15.     CMP AL,9
    16.     JG  DONE
    17.     CBW
    18.     XCHG    SI,AX
    19.     MUL BX
    20.     ADD SI,AX
    21. LOOP    MOREIN
    22. DONE:
    23.  
    24. MOV DX,MESS2
    25. MOV AH,9
    26. INT 21H
    27.  
    28. XOR DI,DI
    29. NXTPT:  MOV [TEMP1],1
    30.     MOV CX,SI
    31.     FLDZ
    32.     ADMORE: MOV AX,DI
    33.         SHR AX,1
    34.         MOV DX,[TEMP1]
    35.         SHL DX,1
    36.         SUB DX,1
    37.         MOV [TEMP2],DX
    38.         MUL [TEMP2]
    39.         DIV [REDUCE]
    40.         MOV [TEMP3],DX
    41.         FILD    [TEMP3]
    42.         FMUL    [RADIAN]
    43.         FSIN
    44.         FIMUL   [MULTIP]
    45.         FIDIV   [TEMP2]
    46.         FADDP
    47.         INC [TEMP1]
    48.     LOOP    ADMORE
    49.     FISTP   [ISINE+DI]
    50.     ADD DI,02
    51.     CMP DI,720
    52. JNG NXTPT
    53.  
    54. MOV CX,140
    55. MOV AX,0C0Fh
    56. DOALL:  MOV DX,240
    57.     SUB DX,[ISINE+DI-2]
    58.     INT 10H
    59.     INC CX
    60.     SUB DI,2
    61. JNE DOALL
    62. ;*******************************************************************
    63.  
    64. MOV AH,07
    65. INT 21H
    66. MOV AX,3
    67. INT 10H
    68. RET
    69.  
    70. MULTIP  DW  200
    71. RADIAN  DQ  0.017453292519943295769236907684886
    72. REDUCE  DW  360
    73. TEMP1   DW  ?
    74. TEMP2   DW  ?
    75. TEMP3   DW  ?
    76. ISINE   DW  361 DUP (0)
    77. MESS1   DB  ' Ââåäèòå ÷èñëî ãàðìîíèê: $',13H
    78. MESS2   DB  ' Âû÷èñëåíèÿ...               $'
     
  18. amduser

    amduser New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    7
    а в чем отличие от TASMa? Мне нужно на TASMe.
     
  19. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    amduser
    1) Вместо LEA REG,MEM пишется MOV REG,MEM (или LEA REG,[MEM])
    2) Вместо MOV REG,MEM пишется MOV REG,[MEM]
    3) Возможно TASM не рассчитан на такое
    Код (Text):
    1. RADIAN  DQ  0.017453292519943295769236907684886
     
  20. amduser

    amduser New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    7
    не могли бы прокоментировать этот код? а то вообще не понятно...