Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Assembler

Автор: akaGM
Дата сообщения: 01.04.2012 21:46

Цитата:
А если .DATA? (как у меня)

а если DATA_хрен_знает_что_хрен_знает_на_каком_компиляторе
как у меня?

не знаю, я так не пишу...
Автор: A1exSun
Дата сообщения: 03.04.2012 16:25
Как установить цвет текста в графическом режиме? Что-то не найду такой функции...
Автор: akaGM
Дата сообщения: 03.04.2012 17:26
а ты при помощи каких функций хочешь текст выводить?
и что за графический режим, vga/svga?
Автор: A1exSun
Дата сообщения: 03.04.2012 17:29
akaGM

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

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

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

Любой цветной.

Еще, как вывести календарь на месяц 2012 года по его номеру?
Автор: akaGM
Дата сообщения: 03.04.2012 17:52
A1exSun
дос-вывод в графике я не пробовал, в 10h/09 BL= индекс цвета в текущей палитре
а вообще, обычно текст попиксельно выводят, что даже быстрее чем int'ом
Автор: A1exSun
Дата сообщения: 03.04.2012 17:58
akaGM

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

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

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

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

Добавлено:

Код: asc2dec proc
sub ax, 3030h
mov bl, ah
mul bh
add al, bl
ret
asc2dec endp
Автор: akaGM
Дата сообщения: 03.04.2012 18:27
A1exSun

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

...задание не делать :)

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

mul bh

ну... результат будет в ax=al*bh, а тебе что надо?
Автор: A1exSun
Дата сообщения: 03.04.2012 18:33
akaGM

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

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

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

Все норм, забыл "mov bh, 10" перед вызовом.
Автор: akaGM
Дата сообщения: 03.04.2012 18:37
A1exSun


Цитата:

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


Цитата: A1exSun
дос-вывод в графике я не пробовал, в 10h/09 BL= индекс цвета в текущей палитре
Автор: Abs62
Дата сообщения: 03.04.2012 19:34
A1exSun
В графических режимах экран рассматривается не как набор символов, а как набор точек. О каком цвете символов без вывода может идти речь?
Автор: akaGM
Дата сообщения: 03.04.2012 19:43
Abs62

не-не, я про режим APA ему уже говорил, но какой-то вывод на консоль (по-моему, всё-таки int10h)
выводит знакоместом...
Автор: A1exSun
Дата сообщения: 05.04.2012 19:44
Часть задания: если нажата левая 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
Автор: Abs62
Дата сообщения: 05.04.2012 20:54
A1exSun

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

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

Код: mov ax, word ptr [40h:17h]
Автор: A1exSun
Дата сообщения: 05.04.2012 21:01
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
Автор: cp58
Дата сообщения: 05.04.2012 22:40
A1exSun

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

Если по ней делалось, то и использовать код для обоих Ctrl 0x4.
Автор: A1exSun
Дата сообщения: 05.04.2012 23:03
cp58

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

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

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

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

Цитата:
The byte at 0040:0018 is somewhat different from than that returned in AH by INT 16H 12H.
Автор: A1exSun
Дата сообщения: 05.04.2012 23:37
Abs62
Скажи какие биты мне проверять?
Что не пробовал - не то.
Автор: Abs62
Дата сообщения: 05.04.2012 23:42
A1exSun
По флагам из 40h:17h отличить нажатие левого контрола от нажатия обоих сразу не выйдет. Нету там нужного бита.
Автор: A1exSun
Дата сообщения: 05.04.2012 23:43
Попробовал так:

Код: not_left_alt:
; проверка левого Ctrl
test ax, 100h
jz not_ctrl
; проверка обоих Ctrl
test ax, 4h
jz not_ctrl
...
not_ctrl:
Автор: A1exSun
Дата сообщения: 06.04.2012 08:58

Код: 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
Автор: MERCURY127
Дата сообщения: 06.04.2012 09:54
Йоптить ... А мы, мужики то, и не знали ... не, все же молодежь нынче [про]двинутая
Автор: A1exSun
Дата сообщения: 06.04.2012 22:12

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

Подскажите как это делать? VESA.
Автор: bomzzz
Дата сообщения: 06.04.2012 22:15
люди кто знает как невидимому\немонтированному диску\тому присвоить букву. я уже че только не делал, спрашивал, гуглил гуглил. даже намека не нашел куда копать
Автор: Maksim_Avrorov
Дата сообщения: 07.04.2012 08:14
Здравствуйте, купил книгу по Ассемблеру, там первая же программа выдает ошибки.
Буду благодарен если подскажите что в нём не так.
Код:
code segment
assume CS:code, DS:data
mov AX, data
mov DS, AX
mov DX,offset mes
mov AH,9
int 21h
mov AH,10h
int 16h
mov AX,4c00h
int 21h
code ends
data segment
mes db 'Hello,word!',13,10,'$'
data ends
end
Автор: blaro
Дата сообщения: 07.04.2012 08:27
После строки assume CS:code, DS:data допиши start: Это точка входа в программу.

Добавлено:
А также после строки code ends добавить end start
Автор: bomzzz
Дата сообщения: 07.04.2012 08:59
это наверно на какой то специфический компилятор. книга конечно это есть гут. но кроме того что в инете и так полно книг, надо плясать от понравившегося тебе компилятора. уровень для начала конечно у всех разный.
Автор: blaro
Дата сообщения: 07.04.2012 09:53
bomzzz

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

Да, нет. Самый обычный. Классический.
Автор: bomzzz
Дата сообщения: 07.04.2012 10:08
какой классический. они по пятаку в базарный день, фасм тасм масм жасм? и у всех немного синтаксиси отличается

http://ziplib.com/emu8086/ если ты только начал вот офигенная прога для начинающих. синтаксис фасмо практически полностью тасмо совместимый. ключ в инете. книгу другую в инете скачаешь
Автор: Maksim_Avrorov
Дата сообщения: 07.04.2012 11:56
Спасибо за ответы, буду пробовать.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384

Предыдущая тема: .NET GUI компоненты


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.