Программа определения типа процессора и обьема оперативной памяти - Assembler
Формулировка задачи:
Ребята помогите пожалуйста, есть часть программы (точнее целая программа), которая определяет тип процессора, хотелось бы втиснуть в нее код, который будет определять обьем оперативной памяти. Спасибо за помощь)
;8086 .model small .586 .data i8086mes db "i8086",13,10,'$' cpu db "CPU: ",0,0,0,0,0,0,0,0,0,0,0,0,10,13,'$' ten db 10 .stack 100h .code print macro mess mov dx,offset mess mov ah,09h int 21h endm print main proc near ;------------------------------- mov ax,@data mov ds,ax ;------------------------------- pushf pop ax and ax,0F000h cmp ax,0 ;je i286 cmp ax,0F000h je i8086 ;======cpuid==================== mov eax,0 cpuid mov dword ptr cpu+5,ebx mov dword ptr cpu+9,edx mov dword ptr cpu+13,ecx print cpu ;------------------------------- mov eax,ecx and eax,00003000h shr eax,12 cmp eax,0 jmp exit ;=============================== i8086: print i8086mes jmp exit ;------------------------------- exit: mov ax,4C00h int 21h main endp ;=============================== numtostr proc near ; eax - number ; bx - offset of string ; di - position in string mov byte ptr [bx+di],'0' output: div ten cmp ax,0 je _out add ah,30h mov [bx+di],ah xor ah,ah dec di jmp output _out: retn numtostr endp ;=============================== end main
Решение задачи: «Программа определения типа процессора и обьема оперативной памяти»
textual
Листинг программы
MOV AX, 0E801h INT 15h
Объяснение кода листинга программы
AX
- это регистр процессора, который используется для хранения значения, которое будет использовано в следующем инструкции.0E801h
- это значение, которое будет загружено в регистр AX.h
в конце обозначает, что это шестнадцатеричное число.INT 15h
- это инструкция, которая вызывает interrupt (прерывание) с номером 15. В IBM PC и совместимых компьютерах, interrupt 15h используется для определения типа процессора и объема оперативной памяти.