Member
Статус: Не в сети Регистрация: 15.02.2009 Откуда: Лангепас
Bad Fox писал(а):
var dw 0, 0FFFh, 0FFh, 1A, 3C
mov ax, var+7
что запишется в ах? 1A00 или 3C00?
Бред запишется, так как var - это указатель на массив слов и если он, к примеру, равен 0aaaah:0bbb0h то var+7, будет равен 0aaaah:0bbbeh (так как слово занимает 2 байта), а не 0aaaah:0bbb7h как Вы ожидаете...
Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
У х86 процессора нет разночтений. При любом способе доступа (байт/word/dword/qword...) нулевой байт пишется в младшую часть(биты 7-0), первый в следующий (биты 15-8) и т.д.
Member
Статус: Не в сети Регистрация: 25.09.2009 Откуда: Тула
Привет прошу помощи с ассемблером. Нужно вывести сообщение "Процессор поддерживает/ не поддерживает Cool'n'Quiet". Знаю, что нужно использовать CPUID, но как? Какую литературу посоветуете почитать? P.S. не прошу сделать за меня, прошу лишь немного информации.
Member
Статус: Не в сети Регистрация: 15.02.2009 Откуда: Лангепас
oxy писал(а):
Vladson писал(а):
(только там нет информации о том включен ли QnQ, там можно выяснить поддерживается ли он процессором)
О поддержке процом Сool&Quiet Википедия не даст. Он сможет сказать чё за проц стоит, а по нему можно попытаться и определить енту возможность. Есть
Код:
EAX=80000000h: Get Highest Extended Function Supported The highest calling parameter is returned in EAX. [edit]EAX=80000001h: Extended Processor Info and Feature Bits This returns extended feature flags in EDX and ECX.
Но они у каждого проца свои, читаем описалово cpuid от AMD А почитать какой проц поддерживает, а какой нет можно в той же вики
Member
Статус: Не в сети Регистрация: 16.05.2008 Откуда: DE
не разберусь с негативными числами надо градусы из Фаренгейта перевести в Цельсий, формула Celsius = (Fahrenheit * 5 - 160) / 9
Код:
.data F DW 20 ;заданная температура по шкале Фаренгейта C DW 0, 0 ; здесь будет температура по шкале Цельсия faktor equ 5
.stack 16 .code .startup
mov ax, F mov bx, faktor mul bx sub ax, 160 ; после этой строчки в AX будет стоять FFC4h, что соответствует -60 mov bx, 9 mov dx, 0 idiv bx ; а после этой 1C6Bh (т.е. 7275) , причем хоть div, хоть idiv, результат такой же mov C[0], ax mov C[2], dx
В конце в C[0] должно стоять число -6, а получается 7275 Помогите найти, где косяк..
Добавлено спустя 9 минут 9 секунд: то есть где косяк, вобщем-то понятно, процессор делит FFC4h на 9, и получает 1C6B, но мне-то надо чтобы получилось FFFA, т.е. -6.. не знаю, может есть еще какие-то команды для деления или корректировки результата?
Member
Статус: Не в сети Регистрация: 16.05.2008 Откуда: DE
oxy писал(а):
mov dx, 0 - Это чё?
как показал опыт, в DX-регистр лучше предварительно загружать ноль, иначе резуьтат получается некорректный
oxy писал(а):
При умножении слов получаем двойное слово в AX:DX При делении - делим AX:DX на слово.
умножение верно, а при делени содержимое регистра AX делится либо на байт, например BL (тогда в AL помещается результат, а в AH остаток) или на слово, как у меня, AX делится на BX. Тогда в АХ помещается результат, а в DX остаток
Member
Статус: Не в сети Регистрация: 15.02.2009 Откуда: Лангепас
Bad Fox писал(а):
а при делени содержимое регистра AX делится либо на байт, например BL (тогда в AL помещается результат, а в AH остаток) или на слово, как у меня, AX делится на BX. Тогда в АХ помещается результат, а в DX остаток
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения