в общем проблема не совсем в этом, асм начал изучать недавно. проблема с командой mov hel,ecx : invalid operand комплятор FASM Код (Text): org 100h; use16; mov eax,1 cpuid mov hel,ecx mov dx,hel mov ah,9 int 21h mov ax,4C00h int 20h hel dd ?
org 100h; use16; mov eax,1 cpuid mov [hel],ecx mov dx,[hel] mov ah,9 int 21h mov ax,4C00h int 20h hel dd ?
org 100h; use16; mov eax,1 cpuid mov [hel],ecx mov dx,word [hel] mov ah,9 int 21h mov ax,4C00h int 20h hel dd ?
Вы один раз обращаетесь к строке как в dword (ecx), а второй раз к word (dx). Кстати, я могу предположить, что в dx вам нужно смещение, а не значение. Так что надо делать mov dx, hel или lea dx, [hel]. Кстати, функция 9 прерывания выводит строку завершённую знаком $, а не как все нормальные функции 0, поэтому в конец строки следует поместить $ (mov byte[hel + 4], "$") иначе выведится ещё и мусор (до первого байта 0x24)
спасибо большое, вот рабочий вариант Код (Text): org 100h; use16; mov eax,0 cpuid mov [hel],ecx lea dx, [hel] mov byte[hel + 4], "$" mov ah,9 int 21h mov ax,4C00h int 21h hel dd ?