Для процессора никакой разницы. Но компилятор "для твоей же пользы" осуществляет контроль типов и разрешает писать 32-битные регистры только в переменные dd и чтобы его "уговорить" записать их в db нужно явно указать dword ptr, т.е. сделать приведение типа переменной как в языках высокого уровня
Как мне вывести содержимое регистра в месбокс? Во втором посте есть мини дебугер но я чего-то не догоняю как там работает. Может есть более простой способ ну или более догоняемый?
Shoorup Связка wsprintf + MessageBoxA -- строка форматирования в wsprintf позоляет получить из числа в регистре строку (dec, hex) в буфере, указатель на буфер передается в MessageBox. Если число меньше 10 можно просто добавить "0", если число меньше 100 -- загоняешь его в eax, используешь aam и or ax,3030h
Shoorup Для преобразования числа в hex-символ? Псевдо код XLAT -- LEA AL,[BX+AL] причем число в AL от 0 до 255 или от -128 до +127 а представляемый символ тоже влазит в 8 бит, то есть через XLAT можно получить только один символ. А что тебя в MiniDebug не устроило, не стесняйся, спрашивай
В MiniDebug отлично демонстрируется как вывести регистры. Просто не очень догоняю как работает wsprintf. Например что это %08lXh? А именно для чего 08l ? С XLAT можно попробовать снести все содержимое в память а потом по байту выгонять и XLATом заменять... но это возможно бред.
На самом деле чем больше пытаюсь разобраться тем с большими трудностями сталкиваюсь... но тем и интересней! Пока маленькая цель сделать утилитку CPUID. Думаю сделав ее полностью научусь работать с асмом хоть немного. Сам себе придумываю задачи и пытаюсь их решить. Найденый код не копирую а пытаюсь разобраться как он работает, чтото свое добавляю. Нашел тут на форуме хорошую фразу: "Преждевременная оптимизация злейший враг". Напишу прогу не с очень красивой стороны, потом возьмусь оптимизировать. А вообще программировать на низком уровне очень интересно. Благо учителей нашел на форуме много! Я б один долго бы топтался на месте.