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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2011, 17:54   #1
-=Andriushka=-
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 91
По умолчанию dump памяти

всем добрый вечер!!!осталось последнее задание для зачета, но ни как немогу с ним разобраться!с предыдущими заданиями неплохо справился!есть вот такой код
Код:
.model small
.data
buf     db 8,10 dup(0)  
segm    db 13,10,'Segment(hex): $'
off     db 13,10,'Disp(hex): $'
block   db 256 dup(0)          
sh      db '',13,10,'$'
strokac db '│    :                                                     │',13,10,'$'  
strlen  equ $-strokac           
dno     db '',13,10
msg1    db 'Again? (Y/N)',13,10,'$'
stroka  db strlen dup(0)       

s       dw 0                    
o       dw 0                   
.stack 256
.code
start:
        mov ax,@data    
        mov ds,ax
        mov es,ax
mlp:    lea dx,segm     
        call inputhex   
        mov s,ax       
        push ax         
        lea dx,off      
        call inputhex   
        mov o,ax       
        mov si,ax       
        pop ds         
        lea di,block    
        mov cx,128     
        rep movsw       

        push es         
        pop ds         
        mov ah,9               
        lea dx,sh              
        int 21h                 
        lea si,block    
        mov bp,16      
lp:     push si         
        lea di,stroka   
        push di         
        lea si,strokac  
        mov cx,strlen   
        rep movsb      
        pop di         
        pop si         
        inc di          
        mov ax,s        
        call printhex16 
        inc di          
        mov ax,o      
        call printhex16 
        add di,2       
        mov cx,16       
lp1:    lodsb           
        call printhex   
        inc di          
        loop lp1        
        mov ah,9       
        lea dx,stroka   
        int 21h         
        add o,16        
        dec bp          
        jnz lp          
        mov ah,9                
        lea dx,dno              
        int 21h                 
ag:     mov ah,0        
        int 16h
        cmp ah,49       
        jz ex           
        cmp ah,21      
        jz mlp          
        jmp ag          
ex:     mov ax,4c00h    
        int 21h
;Ввод шестнадцатеричного числа с проверкой
;ds:dx - адрес выводимого сообщения
;На выходе: ax - число
inputhex        proc
        mov di,dx               
inputhex1:
        mov dx,di               
        mov ah,9                
        int 21h                 
        mov ah,0ah              
        mov dx,offset buf       
        int 21h      
           
        mov ch,0
        mov cl,buf[1]   ;
        lea si,buf[2]   
        push si         
        push cx         
;проверяем, что это 16-ричная строка
ihlp:   mov al,[si]     
        cmp al,'0'      
        jc inputhex1    
        cmp al,'9'      
        jbe ihm1        
        cmp al,'A'      
        jc inputhex1    
        cmp al,'F'      
        jbe ihm1        
        cmp al,'a'      
        jc inputhex1    
        cmp al,'f'      
        jbe ihconvert   
        jmp inputhex1   
ihm1:   inc si          
        loop ihlp       
        pop cx          
        pop si          
;преобразовываем строку в ;16-ричное число
        xor dx,dx       
ihlp2:  mov al,[si]    
        cmp al,'9'      
        jbe ihm5        
        sub al,7        
ihm5:   sub al,'0'      
        shl dx,4        
        or dl,al        
        inc si          
        loop ihlp2      
        mov ax,dx       
        ret             
ihconvert:
        and [si], byte ptr 11011111b    
        jmp ihm1                        
inputhex endp
printhex  proc

;es:di
        push dx 
        push ax
        push ax 
        shr al,4        
        add al,'0'      
        cmp al,'9'      
        jbe @m1         
        add al,7        
@m1:    stosb           
        pop ax          
        and al,0fh      
        add al,'0'      
        cmp al,'9'      
        jbe @m2         
        add al,7        
@m2:    stosb           
        pop ax          
        pop dx
        ret             
printhex endp

printhex16 proc
        push ax        
        mov al,ah
        call printhex   
        pop ax          
        call printhex   
        ret             
printhex16 endp
 
end start
преподователь сказал что она неправильно работает,типа надо чтобы она считывала из файла и результат записывала в другой файл,и также сказал что типа она мало выводит результата...подскажите пожалуйста как сделать чтобы она записывала результат в файл(как из файла считать я знаю)...и помогите разобраться с моментом что она "мало" выводит!!!
-=Andriushka=- вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Sql dump Vashkin БД в Delphi 0 25.05.2011 13:11
Первая Уральская ИТ-конференция: Development, Usability, Management & Practice (DUMP). it-people Свободное общение 0 03.05.2011 14:20
MyDac. Dump базы в потоке _SERGEYX_ БД в Delphi 0 02.02.2011 13:59
Кольцевая очередь на массиве в статической памяти с элементами в динамической памяти ]tach[ Общие вопросы C/C++ 1 19.01.2011 13:16
Dump Базы nimf БД в Delphi 2 05.06.2008 22:16