Прочитать данные из памяти - Assembler

Узнай цену своей работы

Формулировка задачи:

Здравствуйте . Нужно прочитать данные из памяти по адресу от 00000h до 00400h . Я только смог понять, как прочитать данные из 1-ой ячейки :
.386
.model flat,stdcall
option casemap:none
include\masm32\include\windows.inc
include\masm32\include\kernel32.inc
include\masm32\include\user32.inc
includelib\masm32\lib\kernel32.lib
includelib\masm32\lib\user32.lib

.data
a dw 0
st1 db "MessageBox",0  ;название окна
st2 dw ?,0   ;буфер для вывода сообщения
ifmt db "a=%d",0dh,0ah,0
 
.code
start:
mov a,[00000h]

invoke wsprintf,ADDR st2, ADDR ifmt, a
invoke MessageBox,NULL,addr st2,addr st1,MB_OK
invoke ExitProcess,0
 
end start
А вот как прочитать целый блок ?Как указать , с какого адреса по какой необходимо получать данные ? Подскажите, пожалуйста . Заранее спасибо!

Решение задачи: «Прочитать данные из памяти»

textual
Листинг программы
mov bx, 00400h
f: mov ax,[bx] ;загружаем в ax 
mov [a+bx],ax; иначе все грузишь в одну и ту же переменную
sub bx,2
jnz f

Объяснение кода листинга программы

  1. mov bx, 00400h - присваиваем регистру bx значение 00400h
  2. f: mov ax,[bx] - загружаем в ax значение по адресу, указанному в bx
  3. mov [a+bx],ax - записываем значение из ax по адресу, указанному в bx
  4. sub bx,2 - вычитаем из bx значение 2
  5. jnz f - если результат вычитания не равен нулю, то переходим к шагу 2

Оцени полезность:

10   голосов , оценка 4 из 5
Похожие ответы