Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Liamda
TASM

Вывод дампа памяти

21.12.2008, 13:54. Показов 2265. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всех приветствую! Помогите, пжалста!
У меня есть текст програмки: вывод данпа памяти в 2-ом коде. Мне нужно переделать её, чтоб вывод дампа был в 10-ом коде. В ассеиблере я полный лузер, поэтому обращаюсь к Вам.
Кто может помочь, вышлю вам прогу на Email.

Добавлено через 29 минут 50 секунд
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
.MODEL SMALL
.STACK 256
.DATA
 NAMEPAR LABEL BYTE                   ;СПИСОК ПАРАМЕТРОВ ВВОДА СЕГМЕНТА
  MAXLEN DB 6
  ACTLEN DB ?
  NAMEFLD DB 6 DUP(' '),'$'
 
 SEGINFL DB ' Segm_?->','$'            ;СТРОКА ЗАПРОСА ВВОДА СЕГМЕНТА
 DISINFL DB ' Disp_?->','$'            ;СТРОКА ЗАПРОСА ВВОДА СМЕЩЕНИЯ
 QUES DB ' Make new dump ?(Y-yes, N-no)->','$'
 ENDINF DB '           This program was create by <===Andrey===>'
 
 LINE DB 8 dup(196),'$'
 LINES DB 5 DUP(196),'$'
 MAS DB 218,'$',194,'$',191,'$',192,'$',193,'$',217,'$'
 ADRLINE DW ?
 VERT DB 179,'$'
 AES DB ':','$'
 
 DEL DW 10
 
 STARTPOS DW ?                        ;НАЧАЛЬНЫЙ АДРЕС ВВОДА
 STARTPOS1 DW 0000000000000001B
 STARTPOS2 DW 0000000000000001B
 
 CLEARLINE DB 32 DUP(' '),'$'
 ENDLINE  DB 13,10,'$'
 ENTERR DB 13,'$'
 DATAB    DB ?,'$'
 POS DW ?
 
 ONE  DB '1','$'                      ;АСКИ БИТЫ
 ZERO DB '0','$'                      ;АСКИ БИТЫ
 
.CODE
;-----------------------------------------------------------------------------;
;                         ВЫВОД РАЗДЕЛИТЕЛЬНОЙ ЛИНИИ                          ;
;-----------------------------------------------------------------------------;
PROC MKLINE
    MOV DX,ADRLINE
    MOV AH,9                      ;ВЫВОД УГЛОВОГО СИМВОЛА,
    INT 21H                       ;  СОДЕРЖАЩЕГОСЯ В СТРОКЕ MAS
    LEA DX,LINES                  ;ВЫВОД ГОРИЗОНТАЛЬНОЙ
    INT 21H                       ;  ЛИНИИ В ЯЧЕЙКЕ АДРЕСА
    ADD ADRLINE,2
    MOV DX,ADRLINE
    INT 21H
    PUSH CX
    MOV CX,7
    
    S01LAB:                       ;ЦИКЛ ВЫВОДА РАЗДЕЛИТЕЛЬНОЙ СТРОКИ  
        LEA DX,LINE 
        INT 21H             ;ВЫВОД ЛИНИИ
        MOV DX,ADRLINE  
        INT 21H             ;ВЫВОД РАЗДЕЛИТЕЛЯ
    LOOP    S01LAB
    
    POP CX
    ADD ADRLINE,2
    LEA DX,LINE
    INT 21H
    MOV DX,ADRLINE
    INT 21H                       ;ВЫВОД УГЛОВОГО СИМВОЛА
    ADD ADRLINE,2
    LEA DX,ENDLINE
    INT 21H                       ;ПЕРЕВОД КАРЕТКИ
    RET
ENDP MKLINE
;-----------------------------------------------------------------------------;
;                     ВЫВОД ПОБИТНО ОДНОГО БАЙТА ПАМЯТИ                       ;
;-----------------------------------------------------------------------------;
proc DATA
    PUSH SI
    PUSH DS
    MOV SI,STARTPOS2
    MOV DS,STARTPOS1
    XOR AX,AX
    LODSB                         ;ЗАГРУЗКА ИЗ ПАМЯТИ ОДНОГО БАЙТА
    POP DS
    MOV DATAB,AL                  ;ПОМЕЩЕНИЕ ЕГО В ПЕРЕМЕННУЮ
    XOR BX,BX                     
    MOV BL,10000000B              ;ПОМЕЩЕНИЕ В РЕГИСТР BL МАСКИ
    PUSH CX
    MOV CX,8
    
    B1BIT:                        ;ЦИКЛ ПОБИТОВОГО ВЫВОДА
        MOV AL,DATAB
        AND AL,BL             ;МАСКИРОВАНИЕ ОДНОГО БИТА
        CMP AL,00000000B      ;СРАВНЕНИЕ С НОЛЕМ
        JE B2BIT              ;УСЛОВНЫЙ ПЕРЕХОД ЕСЛИ НОЛЬ
            
            LEA DX,ONE    ;ВЫВОД
            MOV AH,9      ;ОДНОГО
            INT 21H       ;БИТА '1'
        JMP B3BIT
        
        B2BIT:  
            LEA DX,ZERO   ;ВЫВОД
            MOV AH,9      ;ОДНОГО
            INT 21H       ;БИТА '0'
        B3BIT:
        ROR BL,1
    LOOP B1BIT
 
    ADD STARTPOS2,1               ;УВЕЛИЧЕНИЕ АДРЕСА ДЛЯ ПОСЛЕДУЮЩЕГО
                                  ;ВХОДА ВПРОЦЕДУРУ
    CMP STARTPOS2,0
    JNE B2BH
    ADD STARTPOS1,1
    
B2BH:   POP CX
    POP SI
    RET            
ENDP DATA
;-----------------------------------------------------------------------------;
;                        ВЫВОД СТОРКИ С ВОСМИ БАЙТАМИ                         ;
;-----------------------------------------------------------------------------;
PROC MKDATA
    LEA DX,VERT
    MOV AH,9
    INT 21H                       ;ВЫВОД ВЕРТИКАЛЬНОЙ ЛИНИИ
    CALL MKPOS                    ;ВЫВОД АДРЕСА ПЕРВОГО ЭЛЕМЕНТА СТРОКИ
    LEA DX,VERT
    INT 21H
    PUSH CX
    MOV CX,8
    
    A2BYT:                        ;ЦИКЛ ПОБАЙТОВОГО ВЫВОДА СТРОКИ
        
        CALL DATA 
        LEA DX,VERT           ;ВЫВОД
        MOV AH,9              ;РАЗДЕЛИТЕЛЬНОЙ
        INT 21H               ;ЛИНИИ
    LOOP    A2BYT
 
    POP CX
    LEA DX,ENDLINE
    MOV AH,9
    INT 21H
    RET
ENDP MKDATA
;-----------------------------------------------------------------------------;
;                      ВЫВОД АДРЕСА ПЕРВОГО БИТА СТРОКИ                       ;
;-----------------------------------------------------------------------------;
PROC MKPOS
    MOV BX,STARTPOS2             ;ПОМЕЩЕНИЕ В ВХ ТЕУЩЕГО АДРЕСА
    PUSH CX
    MOV CX,4
 
    MP11D:                       ;ПРЕОБРАЗОВАНИЕ И ВЫВОД АДРЕСА
        ROL BX,1
        ROL BX,1
        ROL BX,1
        ROL BX,1    
 
        MOV AL,00001111B
        AND AL,BL              ;МАСКИРОВАНИЕ ПЕРВЫХ ЧЕТЫРЕХ БИТ
        CMP AL,10
        JL MP1D                ;ПЕРЕХРД ЕСЛИ ЧИСЛО
            ADD AL,55      ;  ВЫВОД ЕСЛИ БУКВА
            MOV DATAB,AL
            LEA DX,DATAB
            MOV AH,9
            INT 21H
        JMP MP2D
 
        MP1D:   ADD AL,48       ;ВЫВОД ЕСЛИ ЧИСЛО
            MOV DATAB,AL
            LEA DX,DATAB
            MOV AH,9
            INT 21H
        MP2D:
    LOOP MP11D
    POP CX
    LEA DX,AES
    INT 21H                      ;ВЫВОД ДВОЕТОЧИЯ
    RET
ENDP MKPOS
;-----------------------------------------------------------------------------;
;                 ПРЕОБРАЗОВАНИЕ АСКИ СИМВОЛОВ В ХЕКС АДРЕС                   ;
;-----------------------------------------------------------------------------;
PROC CTST
    MOV STARTPOS,0
    PUSH CX
    MOV BX,10000                 ;МНОЖИТЕЛЬ ДЕКАДЫ
    LEA SI,NAMEFLD
    MOV CX,5
 
    CS1R:                         ;ПОБАЙТОВАЯ КОРРЕКЦИЯ АСКИ
        PUSH SI
        XOR AX,AX
        LODSB
 
        CMP AL,48             ;ПРОВЕРКА
        JB ERROUT1            ;ПРИНАДЛЕЖНОСТИ
        CMP AL,57             ;ЧИСЛОВОМУ
        JA ERROUT1            ;ДИАПАЗОНУ
 
        SUB AL,48             
        MUL BX
        ADD STARTPOS,AX       ;ПОДЕКАДНОЕ УВЕЛИЧЕНИЕ НАЧАЛЬНОГО АДРЕСА
        XOR DX,DX
        MOV AX,BX
        DIV DEL
        MOV BX,AX
        POP SI
        INC SI
    LOOP CS1R
 
    POP CX
    JMP OKKOUT1
ERROUT1:                          ;ФИНАЛИЗАЦИЯ ПРОЦЕДУРЫ ПРИ ОШИВКЕ
    POP CX
    MOV AH,9
    LEA DX,ENTERR
    INT 21H
    LEA DX,CLEARLINE
    INT 21H
    LEA DX,ENTERR
    INT 21H
    JMP BEG
OKKOUT1:                              ;ФИНАЛИЗАЦИЯ ПРОЦЕДУРЫ
    MOV AH,9   
    LEA DX,ENTERR
    INT 21H
    LEA DX,CLEARLINE
    INT 21H
    LEA DX,ENTERR
    INT 21H
    RET
ENDP CTST
;-----------------------------------------------------------------------------;
;                         ОСНОВНОЕ ТЕЛО ПРОГРАММЫ                             ;
;-----------------------------------------------------------------------------;
BEGIN:  
 
    MOV AH,00
    MOV AL,11H
    INT 10H
 
 
    MOV AX,@DATA
    MOV DS,AX
 
 
beg:    MOV AH,9
    LEA DX,ENTERR
    INT 21H                         ;ВОЗВРАТ КАРЕТКИ
    LEA DX,CLEARLINE
    INT 21H                         ;ОЧИСТКА ЛИНИИ
    LEA DX,ENTERR
    INT 21H                         ;ВОЗВРАТ КАРЕТКИ
 
    LEA DX,SEGINFL
    MOV AH,9
    INT 21H
        MOV AH,0AH                    ;ВВОД СЕГМЕНТА
    LEA DX,NAMEPAR
    INT 21H
        CALL CTST
        MOV AX,STARTPOS
        MOV STARTPOS1,AX
    LEA DX,DISINFL
    MOV AH,9
    INT 21H
    MOV AH,0AH                    ;ВВОД СМЕЩЕНИЯ
    LEA DX,NAMEPAR
    INT 21H
        CALL CTST
        MOV AX,STARTPOS
        MOV STARTPOS2,AX
    LEA DX,MAS
    MOV ADRLINE,DX
    CALL MKLINE                   ;ПРОРИСОВКА ТАБЛИЦЫ
    PUSH CX
    MOV CX,15
    BE1S:                         ;ЦИКЛ ВЫВОДА ТАБЛИЦЫ                      
    CALL MKDATA
        
LOOP BE1S   
    CALL MKDATA
    CALL MKLINE
 
    LEA DX,QUES
    MOV AH,9
    INT 21H
 
AD2F:   MOV AH,00
    INT 16H
    CMP AL,'Y'
    JE BEG
    CMP AL,'y'
    JE BEG
    CMP AL,'n'
    JE EN2P 
    CMP AL,'N'
    JE EN2P
    JMP AD2F
 
EN2P:   MOV AH,00
    MOV AL,03H
    INT 10H
 
    MOV AH,9
    LEA DX,ENDLINE
    PUSH CX
    MOV CX,20
    REP INT 21H
    POP CX
    LEA DX,ENDINF
    INT 21H
    MOV AH,4CH
    INT 21H
END BEGIN

Подскажите где менять надо? и на что?
заранее СПАСИБО!
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.12.2008, 13:54
Ответы с готовыми решениями:

Вывод дампа области расширенной памяти (защищенный режим, TASM)
Собственно нужна помощь. Совсем не могу разобраться с защищенным режимом. Нужно изменить программу, чтобы она выводила дамп области...

В поле дампа памяти вывести на экран содержимое данной памяти [bx+di]
Имеется функция IDIV word ptr . Но предварительно мы записываем значение в данную область памяти т.е mow ,0005. вопрос,как мне в поле...

Дизассемблирование дампа памяти
Дан код программы необходимо его подправить так, чтобы все работало .data str db 'string with leading blanks !blank string!$' .code ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.12.2008, 13:54
Помогаю со студенческими работами здесь

Вывод дампа в порт LPT
Стоит задача вывести дамп из файла в принтерный порт. И соответсвенно обратная задача, сохранить дамп в файле, принятый из порта.

Вывод дампа памяти с нужного адреса
Имеется работающий код из книги. У меня среда Visual C++ 2008. Проблема в том, что этот код выводит дамп начиная с адреса переменной...

Расшифровка дампа памяти Windows!
Доброго времени суток! Столкнулся с проблемой, компьютер сам перезагружается, бывает, раз в несколько дней, обычно в браузерах. ...

Анализатор дампа памяти потока
А какую вообще информацию выдает анализатор дампов памяти? Какой лучше всего использовать?Как он помечает место например, где произошла...

DLL для просмотра дампа памяти
Необходимо реализовать DLL для просмотра дампа памяти. Подскажите как это можно реализовать или, может, у кого-нибудь есть наработки по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru