Просмотр содержимого оперативной памяти
Добавлено: 13 май 2006, 08:40
Gematogen
Подскажите, пожалуйста, может у кого есть программа просмотра оперативной памяти персонального компьютера типа IBM PC.
Или подскажите как это сделать, плиз.
Я новичок в этом деле, а разобраться мне надо.
Конкретная задача выглядит следующим образом:
После запуска программы на выполнение на экране монитора должно отобразиться содержимое оперативной памяти в виде таблицы, состоящей из колонки с диапазоном адресов, и колонки с названием загруженных в текущий момент программ.
Добавлено: 13 май 2006, 10:31
Andy
Подскажите, пожалуйста, может у кого есть программа просмотра оперативной памяти персонального компьютера типа IBM PC.
В Volcov Commander есть
Добавлено: 13 май 2006, 19:13
Gematogen
А в какой именно области ОЗУ можно просмотреть данные о загруженных в текущий момент программ. Мне в задании необходимо узнать адрес и название программы.
В интернете нашел листинг программы, выводящей экран содержимое ОЗУ. Прежде чем вывести на экран она запрашивает адрес и смещение. Т.е. как я понял эта программа может просматривать любой участок ОЗУ. Так вот и встает вопрос, а где же та область которая нужна мне?
Добавлено: 13 май 2006, 19:14
Gematogen
а вот собственно и эта пргограмма, выводящяя содежимое ОЗУ на экран:
.model small
.stack 100H
.data
ent_seg db 'Enter segment addres (in caps lock mode): ','$'
ent_offset db 'Enter offset is segment (in caps lock mode): ','$'
per db 13,10,'$'
cod db 32 dup(' '),'$'
str1 db 20 dup(' '),13,10,'$'
del db 16d
del1 dw 16
addres_bufer dw ?
mnog dw 16
a_buf db 4 dup(?)
a1_seg dw ?
a1_off dw ?
.code
start:
mov ax,@data
mov ds,ax
mov ah, 9h
mov dx, offset ent_seg
int 21h
call input
mov ah, 9h
mov dx, offset per
int 21h
mov ax, addres_bufer
mov es, ax
mov a1_seg, ax
mov ax, 0
mov addres_bufer, ax
mov ah, 9h
mov dx, offset ent_offset
int 21h
call input
mov ah, 9h
mov dx, offset per
int 21h
mov di, addres_bufer
mov a1_off, di
mov dx, 20d
vloop:
push dx
mov cx, 10d
mov bx, offset cod
mov si, offset str1
sloop:
cmp dx, 20d
je llop
mov ax, a1_off
inc ax
mov a1_off, ax
llop:
mov ax, 0
mov al, es:[di]
mov [si], al
inc si
inc di
call conv
loop sloop
mov bx, offset a_buf
mov dx, 0
mov ax, a1_seg
call output
mov ah, 2h
mov dl, ':'
int 21h
mov bx, offset a_buf
mov dx, 0
mov ax, a1_off
call output
mov ah, 2h
mov dl, ' '
int 21h
mov ah, 9h
mov dx, offset cod
int 21h
mov ah, 9h
mov dx, offset str1
int 21h
pop dx
sub dx, 1
cmp dx, 0
ja vloop
mov ah,8h
int 21h
mov ah,4ch
int 21h
;Procedure output
output proc
push ax
mov cx, 4
soloop:
mov dx, 0
div del1
;proverka DL na F
cmp dx, 0ah
jb l8
cmp dx, 0fh
ja l8
add dx, 37h
jmp l9
l8:
;proverka DL na <0 and >9
cmp dx, 0h
jb l9
cmp dx, 9h
ja l9
add dx, 30h
l9:
mov [bx], dl
inc bx
loop soloop
;out into screen
mov cx, 4
soutloop:
dec bx
mov ah,2h
mov dl,[bx]
int 21h
loop soutloop
pop ax
ret
output endp
;Procedura input
input proc
mov cx, 4
sloop1:
mov ah,8h
int 21h
mov ah,2h
mov dl,al
int 21h
;proverka na Enter
cmp al,13
je loopend1
;proverka AL na F
cmp al, 41h
jb l31
cmp al, 46h
ja l31
sub al, 37h
jmp ll21
l31:
;proverka AL na f
cmp al, 61h
jb l41
cmp al, 66h
ja l41
sub al, 57h
jmp ll21
l41:
;proverka AL na <0 and >9
cmp al, 30h
jb loopend1
cmp al, 39h
ja loopend1
sub al, 30h
ll21:
mov ah,0
mov bl,al
mov ax, addres_bufer
mul mnog
add ax, bx
mov addres_bufer, ax
loop sloop1
loopend1:
ret
input endp
;Procedura convert
;Enter: BX - offset string code; AX - symbol
conv proc
div del
;proverka AL na F
cmp al, 0ah
jb l3
cmp al, 0fh
ja l3
add al, 37h
jmp ll2
l3:
;proverka AL na <0 and >9
cmp al, 0h
jb l4
cmp al, 9h
ja l4
add al, 30h
ll2:
mov [bx], al
inc bx
l4:
;proverka AH na F
cmp ah, 0ah
jb l2
cmp ah, 0fh
ja l2
add ah, 37h
jmp ll1
l2:
;proverka AH na <0 and >9
cmp ah, 0h
jb l1
cmp ah, 9h
ja l1
add ah, 30h
ll1:
mov [bx], ah
inc bx
mov al, ' '
mov [bx], al
inc bx
l1:
ret
conv endp
end start