|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.08.2011, 19:55 | #1 |
Пользователь
Регистрация: 18.03.2011
Сообщений: 22
|
Ассемблер в С
Подскажите пожалуйста, ситуация такова, я выполнил некторые операции, в своей программе, с помощью ассемблерных вставок,и передо мной стоит задача теперь вывести содержимое некоторых регистров на экран, с помощью каких команд я могу это выполнить?
|
04.08.2011, 00:22 | #2 |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
Все локальные переменные созданные в С++ коде, можно использовать в ассемблерной вставке. Например вот так:
Код:
"Тяжело в учении, легко в бою" - А.В. Суворов
|
04.08.2011, 00:22 | #3 |
Пользователь
Регистрация: 18.03.2011
Сообщений: 22
|
Можно ли сделать так, что я объявляю некоторую переменную в самой программе, а потом с помощью ассемблерной вставки заношу данные из некоторого регистра в эту переменную? Например есть переменная x и регистр СН, в котором нужное мне число, вряд ли я смогу написать
mov x, CH как быть? попробую, спасибо большое Последний раз редактировалось Stilet; 05.08.2011 в 20:04. |
04.08.2011, 00:39 | #4 |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
Да запросто. Вот только с косвенными обращениями получается не очень. Хотя я на ассемблере( в особенности встроенном в MSVC) писал очень давно, может позабыл чего да как, тем не менее вот это вполне рабочее решение, разве что для косвенной адресации отдельный регистр используется, с адресом как-то не получилось.
Код:
"Тяжело в учении, легко в бою" - А.В. Суворов
|
04.08.2011, 01:20 | #5 | |
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
|
Код:
Цитата:
Код:
Последний раз редактировалось coNsept; 04.08.2011 в 01:51. |
|
05.08.2011, 09:43 | #6 |
Пользователь
Регистрация: 18.03.2011
Сообщений: 22
|
Спасибо большущее, но тут вот такая проблема, мне пишут следующее: "Invalid combination of opcode and operands".
PHP код:
|
05.08.2011, 13:16 | #7 |
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
|
Код:
|
05.08.2011, 13:52 | #8 |
Пользователь
Регистрация: 18.03.2011
Сообщений: 22
|
Возникает такая ситуация, что выводит в переменную buffer непонятно что(((
PHP код:
|
05.08.2011, 14:15 | #9 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
ah он 8-битный какбе
надо ax или eax юзать. Код:
|
05.08.2011, 15:32 | #10 |
Пользователь
Регистрация: 18.03.2011
Сообщений: 22
|
Спасибо, а можно тогда задать следующий вопрос
Обработчик прерывания BIOS от системного таймера (Int 8) подсчитывает количество прерываний (каждые 55 мсек или 18,2 раза в секунду) в двойном слове памяти с адресом 0040h:006Сh. Данная функция возвращает накопленное значение (двоичный код) и сбрасывает его в 0. В регистре AL возвращается 0, если содержимое счетчика не превысило значения, соответствующего 24 часам (при достижении этого значения счетчик сбрасывается), иначе возвращается AL = 1. Вызов: АН = 00h. Возврат: СХ:DX – число тактов системного времени от полуночи, AL – флаг перехода через сутки. Примеры возвращаемых значений в СХ:DX: 1 сек 12h или 18, 1 минута 04 44h или 1092, 1 час 1 00 07h или 65543, 24 часа 18 00 B0h или 1 573 040. Для задержек меньших 14 секунд можно пользоваться только младшим байтом регистра DX B данном примере установлена задержка на 5 секунд, что соответствует 91 отсчету таймера .......... Код:
Правильно ли я понимаю, что если вставить следующий элемент в программу, то следующие за ним команды выполнятся только через 5 сек? И ещё при компиляции выскакивает ошибка мол "Undefined label "repeat"." |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ассемблер | farxad | Помощь студентам | 6 | 11.09.2016 14:19 |
Ассемблер | SWEET_15 | Помощь студентам | 3 | 06.09.2016 08:45 |
ассемблер | klim_666 | Фриланс | 5 | 29.12.2010 14:52 |
Ассемблер | Александе еть я | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 13 | 14.05.2010 13:52 |