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

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

  1. ganesha007

    ganesha007 New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2009
    Сообщения:
    8
    вот, забыл вложить файл с заданиями
     
  2. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    задание до какого числа надо сделать?

    ps:
    из файлы laby.doc (см. выше)
    Хм, а я-то, дурак, думал, что в нижних адресах.

    Таблица векторов прерываний (процессор, естественно, работает в real-mode)
    начинается с адреса 0000h:0000h. А занимает она 256*4 байт.
     
  3. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Microedition
    ну какая разница, значит у препода нулевые адреса сверху. просто данная терминология никогда мне не было понятна (к чему цифры называть верхними и нижними), не ужели трудно сказать "в нулевых адресах"
     
  4. ganesha007

    ganesha007 New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2009
    Сообщения:
    8
    Парни, предлагайте свои варианты по срокам и по цене. Контрольные надо было сделать как говорится еще вчера, так что время поджимает
     
  5. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    вот. выводит hello from dos. (транслятор - fasm).
    Код (Text):
    1. use16     ;; для генерации 16-битного кода
    2. org 100h ;; в DOS com-программа загружается а адреса CS:100h
    3.  
    4. start: ;; просто метка, для нагдядности
    5. mov    ax,0003h
    6. int    10h  ;; видеорежим #3 (80x25)
    7.  
    8. mov    ah, 9
    9. mov    dx, text_string
    10. int    21h ;; прерывание 21h, функция 9 - вывести строку в стандартный вывод.
    11.  
    12. mov    ax, 4C00 ;; выход из программы с errorlevel = 0
    13. int    21h
     
  6. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    да, кстати, какой ассемблер вы используете? tasm, masm, fasm?..
     
  7. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    ой, в посте #1785 недописал.
    в конце кода добавить:
    text_string db "hello from dos$" ;; знак $ - символ окончания строки.

    в качестве языка высокого уровня будет Си.
    Код (Text):
    1. #include <stdio.h>
    2.  
    3. int main()
    4. {
    5.     printf("hello from dos");
    6.  
    7.     return 0;
    8. }
    эту программу надо компилировать, например, Borland C compiler (тот, что для дос, версия, вроде, 3.0)
     
  8. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    например, так. суть в том, что вы при старте программы перехватываете прерывание с номером 3.
    это прерывание используется отладчиками для перехвата управления.
     
  9. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    записать требуемую строку в видеобуфер (адрес 0B800:0000h, если речь идет о текстовом режиме #3).
    Код (Text):
    1. use16     ;; для генерации 16-битного кода
    2. org 100h ;; в DOS com-программа загружается а адреса CS:100h
    3.  
    4. start: ;; просто метка, для нагдядности
    5. mov    ax,0003h
    6. int    10h  ;; видеорежим #3 (80x25)
    7.  
    8. push    es ;; сохраняем ES
    9. mov    ax, 0B800h
    10. mov    es, ax
    11. mov    byte[es:0], 'D'
    12. mov    byte[es:1], 7
    13. mov    byte[es:2], 'O'
    14. mov    byte[es:3], 7
    15. mov    byte[es:4], 'S'
    16. mov    byte[es:5], 7
    17. pop    es
    18.  
    19. ;; код длинный - для наглядности.
    20.  
    21. ;; видеобуфер по сути - массив двухбайтовых структур,
    22. ;; первый байт - ASCII-код символа
    23. ;; второй байт - атрибут его (цвет, мерцание/яркость).
    24. ;; в данном случае атрибут - 7 - серый цвет, черный фон.
    25.  
    26. mov    ax, 4C00h
    27. int    21h
     
  10. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    читает с клавиатуры символы, по нажатию [enter] записывает их в файл.
    что бы не усложнять программу, путь к файлу фиксирован (см. исходник).
    Код (Text):
    1. use16
    2. org 100h
    3.  
    4. start:
    5. mov    ax, 0003h
    6. int    10h ;; видеорежим #3 (80x25)
    7.  
    8. mov    ah, 9
    9. mov    dx, enter_text
    10. int    21h ;; прерывание 21h, функция 9 - вывести строку в стандартный вывод.
    11.  
    12. mov    ax, ds
    13. mov    es, ax ;; нужно для инструкции STOSB
    14. mov    di, buffer
    15. cld
    16.  
    17. next_char:
    18. mov    ah, 01h
    19. int    21h
    20.  
    21. cmp    al, 0Dh
    22. jz     write_file
    23.  
    24. stosb  ;; записываем байт из AL по адресу ES:DI и увеличиваем значение DI на 1
    25. jmp    next_char
    26.  
    27. write_file:
    28. mov    ah, 3Ch ;; сначала создаем файл
    29. xor    cx, cx  ;; атрибуты файла
    30. mov    dx, file_path
    31. int    21h
    32.  
    33. mov    cx, di
    34. sub    cx, buffer ;; вычисляем длину буфера (для функции 40h - записи с файл)
    35.  
    36. mov    bx, ax
    37. mov    ah, 40h ;; писать в файл
    38. mov    dx, buffer
    39. int    21h
    40.  
    41.  
    42. mov    ax, 4C00h ;; выход из программы с errorlevel = 0
    43. int    21h
    44.  
    45.  
    46. ;; данные
    47.  
    48. enter_text  db "Введите текст:",13,10,"$"
    49. file_path   db "C:\file.txt",0             ;; путь к файлу для записи.
    50. buffer      db 32 dup(0)
    PS: в данном случае максимальный размер буфера (и кол-во вводимых символов) - 32 байта.
     
  11. ganesha007

    ganesha007 New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2009
    Сообщения:
    8
    В лабах используется masm
     
  12. splean

    splean New Member

    Публикаций:
    0
    Регистрация:
    9 сен 2009
    Сообщения:
    4
    На языке Assembler разработать программу компрессор-декомпрессор данных, используя алгоритм сжатия Хаффмана.

    Поискал, нашел http://www.wasm.ru/forum/viewtopic.php?pid=155938#p155938 и вот это http://compression.ru/download/articles/huff/nevesenko_2002/nevesenko_2002_huffman.html

    Первая вхламину сложная для меня (оно и понятно, я в асме почти ноль), вторая не лучше вроде.. Кто возьмется помочь и за сколько? Можно даже на основе первой ссылки, главное будет объяснить что-куда-откуда в общих чертах, опыт в программировании есть большой, да и вроде сообразительный, а тут разбираться совершенно не хочется :dntknw:
     
  13. splean

    splean New Member

    Публикаций:
    0
    Регистрация:
    9 сен 2009
    Сообщения:
    4
    К слову, в исходнике с первой ссылки не работает декомпрессия.
     
  14. splean

    splean New Member

    Публикаций:
    0
    Регистрация:
    9 сен 2009
    Сообщения:
    4
    Если есть желающие помочь за оплату, пишите на аську сразу 388 677 177, или на мыло splean.khmao at gmail dot com

    Извините за даблпостинг, не нашел как править сообщения.
     
  15. venom101

    venom101 New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    1
    Помогите пожалуйста написать програмку на ассемблеру. Условие: Организовать вывод на форму 2-х полей со списком (типа ComboBox) и заполнить несколько его строк. По выбору строк в них организовать выбор шрифта и его цвета в поле редактирования типа Memo. Очень надо, а то на днях отчислят.
     
  16. ganesha007

    ganesha007 New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2009
    Сообщения:
    8
    желающие помочь по лабам стучите в аську 441 177 095 или пишите на мыло ganesha007@sibmail.com
     
  17. Debro

    Debro New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2009
    Сообщения:
    5
    Люди, помогите пожалуйста. Нужно решить пару примеров на ассемблере, а я его не знаю вообще >_<
     
  18. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.784
    Debro
    Здесь экстрасенсов -- нет, сразу бы и писал свои примеры, мабуть помогли бы...
     
  19. Debro

    Debro New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2009
    Сообщения:
    5
    Знаю, может очень просто, но для меня лес дремучий. Буду очень признателен Т_Т
     
  20. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.784
    Debro -- халявщик-проверяльщик :)
    Код (Text):
    1. ;Найти в массиве из 5-ти переменных наименьший отрицательный элемент.
    2. .data
    3. massA db 7, -15, -2, -16, -1
    4. massB db -6, 5, 0, -9, -8
    5. massC db 9, -9, 5,  -3, 8
    6. .code
    7. mov bx,offset massA; будем искать наименьший отрицательный элемент массива А
    8. mov al,0; сравниваем с 0
    9. mov cx,5; количество элементов в массиве
    10. a0:   cmp al,[bx]
    11.        jnl a1
    12.        mov al,[bx]
    13.        inc bx
    14.        loop a0
    15. ; при выходе из цикла в AL наименьший отрицательный элемент массива А
    16. ; Найти в массиве из 5-ти переменных наибольший положительный элемент
    17. ; те же команды что и выше только замени jnl на jng
    18.  
    19. Вариант 7.
    20. Найти в массиве из 5-ти переменных наибольший положительный элемент.
    21. а) 4, -5, 0, -4, 5
    22. б)  -13, 5, 12, -3, 2
    23. в) 4, 7, 2, -7, -17