Блок-схема алгоритма обработки строки

 

 

 

 


 

 

 


                                  

 

4.2 Текст программы, реализующий данный алгоритм:

 

.model small

.586

.stack 100h

.data

    Mes1 db "Input the first string",0ah,0dh,'$'

    Mes2 db "Input the second string",0ah,0dh,'$'

    Mes3 db "Input the simbol, from which you want to paste the second string",0ah,0dh,'$'

 


    Str1 db 255

              db?

              db 255 dup (0)

    Str2 db 255

              db?

              db 255 dup (0)

    Char1    db 2

              db?

              db 0,'$'

    Res db "Result is:",0Ah,0Dh,'$'

    Str db 255 dup (0)

 

.code

    include   string.lib

.startup

    mov ax,dgroup

    mov ds,ax

    cls

 

    locate     0,0

    lea dx, Mes1

    mov ah,09h

    int 21h

 

 lea dx, Str1

    mov ah,0ah

    int 21h

 

    locate 0, 3

    lea dx, Mes2

    mov ah,09h

    int 21h

 

    lea dx, Str2

    mov ah,0ah

    int 21h

 

    locate 0, 6

    lea dx, Mes3

    mov ah,09h

    int 21h

 

    lea dx, Char1

    mov ah,0ah

    int 21h

 

obrabotka

 

 locate    0, 9

        

    lea dx, Res

    mov ah,09h

    int 21h  

 

    lea dx, Str

    mov ah,09h

    int 21h  

 

.exit(0)

END






Листинг кода библиотеки math.lib, в которой находятся макросы, вызываемые в данной программе

 

IFDEF @Model

IFIDN @Model, <1>

TINYMODEL TYPEDEF

ENDIF

ENDIF

 

cls macro

    push ax                       

    push bx                       

    push cx

    push dx

    mov cx,0                     

    mov dh,24                  

    mov dl,79                   

    mov ah,6                    

    mov al,0                     

    mov bh,7

    int 10h                     

    pop dx                       

              pop cx

    pop bx

    pop ax

endm

 

locate macro col,row

    push dx

    mov dh,row

    mov dl,col

    move_cursor

    pop dx

endm

 

move_cursor macro

    LOCAL ok,vs

    push ax                       

    push bx                       

    cmp dh,24                  

    jna ok                       

    sub dh,dh

ok: cmp dl,79

    jna vs

    sub dl,dl

vs: mov ah,15                  

    int 10h                     

    mov ah,2                    

    int 10h                     

    pop bx                       

    pop ax

endm

obrabotka macro

    mov bp,offset Char1

    add bp, 2

    mov dl, ds:[bp]

 

    mov bp,offset Str1

    add bp, 1

    mov cl, ds:[bp]

    inc bp

        

    mov si,offset Str2

    add si, 1

    mov ch, ds:[si]

    inc si

 

    mov bx, offset Str

    inc bx

lp:    

    mov al,ds:[bp]

    mov ds:[bx],al

 

    cmp al,dl

    je  m1

        

    inc bx

    inc bp

    dec cl

    jnz lp     

 

m1: inc bx

    inc bp

lpo:  

    mov al,ds:[si]

    mov ds:[bx],al

 

    inc bx

    inc si

    dec ch

    jnz lpo

                  

lopa:

    mov al,ds:[bp]

    mov ds:[bx],al

 

    inc bx

    inc bp

    dec cl

    jnz lopa

inc bx

mov ds:[bx],'$'  

endm



ВЫВОД

 

В данной работе были разработаны программы, направленные на выполнение арифметических действий и строковых операций.

Программы были написаны на языке низкого уровня Borland Turbo Assembler(TASM), для процессоров семейства Intel.

В ходе выполнения задания возникали проблемы во время отладки программы, поскольку язык ассемблера TASM имеет сложную структуру.

Были практически закреплены полученные навыки работы с TASM, знание о структуре языка и его синтаксиса.

Программы, разработанные в ходе выполнения данной расчетно-графической работы, характеризуются малым размером выполняемого файла, работай напрямую с аппаратным обеспечением ПК.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: