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

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

  1. Beowulf

    Beowulf New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2007
    Сообщения:
    20
    как подсчитать, сколько времени уходит на выполнение оперцаий?

    в лабе - +,*,/ в файлах com,exe + exe (pascal) ?

    есть две функции, которые выводят время. А как это прикрутить к вычислению времени?

    Код (Text):
    1. print_cmos proc near
    2.    
    3.     out 70h,al
    4.     in  al,71h
    5.     push    ax
    6.     shr al,4
    7.     add al,'0'
    8.     int 29h
    9.     pop ax
    10.     and al,0Fh
    11.     add al,30h
    12.     int 29h
    13.     ret
    14. print_cmos  endp
    15.  
    16. calctime proc   near
    17.     mov al,0Bh
    18.     out 70h,al
    19.     in  al,71h
    20.     and al,11111011b
    21.     out 71h,al
    22.     mov al,07h
    23.     call    print_cmos
    24.     mov al,' '
    25.     int 29h
    26.     mov al,04h
    27.     call    print_cmos
    28.     mov al,'h'
    29.     int 29h
    30.     mov al,' '
    31.     int 29h
    32.     mov al,02h
    33.     call    print_cmos
    34.     mov al,':'
    35.     int 29h
    36.     mov al,0h
    37.     call    print_cmos
    38.     ret
    39. calctime    endp
    а вообще, мне надо получить две переменные содержащие секунды до и секунды после... Как это сделать?

    через
    Код (Text):
    1. mov ah,00h
    2. int 1Ah
    у меня не получается )=
     
  2. ILoveJu

    ILoveJu New Member

    Публикаций:
    0
    Регистрация:
    25 май 2007
    Сообщения:
    1
    Задача: Нужно удалить из строки подстроку, заданную второй строкой, желательно на си с ассемблеровскими вставками
     
  3. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Beowulf ah=0 int16h выдаёт в CX:lol: X количество тиков с полуночи (1 тик=55 мсек). Так проще будет. Но если ужно именно время, то ah=2, тогда ch=час cl=мин dh=сек, причём надо сделать JC read_again

    ILoveJu Можно делать "в лоб", простейший способ - ищем в первой строчке первый символ подстроки, потом посимвольное сравнение, пока не совпадёт, заодно определяем адреса начала и конца подстроки, затем копируем оставшуюся часть строки (начинается с конца подстроки) по адресу начала найденной подстроки.
     
  4. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    ILoveJu
    Код (Text):
    1.     .file   "str.c"
    2.     .def    ___main;    .scl    2;  .type   32; .endef
    3.     .section .rdata,"dr"
    4. LC0:
    5.     .ascii "str1 = \0"
    6. LC1:
    7.     .ascii "%s\0"
    8. LC2:
    9.     .ascii "str2 = \0"
    10. LC3:
    11.     .ascii "%s\12\0"
    12.     .text
    13. .globl _main
    14.     .def    _main;  .scl    2;  .type   32; .endef
    15. _main:
    16.     pushl   %ebp
    17.     movl    %esp, %ebp
    18.     subl    $312, %esp
    19.     andl    $-16, %esp
    20.     movl    $0, %eax
    21.     addl    $15, %eax
    22.     addl    $15, %eax
    23.     shrl    $4, %eax
    24.     sall    $4, %eax
    25.     movl    %eax, -284(%ebp)
    26.     movl    -284(%ebp), %eax
    27.     call    __alloca
    28.     call    ___main
    29.     movl    $LC0, 4(%esp)
    30.     movl    __imp___iob, %eax
    31.     addl    $32, %eax
    32.     movl    %eax, (%esp)
    33.     call    _fprintf
    34.     leal    -136(%ebp), %eax
    35.     movl    %eax, 4(%esp)
    36.     movl    $LC1, (%esp)
    37.     call    _scanf
    38.     movl    $LC2, 4(%esp)
    39.     movl    __imp___iob, %eax
    40.     addl    $32, %eax
    41.     movl    %eax, (%esp)
    42.     call    _fprintf
    43.     leal    -264(%ebp), %eax
    44.     movl    %eax, 4(%esp)
    45.     movl    $LC1, (%esp)
    46.     call    _scanf
    47.     leal    -136(%ebp), %eax
    48.     movl    %eax, (%esp)
    49.     call    _strlen
    50.     movl    %eax, -276(%ebp)
    51.     leal    -264(%ebp), %eax
    52.     movl    %eax, (%esp)
    53.     call    _strlen
    54.     movl    %eax, -280(%ebp)
    55.     movl    -276(%ebp), %eax
    56.     cmpl    -280(%ebp), %eax
    57.     jb  L2
    58.     leal    -264(%ebp), %eax
    59.     leal    -136(%ebp), %edx
    60.     movl    %eax, 4(%esp)
    61.     movl    %edx, (%esp)
    62.     call    _strstr
    63.     movl    %eax, -268(%ebp)
    64.     leal    -136(%ebp), %eax
    65.     movl    %eax, 8(%esp)
    66.     movl    $LC3, 4(%esp)
    67.     movl    __imp___iob, %eax
    68.     addl    $32, %eax
    69.     movl    %eax, (%esp)
    70.     call    _fprintf
    71. L2:
    72.     movl    $0, %eax
    73.     leave
    74.     ret
    75.     .def    _strstr;    .scl    3;  .type   32; .endef
    76.     .def    _strlen;    .scl    3;  .type   32; .endef
    77.     .def    _scanf; .scl    3;  .type   32; .endef
    78.     .def    _fprintf;   .scl    3;  .type   32; .endef
     
  5. Lock_Dog

    Lock_Dog Евгений

    Публикаций:
    0
    Регистрация:
    26 май 2007
    Сообщения:
    2
    Адрес:
    Украина, Харьков
    1 DOSSEG
    2 0000 .MODEL SMALL
    3 0000 .STACK 100h
    4 0000 .DATA
    5 0000 6D 65 73 73 61 67 65+ Message DB 'proverka',13,10,'$'
    6 20 68 65 6C 6C 6F 21+
    7 0D 0A 24
    8 =0011 MessageLength EQU $ - Message
    9 0011 .CODE
    10 0000 B8 0000s mov ax,@data
    11 0003 8E D8 mov ds,ax
    12 0005 B4 09 mov ah,9


    Ребят, самый левый столбик - номер порядковый
    потом адрес, потом - вопрос, потом, сосбственно команды, которые мы написали.
    Вопрос - что содержится в выделенном столбце???
    Глобально, не привязываясь к этому куску. Надо, чтобы лабу сдалть ))
     
  6. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Lock_Dog
    Вариант ответа "Код операции в шестнадцатиричном представлении" Вам подходит?
    Хотя не совсем верно. Например для Вашей строки 'proverka',13,10,'$' это шестнадцатиричное представление Ascii-кодов символов этой строки. Только судя по этим самым Ascii строка должна быть 'message hello!',13,10,'$'
     
  7. Lock_Dog

    Lock_Dog Евгений

    Публикаций:
    0
    Регистрация:
    26 май 2007
    Сообщения:
    2
    Адрес:
    Украина, Харьков
    как это соотносится с переменной?
    рядом с операциями, м.б. и есть код её ))
    но что содержится в нём, когда он с переменными? =)
     
  8. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Lock_Dog
    Я отредактировал сообщение. С Вашей переменной никак. см. пост #306.
     
  9. Brander

    Brander New Member

    Публикаций:
    0
    Регистрация:
    24 май 2007
    Сообщения:
    1
    Народ помогите решить задачи плиииз

    Везде ввод данных с клавиатуры

    Народ, помогите решить задачи:
    Дана строка. Вывести на экран то слово, где максимально кол-во попарно различных символов. Ввод строки с клавиатуры.

    Даны массивы (a1..n) (b1..m).
    Внутри массивов нет повторяющихся элементов. Проверить входят ли все члены массива a в массив b?

    Дана матрица А, получить матрицу B, в которой элемент bij равен aij*максимум i-той строки?
     
  10. salaga

    salaga New Member

    Публикаций:
    0
    Регистрация:
    26 май 2007
    Сообщения:
    14
    Пожалуйста помогите чайнику необходимо написать прогу на ассемблере умножения чисел с фиксированной запятойбсо сдвигом множимого в прямом коде ,код 2421 , формат (1,16) что с чего начать не знаю . Буду очень признателен тому кто ответит.
     
  11. lex100

    lex100 New Member

    Публикаций:
    0
    Регистрация:
    26 май 2007
    Сообщения:
    1
    Ребята помогите. Я вообще прикладник задали семестровую: s=0+1/3^1+1/3^2+...+1/3^n ,где n=8;10;20. в вычислениях удержать 200 двоичных чисел в файл вывести 100 первых двоичных чисел. через сдвиг бит все это делать.
    Ряд я вроде бы сделал вот код: А что делать с выводом нифига не понимаю
    model tiny
    .486
    masm
    .code
    org 100h
    begin:
    mov ah,0ah
    mov dx,offset str
    int 21h


    mov si,dx
    inc si

    mov cl,[si]
    xor ch,ch

    cmp cl,1
    je one
    mov al,[si+1]
    mov bl,10
    mul bl
    add al,[si+2]
    mov str,al
    jmp cont
    one:
    mov str,[si+1]
    cont:

    mov dx,1
    inc si
    mov ax,[si]
    mov bx,3


    m1:
    div bx
    mov [si],ax
    inc si
    inc si
    mov ax,[si]
    loop m1

    cmp


    mov ah,4ch
    int 21h

    n db ?
    str dw 3,?,3 dup(0)
    s dw 1,13 dup(0)
    s0 db 0
    s1 db 1
    end begin
     
  12. ZSA

    ZSA New Member

    Публикаций:
    0
    Регистрация:
    26 май 2007
    Сообщения:
    1
    Помогите пожалуйста сделать задание: Ввести строку из произвольного числа символов. Выполнить преобразование символьной строки в её цифровой аналог на основе ASCII-кодов, после чего произвести поиск максимального кода.
     
  13. salaga

    salaga New Member

    Публикаций:
    0
    Регистрация:
    26 май 2007
    Сообщения:
    14
    Ребята кто нибудь слышал об этом "Разработать эмулятор работы микропроцессора при выполнение команд: SBB, TEST" это у меня такое задание но я в него вобще не вьезжаю может у кого то что то подобное было? если да то подскажите если не трудно.
     
  14. kush

    kush New Member

    Публикаций:
    0
    Регистрация:
    24 май 2007
    Сообщения:
    46
    Для SBB reg1, reg2:

    pushf
    sub reg1, reg2
    popf
    jnc ok
    dec reg1
    ok:

    Не учтено влияние на флажки !
     
  15. salaga

    salaga New Member

    Публикаций:
    0
    Регистрация:
    26 май 2007
    Сообщения:
    14
    если бы я в этом что то понимал то без проблем , но код я понял . Это курсовой и как его оформлять вот главный вопрос.
     
  16. kush

    kush New Member

    Публикаций:
    0
    Регистрация:
    24 май 2007
    Сообщения:
    46
    Хороший вопрос, особенно для форума по asm.
     
  17. salaga

    salaga New Member

    Публикаций:
    0
    Регистрация:
    26 май 2007
    Сообщения:
    14
    замечание вернок согласен меня интересует в основном код а не оформление :)
     
  18. kush

    kush New Member

    Публикаций:
    0
    Регистрация:
    24 май 2007
    Сообщения:
    46
    По sbb - в том примере не учтена модификация флагов:
    Из Intel: DEST <- DEST - (SRC + CF)

    sbb reg1, reg2:
    push reg3
    xor reg3, reg3
    adc reg3, reg3
    sub reg1, reg2
    sub reg1, reg3
    pop reg3
     
  19. salaga

    salaga New Member

    Публикаций:
    0
    Регистрация:
    26 май 2007
    Сообщения:
    14
    не могу понять...
    push reg3 ; пихает регистр в стек
    xor reg3, reg3 ; обнуление регистра
    adc reg3, reg3 ; прибавление (0 плюс 0 чушь какая-то)
    sub reg1, reg2 ; отнимает от reg1 reg2
    sub reg1, reg3 ; отнимает от reg1 reg3 т.е. 0
    pop reg3 ; возвращает reg3 первоначальное значение
    я правда на счет adc не уверен там какое-то хитрое сложение с учетом предыдущих операций
     
  20. G13

    G13 New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2006
    Сообщения:
    499
    salaga, это вычленение и обработка переноса.

    при выполнении adc reg3, reg3 в reg3 будет 1 или 0, в зависимости от того, был перед этим перенос (стоит флаг CF), или нет.