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

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

  1. FullZer0

    FullZer0 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2008
    Сообщения:
    24
    2 meduza :
    имхо ты написал все кул ! Зделал - все работает , рисует зачетно , да вот проблема в том что для прямой моя программа запрашивает
    коэффициенты X A B , отсюда нахожу У по формуле У=АХ + В , делаю расчеты - и все рисует ! Да вот подвох в том что задавать для прямой нужно ТОЛЬКО А,В , а как найти X,Y я хз при таком раскладе ! Система с двух уравнений Y=AX+B тоже не канает !
    P.S.
    как задать массив прямых через структуру я знаю , имхо спросил не правильно , не знаю просто как сделать имея только A,B для прямой - найти X,Y; !
     
  2. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    FullZer0
    а вон оно в чём дело (я сначала невнимательно прочитал и решил что А, В это точки ;) тогда как я уже писал начинать рисовать нужно не от заданного х, а от границы экрана - можно от x=0, тогда если прямая входит в экран сверху или снизу то отсечение "сделается само", но правильнее всё-таки посчитать для этого случая x1 и x2 (точка выхода из экрана).
     
  3. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    FullZer0
    Угу, Y_Mur правильно сказал. Х ты должен выбирать сам. А уже по нему считать Y. Хотя можно и наоборот, не в этом суть.
     
  4. gvay

    gvay New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    15
    Написать подпрограмму для подсчета количества ненулевых элементов в массиве

    Написать подпрограмму для подсчета количества ненулевых элементов в массиве (начало задано в регистре DI, количество ячеек – в регистре CX) для Intel 80x86
     
  5. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.784
    gvay
    Посмотри внимательно, здесь идет обсуждение программ, которые студентом написаны, но по каким-то причинам не работают, или работают не правильно. А у тебя "Ни здрасте, ни пожалуйста" а бросте все и "Написать подпрограмму для подсчета..." вам молодой человек в раздел WASM.COMMERCE если есть бабло, конечно...
     
  6. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Mikl___
    +1
     
  7. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    gvay
    Наверно так. Количество ненулевых элементов возвращается в bx.
    Код (Text):
    1. xor bx,bx
    2. mov si,di
    3. @: lodsb
    4.      dec al
    5.     cmc
    6.     adc bx,0
    7. loop @b
    Правка: правка бреда
     
  8. gvay

    gvay New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    15
    :)) понял
    ************************************
    ; include io.asm

    .model SMALL
    .stack 256

    .data

    arr db 1, 3, 0, -2, 0, 4, 222, 0, 0, 0

    .code
    Entry:*
    mov AX, @data
    mov DS, AX

    ;-------------------------
    xor dx, dx
    lea bx, arr
    mov cx, 10
    c1: mov al, [bx]
    cmp al, 0
    je m1
    inc dx
    m1: inc bx
    loop c1

    ; outint dx
    ;-------------------------------------
    ; finish
    mov AX,4C00h
    int 21h
    end Entry
    ************************************

    Вопросы:

    С помошью чего запустить?
    Может кто знает ссылки на ресурсы где можно посмотреть подробное описание на русском, каждого оператора?

    Заранее благодарен!
     
  9. gvay

    gvay New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    15
    murder спасибо!

    Но я буду очень тебе длагодарен если подскажишь с помошью чего запустить? я запускаю с помошью emu8086 пишит ((7) undeclared label: loop @b)
     
  10. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    это синтаксис FASM.
    @ - анонимная метка
    @b - означает предыдущую анонимную метку

    В посте #1127 учитывается, что
    Запустить мало - надо ещё вывести результат на экран:)
     
  11. gvay

    gvay New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    15
    murder спасибо еще раз!

    Я буду тебе безкрайне благодарен если подскажишь как? я в этом чесно дуб дубом, завтра сдавать а я ни б ни мэ, сижу читаю книжки по ассемблеру нашел описание операторов а что к чему не могу понять.

    Буду очень благодарен если поможешь:)


    Скачал FASM вставил туда твой код запускаю пишет опять ошибку про loop
     
  12. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.784
    murder
    "Старая Песня о Главном" -- завтра сдавать -- а что к чему не могу понять
     
  13. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Код (Text):
    1. org 100h
    2. mov ax,3
    3. int 10h
    4. push 0B800h
    5. pop  es
    6. mov  cx,9
    7. mov  si,arr
    8. xor  di,di
    9. mov  bx,di
    10. @@:lodsb
    11.    sub al,1
    12.    cmc
    13.    adc bx,di
    14. loop @b
    15. add bx,0F30h
    16. mov [es:di],bx
    17. int 16h
    18. ret
    19. arr db 0,8,9,5,0,1,0,2,0
    100% Проверено - вирусов нет :))))
     
  14. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.784
    murder
    IMHO с aam / add ax,3030h более универсально будет, а add bx,0F30h / mov [es:di],bx только, если в bx число не более 9
     
  15. gvay

    gvay New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    15
    СПАСИБО ОГРОМНОЕ!

    извени за назойливость но что тут значит (int 16h) 16h??
    mov si,arr , а тут arr

    0B800h,0F30h - и вот это какието чтоли адреса в памяти?

    [es:di]- а это чтоли деление какоето?

    Заранее благодарен!
     
  16. gvay

    gvay New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    15
    murder у тебя какой оператор сотовый? хочу тебя отблагодорить :))
     
  17. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    int 16h - вызов прерывания 16h. В реальном режиме это сервис для работы с клавиатурой. В данном случае нужен для ожидания нажатия клавиши перед выходом.
    arr - массив (объявлен в последней строчке)
    0B800h - адрес начала видеопамяти
    0F30h - хм э-э-э 0 - цвет фона, F - цвет текста, 30h - смещение цифр в таблице ASCII-кодов

    правка:
    [es:di] - обращение к памяти. В данном случае к видеопамяти.
     
  18. gvay

    gvay New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    15
    mov si,arr получается что он в si вносит значения массива arr?

    а что такое org 100h?

    xor di,di - а это ммм исключает чтоли di из di?

    это надо пологать цикл?

    @@:lodsb
    sub al,1
    cmc
    adc bx,di
    loop @b

    получается что цикл прекращает работать после того как пройдет весь массив??

    mov ax,3 - а вот тут 3 что означает?

    а что такое 10h???

    Заранее благодарен!
     
  19. gvay

    gvay New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    15
    почти везде разобрался не могу понять лишь что значит mov ax,3 и pop es

    org 100h
    mov ax,3
    int 10h
    push 0B800h
    pop es
    mov cx,9
    mov si,arr
    xor di,di
    mov bx,di
    @@:lodsb
    sub al,1
    cmc
    adc bx,di
    loop @b
    add bx,0F30h
    mov [es:di],bx
    int 16h
    arr db 0,0,9,5,0,1,0,2,0
     
  20. meduza

    meduza New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    212
    gvay
    Код (Text):
    1. mov ax,3
    2. int 10h
    устанавливается 3-й видео-режим
    Код (Text):
    1. push 0B800h
    2. pop es
    типа es=0B800h