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

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

  1. CrazyFun

    CrazyFun New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2005
    Сообщения:
    129
    Yep
    отладчик юзал? и как?
    Код (Text):
    1. mov SI, offset inp     ;Адрес введенной строки в SI
    а что содержат первые 2 байта введенной строки?:)
    погоняй хорошо в отладчике..

    потом - еси 1 буква не совпадает то дальше можно не проверять. При строке из 5 символов все они должны быть разными.
     
  2. T3xHuK

    T3xHuK New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2007
    Сообщения:
    3
    доброго времени суток)
    вижу сессия в разгаре, так что присоеденюсь к молящим о помощи)
    собственно есть задание:
    написать программу, которая построчно выводит на экран слова для заданой строки.

    написал такой код (юзаю masm):
    Код (Text):
    1. TITLE  vuvod_str.
    2.  
    3. .386
    4. INCLUDE Study32.inc
    5.  
    6. WriteString PROTO
    7. ReadString PROTO
    8. WriteChar PROTO
    9. WaitMsg PROTO
    10. ExitProcess PROTO
    11.  
    12. .DATA
    13.     str_in byte 100h dup(?)
    14.     str_buff byte 0ffh dup(?)
    15.     str1 byte "vvedite stroky simvolov ne bolwe 255 slimvolov",0dh,0ah,0
    16. .CODE
    17. main PROC
    18.     mov edx, offset str1
    19.     call WriteString    ;vuvod priglaweni9 vvesti simvolu
    20.     mov ecx, 0ffh
    21.     call ReadString     ; edx - ukazivaet na bufer, ecx- razmer bufera -1 (rezerv pod 0), vozvrawaet v eax koli4estvo vvedenux simvolov
    22.     mov ecx, eax        ; deistvitelnoe koli4estvo vvedenux simvolov,
    23.     lea ebx, str_in     ; zapiwem adres v ebx
    24.     mov eax,0           ; obnulim na vs9kii sly4ai
    25.     mov edx,0           ;edx toje
    26.     L1:
    27.         mov al,byte ptr [ebx]+[edx]
    28.         cmp al, 20h
    29.         je L2           ;esli probel
    30.         inc edx         ; uveli4im smewenie na 1
    31.         call WriteChar  ;vuvodim simvol
    32.         cmp ecx,0       ; proverim ne dowli li do konca stroki
    33.         je L3           ;esli dowli go out
    34.         dec ecx         ;umenwim koli4estvo ostavwuxs9 cuklov
    35.         jmp L1          ; go na sled simvol
    36.     L2:
    37.         call crlf           ;perevod koretki, toje 4to i 0dh, 0ah
    38.         inc edx         ; probel toje simvol
    39.         dec ecx
    40.         cmp ecx,0       ; proverim ne dowli li do konca stroki
    41.         jnz L1
    42.     L3:
    43.     call WaitMsg        ; daem vozmojnost s4itat' rezult
    44.     call ExitProcess    ; korektnui vuxod iz progi
    45. main ENDP
    46. END main
    он компилится но не работает.
    после введения строки (как положено с пробелами, но заканчивающейся символом) на экран ничего не выводится...
    помогите плз, буду очень признателен.

    З.Ы. практики было мало... поэтому и проблема возникла... поставил оллиДебаг но времени разбиратся нету.. нада на завтра... так что кто может помогите плз...
    заранее благодарен)
     
  3. censored

    censored New Member

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

    T3xHuK New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2007
    Сообщения:
    3
    обьявление процедур из библиотеки study32.inc для полседующего использования в коде программы (брал из учебника да и по другому не компилится)
    ReadString - считывает строку в буфер адрес которого предварительно нада поместить в edx, в ecx размер буфера -1 (резерв под конец строки "0"), возврат eax - количество введеных с клавиатуры символов (я так понял что 0 не всчет)
    WriteChar - вывод на экран 1го символа который предварительно нада поместить в al
    WaitMsg - выводит сообщение Press [Enter] to exit
    если нада могу библиотеку приатачить...
     
  5. meri

    meri New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2007
    Сообщения:
    4
    IceStudent
    помогите нарисовать шахматную доску на ассемблере. Пожалуйста!!!!!!!!
     
  6. meri

    meri New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2007
    Сообщения:
    4
    помогите нарисовать шахматную доску на ассемблере. Пожалуйста!!!!!!!!
     
  7. CrazyFun

    CrazyFun New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2005
    Сообщения:
    129
    meri
    а ну это врятли решегние задачи. просто прикольно получилось:) вот хватаюсь:
    Код (Text):
    1. .model tiny
    2. code segment para public 'code'
    3. assume cs:code,ds:code,ss:code
    4.   org 100h
    5. main:  
    6. jmp a
    7.   message db 0dbh,' ',0dbh,' ',0dbh,' ',0dbh,' ',0dh,0ah,'$'
    8.   ms2 db ' ',0dbh,' ',0dbh,' ',0dbh,' ',0dbh,0dh,0ah,'$'
    9. a:  
    10.   mov cx,4
    11. b:  
    12.   mov ah,9
    13.   mov dx, offset message
    14.   int 21h
    15.   mov ah,9
    16.   mov dx, offset ms2
    17.   int 21h
    18.   dec cx
    19. jnz b
    20.   mov ax,4c00h
    21.   int 21h
    22. end main
     
  8. h0r0n

    h0r0n New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2007
    Сообщения:
    1
    Приветствую всех!
    Прошу помощи, проходим асм на МК48, задали задачу, а у мну после языков "высокого" уровня вообще как говорится не прет:
    с интервалом 1 сек производить измерение температуры внешнего бъекта. Вырабатывать сигнал управления и выдавать его во внешнюю цепь если температура выходит за пределы 80+-1 градус...хых

    Насчет входов выводов, прпод говорит не заморачиваться-просто читать со входов...
    Я знаю как с помощью djnz сделать задержку времени, но как сделать ветвление проверки температуры и сравнивать с 80 градусами7??

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

    Yep New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2007
    Сообщения:
    11
    CrazyFun
    почему-то lodsb помещает в al всегда 40 (открывающаяся скобка), независимо от того, что было в строке
     
  10. zoool

    zoool New Member

    Публикаций:
    0
    Регистрация:
    1 дек 2007
    Сообщения:
    412
    Yep
    Потому что lodsb в al считывает байт, на который указывает esi

    В твоем примере esi всегда указывает на скобку
     
  11. Yep

    Yep New Member

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

    zoool New Member

    Публикаций:
    0
    Регистрация:
    1 дек 2007
    Сообщения:
    412
    481 пост перечитай
    все станет ясным
     
  13. Yep

    Yep New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2007
    Сообщения:
    11
    так ничего и не понял.
    исправьте мой код плз
     
  14. zoool

    zoool New Member

    Публикаций:
    0
    Регистрация:
    1 дек 2007
    Сообщения:
    412
    Скачай Turbo Debugger
    он есть тут в инструментах

    И пошагово выполни программу
    ошибка очевидна
    Учись юзать отладчик
     
  15. T3xHuK

    T3xHuK New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2007
    Сообщения:
    3
    если это адресовано мне то спасибо огромное )
    если нет то спасибо огромное )))
    увидел ошибки, исправил и заработало )
    сначала пытался пользоватся олли дебагом, но не получилось понять что к чему )
    а турбо дебаг похож интерфейсом на встроенный в паскаль, сразу разобралсо)))

    еще раз спасибо огромное)
     
  16. hiiamnoob

    hiiamnoob New Member

    Публикаций:
    0
    Регистрация:
    5 май 2007
    Сообщения:
    22
    ещё разок
    вот такие 2 лабы (полностью на асьме или паскаль со вставками)
    1)сделать чтобы экран был из разного цвета прямоугольников квадратов и на переднем плане летало 4-х значное число (не могу понять как вообще реализовать)
    2)произвести чтение , запись файла(ов) с(на) флопи
    не как не могу понять как реализовать...
     
  17. Yep

    Yep New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2007
    Сообщения:
    11
    переписал все заново с учетом первых двух байтов помещаемых в si
    inc si
    inc si

    Код (Text):
    1. masm
    2. model small
    3. .stack 10h
    4. .data
    5.  
    6.      yep db 10,13,'All Ok$'
    7.      nope db 10,13,'Oh shi--$'
    8.      len equ $-inp ;str_len длина стрроки
    9.      db '$' ;str_end
    10.      inp db 6,6,6 dup(?) ;вводится только 5 символов
    11.  
    12. .code
    13. start:
    14.      mov ax, @data
    15.      mov ds, ax
    16.      mov es, ax
    17.      
    18.      cld             ; установить флаг направления в сторону увеличения адресов
    19.      mov AH,0Ah ;ввод строки с клавиатуры          
    20.      mov dx, offset inp
    21.      int 21h
    22.      
    23.      lea si, inp     ; адрес первого элемента в SI
    24.      inc si ;пропускаем два первых байта
    25.      inc si
    26.      xor bl, bl ; обнуляем сумму совпадений
    27.      xor cl, cl ; обнуляем счетчик символов
    28. Metka1:
    29.     inc cl ; увеличиваем счетчик итераций
    30.     cmp cl, 6 ; проверили 5ть символов, когда будет 6той
    31.     je err_ ; то идем на ошибку, если ранее не ушли на успешное завершение
    32.     lodsb           ; загрузить символ строки s1 в регистр AL
    33.     cmp al, 98 ; сравнение с буквой b
    34.     je summ          ;переход если равны
    35.     cmp al, 101 ; сравнение с буквой e
    36.     je summ         ;переход если равны  
    37.     cmp al, 103 ; сравнение с буквой g
    38.     je summ         ;переход если равны
    39.     cmp al, 105 ; сравнение с буквой i
    40.     je summ           ;переход если равны
    41.     cmp al, 110 ; сравнение с буквой n
    42.     je summ
    43.     jmp Metka1
    44. summ:
    45. ;___testeng
    46. mov ah, 02h ; вывод al
    47. mov dl, al
    48. int 21h
    49. mov ah, 02h ; вывод al
    50. mov dl, 10
    51. int 21h
    52. mov ah, 02h ; вывод al
    53. mov dl, 13
    54. int 21h
    55. ;__end testeng
    56.     inc bl
    57.     cmp bl, 5 ; если сумма совпавших символов равна 5
    58.     je exit ; то выходим
    59.     jmp Metka1 ;иначе идем на проверку вторго символа
    60.  
    61. err_: ;сообщение об ошибке
    62.      mov ah,09h
    63.      mov dx,offset nope
    64.      int 21h
    65.      
    66.      mov ah,4ch
    67.      int 21h
    68.  
    69. exit: ;сообщение об успешном завершении
    70.      mov ah,09h
    71.      mov dx,offset yep
    72.      int 21h
    73.      
    74.      mov ah,4ch
    75.      int 21h
    76.  
    77.  
    78.  
    79. end start
    zoool, CrazyFun
    спасибо за советы, все заработало!
     
  18. censored

    censored New Member

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

    hiiamnoob New Member

    Публикаций:
    0
    Регистрация:
    5 май 2007
    Сообщения:
    22
  20. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Ну значит судьба! :)