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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2010, 23:46   #1
adgam
Пользователь
 
Регистрация: 24.09.2009
Сообщений: 10
По умолчанию TASM.Поиск имен регистров в введенной строке и вывод их содержимого на экран.

Здравствуйте!Необходимо ввести символьную строку,найти имена регистров в ней и вывести на экран содержимое этих регистров в шестнадцатиричном формате.

Есть две программы.Одна находит имена регистров в строке и выводит их на экран.Вторая выводит содержимое регистра ax в шестнадцатиричном формате.

Как можно связать эти программы,чтобы решить исходную задачу.Есть ли более оптимальный вариант решения задачи.

Коды программ приводятся ниже.

Заранее спасибо!

Prog1.asm находит имена регистров в строке и выводит их на экран
Код:
S       segment stack 'stack'
        dw 64 dup(?)
S       ends
 
D       segment 'data'
t       db 10,11 dup(?)
 
tog     db 10,13,'$'
D       ends
 
C       segment 'code'
assume  cs:C, ss:S, ds:D
 
beg     proc far
        push ds
        xor ax,ax
        push ax
        mov ax,D
        mov ds,ax
 
        mov ah,10
        lea dx,t
        int 21h
 
        mov ah,9
        lea dx,tog
        int 21h
        
        xor si,si
        xor di,di
 
        mov di,2
 
l:      mov dl,t[di]
 
        cmp dl,13
        je v
        
        xor bx,bx
        
        cmp dl,'e'
        jne lc
        mov bl,dl
        inc di
        mov dl,t[di]
 
lc:     mov cl,t[di+1]
        
        cmp dl,'a'
        jb l5
 
        cmp dl,'b'
        jbe l4
 
l1:     cmp dl,'s'
        jne l51
        cmp cl,'i'
        je l6
        cmp cl,'s'
        je l7
 
l51:    cmp dl,'c'
        je lk
        
        cmp dl,'d'
        jne l5
 
        
l3:     cmp cl,'i'
        je l6
        
lk:     cmp cl,'s'
        je l7
 
l4:     cmp cl,'x'
        jne l5
        
 
l6:     cmp bl,0
        je l7
        push dx 
        mov dl,bl
        mov ah,2
        int 21h
        pop dx
        
l7:     mov ah,2
        int 21h
        mov dl,cl
        mov ah,2
        int 21h
        mov ah,2
        mov dl,' '
        int 21h
        inc di
l5:     inc di
        jmp l
 
v:      ret
 
beg     endp
C       ends
        end beg

Prog2.asm выводит содержимое регистра ax в шестнадцатиричном формате.

Код:
.286
S       segment stack 'stack'
        dw 64 dup(?)
S       ends
 
D       segment 'data'
t       db 10,11 dup(?)
tog     db 10,13,'$'
D       ends
 
C       segment 'code'
assume  cs:C,ss:S, ds:D
 
beg     proc far
        push ds
        xor ax,ax
        push ax
        mov ax,D
        mov ds,ax
 
        mov ax,0D8h
 
        push    ax
        xchg    ah,al           
        jmp     print_al
        
l1:     mov cx,1
pop     ax              
        
print_al: 
        mov     dh,al
        and     dh,0Fh          
        shr     al,4            
 
        cmp     al,10           
        sbb     al,69h          
        das                     
 
        mov     dl,al           
        mov     ah,2            
        int     21h             
 
        mov     al,dh           
                
        cmp     al,10           
        sbb     al,69h          
        das                     
 
        mov     dl,al           
        mov     ah,2            
        int     21h     
loop l1
ret
 
beg     endp
C       ends
        end beg
adgam вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод содержимого файла на экран! Nostalgy Общие вопросы C/C++ 5 16.01.2011 19:33
TASM.Поиск имен регистров в введенной строке и вывод их содержимого adgam Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 18.04.2010 10:44
Ввод символьной строки,вывод содержимого соответствующего регистра(TASM) adgam Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 17.03.2010 08:48
Вывод содержимого вектора на экран lelik759 Помощь студентам 1 05.11.2009 00:07
поиск по наванию файла и вывод на экран Karinka Общие вопросы Delphi 12 16.03.2009 11:52