Дмитрий
а реально в сях не получается достать из этого адреса калибровочный байт
Дмитрий
Дмитрий
скажите пожалуйста
Дмитрий
можно как то расширить предел измерения таймера
Дмитрий
если мне нужно записать в него больше времени
Дмитрий
сейчас у меня на максимальном предделителе вмещается только 65 миллисекунд
Дмитрий
таймер 8битный
Дмитрий
notme
Дмитрий
можно и без прерывания
Здрасьте, Вероника
Гордей
Здравствуйте!
Андрей
Ребят подскажите пожалуйста как это исправить. Я не разбираюсь но нужно писать курсач. А у меня вылетает ошибка вроде как с сегментацией.
Андрей
.386
.model small
.stack 100h
.data
x dd 10 dup(0)
y dd 10 dup(0)
x1 dd 0
y1 dd 0
flag db 0
flag1 db 0
.code
_@main:
mov ax, DGROUP
mov ds, ax
xor bx, bx
push 0
push 5
pop ax
pop dx
pop bx
mov word ptr x1[bx], ax
mov word ptr x1[bx+2], dx
mov ax, 4C00h
int 21h
end _@main
вот мой код который не запускается использую компилятор masm. В среде Visual Studio
Sergey
Андрей
ну прога не рабочая да и дело не в этом
Андрей
мне нужна среда, которая позволяет такое запускать
Андрей
а мне нужен masm или это не очень важно?
Андрей
только masm
Sergey
https://habr.com/ru/articles/326078/ это пробовал читать?
The Bird of Hermes
The Bird of Hermes
Лучше ставить версию 0.9.0
вася
Пишу программу для dos. Она должна завершиться системным вызовом для возврата в консоль. Но, если я использую команду idiv, программа не завершается корректно.
sseg segment para stack 'stack'
db 256 dup(?)
sseg ends
code segment para public 'code'
assume cs:code, ds:data, ss:sseg, es:data
main proc
mov ax, data
mov ds, ax
mov es, ax
mov ax, 15
mov bx, 2
idiv bx
mov ax, 4c00h
int 21h
main endp
code ends
data segment para public 'data'
data ends
end main
Без команды idiv bx все работает прекрасно.
КТ315
Пишу программу для dos. Она должна завершиться системным вызовом для возврата в консоль. Но, если я использую команду idiv, программа не завершается корректно.
sseg segment para stack 'stack'
db 256 dup(?)
sseg ends
code segment para public 'code'
assume cs:code, ds:data, ss:sseg, es:data
main proc
mov ax, data
mov ds, ax
mov es, ax
mov ax, 15
mov bx, 2
idiv bx
mov ax, 4c00h
int 21h
main endp
code ends
data segment para public 'data'
data ends
end main
Без команды idiv bx все работает прекрасно.
Ты знаешь, как работает idiv?
вася
да
вася
делит ax на указанный в команде операнд
вася
раньше использовал, все было нормлально
вася
в dx остаток
КТ315
в dx остаток
dx не только как остаток использоваться может.
The Bird of Hermes
КТ315
а как исправить то?
Во-первых, отладчик ты используешь вообще?
Ты должен был видеть причину исключения - это INT_OVERFLOW.
В EDX изначально при запуске лежит какой-то мусор, и ты делишь не AX=2, BX=2 (2/2), а какой-то DX:AX=1831283812... на 2.
The Bird of Hermes
The Bird of Hermes
По-моему он там отдельное прерывание вызывает при переполнении деления. Или зацикливается
The Bird of Hermes
Не помню уже
вася
вася
Хочу написать программу, которая реагирует на мышь. Все получается, кроме обработчика событий. Он просто не срабатывает. Данная программа должна считывать нажатие левой кнопкой и устанавливать мышь в заданные координаты.
sseg segment para stack 'stack'
db 256 dup(?)
sseg ends
code segment para public 'code'
assume cs:code, ds:data, ss:sseg, es:code
handler proc
mov ax, 4
mov dx, 50
mov cx, 50
int 33h
retf
handler endp
main proc
mov ax, 12h
int 10h
mov ax, 0
int 33h
mov ax, 1
int 33h
mov ax, 0ch
mov cx, 00000010b
mov dx, offset handler
int 33h
mov cx, 0
int 33h
mov ah, 4ch
int 21h
main endp
code ends
data segment para public 'data'
data ends
end main
Андрей
мужики подскажите пожалуйста. У меня есть вот такие функции, но я в них ничего не понимаю. Можно какую-нибудь статью что-то типа ассемблер для чайников. Спасибо. Ну или книгу ничего не могу найти похожего по строкам.
@Vyvod_literala proc
xor si,si
@M16: mov di,bx[si]
cmp di,'$'
jz @M15
mov buffer[di],dl
inc di
inc si
jmp @M16
@M15: mov mov buffer[di],20h
inc di
ret
@Vyvod_literala endp
The Bird of Hermes
мужики подскажите пожалуйста. У меня есть вот такие функции, но я в них ничего не понимаю. Можно какую-нибудь статью что-то типа ассемблер для чайников. Спасибо. Ну или книгу ничего не могу найти похожего по строкам.
@Vyvod_literala proc
xor si,si
@M16: mov di,bx[si]
cmp di,'$'
jz @M15
mov buffer[di],dl
inc di
inc si
jmp @M16
@M15: mov mov buffer[di],20h
inc di
ret
@Vyvod_literala endp
Во-первых, di двухбайтовый регистр, а ты судя по всему пытаешься туда байт выгрузить. Во-вторых, у тебя di используется сначала как хранилище символа, а потом как индекс для буфера
Дмитрий
Дмитрий, [29.04.2024 15:33]
у меня странная проблемма
Дмитрий, [29.04.2024 15:33]
компилирую проект в мплаб под 683 пик
Дмитрий, [29.04.2024 15:33]
получаю на выходе хекс
Дмитрий, [29.04.2024 15:34]
но в этом хексе кривое слово конфигурации
Дмитрий, [29.04.2024 15:34]
__CONFIG (CP_OFF & CPD_OFF & BOREN_OFF & MCLRE_OFF & PWRTE_ON & WDTE_OFF & FOSC_INTOSCIO & FCMEN_OFF & IESO_OFF);
Дмитрий, [29.04.2024 15:35]
должно быть: 30С4
а получаю в хексе: F0C4
Shieldy
(1 + 2) @Ageter, пожалуйста, отправьте решение указанной арифметической задачи в этот чат в течение указанного времени, иначе вы будете кикнуты. Спасибо! (30 сек)
При поддержке 1inch Network
Брысь
Semyon
Блэт... че проституткам делать в чате асма...
Aiwan \ (•◡•) / _bot
КТ315
Illusion
посоветуйте ресурс для изучения masm ассемблера
Aiwan \ (•◡•) / _bot
Illusion
invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK
Обьясните пожалуйста, для чего тут директива addr ?
The Bird of Hermes
The Bird of Hermes
Оно не является обязательным в данном случае
The Bird of Hermes
Illusion
понял, спасибо
Illusion
Хочу скомпилировать ресурс файл(с помощью masm editor) но получаю следующую ошибку, что я делаю не так?
Дмитрий
Дмитрий
Дмитрий, [23.05.2024 18:20]
скажите
если я закомментирую if
//if(......)
{
.......
}
выражение в скобках будет выполняться - не вызовет это ошибку?
notme
Дмитрий
я фи я вообще не работал
Дмитрий
даже не знаю что это
Дмитрий
да и сама прога у меня сложная
Дмитрий
там всякие структы и юнионы
->
Дмитрий
+ там параллельные потоки
notme
Ну закомменть, скампиль, да проверь?
Дмитрий
Дмитрий
else
{
//if(!memcmp(&ep->emm[6], rdr->hexserial + 2, 4))
{
ep->type = UNIQUE;
memset(ep->hexserial, 0, 8);
memcpy(ep->hexserial + 2, &ep->emm[6], 4);
//memcpy(ep->hexserial + 2, rdr->hexserial + 2, 4); //!!!
rdr_log_dbg_sensitive(rdr, D_EMM, "UNIQUE, ep->hexserial = %s",
cs_hexdump(1, ep->hexserial, 8, tmp_dbg, sizeof(tmp_dbg)));
memcpy(ep->hexserial + 2, rdr->hexserial + 2, 4); //!!!
return 1;
}
//else
{
ep->type = GLOBAL;
rdr_log_dbg(rdr, D_EMM, "GLOBAL");
memset(ep->hexserial, 0, 8);
return 1;
}
}
Sergey
else
{
//if(!memcmp(&ep->emm[6], rdr->hexserial + 2, 4))
{
ep->type = UNIQUE;
memset(ep->hexserial, 0, 8);
memcpy(ep->hexserial + 2, &ep->emm[6], 4);
//memcpy(ep->hexserial + 2, rdr->hexserial + 2, 4); //!!!
rdr_log_dbg_sensitive(rdr, D_EMM, "UNIQUE, ep->hexserial = %s",
cs_hexdump(1, ep->hexserial, 8, tmp_dbg, sizeof(tmp_dbg)));
memcpy(ep->hexserial + 2, rdr->hexserial + 2, 4); //!!!
return 1;
}
//else
{
ep->type = GLOBAL;
rdr_log_dbg(rdr, D_EMM, "GLOBAL");
memset(ep->hexserial, 0, 8);
return 1;
}
}
ассемблер сильно поменялся за то время когда он мне на глаза не попадался\
Дмитрий
ты такого на асме не напишешь
Дмитрий
а если и напишешь - то не отладишь
notme
Дмитрий
КТ361 зато есть
The Bird of Hermes