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

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

  1. LIS355

    LIS355 New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2010
    Сообщения:
    4
    ребят у меня вопрос.
    я использую отображаение в видеобуфер. задача - считать записанную строку и ее модифицировать. только считать "просто так" не получается. можно как нибудь получить значение нужной ячейки?
     
  2. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    LIS355
    подробнее, никто не понял. В какой видеобуфер, как читаете и откуда. Лучше с фрагментом кода для иллюстрации
     
  3. LIS355

    LIS355 New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2010
    Сообщения:
    4
    так суть была в том что я командой stosw заносил значения в видеобуфер(B800 режим 3), а потом мне нужно было их читать и изменять. но только я вот в дебагере не мог понять, я заношу одно, а выводится совсем другое. потом опытным путем понял что в видеобуфере хранится то что в данный момент видно на экране, тоесть получается я читал не то что я заносил, а символы из дебаггера. теперь во всем разобрался.
     
  4. Aneor_asm

    Aneor_asm New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    11
    я вот пробую окрасить экран и потом вернуть его)он у меня черным становится, но потом не меняет цвет) скажите в чем ошибка)
    Код (Text):
    1. cseg segment
    2. assume cs:cseg
    3. org 100h
    4.  
    5. start:
    6.  
    7. mov ah, 10h
    8. int 16h
    9.  
    10. mov ah, 10h
    11. mov al, 2
    12. mov bx, 01h
    13. int 10h
    14.  
    15. mov ah, 10h
    16. int 16h
    17.  
    18. mov ah, 10h
    19. mov al, 2
    20. mov bx, 00h
    21. int 10h
    22.  
    23.  
    24. int 20h
    25.  
    26. cseg ends
    27. end start
     
  5. Aneor_asm

    Aneor_asm New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    11
    блин проблемка) о почему-то только первый символ окрашивает а почему дальше не идет не понятно
    Код (Text):
    1. cseg segment
    2. assume cs:cseg
    3. org 100h
    4. handl db ?
    5. start:
    6.  
    7.  
    8. ;mov ah, 10h
    9. ;int 16h
    10.  
    11. mov ah, 02h
    12. mov bh, 00
    13. mov dh, 0
    14. mov dl, 0
    15. int 10h
    16.  
    17. mov cx, 2000
    18. loop1:
    19. push cx
    20.  
    21. mov ah, 08h
    22. mov bh, 00
    23. int 10h
    24. mov handl, al
    25.  
    26. mov ah, 09h
    27. mov bh, 00
    28. mov cx, 1
    29. mov al, handl
    30. mov bl, 04h
    31. int 10h
    32.  
    33. pop cx
    34. loop loop1
    35.  
    36. mov ah, 10h
    37. int 16h
    38.  
    39. int 20h
    40.  
    41.  
    42.  
    43. cseg ends
    44. end start
     
  6. Jmix

    Jmix New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    9
    http://assembler.ucoz.ru/ Мой форум. предлогаю поучаствовать в развитии. Общаемся, формируем команды по силе. А знание- это сила. Может с нами вы быстрее научитесь или поможете проекту.
     
  7. Kirow

    Kirow New Member

    Публикаций:
    0
    Регистрация:
    16 окт 2010
    Сообщения:
    24
    В общем нужна подсказка.
    Работаю сейчас с динамическим распределением памяти.
    Необходимо создать связный список.Создал структуру, содержащую указатель на предыдущий, следующий элементы массива и некоторые доп. данные
    Код (Text):
    1. LIST STRUC
    2.      prev               DD ?
    3.      hour               DD ?
    4.          min                DD ?
    5.          sec                DD ?
    6.          msec               DD ?
    7.          PhysMemAv  DD ?
    8.          VirtMemAv  DD ?
    9.          next               DD ?
    10. LIST ends
    Делаю создание кучи и выделение памяти под новый элемент массива
    Код (Text):
    1.         invoke HeapCreate,HEAP_NO_SERIALIZE,sizeof(LIST),NULL
    2.         mov hHeap,eax
    3.         invoke HeapAlloc,hHeap,HEAP_ZERO_MEMORY,sizeof(LIST)
    Вот теперь сам вопрос.Как загнать в выделенную память заполненную структуру?
     
  8. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    [offtopic]
    Jmix
    1. Не в тему.
    2. Есть ли у вас хоть одна статья, которую вы написали САМИ? Не скопировали, не сдернули с васма или у КК, а вот сели, разобрались в чем-то, поняли, что можете это объяснить лучше остальных, и - написали? Я не увидел
    3. Объясните смысл создания сайта (кроме денежно-коммерческого, раскрутка-продажа ссылок-баннеры), на котором нет своего материала, а только заимствованные. Нет, не в эту тему - это оффтопик будет. Прямо на главной странице у себя напишите, за каким чертом вы решили это сделать. И что принципиально нового и полезного мы, читатели, от этого получим ;)
    [/offtopic]
     
  9. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    [offtop]
    FatMoon
    Вот что он сам написал. Теперь будем знать, число 3 - это тоже бит, как и число 1. И что, короче, бит=2. И как бэ - всех это пока устраивает ;)
     
  10. Kirow

    Kirow New Member

    Публикаций:
    0
    Регистрация:
    16 окт 2010
    Сообщения:
    24
    Перефразирую свой вопрос.
    Есть ли какое-нибудь макросредство в масме чтобы задав адрес начала блока кучи и адрес забитой структуры произошло копирование в кучу или считывание из кучи в структуру.
    Самому как-то не хочется писать.
     
  11. edemko

    edemko New Member

    Публикаций:
    0
    Регистрация:
    25 ноя 2009
    Сообщения:
    454
    Kirow, прогортай до процедуры "memory".

    Использование:
    Код (Text):
    1.         stdcall memory 0,ЧИСЛО             ;выделить блок в ЧИСЛО байт
    2.         mov     esi,eax
    3.         ...
    4.         stdcall memory esi,ЧИСЛО+ЕЩЕ_ЧИСЛО ;убавить/прибавить байт в выделеном ранее блоке
    5.         ...
    6.         stdcall memory esi,0               ;освободить память
    ...
    это не пропаганда моего проекта на 922 строчки, включая комментарии ")
     
  12. AlexSun

    AlexSun New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    54
    Ребята, загляните пожалуйста в тему http://wasm.ru/forum/viewtopic.php?id=39157 (создал отдельно т.к. эту вначале не заметил)
     
  13. Kirow

    Kirow New Member

    Публикаций:
    0
    Регистрация:
    16 окт 2010
    Сообщения:
    24
    edemko
    ссылка "memory" куда-то не туда привела )
    а вот за пропаганду спасибо.Я конечно не на FASM'e пишу,но для ознакомительных целей и такой исходник подходит.
     
  14. edemko

    edemko New Member

    Публикаций:
    0
    Регистрация:
    25 ноя 2009
    Сообщения:
    454
    Код (Text):
    1. format pe gui 4.0
    2. include 'win32ax.inc'
    3.  
    4.  
    5. section '' code executable import readable writable
    6.   library kernel32,'kernel32.dll',\
    7.           user32,'user32.dll'
    8.  
    9.   include 'api\kernel32.inc'
    10.   include 'api\user32.inc'
    11.  
    12.  
    13.   struct LIST
    14.     prev      dd ?
    15.     hour      dd ?
    16.     min       dd ?
    17.     sec       dd ?
    18.     msec      dd ?
    19.     PhysMemAv dd ?
    20.     VirtMemAv dd ?
    21.     next      dd ?
    22.   ends
    23.   ;list1 LIST 1,2,3,4,5,6,7,8
    24.  
    25.   entry $
    26.         stdcall memory,0  ,sizeof.LIST
    27.         stdcall memory,eax,sizeof.LIST*2
    28.         stdcall memory,eax,sizeof.LIST*3
    29.         stdcall memory,eax,sizeof.LIST*4
    30.         stdcall memory,eax,sizeof.LIST*3
    31.         stdcall memory,eax,sizeof.LIST*2
    32.         stdcall memory,eax,sizeof.LIST
    33.         stdcall memory,eax,0
    34.  
    35.         invoke  ExitProcess,0
    36.  
    37.  
    38.  
    39.  
    40.  
    41.  
    42. ; if [mem]=[bytes]=0{
    43. ;   return
    44. ; }
    45. ; if ([mem]<>0)&([bytes]<>0){
    46. ;   return size([mem],[bytes])
    47. ; }
    48. ; if [mem]=0{
    49. ;   return get([bytes])
    50. ; }
    51. ; if [bytes]=0{
    52. ;   free([mem])
    53. ;   return
    54. ; }
    55. proc memory; mem,bytes
    56.         xchg    edx,[esp+4]
    57.         xchg    ecx,[esp+8]
    58.         pushfd
    59.         cld
    60.         test    ecx,ecx
    61.         jz      .free
    62.         test    edx,edx
    63.         jz      .get
    64. .size:  invoke  GetProcessHeap                           ;GetProcessHeap:
    65.         invoke  HeapReAlloc,eax,HEAP_ZERO_MEMORY,edx,ecx ;  mov     eax,[fs:$18]
    66.         jmp     .exit                                    ;  mov     eax,[eax+$30]
    67. .get:   invoke  GetProcessHeap                           ;  mov     eax,[eax+$18]
    68.         invoke  HeapAlloc,eax,HEAP_ZERO_MEMORY,ecx       ;  ret
    69.         jmp     .exit
    70. .free:  test    edx,edx
    71.         jz      .exit
    72.         push    eax
    73.         invoke  GetProcessHeap
    74.         invoke  HeapFree,eax,ecx,edx
    75.         pop     eax
    76. .exit:  popfd
    77.         mov     ecx,[esp+8]
    78.         mov     edx,[esp+4]
    79.         ret     8
    80. endp
     
  15. Jmix

    Jmix New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    9
    3 FatMoon, цель сайта- сформировать команды программистов, которые занимались бы любимым делом, конкурировали между собой. Тут другая система общения, в центре которого форум. 2 На нем и будут все мои статьи, которые каждый желающий сможет дополнить или поправить просто продолжая мысль, с помощью диалога. И статьи не устареют, потому что будут постоянно меняться. Начало уже есть, ) 1 Я сам студент и не нашел более подходящей темы. )
     
  16. Jmix

    Jmix New Member

    Публикаций:
    0
    Регистрация:
    3 ноя 2010
    Сообщения:
    9
    То, что ты выше процитировал- это для полных чайников. Я, придставь себе, тоже раньше не знал, что бит или байт-это всего лишь числа, а не какие-то абстрактные понятия. И меня это оч удивило. Может немного наивно, но зато для людей. Я не Лев Толстой, пишу как умею. Причем основные статьи-темы пока даже не начались.
     
  17. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    2Jmix

    3) Бит и байт это единицы измерения количества информации. Читайте Шеннона, а не занимайтесь хернёй.
    2) Учите матчасть.
    1) Повторяйте пункт №2, каждый раз, когда хочется что-либо написать до тех пор, пока желание не отпадёт.

    UPD: С нетерпением ждём продолжения ваших изысканий, основных, так сказать, статей...
     
  18. Miyamoto

    Miyamoto New Member

    Публикаций:
    0
    Регистрация:
    23 окт 2010
    Сообщения:
    46
    Jmix

    Пардон, но вы молоды и глупы.

    Пройдет лет пять, и вы будете со смехом вспоминать вашу затею создать крутой сайт на юкозе, с копипиженными устаревшими статьями (ксакеп! КК!), со своими статьями, улучшения с помощью диалога и т.п. бред.

    Забейте лучше сразу, времени потраченного не будет жалко.
     
  19. Miyamoto

    Miyamoto New Member

    Публикаций:
    0
    Регистрация:
    23 окт 2010
    Сообщения:
    46
    ЗЫ

    Простите, а корованы на вашем сайте грабить можно?
     
  20. Kirow

    Kirow New Member

    Публикаций:
    0
    Регистрация:
    16 окт 2010
    Сообщения:
    24
    edemko
    оно конечно спасибо, только я так и не понял как ваш пример применить к моему случаю.
    У меня есть CurrentAddr в котором содержится указатель на блок кучи размером в sizeof(LIST)
    у меня есть забитый объект INFO структуры LIST.
    по-моему должна быть какая-то функция чтобы это скопировать.
    Ибо при копировании вручную получается бред по-моему
    к примеру...короче в сад примеры, а то зависну еще на часа два.
    Нужно макросредство