Определение стека в Com-файлах, Задачки |
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? Буду просто ужастно рад.И от всей души благодарен. -------------------- Ты не нисал,
Тогда кто это написал, Это написала я, Кто Я....-ТВОЯ СОВЕСТЬ |
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.
|
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 <метка> Вроде так -------------------- Money, hoes, cars and clothes
That's how all my niggaz know Blowin dro, 24's That's how all my niggaz roll... |
Terror13 |
17.01.2006 8:07
Сообщение
#4
|
Группа: Пользователи Сообщений: 4 Пол: Мужской Реальное имя: Ник Репутация: 0 |
xds большое спасибо за помощь
zloy_pes я от всей души тебе благодарен. Помогите сделать еще вот эту задачку. Команда JMP начинается на 0624h. Определите адрес перехода, если шестнадцатеричный объектный код для операнда команды JMP: С6. -------------------- Ты не нисал,
Тогда кто это написал, Это написала я, Кто Я....-ТВОЯ СОВЕСТЬ |
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.
|
Текстовая версия | 28.04.2024 3:04 |