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

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

  1. qwerty9911

    qwerty9911 New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2006
    Сообщения:
    4
    Я не знаю как считать символ с клавиатуры.
    С нажатием Enter:

    Код (Text):
    1. .model tiny
    2. .code
    3. org 100h
    4.  
    5. Begin:
    6.  
    7. metka:
    8.  
    9.  
    10. mov ah, 9h              ;загружаем в регистр ah номер функции (9h) для вывода на экран
    11. mov dx, offset Mess     ;загружаем в регистр dx адрес по которому находится строка сообщения
    12. int 21h                 ;вызов функции вывода на экран
    13.  
    14. mov ah, 0Ah             ;загружаем в регистр ah номер функции (0Ah)
    15. mov dx, offset Namepar
    16. int 21h                 ;вызов функции ввода
    17.  
    18. mov ah,9
    19. mov dx, offset NewLine
    20. int 21h                 ;переходим на новую строку и вывод 'Your name is '
    21.  
    22. xor bh,bh               ;bh=0
    23. mov bl,Namelen          ;получаем длину кода
    24. mov Namefld[bx],'$'     ;записываем в конец символ '$'
    25. mov ah, 9h
    26. mov dx, offset Namefld
    27. int 21h                 ;выводим строку
    28.  
    29. mov ah,9
    30. ;mov dx, offset NewLine  
    31. int 21h                 ;переходим на новую строку  
    32.  
    33.  
    34. jmp metka
    35. ;int 20h                 ;выходим
    36.  
    37. Mess db 'Press Any Key? $'
    38.  
    39. NewLine db 13,10,'You press is $'
    40.  
    41. Namepar label BYTE
    42. Maxnlen db 20
    43. Namelen db ?
    44. Namefld db 20 DUP(' ')
    45.  
    46. end Begin
     
  2. qwerty9911

    qwerty9911 New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2006
    Сообщения:
    4
    Там выводит ASCII код.
     
  3. apes

    apes New Member

    Публикаций:
    0
    Регистрация:
    21 май 2006
    Сообщения:
    3
    Ассемблер к580

    Необходимо написать программу для микропроцессора к580вм80.
    Задача: деление знаковых чисел переменной длины в формате фиксированной запятой.

    Если у кого-то есть информация по данному вопросу или сохранились исходники, буду очень признателен.
     
  4. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    qwerty9911
    См. пост FreeManCPM.

    Поднапряги соображалку - это полезно для развития.
     
  5. qwerty9911

    qwerty9911 New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2006
    Сообщения:
    4
    Сделал через 01h и 02h. Может кому пригодится:
    Код (Text):
    1. .model tiny
    2. .code
    3. org 100h
    4.  
    5. Begin:
    6.  
    7. MOV  AH,01H      
    8. INT  21H
    9. SUB AL,30H      
    10.  
    11. mov ah, 02h
    12. mov dl, al
    13. add dl, 30h
    14. int 21h
    15.  
    16. jmp Begin
    17.  
    18. end Begin
     
  6. _SaNitAr

    _SaNitAr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    68
  7. apes

    apes New Member

    Публикаций:
    0
    Регистрация:
    21 май 2006
    Сообщения:
    3
    Ассемблер к580
    В принципе он является аналогом i8080. Может это что облегчит.
     
  8. FoxM

    FoxM New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    1
    Помогите! Как оперировать с 32битными числам при 16битных регистрах?
    Сложение, вычитание более-менее ясно, а вот умножение/деление чего-то не соображу.
     
  9. verto

    verto New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2006
    Сообщения:
    7
    Вот у меня есть програмка. Более менее что смог собрал в кучу, но с переменными запутался и прога не работает, может кто-то поможет

    Код (Text):
    1. #include<stdio.h>
    2. #include <stdlib.h>
    3. #include <dos.h>
    4. #include <conio.h>
    5. #include <stdarg.h>
    6. unsigned char reg,PMode_Entry_Seg,PMode_Entry_Off;
    7. main()
    8. {  clrscr();
    9. printf("Dlya pereklucheniya v zashisheniy rejim najmite lubuyu klavishu...");
    10. getch();
    11.  
    12. // Получаем адрес точки входа в защищенный режим
    13.  
    14.   _asm{ mov     ax, 1687h
    15.     int     2Fh
    16.     test    ax, ax
    17.     jnz     Cant_Enter_PMode // не можем войти в защищенный режим
    18.  
    19.     mov     [PMode_Entry_Seg], es
    20.     mov     [PMode_Entry_Off], di
    21.  
    22.      // заказываем память для сервера DPMI (если это требуется)
    23.     test    si, si
    24.     jz              Enter_PMode_Now
    25.     mov     bx, si
    26.     mov     ah, 48h
    27.     int     21h
    28.     jc      Cant_Enter_PMode
    29.     mov     es, ax
    30.     // устанавливаем защищенный режим
    31.    
    32. Enter_PMode_Now:
    33.     xor     ax, ax
    34.     call    DWORD PTR [PMode_Entry_Off]
    35.     jc      Cant_Enter_PMode
    36.     // программа работает в защищенном режиме
    37.    
    38. //      здесь располагаются строки вашей программы
    39.    
    40.     mov     ax, 1686h   // определяю текущий режим, если AX=0 => защ. реж.
    41.     int     2Fh
    42.     mov     reg,ax
    43.     // завершение программы и возврат в DOS
    44.     mov     ax, 4C00h
    45.     int     21h           }
    46.  
    47.     printf("Perekluchenie proizoshlo....");
    48.     printf("\nAX = %d",reg);
    49.     getch();    }
     
  10. Sash0k

    Sash0k New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2007
    Сообщения:
    2
    Работа с файловой системой напрямую (под ДОС)

    Ребят, помогите плиз, через неделю экзамен....
    Есть задача:
    Делали через DTA - не устраивает... надо как то читать диск напрямую... инфу препод не дает...но вроде можно сделать на дискете(FAT12), ибо на винтах NTFS уже давно...
    прога по идее не сложная... просто информации нет и времени уже тоже...да и чайник я тот ещё)

    Буду благодарен любой оказанной помощи..
     
  11. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    На wasm.ru в доках.
     
  12. _SaNitAr

    _SaNitAr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    68
    FoxM
    Можит я фсех достал, но Зубков рулит. с. 246 + навярняка это есть у П.И. Рудакова и К.Ф Финогенова, Юрова + гугль сорцы.
     
  13. _SaNitAr

    _SaNitAr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    68
    verto
    долго и нудно втыкал в это -минут 20. оно хоть компилицо?
     
  14. _SaNitAr

    _SaNitAr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    68
    Sash0k
    не интересовался никогда.Питер Абель? нет? там про дискетки вроде многу сказано.
     
  15. _SaNitAr

    _SaNitAr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    68
    apes
    не тема тугая http://referatlib.ru/referat_371749.php
    думаю из сторожилов врятли кто поможет
     
  16. verto

    verto New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2006
    Сообщения:
    7
    в том то и дело что нет, текст на асме я взял с инета(переключение в защищенный режим средствами DPMI), и засунул все это в СИ, чтобы строку вывести и значение регистра AX, только вот с переменными бока.
    Я не знаю в чем дело :dntknw:
     
  17. _SaNitAr

    _SaNitAr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    68
    verto

    сделай все на асме чистом...каша это.
    unsigned char reg,PMode_Entry_Seg,PMode_Entry_Off;??????????
     
  18. zero

    zero New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2007
    Сообщения:
    2
    Здравствуйте:
    Пишу мини редактор. Т.е. в консольном режиме могу набирать текст, перемещаться по нему с помощью курсора. Возникла трудность с написанием клавиши Delete.
    Задумка была следующей:
    1. определяю положение курсора
    2. затираю символ кодом 0
    3. смещаю весь остальной текст на 1 положение влево
    Код (Text):
    1. cmp ax,5300h           
    2.   jne @notDelete
    3. {определяем положение курсора}  
    4. mov ah,03
    5.   mov bh,00
    6.   int 10h
    7. {затираем символом с кодом 0}
    8.   mov ah,09h
    9.   mov al,0
    10.   mov cx,1
    11.   mov bl,7
    12.   int 10h
    13.   @notDelete:
    Данный код выполняет первые два пункта.
    Вопрос: как реализовать пункт 3, те смещение всего остального текста на 1 положение влево? Или с помощью какого алгоритма можно также реализовать кнопку delete???
    Заранее благодарен
     
  19. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    легче всего сделать прямым доступам к этим страницам с текстом, первая из которых расположенна по адресу 0b800:0000
     
  20. zero

    zero New Member

    Публикаций:
    0
    Регистрация:
    7 янв 2007
    Сообщения:
    2
    FreeManCPM
    Я понял, что ты имел ввиду следующее:
    1. получаем код клавиши
    2. читаем байт по адресу 0b800:0000,проверяем, установлен ли нужный нам бит
    3. если да, переходим на обработчик нажатия данной клавиши
    но все равно обработчик клавиши delete нужно описывать самому??? Или я не прав?