Занесение в FPU-стек регистров общего назначения - Assembler
Формулировка задачи:
Еще раз всем привет! Возник маленький вопрос по поводу использования регистров общего назначения в FPU. Я имею опыт работы с паскалем (хоть и не очень большой) и от того переменные просто не выношу.. Вопрос нужно ли создавать отдельные переменные для занесения в стек чисел, или можно сделать это через регистры? (AX,BX,CX и тд). И еще насчет флагов: как я понимаю, в Turbo Debugger отображаются не все флаги (по крайней мере у Зубкова их количество больше (если, конечно, я опять что-нибудь не напутал)). Кажется, там нет С0, С1, С2 и С3 (и мб не только их). Как получить значения этих флагов? (Я знаю 2 способа : перевести их в флаги CPU или просто изучить работу команд Jcc). Если есть что-то более доступное и простое в использовании, то мне очень интересно)) А еще, слава кодерам, уделяющим мне своё время!!!!!))
Решение задачи: «Занесение в FPU-стек регистров общего назначения»
textual
Листинг программы
mov ax,100 push ax mov bp,sp fild word ptr [bp] pop ax ; Несколько значений: mov bp,sp mov ax,100 push ax fild word ptr [bp-2] mov word ptr [bp-2],200 fild word ptr [bp-2] mov word ptr [bp-2],300 fild word ptr [bp-2] pop ax ; С сохранением bp: push bp mov bp,sp mov ax,100 push ax fild word ptr [bp-2] mov word ptr [bp-2],200 fild word ptr [bp-2] mov word ptr [bp-2],300 fild word ptr [bp-2] leave ; mov sp,bp + pop bp ; Вариант не самый безопасный, но тоже рабочий: cli ; запрещаем прерывания, иначе наши числа затрутся при вызове прерывания, при пошаговой отладке тоже (cli тут не поможет) mov bp,sp mov word ptr [bp-2],100 fild word ptr [bp-2] mov word ptr [bp-2],200 fild word ptr [bp-2] sti
Объяснение кода листинга программы
Код выполняет следующие действия:
- Переменная
ax
содержит число 100. - В стек FPU заносится слово
ax
. - Переменная
bp
содержит адрес вершины стека FPU. - В стек FPU заносится слово
bp-2
. - Содержимое слова
bp-2
меняется на 200. - В стек FPU заносится слово
bp-2
. - Содержимое слова
bp-2
меняется на 300. - В стек FPU заносится слово
bp-2
. - Переменная
ax
содержит число 100. - Стек FPU освобождается.
- Переменная
bp
содержит адрес вершины стека FPU. - Содержимое слова
bp-2
меняется на 200. - Содержимое слова
bp-2
меняется на 300. - Переменная
ax
содержит число 100. - Стек FPU освобождается.
- Запрещаются прерывания.
- Переменная
bp
содержит адрес вершины стека FPU. - В стек FPU заносится слово
bp-2
. - Содержимое слова
bp-2
меняется на 200. - В стек FPU заносится слово
bp-2
. - Содержимое слова
bp-2
меняется на 300. - Разрешаются прерывания.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д