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

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

  1. JAPH

    JAPH New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    124
    Код (Text):
    1. print $ARGV[0] x $ARGV[1];
     
  2. V_i

    V_i New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2007
    Сообщения:
    5
    Ещё вопрос(Tasm). Допустим у меня есть число 121. Как мне по отдельности загнать каждое число в слово. Сначало 0001, потом 0010 и 0001?
     
  3. hecz

    hecz New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2007
    Сообщения:
    3
    Помоите пожалуйтся. Есть программа которая работает нужно сделать процедуру и вызвать ее из главной программы.Я пытался сделать но неполучается. Пишет нет стека. Пытался без стека выводит что процессор не знает команды.

    Код (Text):
    1. mydata  segment
    2. tabl        db  '0123456789ABCDEF'
    3. st1     db  '  '
    4. mydata ends
    5.  
    6. my_stack    segment stack
    7.         dw  32 dup (?)
    8. my_stack    ends
    9.  
    10. oursg   segment
    11.     assume  cs:oursg, ds:mydata
    12.  
    13. ; Код
    14. begin:
    15.     mov     ax, mydata
    16.     mov     ds, ax
    17.     xor     ax,ax
    18.  
    19. ;myproc  proc
    20.     mov     ax,0a5h
    21.     not     ax
    22.     add     ax,1
    23.     push    ax
    24.     push    ax
    25.     mov     cl,7
    26.     shr     ax,cl
    27.     cmp     ax,0
    28.     je      plus
    29.     jne     minus
    30.  
    31. plus:   mov     dl,'+'
    32.     mov     ah,2h
    33.     int     21h
    34.     jmp     contin
    35. minus:  mov     dl,'-'
    36.     mov     ah,2h
    37.     int     21h
    38.  
    39. contin: pop     ax
    40.     mov     cl,4
    41.     shr     ax,cl
    42.     and     ax,15
    43.     lea bx, tabl
    44.     xlat
    45.     mov     dx,ax
    46.     mov     ah,2h
    47.     int     21h
    48. ;---------------------------
    49.     pop     ax
    50.     and     ax,15
    51.     lea bx, tabl
    52.     xlat
    53.     mov     dl,al
    54.     mov     ah,2h
    55.     int     21h
    56. ;-------------------------------------------
    57. ;ret
    58. ;myproc endp
    59.  
    60. ;call   myproc
    61. exit:   mov     ax, 4C00h
    62.     int 21h
    63. oursg   ends
    64. end begin
     
  4. djuicesms1

    djuicesms1 New Member

    Публикаций:
    0
    Регистрация:
    4 дек 2007
    Сообщения:
    2
    Всем привет. У меня горит лаба ПОМОГИТЕ!
    Нужно на ассемблере сделать прогу для рассчитывания пересекаются ли отрезки.
    Препод накидал вот это:
    y1=a1x+b1
    y2=a2x+b2
    a1x+b1=a2x+b2

    (a1-a2)x=b2-b1
    x=b2-b1/a1-a2

    ПОМОГИТЕ! ААААААА!!! ОТЧИСЛЯЮТ по тихоньку из за ассем
     
  5. Dimka

    Dimka New Member

    Публикаций:
    0
    Регистрация:
    4 дек 2007
    Сообщения:
    8
    Всем привет!
    Как и многие здесь - новичек в ассемблере, и немного запутался в программе...
    Задание такое: вывести таблицу векторов прерываний (хотябы для одного прерывания)

    Вот что у меня получилось, вроде все нормально, но выводить не хочет(((:

    Код (Text):
    1. MASM                    ;режим работы TASM: ideal или masm
    2. MODEL  SMALL            ;модель памяти
    3. .386
    4. .DATA                   ;сегмент данных
    5.     keep_cs      dw 0          ;хранит сегмент заменяемого прерывания
    6. ;   keep_ip      dw 0          ;хранит смещение прерывания
    7.  
    8. ;
    9. .CODE                   ;сегмент кода
    10.  
    11. MAIN PROC
    12. ;
    13. MOV AX,@DATA
    14. MOV DS,AX
    15. mov ah,35h                 ;функция получения вектора
    16. mov al,21h                  ;номер вектора
    17. int 21h                    ;теперь сегмент в ES, смещение в BX
    18. ;mov keep_ip,bx             ;запоминаем смещение
    19. mov keep_cs,es             ;запоминаем сегмент
    20. ;
    21. MOV  AH,40H          ;номер функции
    22. MOV  BX,1            ;дескриптор дисплея
    23. LEA  DX,keep_cs       ;загржаем адрес строки
    24. MOV  CX,16        ;число выводимых байтов
    25. INT  21H             ;
    26.  
    27. ;MOV AH,09H
    28. ;MOV DX,BX
    29. ;INT 21H
    30. ;
    31. MOV AH,4CH        ;пересылка 4ch в регистр ah
    32. INT 21H             ;вызов прерывания с номером 21h
    33. MAIN ENDP            ;конец процедуры main
    34.  
    35. END MAIN ;конец программы с точкой входа main
     
  6. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    JAPH
    круто. я и забыл про такую возможность!
     
  7. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Dimka
    перед выводом нужно перевести число в строку
     
  8. Dimka

    Dimka New Member

    Публикаций:
    0
    Регистрация:
    4 дек 2007
    Сообщения:
    8
    А с помощью какой функции???
     
  9. Lucifers_angel

    Lucifers_angel New Member

    Публикаций:
    0
    Регистрация:
    19 ноя 2007
    Сообщения:
    1
    написал драйвер под DOS... подскажите что надо вписать в файле config.sys чтоб мой драйвер запустился при загрузке?
     
  10. djuicesms1

    djuicesms1 New Member

    Публикаций:
    0
    Регистрация:
    4 дек 2007
    Сообщения:
    2
    Всем привет. У меня горит лаба ПОМОГИТЕ!
    Нужно на ассемблере сделать прогу для рассчитывания пересекаются ли отрезки.
    Препод накидал вот это:

    y1=a1x+b1
    y2=a2x+b2
    a1x+b1=a2x+b2

    (a1-a2)x=b2-b1
    x=b2-b1/a1-a2
     
  11. hecz

    hecz New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2007
    Сообщения:
    3
    C помощью табличной трансляции XLAT
     
  12. gorod31

    gorod31 New Member

    Публикаций:
    0
    Регистрация:
    6 дек 2007
    Сообщения:
    3
    вопрос снят
     
  13. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    у компиляторов С\С++ фирмы Borland (или как они нынче называются):
    -B Compile via assembly
    у MS-компиляторов:
    /Fa[file] name assembly listing file
    И можно писать спокойно на С, у компиляторов паскаля наверняка есть схожие ключи.
     
  14. Trussardi

    Trussardi New Member

    Публикаций:
    0
    Регистрация:
    6 дек 2007
    Сообщения:
    1
    Товарищи программисты прошу вашей помощи,поскольку без нее мне будет очень худо!!!!
    Я перевелся на програмирование после 1 курса,тоисть времени для подготовки по ASM у меня не было!Сейчас мне нужно написать 2 лабы!Если кто может пожалуйста помогите

    1)Вывести в графическом режиме изображение трёхцветного вымпела используя видеобуфер.

    2)Создать оконное приложение с меню и двумя диалогами.Первый диалог имеет переключатели(Radibutton)"сплошная","штриховая" и "штрих-пунктирная" и поля ввода(editbox),второй - диалог "О программе".Меню имеет пункт "Таймер" с подпунктами "Запустить" и "Остановить".При запуске таймера начинает перемещаться отрезок синего цвета со стилем линии,соответсвующим выбранному переключателю и точками,заданными в полях ввода.
    Траекторию выбрать самостоятельно.

    В общем я действительно очень прошу помочь молодому программисту.Просто реально немогу разобраться в этом Assembler.

    Заранее огромное спс всем кто отзоветься!!
     
  15. gorod31

    gorod31 New Member

    Публикаций:
    0
    Регистрация:
    6 дек 2007
    Сообщения:
    3
    чего то не понял как это пробывал на двух компиляторах
    Turbo C++ Version 3.0 и Borland C++Builder 6
    запускал с консоли "тс -b имяфайла.cpp" ("bcb -b имяфайла.cpp") в ТС создает(окрывает) файлы b и имяфайла.cpp, в Builderе ошибки
    Что не так?
     
  16. V_i

    V_i New Member

    Публикаций:
    0
    Регистрация:
    24 ноя 2007
    Сообщения:
    5
    У меня прога такая, нахождение минимального и последнего числа взятого из txt файла. написал, но вообще не работает, как я понял что-то у меня не то с открытием файла. вот код, помогите найти ошибки:

    Код (Text):
    1. ideal
    2. model small
    3. stack 256
    4. dataseg
    5.     number dw (0)         ;Номер файла
    6.     adress db 10,13,"Vedite polniy address of the file: $"
    7.     kodirovka db 10,13,"VVedite simbol kodirovki: $"
    8.     counter db (0)        ;счетчик, сколько символов в адресе файла
    9.     counter2 db (0)
    10.     path db 100 dup (0)  ;Путь к файлу
    11.     dlina dw (0)          ;длина файла
    12.     text db 10000 dup (0)
    13.     chislo dw 0            ;сравниваемое число
    14.     posl dw 0              ;последнее число
    15.     minim dw " "           ;минимальное число
    16.     sr_arifm dw 0          ;среднее арифметическое
    17.     vrem dw 0              ;временная переменная
    18.     vrem2 db 0             ;временная переменная
    19.     desyat db 0            ;число в десятичном виде
    20. codeseg
    21. start:
    22.     mov ax, @data
    23.     mov ds, ax
    24.     call vivod             ;вызов приглашения
    25.     call enter_adress      ;ввод адреса файла с клавиатуры
    26.     call open              ;открытие файла
    27.     call count             ;проверка размера файла
    28.     call podnyatie         ;поднятие курсора наверх
    29.     call read              ;чтение файла
    30.     call berem_chislo      ;берём чило для сравнения с минимальным
    31.     call sred_ar           ;нохождение среднего арифметического
    32.     lea dx,[text]
    33.     mov ah,9
    34.     int 21h
    35.    
    36. exit:
    37.     mov ah, 4ch
    38.     int 21h
    39.  
    40. ;процедура выводит на экран строку приглашения ввода адреса
    41. ;входные данные:[adress]
    42. ;выходные данные:строка пирглашения на экране
    43. proc vivod
    44.     lea dx, [adress]
    45.     mov ah, 9              ;функция вывода на экран
    46.     int 21h
    47.     ret
    48. endp
    49.  
    50.  
    51. ;процедура ввода адреса с клавиатуры
    52. ;входные данные:адресс с клавиатуры
    53. ;выходные данные: path - в ней лежит адрес файла
    54. proc enter_adress
    55. jump2:
    56.     mov ah, 1
    57.     int 21h
    58.     cmp al, 13
    59.     je jump
    60.     mov [path + bx], al
    61.     cmp al, 13h
    62.     jne jump2
    63. jump:
    64.     ret
    65. endp
    66.    
    67.  
    68.  
    69.  
    70. ;процедура открытия файла
    71. ;входные данные: path
    72. ;выходные данные:number - номер файла  
    73. proc open
    74.     mov ah, 3dh
    75.     mov al, 2
    76.     lea dx, [path]
    77.     int 21h
    78.     mov [number], ax
    79.     ret
    80. endp
    81.  
    82. ;Процедура нахождения длины
    83. ;входные данные:number
    84. ;выходные данные:dlina - длина файла
    85. proc count
    86.     mov ah, 42h
    87.     mov al, 2
    88.     mov bx, [number]
    89.     mov cx, 0
    90.     mov dx, 0
    91.     int 21h
    92.     mov [dlina],ax
    93.     ret
    94. endp
    95.  
    96. ;процедура поднимает курсор вверх страници
    97. ;входные данные:number
    98. proc podnyatie
    99.     mov ah, 42h
    100.     mov al, 0    
    101.     mov bx, [number]
    102.     mov cx, 0
    103.     mov dx, 0
    104.     int 21h
    105.     ret
    106. endp
    107.  
    108.  
    109. ;процедура чтения файла
    110. ;входные данные:number,dlina
    111. ;выходные данные:text - весь файл в этой переменной
    112. proc read
    113.     mov ah, 3Fh
    114.     mov bx, [number]
    115.     mov cx, [dlina]
    116.     lea dx, [text]
    117.     int 21h
    118.     ret
    119. endp
    120.  
    121.  
    122. ;процедура взятия чисел для сравнивания с минимальным
    123. ;входные данные:text
    124. ;выходные данные:chislo - сравниваемое число    
    125. proc berem_chislo
    126.     xor bx,bx
    127. inpt:
    128.     inc bx
    129.     mov al,[text+bx]
    130.     cmp al," "               ;проверка ввода пробела
    131.     je done
    132.     cmp al,"9"               ;проверка на цифровой символ
    133.     ja inpt                  ;нет, следующий символ
    134.     cmp al,"0"               ;проверка на цифровой символ
    135.     jb inpt                  ;нет, следующий символ
    136. ;выбран цифровой символ
    137.     sub al,30h               ;преобразование символа в двоичный вид
    138.     xor ah,ah
    139.     mov cx,ax                ;сохранение полученной цифры в CX
    140.     mov ax,di                ;результат преобразования прошлых цифр
    141.     mov [vrem],bx
    142.     mov bx,10
    143.     mul bx                   ;в AX предыдущий результат умноженные на 10
    144.     mov bx,[vrem]
    145.     add ax,cx                ;добавляем к старому числу новую цифру
    146.     mov DI,ax                ;сохраняет число в DI
    147.     jmp inpt
    148. done:
    149.     mov [chislo],di          ;сохранение числа в переменной chislo
    150.     cmp [minim]," "
    151.     jne dalshe
    152.     mov [minim],di
    153. dalshe:
    154.     call sravnenie           ;вызов сравнения
    155.     cmp bx,[dlina]
    156.     je posl_chisl
    157.     jne inpt
    158. posl_chisl:
    159.     mov [posl],di
    160. ret
    161. endp    
    162.  
    163. ;процедура сравнения
    164. ;входные данные:chislo, minim
    165. ;выходные данные:то же или другое minim
    166. proc sravnenie
    167.     mov cx,[chislo]
    168.     cmp [minim],cx           ;сравниваем минмальное с текущим числом
    169.     jl mensh
    170.     jg bolshe
    171. mensh:
    172.     mov [minim],cx           ;заменяем minim на меньшее число из CX
    173. bolshe:
    174.     ret
    175. endp
    176.  
    177. ;процедура нахождения среднего арифметического
    178. ;входные данные:minim,posl
    179. ;выходные данные:sr_arifm - среднее арифметическое
    180. proc sred_ar
    181.     xor ax,ax                ;обнуляем ax
    182.     xor bx,bx                ;обнуляем bx
    183.     mov ax,[minim]
    184.     add ax,[posl]
    185.     mov bx,2
    186.     div bx                   ;делим на 2 сумму чисел из AX
    187.     mov [sr_arifm],ax        ;в переменную среднее арифметической
    188.     call wrd_asc             ;вызов перевода в символьный вид
    189.     ret
    190. endp
    191.  
    192. ;процедура преобразования двоичного числа в символьный вид
    193. ;входные данные:AX - среднее арифметическое в двоичном виде
    194. ;выходные данные:sr_arifm - среднее арифметическое в символьном виде
    195. proc wrd_asc
    196.    mov ax,[chislo]
    197.    mov ax,[sr_arifm]
    198.    mov bx,0F000h          ;маска битов
    199.    mov dl,12              ;число сдвигов AX
    200.    mov cx,4
    201. cccc:
    202.    push cx                ;сохранение счётчика
    203.    push ax                ;сохранение исходного числа в стеке
    204.    and ax,bx              ;выделение чевёрки битов
    205.    mov cl,dl              ;число сдвигов в CL
    206.    shr ax,cl              ;сдвигает на CL вправо
    207.    add al,30h             ;преобразуем в символ цифру
    208.    mov [desyat+si],al     ;отпрвим в строку результата
    209.    inc si                 ;сдвигаемся по строке вправо
    210.    pop ax
    211.    mov [vrem2],cl
    212.    mov cl,4
    213.    shr bx,cl              ;модифицируем маску битов
    214.    mov cl,[vrem2]
    215.    sub dl,4               ;модифицируем число сдвигов
    216.    pop cx                 ;восстановили счётчик
    217.    loop cccc
    218.    mov [sr_arifm],ax      ;помещаем в переменную символьное среднее арифметическое
    219.    ret
    220. endp
    221.                    
    222. end start
     
  17. assembler_freak

    assembler_freak New Member

    Публикаций:
    0
    Регистрация:
    10 дек 2007
    Сообщения:
    9
    Всем привет!
    Получил задание в институте, написать программу в ассемблере, которая подсчитывает факультет натуральных чисел (от 1 до n). Помогите пожалуйста!
     
  18. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    assembler_freak
    Чем помочь?
    PS Ник очень подходящий ж-)
     
  19. assembler_freak

    assembler_freak New Member

    Публикаций:
    0
    Регистрация:
    10 дек 2007
    Сообщения:
    9
    censored, желательно кодом, но я хотел бы и понять суть
     
  20. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    wtf? Может быть факториал?