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

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

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

 
 Ответить  Открыть новую тему 
> Определение стека в Com-файлах, Задачки
Terror13
сообщение 16.01.2006 16:04
Сообщение #1





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

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


Здравствуйте. Хочу задать вопрос: Если определение стека в СОМ-файлах отсутствует. Как ведет себя СОМ-файл с учетом этого обстоятельства?

Потогите мне Найти ответы на эти вопросы:

Определите ассемблерный шестнадцатеричный объектный код для:
а) DB 26h;
б) DW 2645h;
в) DD 25733Ah;
г) DQ 25733Ah.

Закодируйте следующие команды с непосредственными операндами:
а) загрузить 320 в регистр АХ;
б) сравнить поле FLDB с нулем;
в) прибавить 40h к содержимому регистра ВХ;
г) вычесть 40h из регистра СХ;
д) сдвинуть содержимое поля FLDB на один бит влево;
е) сдвинуть содержимое регистра СН на один бит вправо.

Команда JMP начинается на 0624h. Определите адрес перехода, если шестнадцатеричный объектный код для операнда команды JMP: С6.

Предположим, что регистры AX и BX содержат знаковые данные, а CX и DX – беззнаковые. Определите команды CMP (где необходимо) и команды безусловного перехода для следующих проверок:
а) значение в DX больше, чем в CX?
б) значение в BX больше, чем в AX?
в) CX содержит нуль?
г) было ли переполнение?
д) значение в BX равно или меньше, чем в AX?
е) значение в DX равно или меньше, чем в CX?

Буду просто ужастно рад.И от всей души благодарен.
blush.gif biggrin.gif


--------------------
Ты не нисал,
Тогда кто это написал,
Это написала я,
Кто Я....-ТВОЯ СОВЕСТЬ
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 16.01.2006 16:31
Сообщение #2


N337
****

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

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


Цитата
Если определение стека в СОМ-файлах отсутствует. Как ведет себя СОМ-файл с учетом этого обстоятельства?

Файлы формата COM всегда загружаются в блок размером 64 Кб, причём устанавливаются CS = DS = ES = SS = <первый параграф блока>. Перед запуском программы ОС устанавливает указатель стека SP равным 0, в стек опускается слово 0000h, а затем управление передаётся на адрес <первый параграф блока>:100h. Т. о., при запуске программа получает SP = 0FFFEh (SP = CS), 0 в вершине стека, а сам стек размещается в конце 64 Кб блока. Нулевое слово помещается в вершину стека для обеспечения возможности выхода из программы командой retn. По ней будет осуществлён переход на адрес CS:0000h, т. е. на начало PSP, первые два байта которого - 0CDh 20h, т. е. команда int 20h - завершение программы.

Сообщение отредактировано: xds - 16.01.2006 16:34


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
zloy_pes
сообщение 16.01.2006 17:49
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 53
Пол: Мужской
Реальное имя: Веселовский Пётр Николаевич

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


1:
а) DB 26h; - 26
б) DW 2645h; - 45 26
в) DD 25733Ah; - 3A 73 25 00
г) DQ 25733Ah. - 3A 73 25 00 00 00 00 00

2:
а) загрузить 320 в регистр АХ; - mov ax,320
б) сравнить поле FLDB с нулем; - cmp FLDB,0
в) прибавить 40h к содержимому регистра ВХ; - add bx,40h
г) вычесть 40h из регистра СХ; - sub cx,40h
д) сдвинуть содержимое поля FLDB на один бит влево; - shl FLDB,1
е) сдвинуть содержимое регистра СН на один бит вправо. - shr ch,1

3:
а) значение в DX больше, чем в CX?
cmp dx,cx
ja <метка>
б) значение в BX больше, чем в AX?
cmp bx,ax
jg <метка>
в) CX содержит нуль?
cmp cx,0
je <метка>
г) было ли переполнение?
jo <метка>
д) значение в BX равно или меньше, чем в AX?
cmp bx,ax
jle <метка>
е) значение в DX равно или меньше, чем в CX?
cmp dx,cx
jbe <метка>
Вроде так smile.gif


--------------------
Money, hoes, cars and clothes
That's how all my niggaz know
Blowin dro, 24's
That's how all my niggaz roll...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Terror13
сообщение 17.01.2006 8:07
Сообщение #4





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

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


xds большое спасибо за помощь !hi.gif
zloy_pes я от всей души тебе благодарен. applause.gif !zdarov.gif

Помогите сделать еще вот эту задачку.
Команда JMP начинается на 0624h. Определите адрес перехода, если шестнадцатеричный объектный код для операнда команды JMP: С6.


--------------------
Ты не нисал,
Тогда кто это написал,
Это написала я,
Кто Я....-ТВОЯ СОВЕСТЬ
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 17.01.2006 16:22
Сообщение #5


N337
****

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

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


Цитата
Команда JMP начинается на 0624h. Определите адрес перехода, если шестнадцатеричный объектный код для операнда команды JMP: С6.

Видимо, имеется в виду "короткий" JMP (с относительной адресацией)? Тогда переход будет осуществлён на адрес 5ECh.

Адрес перехода считается так: <адрес перехода> = <адрес команды JMP> + 2 + <операнд как целое в дополнительном коде>. В нашем случае: 0С6h = -3Ah в доп. коде, <адрес перехода> = 624h + 2 - 3Ah = 5ECh.

Сообщение отредактировано: xds - 17.01.2006 16:27


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 28.04.2024 3:04
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"