IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> Машинный код. Инструкции Pc
сообщение
Сообщение #1


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Следующий код:
MOV     AL,00
MOV     BH,07
MOV     CX,0000
MOV     DX,184F
INT     10

выполняется в Паскале, если его поместить в ASM {...} END;
Теперь если перевед это в машинный код, получаем:
Цитата
-U
10A1:0100 B000          MOV  AL,00
10A1:0102 B707          MOV  BH,07
10A1:0104 B90000        MOV  CX,0000
10A1:0107 BA4F18        MOV  DX,184F
10A1:010A CD10          INT  10

(это я скопировал из окна DEBUG)
Напишем программу на паскале:
BEGIN
WRITELN('DFDFDF');
READLN;
INLINE($B000/$B707/$B90000/$BA4F18/$CD10);
READLN;
END.
Появляется сообщение об ошибке:
Цитата
Runtime error 104 at 0000:0059.

А если в концеприписать выход из прерывания:
 INLINE($B000/$B707/$B90000/$BA4F18/$CD10/$CE);

То сообщение об ошибке:
Цитата
Runtime error 104 at 0000:005A.
  • Почему возникает ошибка?
  • Почему ошибки разные?
  • Как сделать, чтобы очистка экрана работала нормально?


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


при таком коде INLINE получается смещение если посмотреть его в отладчике
то будет виднно как смещается значения и т.о. код будет уже не таким и соответственно прерывание не то, а скажем INT 13h шутка smile.gif там другое
было но может получиться
------------
INLINE($b4/$00/$b0/$00);
INLINE($b7/$07/$b3/$00);
INLINE($B1/$00/$b5/$00);
INLINE($B6/$18/$b2/$4f);
INLINE($cd/$10);

а ошибки у меня они соответственно не такие

Сообщение отредактировано: volvo -


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


Фаронов Турбо =Паскаль в Подлиннике= стр 233
глава 11.2 Использование встроенных машинных кодов
3 абзац сверху
Цитата
Элемент кода будет генерировать 1 байт кода, если этот элемент
состоит только из целых констант и значение результата не превышает
мощности 1 байта, т.е. находится в пределах 0...255. Если значение превышает
255 или элемент кода содержит ссылку на счетчик адреса, генерируется 2 байта.....


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Угу, понял, спасибо.
Во-первых я забыл в регистр AH поместить код функции :p2:
Во-вторых я не знал, что надо генерировать элементы кода по 1 байту.
РАБОТАЕТ ТЕПЕРЬ! :p9:


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 16.04.2024 22:55
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name