Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2009, 01:27   #11
DEADHUNT
Пользователь
 
Регистрация: 23.10.2008
Сообщений: 48
По умолчанию

как минимум одна ошибка
Код:
my_loop:

mov al,byte ptr es:[bx] 
mov buf[si], al
inc bx
inc si

cmp buf[si],0cfh ;заносим опкоды в буффер,пока не  reti
jne my_loop
DEADHUNT вне форума Ответить с цитированием
Старый 24.05.2009, 14:31   #12
smileman
Пользователь
 
Аватар для smileman
 
Регистрация: 09.06.2008
Сообщений: 60
По умолчанию

разве размер одной команды не составляет 2 байта?
что касается условного перехода-это не совсем ошибка(уже исправил), скорее корявый код..
smileman вне форума Ответить с цитированием
Старый 24.05.2009, 15:43   #13
DEADHUNT
Пользователь
 
Регистрация: 23.10.2008
Сообщений: 48
По умолчанию

размер команды от 1 до 15 байт.
Код:
inc word ptr es:[bx]
а это тоже не ошибка?
надо указатель передвинуть, а не содержимое ячейки памяти на 1 увеличить.
DEADHUNT вне форума Ответить с цитированием
Старый 24.05.2009, 17:47   #14
smileman
Пользователь
 
Аватар для smileman
 
Регистрация: 09.06.2008
Сообщений: 60
По умолчанию

блин..совсем запарился с этими адресациями..
smileman вне форума Ответить с цитированием
Старый 24.05.2009, 19:23   #15
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Цитата:
lea dx,offset msg_priv
mov ah,09h
int 21h
А разве так можно записывать? Сначала же вызывается функция и только потом оффсет строки. Нужно, вроде, так:
Код:
mov ah,09h
lea dx,offset msg_priv
int 21h
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 24.05.2009, 19:53   #16
smileman
Пользователь
 
Аватар для smileman
 
Регистрация: 09.06.2008
Сообщений: 60
По умолчанию

MalCer

вызов функции(в данном случае AH=09h) прерывания(21h) происходит после команды int. Поэтому, разнецы нет какая команда идет первой - mov ah,09h или lea dx,offset str0.

Последний раз редактировалось smileman; 24.05.2009 в 19:57.
smileman вне форума Ответить с цитированием
Старый 24.05.2009, 20:02   #17
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Ааа! Немного понял. Просто TASM выдает в этом месте ошибку
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 24.05.2009, 21:29   #18
DEADHUNT
Пользователь
 
Регистрация: 23.10.2008
Сообщений: 48
По умолчанию

потому что второй операнд у lea это ячейка памяти, а не imm16
DEADHUNT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как к BIOS обращаться. Нужно чтение/запись BIOS. Dethon_ASM_Scarel Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 26.10.2011 11:40
BIOS smileman Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 16 16.07.2008 14:54
Запись в BIOS Zer0 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.12.2007 13:35
Bios vitalik007 Общие вопросы Delphi 4 20.08.2007 11:05