Просмотр содержимого оперативной памяти

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
Gematogen
Сообщения: 3
Зарегистрирован: 13 май 2006, 08:33

Подскажите, пожалуйста, может у кого есть программа просмотра оперативной памяти персонального компьютера типа IBM PC.
Или подскажите как это сделать, плиз.
Я новичок в этом деле, а разобраться мне надо.

Конкретная задача выглядит следующим образом:
После запуска программы на выполнение на экране монитора должно отобразиться содержимое оперативной памяти в виде таблицы, состоящей из колонки с диапазоном адресов, и колонки с названием загруженных в текущий момент программ.
Andy
Сообщения: 238
Зарегистрирован: 17 фев 2004, 08:15
Откуда: Минск

Подскажите, пожалуйста, может у кого есть программа просмотра оперативной памяти персонального компьютера типа IBM PC.
В Volcov Commander есть
*provided AS IS
Gematogen
Сообщения: 3
Зарегистрирован: 13 май 2006, 08:33

А в какой именно области ОЗУ можно просмотреть данные о загруженных в текущий момент программ. Мне в задании необходимо узнать адрес и название программы.
В интернете нашел листинг программы, выводящей экран содержимое ОЗУ. Прежде чем вывести на экран она запрашивает адрес и смещение. Т.е. как я понял эта программа может просматривать любой участок ОЗУ. Так вот и встает вопрос, а где же та область которая нужна мне?
Gematogen
Сообщения: 3
Зарегистрирован: 13 май 2006, 08:33

а вот собственно и эта пргограмма, выводящяя содежимое ОЗУ на экран:

.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
Ответить