Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на Ассемблере как общего так и конкретного характера.
 
важное примечание
для тех кто считает, что здесь место халявных исполнений курсовых и лабораторных работ.
тут обычно помогают тем, кто сам хоть что-то пытается понять и сделать, но что-то не понимает, что-то не получается...
ведь ассемблер изучают и задачки на нём дают обычно не менеджерам по продажам и даже не всем физ.-мат. специальностям
вы сами избрали этот путь? вот и идите по нему сами, ножками... с ручками и с головой...
 
короче, тут не сборище придурков-альтруистов, которым нечего делать и они ждут-не дождутся когда вы их попросите
что-то сделать _за_ вас
если позарез надо и вы даже готовы заплатить, тогда вам сюда
удачи
 
некоторые ресурсы
http://www.wasm.ru/ Самый популярный русскоязычный ресурс. https://wasm.in/
Ассемблер - книги (ASM, Assembler)
 
Просьба все большие листинги оформлять тегом more.
 
если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:42 29-11-2006 | Исправлено: akaGM, 17:44 11-06-2020
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
а ты при помощи каких функций хочешь текст выводить?

Любых, которые выводят текст без атрибута.

Цитата:
и что за графический режим, vga/svga?

Любой цветной.
 
Еще, как вывести календарь на месяц 2012 года по его номеру?

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 18:29 03-04-2012 | Исправлено: A1exSun, 18:33 03-04-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
дос-вывод в графике я не пробовал, в 10h/09  BL= индекс цвета в текущей палитре
а вообще, обычно текст попиксельно выводят, что даже быстрее чем int'ом

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 18:52 03-04-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
в 10h/09  BL= индекс цвета в текущей палитре

Задание звучит так:

Цитата:
Написать программу, которая прокручивает экран вниз и устанавливает цвет символов желтый в графическом режиме.

То есть цвет только установить, текст не выводить...
 
Добавлено:

Код:
    asc2dec proc
        sub ax, 3030h
        mov bl, ah
        mul bh
        add al, bl
        ret
    asc2dec endp

Что не так? На входе AX = два байта число, например "22", на выходе должно быть AL = 22.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 18:58 03-04-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun

Цитата:
То есть цвет только установить, текст не выводить...  

...задание не делать :)
 
наврное всё-таки сначала вытавить цвет, потом крутануть...
 
      mul bh
 
ну... результат будет в ax=al*bh, а тебе что надо?

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 19:27 03-04-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
наврное всё-таки сначала вытавить цвет, потом крутануть...

Ну так а как цвет выставить?

Цитата:
ну... результат будет в ax=al*bh, а тебе что надо?

Все норм, забыл "mov bh, 10" перед вызовом.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 19:33 03-04-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
 

Цитата:
 
Как установить цвет текста в графическом режиме?
 

Цитата:
A1exSun
дос-вывод в графике я не пробовал, в 10h/09  BL= индекс цвета в текущей палитре  

я уже ответил, не устраивает -- больше я не знаю...

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 19:37 03-04-2012
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
В графических режимах экран рассматривается не как набор символов, а как набор точек. О каком цвете символов без вывода может идти речь?

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 20:34 03-04-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Abs62
 
не-не, я про режим APA ему уже говорил, но какой-то вывод на консоль (по-моему, всё-таки int10h)
выводит знакоместом...

Всего записей: 24120 | Зарегистр. 06-12-2002 | Отправлено: 20:43 03-04-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Часть задания: если нажата левая Alt, вывести содержимое upper, если оба Ctrl - вывести other, иначе вывести buffer+2.
Мой код:

Код:
    check:
    ; очистка экрана
    mov ah, 7
    mov al, 0
    mov bh, 7
    mov cx, 0
    mov dh, 25
    mov dl, 80
    int 10h
    ; чтение байт состояния клавиш
    mov ax, word ptr [40h:17h]
    ; перевiрка лiвої Alt
    test ax, 2
    jz not_left_alt
    ; вывод большой буквы
    lea dx, upper
    call print
    jmp check
    not_left_alt:
    ; перевiрка обох Ctrl
    test ax, 401h
    jz not_ctrl
    ; вывод всех цифр и маленьких букв
    lea dx, other
    call print
    jmp check
    not_ctrl:
    ; вывод содержимого буфера
    lea dx, buffer+2
    call print
    jmp check

Почему не работает и как сделать чтоб текст не мигал в цикле, какую-то задержку?

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 20:44 05-04-2012
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun

Цитата:
Почему не работает

Потому, что вот так

Код:
mov ax, word ptr [40h:17h]
делать нельзя. Надо как-то так:

Код:
mov    ax,40h
mov es,ax
mov ax,word ptr es:[17h]

Цитата:
как сделать чтоб текст не мигал в цикле

Не выводить его на каждом цикле. Сохраняй, к примеру, значение байта состояния и смотри, изменился он после предыдущего опроса или нет.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 21:54 05-04-2012 | Исправлено: Abs62, 21:55 05-04-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Abs62
С тем уладил. Как различить правый и левый Ctrl? Мне нужно чтоб когда они оба были нажаты, выводилось сообщение.
Здесь, по идее, неправильно расписаны биты...
 
Добавлено:
Код:

Код:
    check:
    ; читання байтiв стану клавiш
    mov ax, 040h
    mov es, ax
    mov ax, word ptr es:[017h]
    ; перевiрка лiвої Alt
    test ax, 0200h
    jz not_left_alt
    ; виведення великої лiтери з найбiльшим кодом
    lea dx, upper
    call print
    lea dx, crlf
    call print
    jmp check
    not_left_alt:
    ; перевiрка обох Ctrl левый Ctrl
    mov ax, word ptr es:[017h]
    and ax, 0500h
    test ax, 0500h
    jz not_ctrl
    ; виведення всiх цифр i маленьких лiтер
    lea dx, other
    call print
    lea dx, crlf
    call print
    jmp check
    not_ctrl:
    ; Shift - вихiд з програми
    mov ax, word ptr es:[017h]
    test ax, 0003h
    jnz exit
    ; виведення змiсту буфера
    lea dx, buffer+2
    call print
    lea dx, crlf
    call print
    jmp check

 
Добавлено:
А вот здесь уже совсем по другому расписаны биты, по этой таблице делалось.
 
Добавлено:
Левый Alt работает и левый Ctrl работает, но должно быть оба Ctrl.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 22:01 05-04-2012 | Исправлено: A1exSun, 22:16 05-04-2012
cp58

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun

Цитата:
по этой таблице делалось.  

Если по ней делалось, то и использовать код для обоих Ctrl 0x4.

Всего записей: 295 | Зарегистр. 06-12-2011 | Отправлено: 23:40 05-04-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cp58

Цитата:
Если по ней делалось, то и использовать код для обоих Ctrl 0x4.

4h срабатывает при отдельных нажатиях левого и правого Ctrl, а нужно чтоб только когда вместе нажаты оба. Вот в чем проблема.
Ctrl-shift (left side) DOWN + Ctrl-shift (right side) DOWN = 500h, а срабатывает сразу при нажатии одного левого Ctrl.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 00:03 06-04-2012 | Исправлено: A1exSun, 00:06 06-04-2012
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun

Цитата:
А вот здесь уже совсем по другому расписаны биты, по этой таблице делалось.

А повнимательнее прочитать, что там написано?

Цитата:
The byte at 0040:0018 is somewhat different from than that returned in AH by INT 16H 12H.


----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 00:13 06-04-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Abs62
Скажи какие биты мне проверять?
Что не пробовал - не то.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 00:37 06-04-2012
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
По флагам из 40h:17h отличить нажатие левого контрола от нажатия обоих сразу не выйдет. Нету там нужного бита.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 00:42 06-04-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Попробовал так:

Код:
    not_left_alt:
    ; проверка левого Ctrl
    test ax, 100h
    jz not_ctrl
    ; проверка обоих Ctrl
    test ax, 4h
    jz not_ctrl
    ...
    not_ctrl:

Не работает
 
Так а "0100H Ctrl-shift (left side) DOWN" ?
 
Добавлено:
В общем понял, когда только левый нажат, все равно стоит бит "Ctrl-shift (either side) DOWN".

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 00:43 06-04-2012 | Исправлено: A1exSun, 00:44 06-04-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
0040h:0096h           Keyboard Status and Type Flags
 
    Length: 1 byte
 
    This byte holds keyboard status information.
 
        Keyboard Status Information
 
        7 6 5 4 3 2 1 0
        x . . . . . . .       Read ID in progress
        . x . . . . . .       Last character was first ID character
        . . x . . . . .       Force Num Lock if read ID and KBX
        . . . x . . . .       101/102-key keyboard installed
        . . . . x . . .       Right Alt key is pressed
        . . . . . x . .       Right Ctrl key is pressed
        . . . . . . x .       Last code was E0 Hidden Code
        . . . . . . . x       Last code was E1 Hidden Code

То что мне надо

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 09:58 06-04-2012
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Йоптить ... А мы, мужики то, и не знали ... не, все же молодежь нынче [про]двинутая

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 10:54 06-04-2012
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
1. Написать программу, которая выводит в окне A надпись, потом переключает на окно B, в котором зарисовывает область заданного размера и цвета.
2. Написать программу, которая устанавливает дополнительную палитру.

Подскажите как это делать? VESA.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 23:12 06-04-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru