Помогите доделать задачи |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
Помогите доделать задачи |
Гость_Дмитрий |
23.08.2004 11:29
Сообщение
#1
|
Гость |
у меня MASM32 при компиляции ругается на
1) pascal, нужен сегмент и думаю, что не много не доделана. надо записать в байт памяти 0 с логич. адрресом segm:ofs Код call zero pascal,0B800h,12h . . . zero proc pascal segm,ofs uses ds,di lds di,dword ptr ofs mov byte ptr ds:[di],0 ret zero endp 2) флаг ZF установить. задают пары DS:BX ES:DX при компиляции ругается на недостаток сегмента и на :blink: chkaddr mov bx,0F000h mov ds,bx mov bx,0FFF0h mov dx,0FFFFh mov es,dx xor dx,dx call chkaddr mov bx,dx call chkaddr . . . chkaddr proc pascal uses eax,ebx mov ax,ds movzx eax,ax shl eax,4 movzx ebx,bx add eax,ebx mov bx,es shl ebx,4 movzx edx,dx add ebx,edx cmp eax,ebx ret chkaddr endp отредактировано МОДЕРАТОРОМ просьба оформить тему правильно -------- условия несколько сумбурны и непонятны и сам заголовок темы Сообщение отредактировано: Shadow - 23.08.2004 15:43 |
BlackShadow |
23.08.2004 11:32
Сообщение
#2
|
Гость |
Оформи правильно, условия выложи полностью... Там и посмотрим.
|
Гость_Дмитрий |
24.08.2004 8:18
Сообщение
#3
|
Гость |
изначально было нужно:
1 задача) запись нулевого значенияв байт памяти с адресом segm:offset(известны во время ассемблирования) 2-задача) флаг установить в состояние зависящееот регистров пары DS:BX ES:DX |
Гость_Дмитрий |
24.08.2004 8:28
Сообщение
#4
|
Гость |
Совсем забыл. Постоянно наступаю на грабли, что неправильно оформил.
Читал правила но не понял, что считать темой, а что пояснением. Прошу на данном примере, если не затруднит, показать, как я должен был сделать. |
BlackShadow |
25.08.2004 13:37
Сообщение
#5
|
Гость |
1)
PROC MakeNull PASCAL 2). По-прежнему ничего не понятно. Зависимости бывают разные (там алкогольные например...), так что поясни по-точнее. |
Гость_Дмитрий |
25.08.2004 14:53
Сообщение
#6
|
Гость |
ZF устанавливается в определённое состояние зависящее от того, задают регистровые пары DS:BX ES:DX один и тот же физический адрес или нет.
вопрос по первой задаче? а логический адрес segm:offset не нужен? |
BlackShadow |
25.08.2004 15:39
Сообщение
#7
|
Гость |
ответ по первой задаче: DWORD - 4 байта. Т. е. 2 слова. 2 слова это и есть сегмент и смещение. Делаешь что-то типа
PUSH SEG MyVar 2). XOR EAX,EAXДолжно быть так. Если адреса не совпадают, то ZF сбросится, иначе установится. Вариант не из лучших, но должен работать... |
Текстовая версия | 29.04.2024 7:38 |