Помощь - Поиск - Пользователи - Календарь
Полная версия: Машинный код. Инструкции Pc
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Assembler
Altair
Следующий код:
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.
  • Почему возникает ошибка?
  • Почему ошибки разные?
  • Как сделать, чтобы очистка экрана работала нормально?
Shadow
при таком коде 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);

а ошибки у меня они соответственно не такие
Shadow
Фаронов Турбо =Паскаль в Подлиннике= стр 233
глава 11.2 Использование встроенных машинных кодов
3 абзац сверху
Цитата
Элемент кода будет генерировать 1 байт кода, если этот элемент
состоит только из целых констант и значение результата не превышает
мощности 1 байта, т.е. находится в пределах 0...255. Если значение превышает
255 или элемент кода содержит ссылку на счетчик адреса, генерируется 2 байта.....
Altair
Угу, понял, спасибо.
Во-первых я забыл в регистр AH поместить код функции :p2:
Во-вторых я не знал, что надо генерировать элементы кода по 1 байту.
РАБОТАЕТ ТЕПЕРЬ! :p9:
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.