Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Несколько вопросов по ассемблеру 
:(
    Опции темы
Garret
Дата 25.12.2006, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 16.9.2006
Где: Киев

Репутация: нет
Всего: 2



Вот хотелось бы услышать ответы на такие вопросы.

Цитата
1. Укажите режимы работы современных ОС и назовите средства реализации диалога "пользователь - ОС"
Режимы работы я так понимаю это однозадачный/многозадачный, режим разделения времени и режим реального времени?
Насчет средств реализации выше указаного диалога, не пойму smile

Цитата
2. Придайте двоичное содержание регистру общего назначения AH и AL, для сохранения значения переменной длиной слово и содержанием 376.
Здесь вектор из 17-ти ячеек.
[_][_][_][_][_][_][_][_][_][_][_][_][_][_][_][_][_]


Цитата
3. Наведите значения регистров(десятичное представление данных) после выполнения каждой из следующих комманд:
Код
MOV AL, 0AFH
MOV BH, 2
IMUL BH


Цитата
4. Схематически покажите содержание стэка при выполнении комманды вызова процедуры и передаче ей значения переменных А и В. Также код комманды и значение регистра SP при возвращении управления в точку вызова. Задайте комманду очистки стэка при возвращении управления.


Буду очень благодарен за любую помощь :unsure:  smile
PM MAIL WWW ICQ   Вверх
anwe
Дата 25.12.2006, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



2. Наверное, это, я толком не понял что надо. Регистры ah и al размерности в байт, которые вместе составляют и именуются как ax. Регистр ah называется старшим байтом регистра axal - младшим.
Число же 376>255, то есть размерности в слово. Зачем даны именно 17, а не 16 разрядов, что соответствует слову, непонятно. На асме это так:
Код

mov ax,376
Я не совсем понимаю задания. Может надо занести именно двличный код, тогда так:
346/2=188, отс=0
188/2=94, ост=0
94/2=47, ост=0
47/2=23, ост=1
23/2=11, ост=1
11/2=5, ост=1
5/2=2, ост=1
2/2=1, ост=0
1/2=0, ост=1
прочитав обратно, получаем двоичное число 1 0111 1000. Значит так:
Код

mov ax,101111000b
либо, что тоже самое
Код

mov al,1111000b
mov ah,1


3.
Код

MOV AL, 0AFH  ;занести в al 175
MOV BH, 2   ;занести в bh 2
IMUL BH   ;умножить (со знаком) bh с al. Результат заносится в регистр ax=350


4. 
Цитата
Схематически покажите содержание стэка при выполнении комманды вызова процедуры и передаче ей значения переменных А и В
Вызов процедуры проводится командой call. Прежде чем перейти на вызываемую точку она сохраняет адрес возврата, занося его в стек - 2 байта (буду писать для 16 разрядной системы). Это справедливо для так называемой ближней процедуры, то есть, что находится в том же сегменте, где и вызывающая. Если в другом - то сначало в стек поместится cs - содержание регистра сегмента кода, а после ip.Далее надо сохранить базу стека - регистр bp. После чего занести указатель стека sp в него для дальнейшего возврата из процедуры и "оттянуть" (уменьшить, так как стек растет сверху вниз) указатель стека sp на размер переменных. Такое содержит стек:
Код

ip   ;адрес возврата 2 байта
bp ; 2 байта
A ;переменная
B ;переменная
Цитата
код комманды и значение регистра SP при возвращении управления в точку вызова
Чистое восстановление из процедуры - это команда ret. Ее код С3h для выхода из ближней процедуры и CBh для выхода из дальней. К слову сказать, асм сам это определит по описанию процедуры, можно писать просто ret. Она проводит действия, обратные команде call: считывает из стека 2 байта (опять же для 16 разрядной системы) и загружает его в ip (для выхода из дальней процедуры еще загружает и cs). Указатель стека увеличивается (потому что растет сверху вниз) на 2 байта. То есть если sp был равен 0FFF4h (произвольное значение), то после возврата sp=0FFF6h.
Цитата
Задайте комманду очистки стэка при возвращении управления.
При возврате ранее сохраненное значени указателя sp восстанавливается (считывается) из сохраненного bp. (Надо добавить, что потом надо и восстановить сам bp). Это делается той же командой mov перед ret:
Код

mov sp,bp ;считывание (восстановление)
pop bp ;восстановление базы
ret ;возврат

PM MAIL   Вверх
Frekenbok
Дата 29.12.2006, 05:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 29.10.2006

Репутация: нет
Всего: 1



1. Даже не знаю, что отнести к средствам диалога. Может, имеется в виду сам интерфейс (окна или командная строка, например)? А может средства ввода-вывода (клава, мышь, монитор и т.п.)?

2. Мне кажется, что 17-ая ячейка по ошибке написана. Их же 16! А содержание такое: АХ - 0000000101111000 (376 в двоичной системе), в этот старший 17-й байт тоже можно 0 поместить,  или разбить: AH - 00000001,  AL - 01111000

3. В регистре AX будет 350, в BH - 2. Но вот если надо конкретно в AL узнать в десятичной системе, то тогда так: в AX 350, т.е. 15Еh, тогда в AH -01h, а в AL - 5Еh или 94 в десятичной.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0773 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.