Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2015, 12:42   #1
Null2410
 
Регистрация: 12.05.2015
Сообщений: 5
По умолчанию Прочитать данные из памяти

Здравствуйте . Нужно прочитать данные из памяти по адресу от 00000h до 00400h . Я только смог понять, как прочитать данные из 1-ой ячейки :

Цитата:
.data
a dw 0
.code
start:
mov a,[00000h]
end start
А вот как прочитать целый блок ?Как указать , с какого адреса по какой необходимо получать данные ?

Подскажите, пожалуйста . Заранее спасибо!
Null2410 вне форума Ответить с цитированием
Старый 12.05.2015, 12:46   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Код:
.data
a db 0
.code
start:
 mov cx, 00400h
for:
 mov ax,[cx]
 mov [a],ax
 Дальше что-то делаем с "а".
loop for
end start
Считка идет с конца блока до начала.
Устраивает такое?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.05.2015, 13:02   #3
Null2410
 
Регистрация: 12.05.2015
Сообщений: 5
По умолчанию

У меня ошибки выдает :
Цитата:
.data
a dw 0
mas dd 0 ;массив
st1 db "MessageBox",0 ;название окна
st2 dw ?,0 ;буфер для вывода сообщения
ifmt db "a=%d",0dh,0ah,0
.code
start:

mov cx, 00400h
for:
mov ax,[cx] ;загружаем переменную в ax по адресу cx
mov [a],ax
loop for

;invoke wsprintf,ADDR st2, ADDR ifmt, a
;invoke MessageBox,NULL,addr st2,addr st1,MB_OK
;invoke ExitProcess,0

end start
Изображения
Тип файла: jpg Снимок1.jpg (21.7 Кб, 127 просмотров)
Null2410 вне форума Ответить с цитированием
Старый 12.05.2015, 13:05   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Масм... Хм... Наверное там нужно писать @@for
Я не силен в диалектах ассемблера, и предпочитаю использовать FASM.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.05.2015, 13:07   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Код:
mov [a],ax
ой, а разве не так должно быть:
Код:
mov a, ax
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.05.2015, 13:08   #6
Null2410
 
Регистрация: 12.05.2015
Сообщений: 5
По умолчанию

написал @@for - первые две ошибки исчезли, а 3-я осталась
не нравится ему что-то эта строка :
mov ax,[cx] ;загружаем переменную в ax по адресу cx

по идее Вы правы , но ошибка всё равно осталась

Последний раз редактировалось Stilet; 12.05.2015 в 13:22.
Null2410 вне форума Ответить с цитированием
Старый 12.05.2015, 13:24   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
mov ax,[cx]
mov al,[cx] попробуй. Чтоб точно указать что грузится байт а не слово.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.05.2015, 13:27   #8
Null2410
 
Регистрация: 12.05.2015
Сообщений: 5
По умолчанию

я вот так попробовал :
Код:
.data
a dd 0
mas dd 0 ;массив
st1 db "MessageBox",0  ;название окна
st2 dw ?,0   ;буфер для вывода сообщения
ifmt db "a=%d",0dh,0ah,0
.code
start:

mov ecx,00400h  ;счётчик
m1:
 mov eax,dword ptr [ecx]  ;загружаем переменную в eax по адресу ecx
 mov a,eax
loop  m1

;invoke wsprintf,ADDR st2, ADDR ifmt, a
;invoke MessageBox,NULL,addr st2,addr st1,MB_OK
;invoke ExitProc,0

end start
вроде ошибок не выдает

а вот как мне вывести эти данные куда-то? в MessageBox , например . Нужно после
Цитата:
mov a,eax
прописывать вывод переменной a?

Последний раз редактировалось Stilet; 12.05.2015 в 13:33.
Null2410 вне форума Ответить с цитированием
Старый 12.05.2015, 13:32   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Хы... Ну во-первых у тебя есть invoke MessageBox. Изучи как он работает, и как сконвертировать переменку в строку.
Однако можно раскомментировать invoke wsprintf и выводить в консоль.
Но это опять таки нужно изучить как эта функция работает )
Готов к такому хардкору?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.05.2015, 15:02   #10
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Цитата:
Сообщение от Null2410 Посмотреть сообщение
Нужно прочитать данные из памяти по адресу от 00000h до 00400h. Я только смог понять, как прочитать данные из 1-ой ячейки :
Цитата:
..ну и читай на-здоровье. Бивис копирует туда векторы своих прерываний. Читай словами, ...и.чё ты хочеш делать с первым прерыванием?
Вот к примеру мой первый (почти) сектор:
Код:
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

00000000   16 E8 00 F0 16 E8 00 F0  C3 E2 00 F0 16 E8 00 F0   .и.р.и.рГв.р.и.р
00000010   16 E8 00 F0 54 FF 00 F0  78 6E 00 F0 16 E8 00 F0   .и.рTя.рxn.р.и.р
00000020   A5 FE 00 F0 87 E9 00 F0  6F EF 00 F0 6F EF 00 F0   Ґю.р‡й.рoп.рoп.р
00000030   6F EF 00 F0 6F EF 00 F0  57 EF 00 F0 6F EF 00 F0   oп.рoп.рWп.рoп.р
00000040   CE 0E 00 C0 4D F8 00 F0  41 F8 00 F0 B0 96 00 F0   О..АMш.рAш.р°–.р
00000050   39 E7 00 F0 59 F8 00 F0  2E E8 00 F0 D2 EF 00 F0   9з.рYш.р.и.рТп.р
00000060   A4 E7 00 F0 F2 E6 00 F0  6E FE 00 F0 53 FF 00 F0   ¤з.ртж.рnю.рSя.р
00000070   53 FF 00 F0 A4 F0 00 F0  C7 EF 00 F0 52 DB 00 C0   Sя.р¤р.рЗп.рRЫ.А
00000080   16 E8 00 F0 16 E8 00 F0  16 E8 00 F0 16 E8 00 F0   .и.р.и.р.и.р.и.р
00000090   16 E8 00 F0 16 E8 00 F0  16 E8 00 F0 16 E8 00 F0   .и.р.и.р.и.р.и.р
000000A0   16 E8 00 F0 16 E8 00 F0  16 E8 00 F0 16 E8 00 F0   .и.р.и.р.и.р.и.р
Нашедшего выход - затаптывают первым..

Последний раз редактировалось R71MT; 12.05.2015 в 15:06.
R71MT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прочитать данные с LDAP сервера SailarmoonKS C# (си шарп) 10 05.08.2015 17:50
прочитать адрес памяти из stdin и вывести что находится по адресу frommars Общие вопросы C/C++ 0 18.02.2014 20:42
Прочитать значение адреса из памяти другой программы Xo66um Общие вопросы Delphi 3 23.09.2013 16:27
Прочитать данные, записанные на C Claptrap Общие вопросы Delphi 0 03.04.2010 20:14
Прочитать данные из Excel viter.alex Microsoft Office Excel 7 03.03.2009 14:35